fix(codex): catch up to rust-v0.123.0 (experimental_thread_store_endpoint) - #772
Conversation
…oint) Closes #765. Recreated after PR #768 was accidentally closed during a batch merge (branch deleted before merge attempt completed). Adds 'experimental_thread_store_endpoint' (new in v0.123 per #18714) to BOTH allow-lists: - schemas/codex.rs::KNOWN_TOP_LEVEL_KEYS (CDX-004 TOML path) - rules/codex.rs::KNOWN_CONFIG_TOP_LEVEL_KEYS (CDX-CFG-006 JSON path) Plus 2 regression tests (TOML and JSON paths) per round-1 review on the original PR #768. Bumped verified_on for all 58 CDX-* rules to 2026-04-23.
There was a problem hiding this comment.
Pull request overview
Updates agnix’s Codex CLI validation to match upstream rust-v0.123.0 by allowlisting the newly introduced top-level config key experimental_thread_store_endpoint, and refreshes the Codex rule documentation “Verified On” dates to reflect the new verification date.
Changes:
- Allowlist
experimental_thread_store_endpointfor both TOML (CDX-004 path) and JSON/YAML (CDX-CFG-006 path) Codex config validation. - Add regression tests covering acceptance of the new key in TOML and JSON configs.
- Bump
verified_on/ “Verified On” from 2026-04-22 to 2026-04-23 across Codex rules in JSON sources and generated website docs, plus update CHANGELOG.
Reviewed changes
Copilot reviewed 5 out of 63 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| crates/agnix-core/src/schemas/codex.rs | Adds experimental_thread_store_endpoint to the TOML top-level key allowlist used by CDX-004. |
| crates/agnix-core/src/rules/codex.rs | Adds experimental_thread_store_endpoint to the JSON/YAML top-level key allowlist used by CDX-CFG-006 and introduces regression tests. |
| knowledge-base/rules.json | Bumps verified_on for Codex-related rules to 2026-04-23. |
| crates/agnix-rules/rules.json | Syncs packaged rules metadata with updated verified_on dates. |
| CHANGELOG.md | Records the Codex v0.123.0 catch-up and related doc refresh. |
| website/docs/rules/generated/cdx-000.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-001.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-002.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-003.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-004.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-005.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-006.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-ag-001.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-ag-002.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-ag-003.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-ag-004.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-ag-005.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-ag-006.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-ag-007.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-app-001.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-app-002.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-app-003.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-001.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-002.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-003.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-004.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-005.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-006.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-007.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-008.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-009.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-010.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-011.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-012.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-013.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-014.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-015.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-016.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-017.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-018.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-019.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-020.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-021.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-022.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-023.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-024.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-025.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-026.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-cfg-027.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-001.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-002.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-003.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-004.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-005.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-006.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-007.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-008.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-009.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-010.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-011.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-012.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-013.md | Bumps “Verified On” date to 2026-04-23. |
| website/docs/rules/generated/cdx-pl-014.md | Bumps “Verified On” date to 2026-04-23. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| let validator = CodexValidator; | ||
| validator.validate( | ||
| Path::new(".codex/config.json"), | ||
| content, | ||
| &LintConfig::default(), | ||
| ) |
There was a problem hiding this comment.
validate_config_json duplicates the existing validate_config_at_path(".codex/config.json", ...) helper already used later in this test module. Consider removing validate_config_json and using validate_config_at_path in the new JSON test to avoid maintaining two helpers for the same behavior.
| let validator = CodexValidator; | |
| validator.validate( | |
| Path::new(".codex/config.json"), | |
| content, | |
| &LintConfig::default(), | |
| ) | |
| validate_config_at_path(".codex/config.json", content) |
| - **OpenCode v1.14.20 -> v1.14.21 doc refresh** (#766) - re-verified all 46 OC-* rules against the upstream changelog. v1.14.21 is a runtime/UI-only patch (LSP pull diagnostics support, bare Git repo project caching, session compaction improvements, UTF-8 BOM preservation, Roslyn for C#, Mistral high reasoning variant, TUI/Desktop fixes) - zero on-disk file schema changes. No code changes required. Bumped `verified_on` for all 46 OC-* rules to 2026-04-23; bumped `RESEARCH-TRACKING.md` "Last Reviewed" for OpenCode 2026-04-22 -> 2026-04-23 and added OC to the Rules column (was just `AGM, XP`). | ||
|
|
||
| ### Fixed | ||
| - **Codex CLI rust-v0.122.0 -> rust-v0.123.0 catch-up** (#765) - upstream `config-schema.json` (verified 2026-04-23) gained 1 new top-level key: `experimental_thread_store_endpoint` (per #18714 in v0.123.0). Without this fix, agnix would false-positive **CDX-004** (unknown TOML top-level key) for any v0.123.0+ config. Added to both `KNOWN_TOP_LEVEL_KEYS` (schemas/codex.rs, used by CDX-004) and `KNOWN_CONFIG_TOP_LEVEL_KEYS` (rules/codex.rs, used by CDX-CFG-006) plus regression tests for both the TOML and JSON paths. Bumped `verified_on` for all 58 CDX-* rules to 2026-04-23. Other v0.123.0 changes (amazon-bedrock model provider #18744, /mcp verbose #18610, plugin MCP loading dual format #18780, realtime handoffs #18597, `remote_sandbox_config` #18763, model metadata refresh) need no agnix changes — `remote_sandbox_config` does not appear as a top-level key in the published schema; model providers are not allowlisted by agnix; the rest are runtime/CLI/UI. |
There was a problem hiding this comment.
The changelog bullet uses "(#765)", but #765 is the issue being closed; elsewhere in this file the parentheses appear to reference the PR number (e.g., #766, #748, #752). Please update this reference to the actual PR number (or remove the parentheses) to keep the changelog cross-references consistent.
| - **Codex CLI rust-v0.122.0 -> rust-v0.123.0 catch-up** (#765) - upstream `config-schema.json` (verified 2026-04-23) gained 1 new top-level key: `experimental_thread_store_endpoint` (per #18714 in v0.123.0). Without this fix, agnix would false-positive **CDX-004** (unknown TOML top-level key) for any v0.123.0+ config. Added to both `KNOWN_TOP_LEVEL_KEYS` (schemas/codex.rs, used by CDX-004) and `KNOWN_CONFIG_TOP_LEVEL_KEYS` (rules/codex.rs, used by CDX-CFG-006) plus regression tests for both the TOML and JSON paths. Bumped `verified_on` for all 58 CDX-* rules to 2026-04-23. Other v0.123.0 changes (amazon-bedrock model provider #18744, /mcp verbose #18610, plugin MCP loading dual format #18780, realtime handoffs #18597, `remote_sandbox_config` #18763, model metadata refresh) need no agnix changes — `remote_sandbox_config` does not appear as a top-level key in the published schema; model providers are not allowlisted by agnix; the rest are runtime/CLI/UI. | |
| - **Codex CLI rust-v0.122.0 -> rust-v0.123.0 catch-up** - upstream `config-schema.json` (verified 2026-04-23) gained 1 new top-level key: `experimental_thread_store_endpoint` (per #18714 in v0.123.0). Without this fix, agnix would false-positive **CDX-004** (unknown TOML top-level key) for any v0.123.0+ config. Added to both `KNOWN_TOP_LEVEL_KEYS` (schemas/codex.rs, used by CDX-004) and `KNOWN_CONFIG_TOP_LEVEL_KEYS` (rules/codex.rs, used by CDX-CFG-006) plus regression tests for both the TOML and JSON paths. Bumped `verified_on` for all 58 CDX-* rules to 2026-04-23. Other v0.123.0 changes (amazon-bedrock model provider #18744, /mcp verbose #18610, plugin MCP loading dual format #18780, realtime handoffs #18597, `remote_sandbox_config` #18763, model metadata refresh) need no agnix changes — `remote_sandbox_config` does not appear as a top-level key in the published schema; model providers are not allowlisted by agnix; the rest are runtime/CLI/UI. |
There was a problem hiding this comment.
Code Review
This pull request updates Codex CLI validation to support the experimental_thread_store_endpoint key, including schema updates, regression tests, and documentation refreshes. Feedback identifies an improvement opportunity to refactor duplicated configuration key lists into a single source of truth to prevent validation inconsistencies and reduce maintenance overhead.
| "experimental_realtime_ws_base_url", | ||
| "experimental_realtime_ws_model", | ||
| "experimental_realtime_ws_startup_context", | ||
| "experimental_thread_store_endpoint", |
There was a problem hiding this comment.
The addition of experimental_thread_store_endpoint to both KNOWN_CONFIG_TOP_LEVEL_KEYS here and KNOWN_TOP_LEVEL_KEYS in schemas/codex.rs highlights a violation of the Single Source of Truth principle. These lists have already diverged in sorting and content (e.g., experimental_use_freeform_apply_patch is sorted differently in both files), which increases maintenance overhead and the risk of inconsistent validation between TOML and JSON/YAML formats. Since both lists represent the same set of valid Codex configuration keys, they should be refactored into a single shared constant.
References
- Instead of merging and deduplicating data from multiple sources, refactor the code to have a single source of truth to avoid duplication in the first place.
Recreated after PR #768 was accidentally closed during a botched batch merge (the cleanup script deleted the branch before the merge attempt completed). Identical content + the round-1 review fixes that were in #768. Closes #765.