Repository navigation
Codex templates: OmniRoute gateway profile, verified base keys and the Codex-template token gaps - #395
Merged
seathatflowsinourveins merged 5 commits intoSep 27, 2026
Conversation
…e Codex-template token gaps
New adoption/templates/codex.omniroute.config.toml, an opt-in profile-v2 file
for `codex -p omniroute`:
- cx/gpt-6-astra at max with live search (K1: no gateway alias);
- upstream's provider block (OmniRoute docs/guides/CODEX-CLI-CONFIGURATION.md
L22-41 at a58000c7) with the literal port 20128, env_key plus
env_key_instructions naming inventory id omniroute, and
supports_standalone_web_search; websockets left at the default (K5);
- [shell_environment_policy.filters] "OMNIROUTE_API_KEY" = "exclude" (K3) and
[features] standalone_web_search = true, shell_snapshot = false;
- what a gateway build needs, in upstream's own words: PR #14904 (HTTP 500 on
every /v1/responses request on release/v3.8.51) and PR #13788
(POST /v1/alpha/search, where Codex sends standalone searches:
codex-api/src/endpoint/search.rs L14-15 at rust-v0.157.1).
The provider block lives only in the profile, so the base template stays
gateway-free (K2). The workstation's installed profile holds the same keys
and values; the template adds env_key_instructions.
tools/adoption/apply_codex_lane.py:
- --omniroute-profile installs the profile like the stack-worker profile
(create-only, journaled, read back with `codex -p omniroute debug
prompt-input`, removed by rollback only while unchanged); a base
[model_providers.omniroute] is reported as a host step, never written;
- the owned batchWrite keys gain the template's startup_timeout_sec for
serena (60) and socraticode (120) when registered: `codex mcp add` has no
timeout option, so such a server waits Codex's 30 s default
(codex-mcp/src/rmcp_client.rs L103 at rust-v0.157.1).
adoption/templates/codex.config.template.toml (PR-F, H4, H7), each key with its
rust-v0.157.1 source in a comment:
- web_search = "live", check_for_update_on_startup = false,
[features] shell_snapshot = false and
[agents] default_subagent_reasoning_effort = "max", with the note that
max_depth does not bound V2 models;
- the four dated validation trust entries removed;
- INCLUDE_DOT_FILES (SocratiCode v1.14.0 README L1579) and the approval-never
refusal (core/src/mcp_tool_call.rs L1610-1614, L2436-2466) documented.
Recipes and docs:
- "Codex through OmniRoute" in recipes/README.md, with the two strict-mode
limits at 0.157.1 and their sources;
- the jCodeMunch Codex path renders the project template into the opted-in
checkout or worktree instead of `codex mcp add`, which writes user scope,
and keeps the rendered file untracked through info/exclude;
- headroom's Codex registration line with all four offline variables;
- the codex row's update-check note;
- the handbook no longer claims `codex mcp add` can set timeouts;
- a bootstrap step-4 change note;
- a dated addendum to docs/decisions/2026-09-26-codex-worker-lane.md.
Tests:
- template invariants for both templates;
- a drift test that the landscape sweep's lane home writes the profile's
provider and feature values;
- fake-codex flows for the profile and the start-up allowances (synthetic);
- opt-in real-codex tests (NAS_CODEX_INTEGRATION=1, local integration), each
with a control:
- `--strict-config -p omniroute exec` stops at the missing key with the
profile's instructions;
- through `codex -p omniroute sandbox`, a fixture key reaches the command
without the filter and not with it;
- a provider `-c` key is only warned about under --strict-config, while an
unknown top-level `-c` key is refused;
- `-p stack-worker` fails under --strict-config, while the same home renders
its prompt input without it;
- the real app-server writes serena's allowance and rolls back byte for
byte.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
One review round (GPT-6, cx/gpt-6-astra at max through the local gateway,
read-only) reported four defects; each was reproduced before it was fixed.
- jCodeMunch recipe: copy only the rendered [mcp_servers.jcodemunch] tables
(the template's last ones) into the opted-in checkout. The whole project
template also sets approval_policy, sandbox_mode, [agents] and a shell PATH,
and a project file outranks the user config and its profiles
(codex-rs/config/src/config_layer_source.rs L33-51 at rust-v0.157.1).
- jCodeMunch recipe: install into the ecosystem prefix with bootstrap step 4's
uv-tool layout, where the template runs ${ECO_ROOT}/bin/jcodemunch-mcp; a
plain `uv tool install` uses uv's own bin directory.
- apply_codex_lane.py: the host step also lists a base
model_provider = "omniroute" and a cx/ model (upstream's guide puts both in
config.toml, CODEX-CLI-CONFIGURATION.md L26-41 at a58000c7), to be deleted
with the table: a model_provider left without its table stops every launch
without the profile with "Model provider `omniroute` not found" (measured,
codex-cli 0.157.1). The read-back covers a launch without the profile.
- The launcher claim: `omniroute run codex --model` sends the provider's name
and other fields with the model key (launch-codex.mjs L173-194), and with
that exact flag set --strict-config refuses the launch. The earlier text
generalized a probe of the lone key, which only warns because that layer
alone fails to deserialize. Recipe, addendum and test now use the
launcher's vector, with the lone key as a labelled contrast, and the
mistake is in the anti-pattern log of docs/harness-defaults.md.
Tests: a render test runs the recipe's own sed range; the host-step test
covers base selectors with a control; opt-in real-codex tests run the
launcher's vector and the jCodeMunch step in a trusted scratch checkout.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
The fix for review finding 4 defined eco= only in the install block, while the registration block uses "$eco/bin/jcodemunch-mcp" for Claude. A host that had already installed the server and pasted only the registration block would have registered /bin/jcodemunch-mcp. Each copyable block that uses $eco now defines it first, and the render test checks every such block (it fails against the previous commit's recipe). Found in the final self-review after the GPT-6 round; no second GPT-6 round was run. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… gap
The independent verifier found that the profile template (lines 7-8) and
the recipe's Workers bullet overstated how closely the landscape sweep's
lane home matches the profile ("keeps both equal", "keeps its provider
block equal"). The test checks each model, provider and feature key the
lane home writes against the profile. The lane home
(tools/sota-convergence/landscape-sweep/build_args.py stage_lane_home)
writes no env_key_instructions, no [shell_environment_policy.filters]
and no web_search. Its web_search = "live" comes from the stack-worker
profile it holds and the runner's -c flag.
Without the filter Codex hands each command its whole environment. With
no [shell_environment_policy] table, ConfigToml's serde default
(codex-rs/config/src/config_toml.rs L208-209) reaches
ShellEnvironmentPolicy::from (codex-rs/core/src/config/mod.rs L3797).
That sets inherit to all and ignores the default excludes
(codex-rs/config/src/shell_environment_policy.rs L135-136;
protocol/src/config_types.rs L205-214 for the "all" spelling; all at
rust-v0.157.1). codex_job.py codex_env lets a real key win over the
placeholder. So a real OMNIROUTE_API_KEY in the sweep harness's
environment reaches the commands that lane's model runs. The opt-in
test_the_omniroute_filter_keeps_the_key_out_of_commands is the measured
local control: a fixture value reaches a command once the profile's
filter is removed.
The template comment, the recipe bullet and the test comment now say
this. The recipe tells operators to leave the variable unset for a
keyless loopback gateway until the sweep lane writes the filter. The
test adds no assertion that the filter is absent, so the sweep lane's
owner can add it without breaking this test. build_args.py belongs to
that lane and is not changed here.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…changes Hot-file protocol (docs/lanes.md), in the branch's last commit. Starting from main's manifests/evidence.json, scripts/host_receipts.py register_file registers the ten files this branch adds or changes, including the new adoption/templates/codex.omniroute.config.toml. This commit replaces the earlier evidence commit 81c32f17, which the repair commit would otherwise have followed. Against 81c32f17 only three hashes differ: the profile template, recipes/README.md and tests/test_codex_worker_lane.py. component_matrix.py --write and new_host_grand_list.py --write left their reports unchanged, and scripts/validate.py passes. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins
deleted the
claude/codex-templates-gateway-20260927
branch
September 27, 2026 12:04
seathatflowsinourveins
pushed a commit
that referenced
this pull request
Sep 27, 2026
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
added a commit
that referenced
this pull request
Sep 27, 2026
…nd lane follow-ups (#406) * Record Codex worker host proof and close lane follow-ups 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]> * Align Codex skill proof and correct adoption evidence 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]> --------- 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.
Codex templates: OmniRoute gateway profile, verified base keys and the Codex-template token gaps
Recommended label:
lane:foundation. The branch changes foundation paths (adoption/,tools/,recipes/),plus tests and three docs that serve only the foundation lane (
docs/lanes.md: an unlisted path follows the laneits change serves). The only shared hot file is
manifests/evidence.json. That change only re-registers hashes ofthis branch's files through the hot-file protocol, in the last commit, and re-registration alone does not make a PR
shared (
docs/lanes.md, "Labels and PRs").A new host now gets the Codex base keys, the gateway profile and the MCP start-up allowances from the repository's
own writers, not from hand edits:
tools/adoption/render_config.pyfor the base template;tools/adoption/apply_codex_lane.pyfor the lane and the profile.Base:
origin/main5f3a7c21, unchanged on the remote at hand-off. Commits:35219f5ethe change;cc54d6d1the fixes for the GPT-6 review;f4911c5ba follow-on fix found in the final self-review;df30ed50the fix for the independent verifier's first finding;b7493ce8the evidence manifest, last. It replaces the earlier evidence commit81c32f17, so the manifestchange stays in one last commit.
Rebase note. The
docs/harness-defaults.mdchange appends one row to the anti-pattern log, a table that other2026-09-27 units also append to. Expect a trivial conflict there: keep every row. For
manifests/evidence.json,take main's copy and re-register this branch's ten files (
docs/lanes.md, hot-file protocol).What changed
OmniRoute profile template: new
adoption/templates/codex.omniroute.config.toml, an opt-in profile-v2 filefor
codex -p omniroute.cx/gpt-6-astrawith no router alias (K1), effortmax,web_search = "live".[features] standalone_web_search = trueandshell_snapshot = false.supports_standalone_web_search = trueon the provider; websockets left at the defaultfalse(K5).env_keyplusenv_key_instructionsnaming inventory idomniroute, and the keyed[shell_environment_policy.filters]exclude for the key (K3).The workstation's installed
~/.codex/omniroute.config.tomlhas the same keys and values (compared by key name on2026-09-27, values not printed). The template adds only
env_key_instructions.The profile's comments state what a gateway build needs, from upstream's own PR text:
/v1/responsesrequest onrelease/v3.8.51;POST /v1/alpha/search, where Codex sends standalone searches.The profile's header and the recipe also say what the landscape sweep's lane home shares with the profile. It
writes the same model, effort, provider and
[features]keys, and a test checks each one against the profile.It lacks
env_key_instructionsand the key filter. So a realOMNIROUTE_API_KEYin the sweep harness'senvironment reaches the commands that lane's model runs (see the repair round below).
apply_codex_lane.py --omniroute-profileinstalls it the way the stack-worker profile is installed:codex -p omniroute debug prompt-input;A base
config.tomlthat still carries the gateway route is reported as a host step and never written: the[model_providers.omniroute]table,model_provider = "omniroute"or acx/model. The step says to delete themtogether, because a
model_providerleft without its table stops every launch without the profile.Verified and safe PR-F items in
adoption/templates/codex.config.template.toml, each with its source in acomment:
web_search = "live";check_for_update_on_startup = false;[agents] default_subagent_reasoning_effort = "max", plus the note thatmax_depthdoes not bound V2 models;[features] shell_snapshot = false(H4);[projects]trust entries removed.Codex-template token gaps.
startup_timeout_sec(60 and 120 s) onregistered servers, because
codex mcp addhas no timeout option.codex mcp add, which writes user scope. For a checkout orworktree that opts in, it:
[mcp_servers.jcodemunch]tables there;info/exclude.INCLUDE_DOT_FILESand the approval-never refusal are documented where theservers are registered.
recipes/README.mdCodex rows, only where these changes required them:A dated addendum in
docs/decisions/2026-09-26-codex-worker-lane.mdrecords the decisions, the evidence and theoverturn conditions. One proven mistake is in the anti-pattern log of
docs/harness-defaults.md.Corrections to the inputs, found while verifying
codex debugrefuses--strict-configat 0.157.1. So the synthesis's PR-G2 check "codex --strict-config -p omniroute debug prompt-input" cannot run as written. The strict read goes throughexec, which stops at themissing key before any request.
--strict-config -p stack-workerfails with "invalid transport". Strict mode validates each file on its own,and the profile's server tables name no command. So PR-F's "always pass
--strict-config" cannot apply tostack-worker lanes as designed.
--strict-configrejectsomniroute run codex --model" holds. The launcher's full flag set isrefused. Only the lone key is merely warned about. The first draft of this branch claimed the opposite from a
probe of the lone key; the GPT-6 review caught it, and it is now in the anti-pattern log.
the OmniRoute lane, replaces it, so
env_key_instructionsalso allows any non-empty value for a keyless loopbackgateway (upstream guide L65-75).
SOTA sources
Upstream files were fetched with
gh apiat the refs below on 2026-09-27 and kept for re-checking. Each citedfile was then fetched a second time and compared byte for byte: 27 files, all identical.
config_layer_source.rs,strict_config.rs,spec_plan.rs,responses_lite.rs,endpoint/search.rsandmodels.json.protocol/src/config_types.rs, which it newly cites. Their citedlines read the same as before.
The git documentation was fetched once, at the two refs named below.
openai/codex
rust-v0.157.1(the pin inmanifests/stack.json; the tag resolved to commit36650394on2026-09-27), under
codex-rs/:config/src/config_toml.rs: L208-209, L520-523, L719-724, L979-983, L992-1001;config/src/config_layer_source.rs: L33-51;config/src/loader/mod.rs: L131-133, L257-258, L286-334, L594-600, L625-645, L647-669, L1041-1084;config/src/strict_config.rs: L97-110;config/src/shell_environment_policy.rs: L28-35, L106-110, L135-136;protocol/src/config_types.rs: L205-214 (inherit's kebab-caseall, the default);core/src/config/mod.rs: L1591-1605, L2659-2670, L2733-2746, L3050-3094, L3797;core/src/agent/child_config.rs: L196-250;core/src/session/multi_agents.rs: L77-111;core/src/mcp_tool_call.rs: L1610-1614, L2436-2466;core/src/tools/runtimes/mod.rs: L268-276;core/src/tools/spec_plan.rs: L598-601;core/tests/suite/responses_lite.rs: L328-370 (an unchanged upstream test, read, not run);codex-mcp/src/rmcp_client.rs: L103, L342;codex-api/src/endpoint/search.rs: L14-15;features/src/lib.rs: L1007-1012, L1115-1120;model-provider-info/src/lib.rs: L190-192, L601-603;models-manager/models.json: L4-23;git-utils/src/trust.rs: L9-16;cli/src/debug_sandbox.rs: L258-259;shell-command/src/shell_snapshot_exports.rs.Installed
codex-cli 0.157.1help was also read:codex mcp add --helphas--envand no timeout option.diegosouzapw/OmniRoute:
5458026c216f77a3da68ea49152dc33470cfe2cb:open-sse/executors/codex.tsL331-355;release/v3.8.51ata58000c7685f4091c7a6fd8ddf3ebce7d2ec67c3:docs/guides/CODEX-CLI-CONFIGURATION.mdL22-41, L26-41, L65-75, L150-161;open-sse/executors/codex/reasoningSuffix.tsL1-31;bin/cli/commands/launch-codex.mjsL173-194;bin/cli/commands/run.mjsL162;b94e2dba, open) and PR #13788 (head6c799005, open, labeldeferred-v3.8.52), read2026-09-27;
release/v3.8.51heada58000c7on 2026-09-27.giancarloerra/SocratiCode v1.14.0:
README.mdL1579 (INCLUDE_DOT_FILES).git/git: the
infoentry of the repository-layout page, in two copies:Documentation/gitrepository-layout.adocat master0f8e75abebff0877cae681a3d5ff31ac47f54220;Documentation/gitrepository-layout.txtatv2.43.0, the installed git.Both say the directory is ignored when
$GIT_COMMON_DIRis set, and$GIT_COMMON_DIR/infois used instead, asin a linked worktree. The recipe links git-scm.com's current page.
astral-sh/uv 0.12.17 (installed):
uv help tool dirdocuments$UV_TOOL_DIRand$UV_TOOL_BIN_DIR. Therecipe mirrors
adoption/bootstrap.mdstep 4's uv-tool layout.Inputs, used as evidence to verify rather than as authority:
Evidence (classes kept separate)
Local integration, real
codex-cli 0.157.1. ScratchCODEX_HOMEs ran underbwrap --unshare-netwith aprivate
/tmp, with no sign-in, no gateway and no network.NAS_CODEX_INTEGRATION=1 python3 -m unittest tests.test_codex_worker_lane.CodexIntegrationTestsran 7 tests, all OK:--strict-config -p omniroute execstops at the missing key, printing the profile's instructions;-p stack-workerfails under--strict-configand renders without it;Ad hoc runs the same day:
model_provider = "omniroute"without its table fails launches without the profile;excludearray plus this profile'sfiltersloads (mixing is refused only within one layer).Synthetic fixtures:
sedrange, which fails against the first draft of the recipe.Source review: the files above. Unchanged upstream tests: read only, none run.
Live provider execution: none for this change. The profile's live gateway acceptance belongs to the OmniRoute
lane's record. The GPT-6 review below ran through the gateway; it is a review, not acceptance.
Read-only host observation (2026-09-27, key names and these values only):
~/.codex/config.tomlalready carries the four base keys and no dated trust entries, and has no gateway routeleft;
~/.codex/omniroute.config.tomlmatches the template except forenv_key_instructions;startup_timeout_secare absent;Nothing on the host was changed; the mtimes of the four Codex files are unchanged.
Acceptance (at
b7493ce8, after the repair round)python3 scripts/validate.py{"components": 69, "hashed_files": 7251, "profiles": 4, "receipts": 159, "status": "passed"}bash …/rec/validate.sh python3ok,FAILS=0python3 -m unittestover the 24 modules covering the touched filesRan 1263 tests,OK (skipped=55)NAS_CODEX_INTEGRATION=1 python3 -m unittest tests.test_codex_worker_lane.CodexIntegrationTestsRan 7 tests,OKpython3 scripts/build_ecosystem.py --check"status": "passed"The same five passed at
81c32f17before the repair round. The host's four Codex files kept their mtimes throughboth rounds.
The 24 modules are the covering tests:
test_codex_worker_lane,test_render_configandtest_observability_tool_names;test_landscape_sweep_harness;recipes/README.md,adoption/bootstrap.md, the handbook ordocs/harness-defaults.md;Cross-family review (GPT-6, one round)
codex-omniroute exec --skip-git-repo-check -s read-onlyran from the worktree withcx/gpt-6-astraatmaxthroughthe local OmniRoute gateway, from 09:53:01Z to 10:05:47Z. It reviewed head
56f44260, the first two-commit form ofthis branch; its
review.diffis that head's diff. Codex counted 180,664 tokens used. The Bash foreground capis 10 minutes and the brief allowed 30, so the harness held the process with
run_in_backgroundand this sessionblocked on it before doing anything that depended on the result.
Verdict: DEFECTS FOUND, 4 findings, 4 fixed. Each was reproduced or checked against source before it was fixed:
recipes/README.md: the jCodeMunch step copied the whole project template, whoseapproval_policyand
sandbox_modeoutrank the user config (config_layer_source.rsL33-51). Fixed: only the jCodeMunch tablesare copied, and a test runs the recipe's own
sed.apply_codex_lane.py: the host step missed a basemodel_provider = "omniroute". Reproduced"Model provider
omniroutenot found". Fixed: the step lists the table, the selector and acx/model todelete together, reads back without the profile too, and has a test with a control.
under
--strict-config. Fixed in the recipe and the addendum, with an opt-in test of both vectors and ananti-pattern row.
uv tool installdid not populate${ECO_ROOT}/bin/jcodemunch-mcp. Fixed: thebootstrap's prefix-aware install, with the Claude line on the same path.
Residuals: none unfixed from the review. No second round was run, as the brief required.
Follow-on fix (
f4911c5b), found in the final self-review, not by GPT-6. The fix for finding 4 definedeco=onlyin the install block. A host that pasted only the registration block would have registered
/bin/jcodemunch-mcpfor Claude. Each block that uses
$econow defines it first, and the render test checks every such block (it failsagainst
cc54d6d1's recipe).Repair round (independent verifier, one round)
The independent verifier reported two low findings on
81c32f17. Both were checked against source; both are fixed.No second GPT-6 round was run.
Low. The sweep lane home is not "equal" to the profile. The profile's header (L7-8) and the recipe's
Workers bullet said the landscape sweep's lane home and this profile are kept equal. Checked:
build_args.pystage_lane_home(L172-203) writes noenv_key_instructions, no key filter and noweb_search;Fixed in
df30ed50. Both places, and the test's comment, now say what the test checks and what the homelacks.
web_search = "live"reaches that lane from thestack-workerprofile and the runner's-cflag. Theexposure itself follows from three sources:
config_toml.rsL208-209 andcore/src/config/mod.rsL3797 reachshell_environment_policy.rsL135-136;codex_job.pyL311-312 lets a real key win over the lane's placeholder;test_the_omniroute_filter_keeps_the_key_out_of_commandsis the measured local control.So a real
OMNIROUTE_API_KEYin the sweep harness's environment reaches the commands that lane's model runs.The recipe now says so. Until the sweep lane writes the filter, it tells operators to leave the variable unset
for a keyless loopback gateway.
Low. The SOTA-sources sentence claimed a check that was only partly done. Six cited codex files had no second
copy. Fixed: they were fetched again at
rust-v0.157.1, with the newly citedconfig_types.rs. All seven arebyte-identical to the first copies, and the sentence now gives the count. The git/git entry, previously
unpinned, now names two refs.
Residual, not fixed here. The sweep lane home still has no
[shell_environment_policy.filters]exclude for thekey.
tools/sota-convergence/landscape-sweep/build_args.py. That file belongs to thelandscape-sweep lane (Landscape-sweep GPT-6 lane through OmniRoute: lane-local Codex home with the token stack at max effort (stacked on #385) #387), not this unit.
AGENTS.mdasks for a hand-off to the session that owns an areainstead of an edit.
stage_lane_home, a[shell_environment_policy.filters]table with"OMNIROUTE_API_KEY" = "exclude", the keyed form this profile uses.Token tools used by this unit:
ctx_executeto extract the input sections and read cited upstream line ranges without loading whole files;Serena, jCodeMunch and Headroom were not used: every read was a known file and line range, and each stayed small.
The repair round used Bash under RTK for known line ranges and byte comparisons, and a Monitor to wait on the test
run. Every output stayed small, so no context-mode call was needed.
Host follow-ups (not code)
omniroute.config.tomldiffers from the template only byenv_key_instructions,so
apply_codex_lane.py --omniroute-profilerefuses until that file is moved aside privately. Either move it andapply, or keep it; it is functionally the same.
absent -> 60andabsent -> 120, and--applywith the printed hashes sets them. It refuses whilecodexprocesses run.retrieval there.
(
apply_codex_lane.py --project-config).chmod 600the existing~/.codex/shell_snapshots/*.sh.Read(~/.codex/shell_snapshots/**)deny belongs to the Claude-settings unit.[projects."…/clone"]trust entry (its directory is gone), and decide ontmp.integration or an upstream read-only annotation before claiming it.
Not done
ultraormax;tmptrust entry.mcp_optional_startup_grace_ms = 0,required = trueand a pinnedmodel_reasoning_summary(experiment class; they wait for a measured trial);codex.lane.<name>.tomllane configs;@path, prompt-input-size andproject_doc_max_bytesrepository check;units own them.
tools/sota-convergence/landscape-sweep/build_args.py: a residual for thelandscape-sweep lane's owner (see the repair round).
🤖 Generated with Claude Code