Skip to content

Commit 02fbed8

Browse files
schicklingclaude
andauthored
Admit codex-cli 0.147.0 after repeating the pin's policy checks (#272)
st2's controlled Codex launch refused the installed 0.147.0, taking native delivery out of service on any machine that ran `codex update`. The schema comparison 0.146.0 -> 0.147.0 is complete: no definition was removed, no `ServerRequest` arm was added or renamed, and every message envelope st2 parses is byte-identical after canonicalization. The raw diff is noise because 0.147.0 emits object keys in sorted order. Live evidence reached a submitted `turn/start` against the real binary: the delivered prompt rendered in the remote TUI, which then failed on the account's usage limit, with a reset estimated at 2026-08-20. Everything gated behind a completed model turn is therefore unproven on 0.147.0. The constant's doc comment names that gap rather than asserting a check that did not finish. The existing gate test asserted 0.147.0 was rejected. It now derives its admitted cases from the constant, and pins rejection of an older unadmitted release and of the 0.148.0 alpha. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 8d11cbc commit 02fbed8

1 file changed

Lines changed: 38 additions & 18 deletions

File tree

src/codex_app_server.rs

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,18 @@ use crate::{ding, message, run, status};
3535
/// Every admitted version has a delivery-critical schema comparison and live remote-TUI evidence.
3636
/// A later version stays rejected until both checks are repeated; semantic-version proximity is
3737
/// not compatibility evidence for this experimental provider surface.
38-
pub const SUPPORTED_CODEX_CLI_VERSIONS: &[&str] = &["codex-cli 0.145.0", "codex-cli 0.146.0"];
38+
///
39+
/// `codex-cli 0.147.0` is admitted on a completed schema comparison against 0.146.0 and on live
40+
/// evidence that reached a submitted `turn/start` against the real binary. Its live evidence stops
41+
/// short of a completed model turn: the account was over its usage limit when the check ran. The
42+
/// `turn/start` response body, `turn/started`, `turn/completed`, the typed `item/completed`
43+
/// receipt, `turn/steer`, and the `thread/resume` subscription path are therefore unproven on this
44+
/// version. See #267.
45+
pub const SUPPORTED_CODEX_CLI_VERSIONS: &[&str] = &[
46+
"codex-cli 0.145.0",
47+
"codex-cli 0.146.0",
48+
"codex-cli 0.147.0",
49+
];
3950
const RUNTIME_SCHEMA: &str = "st2.codex-runtime.v1";
4051
const BINDING_SCHEMA: &str = "st2.codex-thread-binding.v1";
4152
const CONTROL_STATE_SCHEMA: &str = "st2.codex-control-state.v1";
@@ -2436,24 +2447,33 @@ mod tests {
24362447
fs::set_permissions(&path, fs::Permissions::from_mode(0o755)).unwrap();
24372448
path
24382449
};
2439-
for (name, version) in [
2440-
("codex-0145", "codex-cli 0.145.0"),
2441-
("codex-0146", "codex-cli 0.146.0"),
2442-
] {
2443-
ensure_supported_version(write_version(name, version).to_str().unwrap()).unwrap();
2450+
for (index, version) in SUPPORTED_CODEX_CLI_VERSIONS.iter().enumerate() {
2451+
ensure_supported_version(
2452+
write_version(&format!("codex-admitted-{index}"), version)
2453+
.to_str()
2454+
.unwrap(),
2455+
)
2456+
.unwrap();
2457+
}
2458+
// An unadmitted release stays rejected until both policy checks are repeated for it, and
2459+
// an alpha cannot carry live evidence at all.
2460+
for (index, unadmitted) in ["codex-cli 0.144.0", "codex-cli 0.148.0-alpha.21"]
2461+
.into_iter()
2462+
.enumerate()
2463+
{
2464+
let error = ensure_supported_version(
2465+
write_version(&format!("codex-unadmitted-{index}"), unadmitted)
2466+
.to_str()
2467+
.unwrap(),
2468+
)
2469+
.unwrap_err();
2470+
assert!(error.to_string().contains(unadmitted));
2471+
assert!(
2472+
error
2473+
.to_string()
2474+
.contains(&SUPPORTED_CODEX_CLI_VERSIONS.join(", "))
2475+
);
24442476
}
2445-
let error = ensure_supported_version(
2446-
write_version("codex-0147", "codex-cli 0.147.0")
2447-
.to_str()
2448-
.unwrap(),
2449-
)
2450-
.unwrap_err();
2451-
assert!(error.to_string().contains("codex-cli 0.147.0"));
2452-
assert!(
2453-
error
2454-
.to_string()
2455-
.contains("codex-cli 0.145.0, codex-cli 0.146.0")
2456-
);
24572477
}
24582478

24592479
#[test]

0 commit comments

Comments
 (0)