From 1397c44a1164a97c12ad5c021aeb60e3807b1b43 Mon Sep 17 00:00:00 2001 From: Julius Olsson Date: Sat, 26 Sep 2026 20:36:32 -0700 Subject: [PATCH 1/4] docs(plan): plan accepting Codex 0.157.1 Refs #234 Co-Authored-By: Claude Opus 5.5 --- docs/plans/2026-09-26-accept-codex-0157.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 docs/plans/2026-09-26-accept-codex-0157.md diff --git a/docs/plans/2026-09-26-accept-codex-0157.md b/docs/plans/2026-09-26-accept-codex-0157.md new file mode 100644 index 000000000..c3cc32eb0 --- /dev/null +++ b/docs/plans/2026-09-26-accept-codex-0157.md @@ -0,0 +1,22 @@ +# Accept Codex 0.157.1 (#234, codex-headless#16) + +Size: short. This is a compatibility review; the only code change is the accepted version. + +## Evidence (verified 2026-09-26) +- **Release notes, 0.149.1 → 0.157.1** (19 releases), scanned for rollouts, session/resume, the TUI composer and footer, approvals/trust, the Responses stream, proxy and config: + - 0.157.0 #47096 keeps TUI hints "immediately above the composer". The 0.157.1 PTY recording (`codex-headless testing/fixtures/composer-0157/tall-draft-ctrlc.json`) still shows the idle `? for shortcuts` hint on the row under the status row, which is what the composer classifier reads. + - 0.157.0 #47113 persists thread-creator identity in rollouts, and 0.153 #41912 persists token usage. Both are checked in the corpus below. + - 0.152/0.153 add rollout compression for shared lineages. None of the 1,850 files on disk is compressed. + - The optional fullscreen `/tui` (0.156) is opt-in. +- **Rollout corpus** (`~/.codex/sessions`, 1,850 files, 208 of them 0.157.x), with record and payload types per minor version: + - The only new top-level type since 0.144 is `token_usage_record` (from 0.153; 10,558 lines in 0.157). It is opaque to the parser's classifier: agent-transcript-parser#38. + - 0.157 writes no `event_msg:user_message`/`agent_message`. The prompt is a role-user `response_item` plus `event_msg:item_completed` (`UserMessage`). Fresh-rollout ownership (`codex-headless FreshRolloutClaim`) matches every durable user observation, including `response_item`, so it still finds the prompt. The same goes for `SessionList` and the app's `AgentTranscriptReader`, which both read role-user response items. +- **Screen:** 0.157.0 and 0.157.1 raw PTY recordings exist (idle, draft, Ctrl+C, and a 20-line draft), and the composer classifier is pinned on them (codex-headless#54, #57). +- **Runtime:** Agent Code has driven codex-cli 0.157.1 panes daily since 2026-09-25 (the #1319/#1327 work used them); the proxy recordings in `~/.config/agent-code/proxy` come from 0.157.1 sessions. + +## Change +- `support/upstream-versions.json`: Codex `accepted` 0.130.0 → 0.157.1, with `checkedAt` 2026-09-26. +- The same in codex-headless (0.149.1 → 0.157.1), with notes pointing at this evidence. + +## Out of scope +Cataloguing `token_usage_record` (agent-transcript-parser#38). From cd626dfe99866b7e1a3c149057dfb0d5d542ead6 Mon Sep 17 00:00:00 2001 From: Julius Olsson Date: Sat, 26 Sep 2026 20:37:18 -0700 Subject: [PATCH 2/4] chore(upstream): accept Codex 0.157.1 Compatibility review in docs/plans/2026-09-26-accept-codex-0157.md: release notes, a rollout-corpus survey by version, the 0.157 PTY recordings, and daily production use. The one parser-side gap (token_usage_record) is agent-transcript-parser#38. Fixes #234 Co-Authored-By: Claude Opus 5.5 --- support/upstream-versions.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/support/upstream-versions.json b/support/upstream-versions.json index b796b2cde..35ad28be2 100644 --- a/support/upstream-versions.json +++ b/support/upstream-versions.json @@ -12,8 +12,8 @@ "label": "Codex", "pkg": "@openai/codex", "changelog": "https://github.com/openai/codex/releases", - "accepted": "0.130.0", - "checkedAt": "2026-05-16" + "accepted": "0.157.1", + "checkedAt": "2026-09-26" }, "opencode": { "label": "OpenCode", From b9674e07efab33de335a564fd59cf6ebe1cf05e9 Mon Sep 17 00:00:00 2001 From: Julius Olsson Date: Sat, 26 Sep 2026 22:42:33 -0700 Subject: [PATCH 3/4] docs(plan): record the known gaps found in the Codex 0.157.1 review Refs #234 Co-Authored-By: Claude Opus 5.5 --- docs/plans/2026-09-26-accept-codex-0157.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/plans/2026-09-26-accept-codex-0157.md b/docs/plans/2026-09-26-accept-codex-0157.md index c3cc32eb0..58e287286 100644 --- a/docs/plans/2026-09-26-accept-codex-0157.md +++ b/docs/plans/2026-09-26-accept-codex-0157.md @@ -1,4 +1,4 @@ -# Accept Codex 0.157.1 (#234, codex-headless#16) +# Accept Codex 0.157.1 (#234, codex-headless#16), with its known gaps filed Size: short. This is a compatibility review; the only code change is the accepted version. @@ -7,11 +7,19 @@ Size: short. This is a compatibility review; the only code change is the accepte - 0.157.0 #47096 keeps TUI hints "immediately above the composer". The 0.157.1 PTY recording (`codex-headless testing/fixtures/composer-0157/tall-draft-ctrlc.json`) still shows the idle `? for shortcuts` hint on the row under the status row, which is what the composer classifier reads. - 0.157.0 #47113 persists thread-creator identity in rollouts, and 0.153 #41912 persists token usage. Both are checked in the corpus below. - 0.152/0.153 add rollout compression for shared lineages. None of the 1,850 files on disk is compressed. - - The optional fullscreen `/tui` (0.156) is opt-in. -- **Rollout corpus** (`~/.codex/sessions`, 1,850 files, 208 of them 0.157.x), with record and payload types per minor version: - - The only new top-level type since 0.144 is `token_usage_record` (from 0.153; 10,558 lines in 0.157). It is opaque to the parser's classifier: agent-transcript-parser#38. - - 0.157 writes no `event_msg:user_message`/`agent_message`. The prompt is a role-user `response_item` plus `event_msg:item_completed` (`UserMessage`). Fresh-rollout ownership (`codex-headless FreshRolloutClaim`) matches every durable user observation, including `response_item`, so it still finds the prompt. The same goes for `SessionList` and the app's `AgentTranscriptReader`, which both read role-user response items. -- **Screen:** 0.157.0 and 0.157.1 raw PTY recordings exist (idle, draft, Ctrl+C, and a 20-line draft), and the composer classifier is pinned on them (codex-headless#54, #57). +- **Rollout corpus** (`~/.codex/sessions`, read line by line). The counts are a 2026-09-26 snapshot; the corpus grows while agents run (the reviewers counted 2,396–2,407 files, 219–233 of them 0.157.x). Record and payload types per minor version: + - The only top-level type in 0.150–0.157 not seen in 0.144–0.149 is `token_usage_record` (from 0.153). It is opaque to the parser's classifier: agent-transcript-parser#38. + - 0.157 writes no `event_msg:user_message`/`agent_message`. The prompt is a role-user `response_item` plus `event_msg:item_completed` (`UserMessage`). Fresh-rollout ownership (`codex-headless FreshRolloutClaim`) matches every durable user observation, including `response_item`, so it still finds the prompt. +- **Known gaps found in review.** Each is filed; all but #1289 are confirmed inherited from the already-accepted 0.149.1: + - codex-headless#59: `listCodexSessions` summaries show the injected AGENTS/environment block (Agent Code's picker reads Codex's own index and is unaffected); + - codex-headless#62: the semantic tool lifecycle ignores `item_completed` (`CommandExecution`/`McpToolCall`), the only tool form since 0.149; + - #1362: `read_agent_transcript` drops `custom_tool_call` exec commands; + - #1363: the conversation source's no-index fallback reads only `event_msg:user_message`, so 0.157 prompts are lost when `state_N.sqlite` is unusable; + - #1289 (existing): 0.157 `compacted` payloads have no `type` and never render a compaction boundary; + - codex-headless#60: the recorded rollout-ownership tests run past 5 s under load. +- **Screen:** 0.157.0 and 0.157.1 raw PTY recordings pin the composer classifier: idle, a draft and Ctrl+C in 0.157.0; a 20-line draft in 0.157.1 (`tall-draft-ctrlc.json`, on codex-headless main since #57; this PR does not move the app's pointer, so the app checkout here has only the 0.157.0 file). + - 0.157.0 #47178 **enabled the fullscreen transcript by default**. The 0.157.1 recording uses the alternate screen (`\x1b[?1049h`), so the classifier is pinned in that mode, and Agent Code passes no override. + - Trust and approval overlays have no 0.157 recording. They are unverified in the new default mode: a stated residual. - **Runtime:** Agent Code has driven codex-cli 0.157.1 panes daily since 2026-09-25 (the #1319/#1327 work used them); the proxy recordings in `~/.config/agent-code/proxy` come from 0.157.1 sessions. ## Change From 581d83ccb4c6440e67961db89130109d0c02831e Mon Sep 17 00:00:00 2001 From: Julius Olsson Date: Sun, 27 Sep 2026 10:45:19 -0700 Subject: [PATCH 4/4] docs(plan): the tall fixture is at the pinned pointer; the review gaps are closed and the prompt mutations are killed on main (#1354 round 2) Co-Authored-By: Claude Opus 5.5 --- docs/plans/2026-09-26-accept-codex-0157.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/plans/2026-09-26-accept-codex-0157.md b/docs/plans/2026-09-26-accept-codex-0157.md index 58e287286..6b4bf14c0 100644 --- a/docs/plans/2026-09-26-accept-codex-0157.md +++ b/docs/plans/2026-09-26-accept-codex-0157.md @@ -10,14 +10,14 @@ Size: short. This is a compatibility review; the only code change is the accepte - **Rollout corpus** (`~/.codex/sessions`, read line by line). The counts are a 2026-09-26 snapshot; the corpus grows while agents run (the reviewers counted 2,396–2,407 files, 219–233 of them 0.157.x). Record and payload types per minor version: - The only top-level type in 0.150–0.157 not seen in 0.144–0.149 is `token_usage_record` (from 0.153). It is opaque to the parser's classifier: agent-transcript-parser#38. - 0.157 writes no `event_msg:user_message`/`agent_message`. The prompt is a role-user `response_item` plus `event_msg:item_completed` (`UserMessage`). Fresh-rollout ownership (`codex-headless FreshRolloutClaim`) matches every durable user observation, including `response_item`, so it still finds the prompt. -- **Known gaps found in review.** Each is filed; all but #1289 are confirmed inherited from the already-accepted 0.149.1: +- **Known gaps found in review.** Each was filed; all but #1289 are confirmed inherited from the already-accepted 0.149.1. **Status on 2026-09-27:** #1362, #1363 and #1289 are closed (#1363 by #1407). The two surviving prompt-extraction mutations from round-2 review b (the transcript reader's role-user `response_item`, and `foldCodexRecord`'s `response_item` branch) are both KILLED on origin/main `6dd23a49`. Disabling either fails a test there (16 transcript-reader tests; "lists prompts for a sampled rollout newest first"), so no new issue is needed: - codex-headless#59: `listCodexSessions` summaries show the injected AGENTS/environment block (Agent Code's picker reads Codex's own index and is unaffected); - codex-headless#62: the semantic tool lifecycle ignores `item_completed` (`CommandExecution`/`McpToolCall`), the only tool form since 0.149; - #1362: `read_agent_transcript` drops `custom_tool_call` exec commands; - #1363: the conversation source's no-index fallback reads only `event_msg:user_message`, so 0.157 prompts are lost when `state_N.sqlite` is unusable; - #1289 (existing): 0.157 `compacted` payloads have no `type` and never render a compaction boundary; - codex-headless#60: the recorded rollout-ownership tests run past 5 s under load. -- **Screen:** 0.157.0 and 0.157.1 raw PTY recordings pin the composer classifier: idle, a draft and Ctrl+C in 0.157.0; a 20-line draft in 0.157.1 (`tall-draft-ctrlc.json`, on codex-headless main since #57; this PR does not move the app's pointer, so the app checkout here has only the 0.157.0 file). +- **Screen:** 0.157.0 and 0.157.1 raw PTY recordings pin the composer classifier: idle, a draft and Ctrl+C in 0.157.0; a 20-line draft in 0.157.1 (`tall-draft-ctrlc.json`, from codex-headless #57). This PR does not move the app's codex-headless pointer, but the pointer it already has (`d42cc1da`) contains both files, and `codexSession.nativeComposer.test.ts` replays the tall recording (round-2 reviews a and b). - 0.157.0 #47178 **enabled the fullscreen transcript by default**. The 0.157.1 recording uses the alternate screen (`\x1b[?1049h`), so the classifier is pinned in that mode, and Agent Code passes no override. - Trust and approval overlays have no 0.157 recording. They are unverified in the new default mode: a stated residual. - **Runtime:** Agent Code has driven codex-cli 0.157.1 panes daily since 2026-09-25 (the #1319/#1327 work used them); the proxy recordings in `~/.config/agent-code/proxy` come from 0.157.1 sessions.