Repository navigation
fix(codex): guard storage layers and synchronize scoped version context - #169
Merged
Merged
Conversation
…atch Pin the selected canonical binary, close async revalidation gaps with a synchronous pre-write barrier, and recheck fallback deadlines. Preserve zero-submit refusals with deterministic regression fixtures. Refs #166.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This was referenced Oct 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and behavior
Codex submission inspected only the selected home config even though native loaders can use system, requirements, managed preferences and project contexts. This change classifies the source-qualified local layers, retains the selected binary and consumer/store evidence, and refuses before submission when those inputs are unsupported, conflicting or change across validation. Final synchronous checks run after asynchronous work and directly before the native spawn or RPC attempt marker.
Closes #166. Closes #167. Closes #168.
Storage guards
Availability limits: Windows Codex dispatch is unqualified and refuses before agent execution. Ordinary signed-in file-auth homes (
auth.jsonmetadata), keyring/auto or otherwise cloud-unclassifiable contexts also refuse without reading credentials/cache contents. A separately qualified owned stdio route requires actual opened-storage binding. Missing saved cwd, config symlinks, unknown daemon/remote context or missing trusted system metadata tools can refuse. Conservative project/selector supersets may reject otherwise unused settings. These restrictions are documented in the API and all four README/guide variants; no new native/platform/ACK qualification is claimed.Current parity and scoped version maintenance
90481b1/ Pythonf5e7c49(source VERSION 1.3.2), with shipped/partial/intentional difference/not-planned/undecided states and explicit defer decisions for presets/addresses, explain, explicit trusted SSH config and persistent per-version dismissal.npm run version:check/version:updateand a closed 12-file, 105-line inventory (115 version spans). Only exact registered{{version}}spans change. Non-mutating CI checks remain alongside existing metadata, language, link and anchor gates. Historical records, supported-policy text, compatibility rows and independent pins are not generated.Verification
f57a808: 489 tests, 477 pass, 0 fail, 11 platform skips, 1 existing TODO, using the exact pinned ordinary Python oracle.npm version --no-git-tag-version --ignore-scripts, run scoped update/check, repository checks, build, actual package smoke, and second update. All eight commands pass; second update changes zero bytes; 30 protected history/pin/policy files remain identical. The copy matched5a0e0d8; no repository version/tag/publication change was made.git diff --checkpass.d27764b(0.160.1),092d3ac(0.162.1), and360319d(0.165.0). Actual macOS preferences adapter ran read-only with no forced entries. This is not new native submission, positive MDM, remote/platform or ACK qualification.Independent CLI review
Claude Code 2.1.312 /
claude-opus-5-5(actual model confirmed in response metadata) and Codex CLI 0.165.0 (isolated default model; actual model not reported) reviewed identical frozen inputs in fresh non-interactive parallel processes. Tools were disabled for Claude; Codex used read-only sandbox, ephemeral session and ignored user configuration. Both returned substantive successful responses; input/source hashes stayed unchanged, and the Codex streams contained only agent messages, with no tool execution.Broad reviews and focused follow-ups found issues in canonical executable retention, post-await effect guards, actual-route diagnostics, direct API dry-run behavior, final queue/sidecar identity proof and Korean generated wording. These were checked against source and regression evidence and corrected. Final queue-proof review found no remaining mandatory runtime defect. The final version-lint review disagreed about universal grammar coverage: common formatting bypasses were fixed; the later claim of a universal grammar guarantee was removed rather than expanding this scoped updater into a language parser. Root added valid fixed-noun/parenthesis tests and explicitly documented HTML/link/inflected-form editorial limits. No reviewer test/native execution is claimed.
Scope
Source/package VERSION remains 0.5.1 pending separate release preparation. Dependencies, finite compatibility rows, SDK exports, frozen handoff wire/schema, native observation profiles, Python oracle and installation pins are unchanged. CLI diagnostics gain bounded storage classification metadata. This is an implementation PR for milestone 0.5.2, not publication or rollout. No merge, release, package publication, global/fleet installation, live Codex queue/user-session/host experiment or automatic Codex review mention was performed. Existing experimental/deferred PRs remain separate.
Current-head GitHub checks
Final head
76f556cca869da95ad4368af914bad6f0f43af3d: 12/12 checks pass, including macOS and Ubuntu Node 22/24, Windows Node 22/24, repository policy, release gate, CodeQL and GitGuardian. CI run40905547974and CodeQL run40905538399both use this head.The macOS Node 24 job was cancelled before execution because GitHub could not acquire a hosted arm64 runner. A normal retry of that job and its dependent release gate on the same head passed. No code, CI setting, timeout or expectation was relaxed for the retry.
One earlier macOS Node 24 run returned a pre-effect refusal in the response-loss fixture instead of reaching the intended unknown-after-write case; the original cause remains unconfirmed. The final Node 22 and Node 24 runs both pass that exact case with full-result assertion diagnostics retained. This does not establish a root cause for the earlier failure.
GitHub automatic code/security review completed on
0ac7fae; code-review metadata reports no findings, while security-review metadata reports completed without a structured findings value. Later commits change tests only and are not covered by that exact-head automatic review record. Independent CLI review scope and root validation are recorded above. No manual review mention was added.