Repository navigation
Codex worker lane: workstation host proof, skill-worker route check and lane follow-ups - #406
Merged
Merged
Conversation
Retain six sanitized workstation outputs, the failed project-binding proof, the corrected 7/7 static result and 12/12 five-call live result. Append the dated host-step and A0-control updates without rewriting historical records. Add an installed-SKILL.md worker probe with exact first-line validation and recorded context-mode or rtk cat route, plus failing-first synthetic controls. Record the profile-layering and strict-config corrections in the anti-pattern log. Sources: openai/codex rust-v0.157.1, codex-rs/config/src/loader/mod.rs L286-334, L594-600 and L625-645; config_layer_source.rs::precedence; codex-rs/exec/src/exec_events.rs. mksglu/context-mode v1.0.169, src/security.ts::evaluateProjectContainment and src/server.ts, issue #852. rtk-ai/rtk v0.50.0 hooks/rtk-awareness-full.md; https://developers.openai.com/codex/skills/; https://docs.python.org/3.12/library/shlex.html. Validation: 99 covering unittests, 8 skipped, exit 0; two additional native Codex scratch-home checks passed. New skill controls and launch/summary tests failed before implementation, then passed. No fresh live model run is claimed. Content written by GPT-6 (gpt-6-astra, effort max) through the Codex worker lane and the OmniRoute pool; committed by the coordinator harness. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Narrow the worker prompt to the rtk cat forms its verdict accepts, add synthetic accept/refuse controls for each reviewed shell form, and match the observed failed/null-error/content MCP refusal. Drop result.isError, which Codex does not serialize in its native exec event result. Add dated pre-#395 revision errata, keep start-up allowances pending, and document six live calls, the skill prerequisite and missing-skill failure. Correct enforcement, invocation and builder-observation attributions; retain the coordinator's validation and isolated delta-suite outcomes. Sources: openai/codex rust-v0.157.1, codex-rs/exec/src/exec_events.rs L263-276; codex-rs/config/src/loader/mod.rs L286-334, L594-600 and L625-645. mksglu/context-mode v1.0.169 src/server.ts L1165-1200, L2114-2123 and L2215-2219; src/security.ts::evaluateProjectContainment (issue #852). rtk-ai/rtk v0.50.0 hooks/rtk-awareness-full.md; https://developers.openai.com/codex/skills/; https://docs.python.org/3.12/library/shlex.html. Local #395: 805991b. Validation: prompt control failed before the fix; skill module passed 10 tests; covering modules passed 100 tests, 8 skips, exit 0. No new live model call or host apply was run. Historical coordinator acceptance is reported separately in pr-body.md; the coordinator owns re-registration. Content written by GPT-6 (gpt-6-astra, effort max) through the Codex worker lane and the OmniRoute pool; committed by the coordinator harness. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins
force-pushed
the
claude/w3-followups-20260927
branch
from
September 27, 2026 15:20
de272a7 to
f359914
Compare
seathatflowsinourveins
pushed a commit
that referenced
this pull request
Sep 28, 2026
…lane host receipt One review round on 0779e91a (GPT-6 codex exec and a Claude evidence-reviewer, both changes-needed); every finding was in the record or the evidence text: - the record: --max-turns 10 with one 11-turn result; every builder change after the freeze; the applied X9 text ties with the line it replaced on the preregistered metrics; the runs used ba1700a's files; X5b's wording and the tests that read AGENTS.md; the advisor calls; M4 is project-side; a review subsection; - x9-round3: audit_control_r3.py and judges/audit-control.json (clean copies reproduce the published verdicts; one planted access per judgment voids all four); the README lists every builder change, the judge-action flag and the tested configuration; - codex-worker-lane-host-20260928: the 12:14-12:15Z dry run, apply and proof, sanitized as #406's were, and a recheck with exit codes and times (dry run: block in place; proof 7 of 7); - review-444: both prompts, returns, usage and each finding's disposition. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins
pushed a commit
that referenced
this pull request
Sep 28, 2026
…lane host receipt One review round on 0779e91a (GPT-6 codex exec and a Claude evidence-reviewer, both changes-needed); every finding was in the record or the evidence text: - the record: --max-turns 10 with one 11-turn result; every builder change after the freeze; the applied X9 text ties with the line it replaced on the preregistered metrics; the runs used ba1700a's files; X5b's wording and the tests that read AGENTS.md; the advisor calls; M4 is project-side; a review subsection; - x9-round3: audit_control_r3.py and judges/audit-control.json (clean copies reproduce the published verdicts; one planted access per judgment voids all four); the README lists every builder change, the judge-action flag and the tested configuration; - codex-worker-lane-host-20260928: the 12:14-12:15Z dry run, apply and proof, sanitized as #406's were, and a recheck with exit codes and times (dry run: block in place; proof 7 of 7); - review-444: both prompts, returns, usage and each finding's disposition. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins
pushed a commit
that referenced
this pull request
Sep 28, 2026
…lane host receipt One review round on 0779e91a (GPT-6 codex exec and a Claude evidence-reviewer, both changes-needed); every finding was in the record or the evidence text: - the record: --max-turns 10 with one 11-turn result; every builder change after the freeze; the applied X9 text ties with the line it replaced on the preregistered metrics; the runs used ba1700a's files; X5b's wording and the tests that read AGENTS.md; the advisor calls; M4 is project-side; a review subsection; - x9-round3: audit_control_r3.py and judges/audit-control.json (clean copies reproduce the published verdicts; one planted access per judgment voids all four); the README lists every builder change, the judge-action flag and the tested configuration; - codex-worker-lane-host-20260928: the 12:14-12:15Z dry run, apply and proof, sanitized as #406's were, and a recheck with exit codes and times (dry run: block in place; proof 7 of 7); - review-444: both prompts, returns, usage and each finding's disposition. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins
added a commit
that referenced
this pull request
Sep 28, 2026
…CLAUDE.md, 4 of 4 blind judgments; dashboard manifest bound (#444) * AGENTS.md: scope role dispatch to new or ad-hoc stages; current-state holdout wording Two items of the 2026-09-27 prompt audit, resolved by cross-family convergence (docs/decisions/2026-09-27-prompt-audit-resolution.md, lane:foundation PR): - Role dispatch applies to each new or ad-hoc workflow agent() stage; the saved scripts vendored in examples/claude-native/workflows keep their reviewed routing, byte-identical to agent-lab, as that README states in its opening paragraph and the Workflow contract's Dispatch by role bullet (F1). - The inspected 2021 control segment: "has been inspected, so no experiment may present it as a fresh untouched holdout" (F4). o200k (gpt-tokenizer 3.4.0): AGENTS.md 2,374 -> 2,401 tokens (+27). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * X9 second round: blind two-family re-judgment splits again; CLAUDE.md unchanged After round 1 split 2 and 2 on X9 (CLAUDE.md:3-4), a second round added: - the installed client's own refusals of /context and /mcp through the Skill tool; - an executed comparison of the three texts, all headless claude -p runs through promptfoo 0.123.1: K1-K3 as 27 preregistered runs on Opus 5.5, and K4 as 9 runs on Sonnet 5; - 38 dated sources, plus 5 recorded searches that found nothing. Attempt 1 was void, because its judges could read this record and the coordinator's work directory. Attempt 2 was final. Its judges read a plain export of ba1700a and judged in both orders: blind-adjudicator agents and the packaged GPT-6 runner. A void audit, hashed before any return was read, found no voiding hit. Both GPT-6 judgments chose the GPT-6 lane's text, and both Claude judgments chose the Claude lane's text, so under the unanimity rule nothing is applied. All eight judgments across both rounds reject the current line. The addendum records both positions and the comparison that would decide it. Review: - One round, by GPT-6 and Claude reviewers, then one repair round: - disclose that K4 ran on Sonnet 5 while the packets said Opus 5.5; - make check_orders.py exit 1 on a difference, and add retally.py; - correct the counts; - add receipts (run windows, settings file names per run, the K4 skill-list sentences, the isolation receipt, a source supplement); - fix the wording. - A separate re-check found all 13 items fixed and two new defects: an overstated "keeps only" claim and an overstated account of K4's origin. Both are fixed. The recovered first check_orders.py is kept to show its flaw. - A pre-handoff review found that the published packets, prompts and K4 files quoted answer heads containing client configuration (an enabled-plugin entry, status-line wiring, plugin install records). Every published copy now withholds them. attempt2/sent-sha256.json keeps the hashes of the files as sent. This commit squashes the earlier ones, so no commit on the branch carries that text. docs/harness-defaults.md gains three dated anti-pattern rows: - a model scope taken from the preregistration instead of each run's recorded model; - a check that reported a mismatch and exited 0; - judge inputs published with answer text that quotes client configuration. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Prompt audit round 3: X9 applied to CLAUDE.md; lane A's S1 and X5b in AGENTS.md; AN-13 receipt - CLAUDE.md lines 3-8 (X9): round 3 compared the two texts on the measure the second round named (native /mcp and /context refusal in print mode, with a promptfoo-graded, preregistered comparison) and the blind adjudication chose the GPT-6 lane's text in all four judgments. - AGENTS.md:3 (X5b): the operator's 2026-09-28 top-rule paragraph, byte for byte; AGENTS.md:37 (S1): build a PR description from the pull request template. Both converged in lane A (agree / agree). X5a and X5c land in #458. - AN-13: the headless /doctor prompt-audit run the 2026-09-28 community sweep left open. Facts of both runs in evidence/artifacts/prompt-audit-20260927/an13/ (the report text is not published); no edit made from it; each finding's disposition is in its README and in the decision record. - Decision record and x9-round3/ evidence (preregistration, isolation receipt, fixtures, judges, usage). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Prompt audit: print-mode anti-pattern row (AN-13), line-7 co-change with X5b, round-3 token receipts - docs/harness-defaults.md: a dated row for running a headless skill that starts background agents under print mode's default 600 s wait (AN-13's first run: four Explore agents stopped by the client, an interim note instead of the report); the rerun with CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0 returned the report (code.claude.com/docs/en/env-vars). - docs/harness-defaults.md:7 restates AGENTS.md's new top-rule heading (X5b), disclosed in the decision record. - controls/token-counts-r3-{f508ffb,base,after}.txt: the o200k counts the record cites for CLAUDE.md (30 -> 96 at f508ffb; 96 -> 162 at fb14ded) and AGENTS.md (2,374 -> 2,484 at fb14ded). - The record cites validate.yml's heading rule at both revisions and notes the Codex-lane host step done on this workstation after #458. - x9-round3/README.md: the scan note names every kind of match (names, not values), including one judgment's quote of the untested cases. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Grand dashboard: the evidence manifest gets its own read bound This pull request's registrations take manifests/evidence.json past the 2,000,000-byte bound progress.py applied to every source (1,987,653 bytes on main at fb14ded; 2,017,827 with this branch), so the snapshot refused it and eight dashboard tests failed. The snapshot reads only the manifest's receipt count: SOURCE_MAX_BYTES gives the manifest 8,000,000 bytes and every other source keeps MAX_BYTES. read(root, relative) keeps its signature (the tests patch it). The new test fails on the unchanged reader (controls/dashboard-bound-before.txt) and passes with 16 others (dashboard-bound-after.txt). Overturn: when the manifest nears the new bound, count receipts from a smaller source instead of raising it again. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Prompt audit round 3: review repairs, the audit's control, the Codex lane host receipt One review round on 0779e91a (GPT-6 codex exec and a Claude evidence-reviewer, both changes-needed); every finding was in the record or the evidence text: - the record: --max-turns 10 with one 11-turn result; every builder change after the freeze; the applied X9 text ties with the line it replaced on the preregistered metrics; the runs used ba1700a's files; X5b's wording and the tests that read AGENTS.md; the advisor calls; M4 is project-side; a review subsection; - x9-round3: audit_control_r3.py and judges/audit-control.json (clean copies reproduce the published verdicts; one planted access per judgment voids all four); the README lists every builder change, the judge-action flag and the tested configuration; - codex-worker-lane-host-20260928: the 12:14-12:15Z dry run, apply and proof, sanitized as #406's were, and a recheck with exit codes and times (dry run: block in place; proof 7 of 7); - review-444: both prompts, returns, usage and each finding's disposition. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Prompt audit: map the reviewed commits to the rebased ones The branch was rebased onto 9f8db58 (#400) with every patch unchanged (git range-diff shows each pair as =). review-444/README.md says 0779e91a, the reviewed head, was never pushed and was 7e5eddcd plus a registration commit, and gives the rebased SHAs of 9e036e7d and 7e5eddcd; the decision record points there. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Prompt audit: #446 carried the dashboard bound; map reviewed commits by subject After the rebase onto 3058b23, the dashboard commit keeps only its record subsection and the two receipts: #446 landed the same progress.py and test hunks (two-file patch-id 8f693abd4c601190). The review README now names the reviewed commits by subject, since each rebase changes their SHAs. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * AN-13: point M4 and M5 to their 2026-09-28 second-family lanes M4: both lanes reject the rewrite (no edit; the preload stays with the 2026-10-25 comparison). M5: the lanes amended with different texts and the blind adjudication split (unchanged). Both are recorded in docs/decisions/2026-09-28-an13-m4-m5.md, a separate lane:foundation PR. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * AN-13 M4 pointer: the trial's removal rule is open (#460) #460's record now says the M4 lanes did not test the skills trial's rule that removes a trial skill whose instructions conflict with CLAUDE.md or AGENTS.md, and leaves that question open. Say so where this record points to it. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Register the instruction files, the decision record, the anti-pattern rows and the prompt-audit evidence Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> --------- Co-authored-by: Scout <scout@local> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Record the workstation's Codex worker-lane apply and proof from main before
#395, preserve the failed project-binding attempt, and add a worker check that
reads an installed skill through an available lane tool. The #395 start-up
allowances remain pending a current-revision dry run and apply.
Changes
evidence/artifacts/codex-worker-lane-host-20260927/README.mdand sixsanitized outputs:
dry-run.txt,dry-run-project.txt,apply.txt,prove.txt,prove2.txt, andprove-live.txt. Keep the 6/7 failure, corrected 7/7 staticproof, and historical 12/12 proof with five real model calls separate.
A dated revision erratum names the executed source as "main before Codex templates: OmniRoute gateway profile, verified base keys and the Codex-template token gaps #395;
exact commit not retained" in both the receipt and decision addendum.
apply at 07:51:52Z, coordinator-completed three-table project host step, and
A0's completed 25-call receipt from the tiering experiment published with GPT-6 family tiering: record the frozen run's results (S1, gpt-6-sol at medium, for mechanical extraction) #397.
tools/adoption/prove_codex_lane.pywith an installed SKILL.md check,--skill-fileselection, exact first-line comparison against the actual file,and a recorded MCP or
rtk catroute. Keep project-boundary refusal fail-closeduntil the worker completes an allowed read. The updated live suite makes six
calls when the skill is present; it does not rewrite the historical five calls.
The prompt now permits only
rtk cat PATHorrtk cat -- PATHas shellreads, matching the existing verdict. Native
cat,head -n 1,rtk readand
rtk proxy catare explicit synthetic refusal cases.tests/test_codex_worker_skill.pyand update the existing JSON-summarytest in
tests/test_codex_worker_lane.pyfor the sixth worker.The boundary-refusal fixture uses the builder's observed native event shape:
failed status, null error and refusal text in content. Remove the unsupported
result.isErrorbranch and subtest from the Codex event verdict.recipes/README.mdwith the six-call count, recorded skill route,installed-skill prerequisite,
--skill-fileand missing-skill failure. Correctthe receipt: the live suite always reports the skill check, even when it fails
without launching a sixth worker.
docs/harness-defaults.md: profiles layerover the base config; strict config rejects partial MCP profile tables and is
unsupported on debug at codex-cli 0.157.1. Attribute enforcement to this log;
distinguish
exec_argv's defined invocation from the retained proof's verdicts.manifests/evidence.json: the branch's own files are re-registered in the lastcommit (docs/lanes.md hot-file protocol) after the replay onto main; the
re-registration is limited to files this branch changes.
Evidence
apply/read-back and proof outputs. The watcher timestamp and private backup
action are attributed to the coordinator. Outer shell exits and full native
events were not retained in these text outputs. The source revision is main
before Codex templates: OmniRoute gateway profile, verified base keys and the Codex-template token gaps #395; the exact commit was not retained. This is not evidence that the
Codex templates: OmniRoute gateway profile, verified base keys and the Codex-template token gaps #395 start-up allowances were applied.
prove-live.txt; A0's25 successful calls belong to the separate tiering receipt. Neither is a new
execution by this builder or acceptance of other hosts.
wrong file/line, whitespace changes, failed or incomplete reads, and command
strings that only mention a read. They accept the selected file through MCP
and through a shell fallback after a project-boundary refusal. Launch tests
verify skill selection, pinned lane arguments, missing-skill failure, and the
retained route and sixth worker summary.
python3 -m unittest tests.test_codex_worker_skill tests.test_codex_worker_lane tests.test_adoption_docs_consistencyran 99tests in 32.335s, exit 0, 8 skips. A subprocess ResourceWarning occurred;
a subsequent process observation confirmed that child had exited.
NAS_CODEX_INTEGRATION=1, the existingCodexIntegrationTests.test_strict_config_refuses_the_stack_worker_profile_at_this_pinand
test_a_project_config_outranks_the_profile_but_not_the_pinned_flagsboth passed (2 tests, 8.643s, exit 0), without a model/provider call.
implementation; three launch/summary checks then failed before wiring the
sixth worker. A measured
path=...MCP output prefix reproduced a failingpositive control before the parser correction. Final skill tests passed.
Missing stdout for a genuinely blank first line also failed a negative
control before the comparison was tightened; the final covering run passed.
failed on the broad direct-shell allowance (1 test, exit 1), then the complete
skill module passed (10 tests, 0.033s, exit 0). Each accepted or refused shell
form is exercised both directly and through a shell wrapper. The refusal
fixture matches the observed failed/null-error/content event; it remains a
constructed fixture, not a replay or new live read.
python3 -m unittest tests.test_codex_worker_skill tests.test_codex_worker_lane tests.test_adoption_docs_consistencyran 100 tests in 33.166s, exit 0,OK (skipped=8). The run emitted the subprocess ResourceWarning also seen inthe original builder run. The repair is a working diff on local source
77a3c4014e370dd1b0e65d3fbbb65475b7b1b1ba; returned results and environmentdetails are in
repair-verification.txtin the unit directory.validate.shendedFAILS=0(validate-build.log,acceptance.txt), verified again by readingthose retained outputs during repair. This is not a new validation run.
the shared-temp full-suite run reported 6602 tests, 164 failures, 94 errors
and 760 skips. The reviewer attributes that window to shared
/tmpinterference. Every delta module passed in the isolated rerun:
rerun-deltas.logreports 944 tests in 70.136s,OK (skipped=77), and.rerun-failsetis empty. The three unit covering modules were absent fromthe harness failset. The base's
test_pre_commit_gatefailure predates thisunit. These results do not turn the original full-suite failure into a pass.
the documented substitutions; no listed private-data patterns in those
outputs, local Markdown links resolve, and
git diff --checkexits 0.The repair preserves all six output files; its own
git diff --checkalsoexits 0. Only the README gains dated corrections.
none claimed. The Python tests are repository integration/synthetic checks.
SOTA sources
precedence,
strict validation,
and native exec event result contract.
Installed version/help checked first; the tagged release notes were checked
through
gh apiand contain no substantive feature highlights.project-boundary guard,
file-read handler,
path/code echo and stdout,
and issue #852.
Repair checked the handler/guard ranges against the pinned source (server.ts
blob
5a884c20b8cee64c5753d31d92e16044f5705469); the original L1165-1200citation named the guard as the handler and is corrected with a dated erratum.
official Codex skills and
CPython shlex.
Review dispositions
All six findings are accepted and repaired:
rtk catshell contract; test acceptanceof its two forms and refusal of all four alternative forms named in review.
addendum without changing the six historical outputs.
always-reported check's missing-skill failure.
coordinator's evidence registration, and report its validation, failed
full-suite window and successful isolated delta rerun by evidence class.
The file-handler citation verification gap was also closed against v1.0.169;
the source label and line range now distinguish the guard from its caller.
Residuals and not done
The newly added skill worker has synthetic coverage. The local refused
ctx_execute_fileandrtk catobservations were made in the builder's ownsession (
gpt6-build-events.jsonl,research.md), with no committed receipt;they are not skill-worker live execution. No sixth live model call or full
six-call live proof was run. The supplied historical proof remains 12/12.
Matching a common first line such as
---adds little discrimination beyondthe path/tool check; it is not evidence of comprehension of the skill.
The exact old apply/prove revision is still unknown and the #395 start-up
allowances still await a current-revision dry run and apply. The summaries do not
satisfy the repository's formal host-acceptance retention requirements or accept
any other host. Strict-mode errors/debug incompatibility are observed at 0.157.1
and require rechecking on upgrade.
The requested
/var/tmp/claude-followupscould not be created: this sandboxreturned "Read-only file system". Repair tests instead used
TMPDIRunder theunit directory and
GIT_CEILING_DIRECTORIESat that same directory so Git doesnot discover the sandbox's empty
/tmp/.git.No credentials or active host configuration were read or changed by the
builder, and it ran no git write commands.
Coordinator acceptance after the repair round and the replay onto main (local integration, this host, 2026-09-27):
validate.shFAILS=0. The full suite ran 6603 tests with one failure,tests.test_secret_path_guard.test_host_profile_copy_is_verbatim. That test compares the host's installed guard with the branch copy, and the host had installed main's newer guard (Claude harness settings: credential-store and destructive-git denies, Opus role agents without frontmatter isolation, rtk-aware guard #402) at 14:04Z. Temp dirs sat outside/tmp.validate.shFAILS=0. The re-registration is limited to this branch's own files; an unrelated entry the old harness had added was dropped.Residuals from that verification:
apply_codex_lane.pyrefuses to overwrite a profile that differs from the template (apply_codex_lane.py:189-193, :527-529), so a current-revision apply needs the host's old profile moved aside first.Recommended lane label: lane:foundation.
🤖 Generated with Claude Code