fix(surveyor): repair UI settings physical read path - #659
Conversation
|
@codex review Fresh independent validator request for exact repair head |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c75232e835
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Autonomous checkpoint — repair audit/CI gateInvocation result: WAITING under Exact frozen repair head: Verified repair evidence:
Exact-head GitHub checks observed:
Fresh independent validator request comment No gameplay input, login/relogin, client restart, process signal/control, process-memory write, credential access, character selection, network mutation, transaction or economy action was performed. Shared-index closeout preflight: open PR #23 currently changes
|
|
@codex review Fresh independent validator request for exact head |
Autonomous checkpoint — final descriptor-binding remediation gateCurrent invocation result: WAITING under Exact final repair head: This invocation remediated both findings from Codex review
Both old review threads are resolved/outdated. Current Exact-head GitHub gates observed on
No runtime/client observation occurred after the diagnosis admission was released. No gameplay input, login/relogin, client restart, process control, process-memory write, credentials, network mutation, transaction or economy action occurred.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7b9a0bc7eb
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Autonomous checkpoint — AUD-659-003 remediatedExact current head: Material progress in this invocation:
Exact-head GitHub gates observed:
Current runtime authority remains
|
|
@codex review Fresh independent validator request for exact head |
|
Codex Review: Didn't find any major issues. What shall we delve into next? Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Automation checkpoint — all merge gates green; merge action blocked by execution safetyExact current repair head: Fresh live verification in this invocation:
The repository merge gate is therefore satisfied on the exact head. I attempted the authorized PR merge through the GitHub connector with the exact expected head SHA (including an explicit squash attempt and a minimal merge attempt). Both write calls were rejected before reaching GitHub by the execution environment's safety layer ( Remote Desktop endpoints Current runtime authority remains STATUS: BLOCKED |
|
@codex review Fresh independent validator request for current exact head |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e05a9d9e89
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| exe_path=descriptor_path(exe_fd,"CLIENT_EXE_DESCRIPTOR_PATH_INVALID") | ||
| root_path=descriptor_path(root_fd,"CLIENT_PACKAGE_ROOT_DESCRIPTOR_PATH_INVALID") |
There was a problem hiding this comment.
Make descriptor-path root binding race-free
When a same-UID writer can rename the package directories, these two readlink calls do not observe one atomic filesystem state: it can expose the original tree at the expected pathname for the executable read, then restore a replacement tree before the root read. If that replacement contains a hard link to the executable, both this path comparison and the later inode comparison pass, while conf/clientoptions.json is opened from the replacement; the same swap can be repeated around the final check before publication. Fresh evidence on e05a9d9 is that the remediation samples exe_fd and root_fd paths sequentially, so it does not close the previously reported hard-link/rename race; the ancestry binding needs to be established through a race-free descriptor relationship rather than separately sampled /proc/self/fd paths.
Useful? React with 👍 / 👎.
Post-merge trusted-main acceptance checkpointLive source of truth revalidated on 2026-08-22:
Next action: when the existing queued run |
Objective
Continue the same
OTC-20260821-surveyor-next-nonoverlap-gaplifecycle after implementation PR #658 merged. The first trusted-main physical read-only acceptance run32523208150re-proved the exact runtime and completed passive collect-all, butui_settings_typed_readerfailed closed withLIVE_SETTINGS_READ_FAILED:CLIENTOPTIONS_PARENT_OPEN_FAILED.Root cause and repair
Read-only metadata diagnosis proved the persistent Kasm runtime does not use the historical isolated-HOME path. There are four retained package roots, so a HOME/name search is intentionally rejected as ambiguous. The exact-fenced running executable was
/home/kasm-user/otclient-track-a/Tibia-32177065988-1/bin/client; its own package-root siblingconf/clientoptions.jsonexisted, was regular, non-symlink and target-UID-owned.The current reader never scans HOME/package history. It holds an open
/proc/<pid>/exedescriptor, exact-fences size/SHA, derives the executable path from/proc/self/fd/<exe_fd>, opens the candidate package root with mandatoryO_DIRECTORY/O_NOFOLLOW, and requires the held executable descriptor path to equal exactly<root-fd-path>/bin/clientbefore config open and again immediately before publication.root/bin/clientinode equality remains an additional fence. This closes the rename/replacement + hard-link TOCTOU findings while preserving regular-file/UID checks and the exact output allowlists/rebuilt dictionaries fromAUD-658-001.Evidence
1cb56f652784ca1baeaf59a777e4c0b5b8ab312e32523208150 / 968997289669461336737, digestsha256:e10a836244c454056e09202f5f179c16852b743db9016e30c004b1fa3d19690f19590 / 7661179252109920 / ed5469b9fa71349de688f719434d23875f76f28a3ebd08a36d30f7f6da0af6b82 / 19169 / 12 / 7, privacy PASSUNAVAILABLE / CLIENTOPTIONS_PARENT_OPEN_FAILEDe05a9d9e8977cfee14049ff462b232220c28bd0832529870735: SUCCESS32529870700: SUCCESS32529871079: pending at the latest observationPRR_kwDOTVmdjs8AAAABKeFMxQon7b9a0bc7...foundAUD-659-003P2; addressed in the current head; its thread is resolvedCurrent authority
Pre-merge checkpoint remains
runtime_access:none; the physical diagnosis admission is historical and released. No gameplay input, relogin, client restart, process control, process-memory write, credentials, character selection, network mutation or economy action occurred. No additional runtime access is planned before merge.The current head must still obtain a fresh independent exact-head audit with zero material findings and repository CI success. Only then may #659 merge, followed by a fresh trusted-main one-shot read-only physical acceptance. Task-level E2E is not PASS until the merged reader returns AVAILABLE.
Task:
OTC-20260821-surveyor-next-nonoverlap-gap.