Skip to content

Codex use receipt through its SDK surfaces, layer-scoped, with retained native outputs (GPT-6 reviewed) - #312

Merged
seathatflowsinourveins merged 1 commit into
mainfrom
claude/codex-use-receipt-20260926
Sep 26, 2026
Merged

seathatflowsinourveins merged 1 commit into
mainfrom
claude/codex-use-receipt-20260926

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Sep 26, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

This PR adds a use receipt for the Codex CLI (0.155.1) on the workstation nativestack-5975wx-20260925. It drives gpt-6-astra at effort max through Codex's non-interactive SDK surfaces:

  • Turn 1: codex exec --json --sandbox read-only --output-schema.
  • Turn 2: codex exec resume on the same thread under a second schema.

Both answers are checked against independent facts from catalogs/landscape/foundation.json. Only the latest generation, -6, counts. The rows below come from the receipt JSON:

Generation Result layer_refs First output line Independent review
-1 pass unscoped codex-cli 0.155.1 model gpt-6-astra effort max sandbox read-only | codex answer LAYER_COUNT=20 | independent python count 20 needs_changes
-2 pass unscoped turn 1 event types: ['item.completed', 'item.started', 'thread.started', 'turn.completed', 'turn.started'] | items: ['agent_message', 'command_executi needs_changes
-3 pass unscoped CODEX_SDK_SURFACES_VERIFIED | codex 0.155.1 | same thread resumed: True agree
-4 pass native-clients, agent-sdks CODEX_SDK_SURFACES_VERIFIED | codex-cli 0.155.1 | negative controls rejected 3/3 | retained 8 native files, SHA256SUMS sha256=b4ccf4232b344b4ca0fc7001 needs_changes
-5 pass native-clients, agent-sdks CODEX_SDK_SURFACES_VERIFIED | codex-cli 0.155.1 | negative controls rejected 3/3 | retained 8 native files, SHA256SUMS sha256=53551a67e891ae810f390adb agree
-6 pass native-clients, agent-sdks CODEX_SDK_SURFACES_VERIFIED | codex-cli 0.155.1 | negative controls rejected 5/5 | retained 8 native files, SHA256SUMS sha256=2b74370f62c46a985847e0db agree

What -6 retains

  • The eight native Codex files are under evidence/artifacts/codex-use-20260926-6/: both --json event streams, both schema outputs, both schemas, and both stderr streams. They are sanitized with host_receipts.sanitize(), and their SHA256SUMS sha256 is printed on the receipt's first output line.
  • The event streams are published through .gitignore exceptions scoped to the -5 and -6 directories. The repository ignores *.jsonl, and the exception follows the mover-v3 precedent.
  • When Codex runs cat on local client configuration (~/.codex, ~/.claude, or plugin caches), that item's output is replaced by its byte count and sha256 before hashing. This machine-specific config is never published.
  • The checker requires turn 2's thread.started to carry turn 1's thread_id. It rejects five negative controls: a wrong count, a wrong first layer, a removed turn.completed event, a removed resume thread.started event, and a mismatched resume thread_id. The command exits 0 only when the positive check passes and all five controls are rejected.
  • The receipt is scoped (Layer-scoped host-receipt verification; version-aware supersession (GPT-6 + Opus verified) #321) to foundation/native-clients and foundation/agent-sdks, the two layers codex wins whose roles this run exercises.

Status changes (generated from the component matrices)

Layer Winner Platform Before After
foundation/agent-sdks codex linux-wsl2-x86_64 accepted host_verified
foundation/native-clients codex linux-wsl2-x86_64 accepted host_verified

The workers-layer alternative "Codex native workers" stays receipts_recorded. This run says nothing about owned writing children or worktrees.

Review history

  1. -2 was held at needs_changes on backed claims. -3 fixed that, and an independent session agreed.

  2. GPT-6 cross-family review of -3 (Codex gpt-6-astra, effort max; posted below as a comment) found three problems:

    • the retained output was only the checker's summary;
    • no failing control had been run;
    • the unscoped receipt would have promoted "Codex native workers".
  3. Fixes: Layer-scoped host-receipt verification; version-aware supersession (GPT-6 + Opus verified) #321 added layer scoping and version-aware supersession, then -4 was recorded.

  4. -4: the independent review held it at needs_changes because the repository's *.jsonl rule kept its event streams out of the commit, and one stream contained local client configuration. -4's streams remain unpublished and unregistered.

  5. -5: an independent review agreed on all four points. It re-ran the command in a throwaway copy, checked SHA256SUMS on a clean HEAD, compared item structure to confirm only client-config output was withheld, and simulated the agree to confirm only the two named layers change.

  6. -6: a GPT-6 verification pass (posted below) found that -5's checker accepted a missing resume thread.started event, tid2 in ([tid], []), a regression from -3. -6 requires tid2 == [tid] and adds two thread controls. An independent session agreed on all four points and reproduced both new controls.

Residuals

  • Turn 2 answered through context-mode's MCP tool in both the recorded run and the review's re-run. MCP tools run outside Codex's sandbox, and the receipt's limitation says read-only covers Codex's own shell commands only.
  • One of -6's limitations still says "three negative controls" (left over from -4); its claim and output say five. Receipts are immutable, so this stands as a known wording error.
  • Thread ids are redacted in the retained streams. The same-thread property therefore rests on the checker's verdict and on turn 2 answering from context it was never given.
  • Two of the eight "native outputs" are the schemas, which are inputs.

Verification

  • scripts/validate.py, host_receipts.py validate, component_matrix.py --check, new_host_grand_list.py --check and evidence_manifest.py --check: all pass.
  • verdict_review_gate.py: passed.
  • A clean git archive HEAD copy passes validate.py and evidence_manifest.py --check, and its SHA256SUMS verify.

SOTA sources

🤖 Generated with Claude Code

@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Sep 26, 2026
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/codex-use-receipt-20260926 branch 2 times, most recently from f8cfe0f to 6dbd019 Compare September 26, 2026 02:02
@seathatflowsinourveins seathatflowsinourveins changed the title Codex use receipt through its SDK surfaces (json events, output schema, exec resume); Codex host_verified on WSL2 Codex use receipt through its SDK surfaces, layer-scoped, with retained native outputs (GPT-6 reviewed) Sep 26, 2026
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/codex-use-receipt-20260926 branch from 6dbd019 to 6a5ae96 Compare September 26, 2026 06:19
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

GPT-6 cross-family review of generation -3 (Codex gpt-6-astra, effort max, read-only), retained here as the review of record. Generations -4 and -5 repair it; see the PR body.

DEFECTS FOUND

  • medium | [nativestack-5975wx-20260925--codex--use--20260926-3.json:26](/wt-codex-use/evidence/hosts/nativestack-5975wx-20260925/nativestack-5975wx-20260925--codex--use--20260926-3.json:26) | The retained output and its hash cover only the handwritten Python summary. Native JSONL, schema outputs, and stderr remain in an unreferenced temporary directory, so the submitted evidence cannot independently substantiate the native_proven promotion. | Retain sanitized, hash-registered output from the pinned upstream commands; distinguish the custom checker’s local_integration result from native execution evidence.

  • medium | [nativestack-5975wx-20260925--codex--use--20260926-3.json:56](/wt-codex-use/evidence/hosts/nativestack-5975wx-20260925/nativestack-5975wx-20260925--codex--use--20260926-3.json:56) | The review declares the control sufficient without an executed failing control. All three receipts record exit 0; earlier needs_changes reviews are not failed checks. This violates docs/acceptance-evidence-policy.md:42–53. | Run the exact checker with a deliberately incorrect answer or missing required event, retain its failure, and label that control separately from upstream E2E evidence.

  • medium | [catalogs/landscape/component-evidence-matrix.json:3098](/wt-codex-use/catalogs/landscape/component-evidence-matrix.json:3098) | The change also promotes “Codex native workers” to host_verified. The receipt exercises one read-only thread and resume; it does not establish the owned writing child and worktree behavior that this alternative’s catalog entry explicitly identifies as unproven. | Scope generated verification to the exercised layer/role; retain receipts_recorded for this alternative until matching worker evidence exists.

@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

GPT-6 verification pass on head 6a5ae96f (generation -5), Codex gpt-6-astra, effort max, read-only:

DEFECTS FOUND

  • medium | [nativestack-5975wx-20260925--codex--use--20260926-5.json:22](/wt-codex-use/evidence/hosts/nativestack-5975wx-20260925/nativestack-5975wx-20260925--codex--use--20260926-5.json:22) | tid2 in ([tid], []) accepts missing resume-thread evidence. Removing turn 2’s thread.started event still produces CODEX_SDK_SURFACES_VERIFIED with all three existing controls rejected. This regresses generation -3’s strict same-thread check. | Require tid2 == [tid]; add missing-event and mismatched-ID controls, and retain their failures in a superseding receipt.

Repaired in generation -6, which requires the strict same-thread check and adds the two thread controls; an independent session agreed.

…ed native outputs

Generations -1..-6 of the codex use receipt. -6 retains the sanitized native Codex outputs with
a SHA256SUMS, requires the same resume thread, rejects five negative controls, and is scoped with
layer_refs to foundation/native-clients and foundation/agent-sdks (GPT-6 cross-family findings).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/codex-use-receipt-20260926 branch from 7327c3c to cba7b52 Compare September 26, 2026 09:42
@seathatflowsinourveins
seathatflowsinourveins merged commit d174c09 into main Sep 26, 2026
24 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the claude/codex-use-receipt-20260926 branch September 26, 2026 09:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant