From edfb05667400b4ae7cdec588fd389abbcca89f5b Mon Sep 17 00:00:00 2001 From: zk <> Date: Tue, 25 Aug 2026 02:11:09 +0800 Subject: [PATCH] chore(cli-version): verify codex against 0.149.1 Gate A (contract): 401 -> 401 schema files, +0 -0 ~0 after canonicalization. Nothing added, removed or reshaped in the app-server protocol -- what a patch release should look like. Gate B (live e2e): 11/11, 321.63s. All eleven sessions log 'cli=codex version=codex-cli 0.149.1' with a matching drift line, which only appears because the binary disagrees with the constant that had not been bumped yet. Run through a PATH shim; the operator's CLIs were untouched. Gate C (release notes): CLEAR, but the release ships with an EMPTY body -- 105 characters, a heading and a compare link. Zero notes is not a pass on its own, so the range was triaged from the compare instead: 5 commits, 23 files. Everything under exec/ and sdk/typescript/ is off our surface because this repo spawns 'app-server --stdio' and never 'codex exec' (codex_conn.rs:66). The core changes are remote-compaction image budgeting, which gate A shows left the wire contract byte-identical. One schema DID change that gate A does not cover: core/config.schema.json, the config-file schema rather than the protocol one. It gained a single boolean feature flag, compaction_image_budget, in two places -- additive, and we do not set it. It would have gone unexamined if the empty notes had been taken at face value. Record: ~/aion/protocols/samples/codex-cli/0.149.1/, including gate-c-notes.md --- crates/aionui-session/src/backend/cli_version.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/aionui-session/src/backend/cli_version.rs b/crates/aionui-session/src/backend/cli_version.rs index 62d5ff3cd..f1e05ddd9 100644 --- a/crates/aionui-session/src/backend/cli_version.rs +++ b/crates/aionui-session/src/backend/cli_version.rs @@ -37,7 +37,7 @@ use crate::event::{LocalizedText, NoticeLevel}; /// on does complete turns and passes the suite, so the gate walks forward over /// 0.147.0 and leaves it unverified rather than a floor anyone can install into. pub const VERIFIED_CLAUDE_VERSION: &str = "2.1.235"; -pub const VERIFIED_CODEX_VERSION: &str = "0.149.0"; +pub const VERIFIED_CODEX_VERSION: &str = "0.149.1"; pub const VERIFIED_AGY_VERSION: &str = "1.1.19"; /// The verified release for a direct-CLI backend, keyed by the program name the @@ -456,10 +456,10 @@ mod tests { #[test] fn components_compare_numerically_not_lexically() { - // The bug a string compare would introduce: "0.149.0" < "0.99.0" + // The bug a string compare would introduce: "0.149.1" < "0.99.0" // lexically, but 149 > 99. assert_eq!(classify("0.99.0", VERIFIED_CODEX_VERSION), VersionVerdict::Older); - assert_eq!(classify("0.149.1", VERIFIED_CODEX_VERSION), VersionVerdict::Newer); + assert_eq!(classify("0.149.2", VERIFIED_CODEX_VERSION), VersionVerdict::Newer); } #[test] @@ -578,10 +578,10 @@ mod tests { // verified release is told nothing, and this breaks if a bump lands // without re-verifying against that exact binary. assert_eq!( - classify("codex-cli 0.149.0", VERIFIED_CODEX_VERSION), + classify("codex-cli 0.149.1", VERIFIED_CODEX_VERSION), VersionVerdict::Verified ); - assert!(drift_notice("codex", "codex-cli 0.149.0", VERIFIED_CODEX_VERSION).is_none()); + assert!(drift_notice("codex", "codex-cli 0.149.1", VERIFIED_CODEX_VERSION).is_none()); } #[test]