Skip to content

Preregister the GPT-6 family routing test (astra/sol/luna x max/medium) on the frozen 8-K extraction task - #359

Merged
seathatflowsinourveins merged 7 commits into
mainfrom
claude/gpt6-family-tiering-prereg-20260926
Sep 26, 2026
Merged

seathatflowsinourveins merged 7 commits into
mainfrom
claude/gpt6-family-tiering-prereg-20260926

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Sep 26, 2026 •

Copy link
Copy Markdown
Collaborator

This PR preregisters a measured routing test for the GPT-6 family. Nothing is run in this PR.

The user asked on 2026-09-26 to get the most out of the GPT-6 family cleanly, with token saving as the base layer. Today every GPT-6 step uses gpt-6-astra at max. The test asks: for a mechanical, deterministically scored stage, which family member and effort matches astra/max at lower token cost? Stages like that could then route to it, and the shared weekly quota would do more work.

  • Task: the frozen li26 8-K item-extraction task. It uses the same 360 public filings (li26's own verify-inputs: 360, inputs_sha256 2a5c8c9b…), the same header-item labels, and li26's scoring functions, imported and hash-pinned.
  • Batches: 25, in frozen order, each at most 15 filings and under 110,000 bytes. The layout's sha256 is frozen, and every arm uses the same batches.
  • Arms: A0 gpt-6-astra/max (control), A1 astra/medium, S0 gpt-6-sol/max, S1 sol/medium, L0 gpt-6-luna/max and L1 luna/medium. Never ultra. Each model runs at its default service tier.
  • Frozen rule: an arm is routable when three things hold: the paired-bootstrap lower bound of micro-F1(arm − A0) is at least −0.02 (10,000 resamples, seed 20260926), JSON-valid is at least 0.98, and every batch completed. The recommendation is the cheapest routable arm by mean billed tokens per filing (uncached input plus output; Codex's output already includes reasoning), and only if its known cost is strictly below A0's. Ties go to wall time. A0 can win (keep_default). Quota percentages are context only, since other sessions share the account.
  • Isolation:
    • one call per batch, at most 3 concurrent, sharing the host's Codex slot locks;
    • a per-call CODEX_HOME and scratch HOME/TMPDIR/cwd outside every repository, and an allowlisted environment;
    • agents, web search, shell and other tools are disabled by config. A tool use fails the call, and an unknown session item stops the arm.
    • A real usage-limit event (Codex's own error/turn.failed events only) publishes LIMIT immediately and exits 3. An outage exits 4.
    • Raw outputs go only to a 0700 private state directory; the decision file holds aggregates.

Review record

  • Claude Opus: 1 high and 4 medium findings.
  • GPT-6-Astra: 1 high and 4 medium. The shared high: a costlier arm could route when the control's usage was incomplete.
  • All confirmed findings were fixed in one repair round, and 8 targeted mutations are each caught by a test. One request was partly rejected, with the reason given in the plan: a delay before re-queueing a failed batch.
  • The isolation claims rest on a committed loopback fake-provider probe under bwrap --unshare-net (isolation-probe/), plus reads of the pinned source. The first real run must confirm that session records hold only message and reasoning items.

Tests: tests.test_gpt6_family_tiering_20260926 ran 39, OK, and the related contract and manifest suites pass. validate.py, validate_convergence.py --all-recorded (24 records) and run_arm.py verify-frozen all pass.

CI fixes (2026-09-26, workstation coordinator)

  • validate-macos (run 36261746664) failed a test this PR added, not a flake. RunnerTests.test_codex_command_line_homes_environment_and_private_files saw __CF_USER_TEXT_ENCODING in the fake codex's own environment. run_arm.py's call_env passes only CHILD_ENV_ALLOWLIST plus CODEX_HOME, HOME and TMPDIR. macOS CoreFoundation adds __CF_* and VERSIONER_* keys to a process even when exec received an explicit environment, and the fake codex is a Python child. The test now drops those names before comparing, on darwin only (passed_env), and keeps the exact set elsewhere. The RUST_LOG and OPENAI_API_KEY assertions are unchanged. run_arm.py and every other frozen input are unchanged; the test file is not in frozen_inputs and is re-registered in the hot-file commit. macOS cannot run locally, so the new CI run's validate-macos is the only real check for this fix.
  • validate (run 36270619115) failed because the job limit cancelled it ("The job has exceeded the maximum execution time of 10m0s") after 6295 tests had printed OK in 529s. This branch now carries the same timeout-minutes: 20 hunk as Retain the 2026-09-26 sweep's 32 layer inputs (SHA256SUMS) for the verdict wave's GPT-6 re-votes #363, byte-identical so either PR merges cleanly after the other. That makes this PR's change lane:shared under docs/lanes.md, because the workflow serves both lanes.
  • Local checks at b435cdf9 all exited 0: validate.py, evidence_manifest.py --check, component_matrix.py --check, new_host_grand_list.py --check, build_ecosystem.py --check, zizmor 1.30.1 --offline, and main's verdict_review_gate.py. tests.test_gpt6_family_tiering_20260926 and the workflow and verdict-gate modules ran 272, OK.

Lane consolidation: on 2026-09-26 the user shut down the other lane sessions and assigned this work to the workstation coordinator ("no other peers live, i shut them with the token save repos install into our native workflow and github workflow , harness update and sota foundation of our session as main task"); this quote stands in for the trading lane's ack.

SOTA sources

🤖 Generated with Claude Code

Scout and others added 3 commits September 26, 2026 14:12
Adds a frozen, unrun routing test: which GPT-6 family member and reasoning
effort matches gpt-6-astra at max effort on a deterministically scored
extraction stage at lower token cost. Arms A0 (astra/max, control), A1
(astra/medium), S0/S1 (sol max/medium) and L0/L1 (luna max/medium) run the
frozen codex exec command on li26's 360 filings in 25 greedy batches (at most
15 filings, prompts under 110,000 bytes; layout hash frozen).

run_arm.py shares the host's three Codex slot locks, retries a failed batch
once, stops on Codex's own usage-limit events (exit 3, LIMIT note) and
resumes after the reset. analyze.py reuses li26's scoring and paired bootstrap
and applies the frozen rule: routable when the 95% lower bound of the micro-F1
difference is at least -0.02, JSON-valid is at least 0.98 and every batch
completed; the cheapest routable arm by billed tokens per filing (uncached
input plus output, which already includes reasoning) is recommended.

No arm ran and no provider call was made. Offline tests use a fake codex on
PATH. The new files still need registration in manifests/evidence.json.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
One bounded review round (claude-opus and gpt-6-astra reviewers) on
fbcca8f9. No arm ran and no provider was called; the arms, task, labels,
batching, margin, bootstrap and billed-token definition are unchanged.

- analyze.py: a candidate is recommended only when its cost is strictly
  below A0's. Unknown A0 usage makes A0's cost a lower bound (a candidate
  below it still routes, otherwise inconclusive_control_usage_incomplete)
  instead of silently dropping A0 from the ranking. Which usage-less calls
  make usage incomplete is stated once in the plan. analyze.py now verifies
  every frozen input before reading and records the map it verified.
- run_arm.py: a call without a completed turn (outage, sign-in, rate
  limit, launch failure) or with a missing or unknown session record is
  unavailable: it uses no retry, publishes UNAVAILABLE and exits 4.
  unbounded_connection_retries is off, so an outage fails a call instead of
  hanging it. A finished arm with a failed batch exits 6. Abandoned calls
  are neutral.
- Frozen isolation overrides, measured by isolation-probe/ (codex-cli
  0.157.1 against a loopback fake provider in a network namespace, no
  credential): web search, the shell, sub-agents (agents.enabled=false;
  features.multi_agent=false alone leaves them), sleep, image viewing,
  goals, hooks, plugins and apps are off. Tool items in a call's session
  record or --json stream fail the call, so no tool-assisted reply scores.
- Each call has its own CODEX_HOME in its private attempt directory with a
  link to the native auth.json (never a copy), a scratch HOME, TMPDIR and
  working directory outside the state tree, and an allowlisted
  environment; a run refuses while an /etc/codex configuration exists.
- A state-wide launch gate: LIMIT is published while the limited call
  still runs and before its slot is released, and a dead runner's
  unpublished limit is published before any call.

Tests: 39 offline tests with a fake codex (8 targeted mutations killed);
scripts/validate.py and validate_convergence.py pass.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@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 enabled auto-merge (squash) September 26, 2026 18:12
Scout and others added 4 commits September 26, 2026 16:44
…date-macos fix)

validate-macos failed test_codex_command_line_homes_environment_and_private_files: the fake
codex (a Python child) reported __CF_USER_TEXT_ENCODING in its own environment. run_arm.py's
call_env passes only CHILD_ENV_ALLOWLIST plus CODEX_HOME, HOME and TMPDIR; macOS CoreFoundation
adds __CF_* (and VERSIONER_*) keys to a process's environment even when exec received an
explicit one. The comparison now drops those names on darwin only, as CPython's own
Lib/test/test_subprocess.py test_empty_env does (is_env_var_to_ignore); other platforms keep
the exact set. run_arm.py and the other frozen inputs are unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…grew it)

This PR's validate run 36270619115 was cancelled by the job limit ("The job has exceeded
the maximum execution time of 10m0s") after its 6295-test suite had printed OK in 529s.
The same hunk as #363's commit 676734a (byte-identical, so either PR merges cleanly after
the other): main's validate job took 598s in run 36263674462, and runs 36265075411,
36265091632 and 36269293122 hit the same limit on 2026-09-26.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@seathatflowsinourveins seathatflowsinourveins added lane:shared Touches files owned by both lanes; needs both lanes' acknowledgement and removed lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers labels Sep 26, 2026
@seathatflowsinourveins
seathatflowsinourveins merged commit 43ef228 into main Sep 26, 2026
24 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the claude/gpt6-family-tiering-prereg-20260926 branch September 26, 2026 21:21
seathatflowsinourveins pushed a commit that referenced this pull request Sep 30, 2026
…0); model-currency addendum

adoption/templates/codex.config.template.toml: model gpt-6-astra -> gpt-6.1-sol,
model_reasoning_effort stays ultra, with a comment naming the addendum; the
client-pin comment now cites the 0.159.2 qualification receipt. The judgment
lanes keep their gpt-6-astra bindings (stack-worker profile, landscape-sweep
lane, cx/gpt-6-astra OmniRoute profile), and tests/test_codex_worker_lane.py's
K2 assertion now reads the template's (model, effort) pair.

docs/decisions/2026-09-27-model-currency.md: dated addendum 2026-09-30 with the
GPT-6.1 Sol release (Codex changelog and models page, read 2026-09-30; the
announcement page answered 403), the client gate (rust-v0.159.1 bundled
catalog; offline codex debug models), the OmniRoute xhigh clamp for unregistered
ids read from the installed build's reasoningSuffix.ts and codex.ts, the user's
decision (6.1 Sol ultra default, Astra ultra for complex workflows), and the
preregistered #359-style comparison (A0, S1, S61-0, S61-1; the -0.02 micro-F1
bound) that overturns the lane tiers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 30, 2026
…0); model-currency addendum

adoption/templates/codex.config.template.toml: model gpt-6-astra -> gpt-6.1-sol,
model_reasoning_effort stays ultra, with a comment naming the addendum; the
client-pin comment now cites the 0.159.2 qualification receipt. The judgment
lanes keep their gpt-6-astra bindings (stack-worker profile, landscape-sweep
lane, cx/gpt-6-astra OmniRoute profile), and tests/test_codex_worker_lane.py's
K2 assertion now reads the template's (model, effort) pair.

docs/decisions/2026-09-27-model-currency.md: dated addendum 2026-09-30 with the
GPT-6.1 Sol release (Codex changelog and models page, read 2026-09-30; the
announcement page answered 403), the client gate (rust-v0.159.1 bundled
catalog; offline codex debug models), the OmniRoute xhigh clamp for unregistered
ids read from the installed build's reasoningSuffix.ts and codex.ts, the user's
decision (6.1 Sol ultra default, Astra ultra for complex workflows), and the
preregistered #359-style comparison (A0, S1, S61-0, S61-1; the -0.02 micro-F1
bound) that overturns the lane tiers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Sep 30, 2026
…0); model-currency addendum

adoption/templates/codex.config.template.toml: model gpt-6-astra -> gpt-6.1-sol,
model_reasoning_effort stays ultra, with a comment naming the addendum; the
client-pin comment now cites the 0.159.2 qualification receipt. The judgment
lanes keep their gpt-6-astra bindings (stack-worker profile, landscape-sweep
lane, cx/gpt-6-astra OmniRoute profile), and tests/test_codex_worker_lane.py's
K2 assertion now reads the template's (model, effort) pair.

docs/decisions/2026-09-27-model-currency.md: dated addendum 2026-09-30 with the
GPT-6.1 Sol release (Codex changelog and models page, read 2026-09-30; the
announcement page answered 403), the client gate (rust-v0.159.1 bundled
catalog; offline codex debug models), the OmniRoute xhigh clamp for unregistered
ids read from the installed build's reasoningSuffix.ts and codex.ts, the user's
decision (6.1 Sol ultra default, Astra ultra for complex workflows), and the
preregistered #359-style comparison (A0, S1, S61-0, S61-1; the -0.02 micro-F1
bound) that overturns the lane tiers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Sep 30, 2026
…ult GPT-6.1 Sol/Ultra with Astra escalation (unit D4) (#542)

* Pin Codex CLI 0.159.2 in the Linux pins; guard pin/manifest version agreement

adoption/pins-linux-x86_64.json codex entry: 0.157.1 -> 0.159.2 (npm wrapper
cf1e5d7b..., 4,904 bytes; platform package 84a6b35f..., 162,475,310 bytes), both
matched npm dist.integrity, npm audit signatures verified signatures and
attestations, SLSA provenance names rust-release.yml at refs/tags/rust-v0.159.2
(ff6aec96). The note now records that from 0.159.x the npm platform package's
vendor tree is the complete native package (44 files byte-identical to the
GitHub codex-package asset listed in codex-package_SHA256SUMS).

tests/test_adoption_status.py: PinManifestAgreementTests checks that every Linux
pin names manifests/stack.json's version of the same component (a " @ <commit>"
suffix is ignored), with a mutation self-check. It fails at this commit
(codex: pin 0.159.2, manifests/stack.json 0.157.1) and passes once the manifest
row moves in the last commit of this branch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Codex template default: GPT-6.1 Sol at ultra (user decision 2026-09-30); model-currency addendum

adoption/templates/codex.config.template.toml: model gpt-6-astra -> gpt-6.1-sol,
model_reasoning_effort stays ultra, with a comment naming the addendum; the
client-pin comment now cites the 0.159.2 qualification receipt. The judgment
lanes keep their gpt-6-astra bindings (stack-worker profile, landscape-sweep
lane, cx/gpt-6-astra OmniRoute profile), and tests/test_codex_worker_lane.py's
K2 assertion now reads the template's (model, effort) pair.

docs/decisions/2026-09-27-model-currency.md: dated addendum 2026-09-30 with the
GPT-6.1 Sol release (Codex changelog and models page, read 2026-09-30; the
announcement page answered 403), the client gate (rust-v0.159.1 bundled
catalog; offline codex debug models), the OmniRoute xhigh clamp for unregistered
ids read from the installed build's reasoningSuffix.ts and codex.ts, the user's
decision (6.1 Sol ultra default, Astra ultra for complex workflows), and the
preregistered #359-style comparison (A0, S1, S61-0, S61-1; the -0.02 micro-F1
bound) that overturns the lane tiers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Fold the Codex coordinator lane's Sol-primary routing defaults (2026-09-30)

Folded from the Codex coordinator lane's 2026-09-30 work in the main checkout
(snapshot tracked.diff sha256 5de56d6d81453ed3), D4's assigned files only:

- adoption/templates/codex.config.template.toml: both hunks, reconciled with
  this branch's header into one: Sol/Ultra coordinator with its rust-v0.159.2
  citations and the routing record; [agents] default_subagent_model
  gpt-6.1-sol with default_subagent_reasoning_effort max (child_config.rs
  L62-73, L204-249).
- adoption/templates/codex.stack-worker.config.toml: worker profile Sol/Max,
  Astra substitution for judgment or escalation (applied unchanged).
- tests/test_render_config.py (all hunks), tools/adoption/prove_codex_lane.py
  (live-worker line), recipes/README.md (worker command and effort paragraph):
  applied unchanged with git apply --include.
- tests/test_codex_worker_lane.py: only the profile-model, worker_pins,
  worker_command and recipe assertions; the TOP_RULE_SHA256 and word-count
  hunks are F1's; the template-model hunk is already covered by this branch's
  (model, effort) assertion.
- docs/harness-defaults.md: only the "Sol-primary quality defaults" paragraph.
- docs/decisions/2026-09-30-sol-primary-quality-defaults.md: verbatim, plus a
  dated attribution line linking the model-currency addendum.
- docs/decisions/2026-09-27-model-currency.md: the addendum now names that
  record as the routing contract and follows its routes (workers and generic
  children Sol/Max; Astra kept by the lanes that name it).

The Gate A runbook and preregistration arms, which pass -m gpt-6-astra
explicitly, are untouched. Hash registrations follow in the last commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Codex 0.159.2 qualification receipt and the records that mirror the pin version

evidence/receipts/codex-01592-qualification-20260930.json (native_cli_e2e,
mirroring codex-01571-qualification-20260926): npm and GitHub artifact integrity
with failing controls, byte identity of the existing tools/codex-0.159.2 prefix
(49/49), credential-free bwrap checks of 0.159.2 against 0.157.1 (version, help,
mcp list/get shapes, features, prompt-input marker, offline bundled catalog),
source identity of the exec --json layer at the two tag commits,
prove_codex_lane.py --help and static checks, apply_codex_lane.py dry run, and a
read-only rollout/item-shape check with the repository's own parsers over the
host's 19 rollouts written by 0.159.2. No live model call; the host launcher
already resolved to 0.159.2 and this unit changed nothing on the host.

Records that mirror the manifest version, as the 0.157.1 switch (#348) moved
them: catalogs/landscape/upstream-snapshot.json codex entry (selected 0.159.2;
repo and releases/latest re-checked 2026-09-30, the rust-v0.159.2 commit through
git protocol after REST 403s), blueprints/token-native-focus/saturation-audit.json
codex row (version and the new receipt), tests/test_adoption_bootstrap_macos.py
MAC_PIN_LAGS_LINUX (Mac 0.155.1, Linux 0.159.2). The manifests/stack.json codex
row and the evidence registration follow in the branch's last commit
(docs/lanes.md hot-file protocol).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Codex worker lane: CODEX_VERSION 0.159.2 with the Linux pin; guard the two agree

tools/adoption/apply_codex_lane.py: CODEX_VERSION 0.157.1 -> 0.159.2, so the lane
applies on a host at the Linux pin (the dry run refused 0.159.2 with "[fail] codex
version: codex-cli 0.159.2 (pin 0.157.1)"). The exact-equality check is unchanged.
Its source citations were compared at the two tag commits (36650394, ff6aec96)
through raw.githubusercontent.com: config_manager_service.rs, agent-roles
loader.rs and discovery.rs are byte-identical; rmcp_client.rs keeps the 30 s
DEFAULT_STARTUP_TIMEOUT and its unwrap_or at L105 and L344 (L103 and L342 before).

tests/test_codex_worker_lane.py: the fake codex answers --version and doctor
--json as 0.159.2; the module, fake and ApplyFlowTests docstrings and the
integration skip message name 0.159.2; the DOCTOR shape note records that
doctor.rs differs at rust-v0.159.2 only in a handshake-error match arm. New
TemplateTests.test_the_lane_pins_the_linux_codex_pin checks CODEX_VERSION against
adoption/pins-linux-x86_64.json; it failed first ('0.157.1' != '0.159.2').

Opt-in CodexIntegrationTests against the 0.159.2 prefix's native binary
(sha256 1748767b...): 10/10 OK; with 0.157.1 on PATH all 10 skip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Current-pin prose at Codex 0.159.2; macOS follow-up for the 6.1 Sol template default

recipes/README.md: the codex archive-hash row names rust-v0.159.2's
codex-package asset (9e2d29a7..., equal to its API digest and its
codex-package_SHA256SUMS line); the codex component row names 0.159.2 with its
release link and npm prefix, scopes the --search and daemon_auto_start
measurements to the versions that ran them, and points to the 0.159.2 receipt;
the stack-worker bullet describes the folded profile (gpt-6.1-sol at max, Astra by
-m on escalation); the rmcp_client.rs, mcp add --help, exec_events.rs and two
strict-config statements now also cite 0.159.2 where it was checked (source
compared at ff6aec96; the strict cases re-run through CodexIntegrationTests); the
PreToolUse/MCP sentence is scoped as not re-checked at 0.159.2.

adoption/bootstrap.md, adoption/platforms/linux-wsl2.md and macos-arm64.md: the
Linux codex pin history reads 0.155.1 -> 0.157.1 -> 0.159.2; the WSL2 terminal
measurement keeps its Codex 0.157.1 condition, now marked as before the move;
the macOS pin stays 0.155.1, and both pages name the follow-up: macOS needs its
own 0.159.x qualification before the template default applies there.

docs/decisions/2026-09-27-model-currency.md (addendum 2026-09-30): the worker_pins
line citation follows the file (298-304); the CODEX_VERSION move is recorded as
done here; a new follow-up paragraph records the macOS gap (bundled catalogs of
the Linux 0.155.1 and 0.157.1 builds lack gpt-6.1-sol, offline) and where a
per-platform model override would go (render_config.py render_one,
resolve_socraticode_version, pinned_version), not implemented.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Codex 0.159.2 receipt: the lane's constant move, its integration run and the macOS gap

evidence/receipts/codex-01592-qualification-20260930.json, amended in data and
text (id, kind and components unchanged):
- claim: the apply dry run failed its version precondition while CODEX_VERSION
  was 0.157.1 and passes after the move ('[ok] codex version: codex-cli 0.159.2
  (pin 0.159.2)', the 0.157.1 control now [fail]); the opt-in
  CodexIntegrationTests passed 10 of 10 on the prefix's native binary and skip on
  0.157.1; the static prove checks re-run byte-identical with this branch's file;
  the 0.155.1 build's bundled catalog also lacks gpt-6.1-sol.
- limitations: the constant move is no longer outside this unit; the npm-launcher
  and /tmp-bwrap runs of the integration tests and why they fail are recorded;
  the list of what moves now includes the lane and the current-pin prose; a new
  item names the macOS follow-up (its own 0.159.x qualification before the
  template default applies there) and the render_config.py override site.
- data: lane_checks gains prove_static_rerun, apply_dry_run_after_constant_move
  and integration_tests (the original dry-run line now names the base file);
  source_checks.lane_citations records the compared sources;
  checks_after_the_constant_move holds mcp add --help, the offline bundled
  catalogs of 0.155.1, 0.157.1 and 0.159.2, and the strict-config stderr.
- provenance: the base-sha entries of prove_codex_lane.py and apply_codex_lane.py
  now say so, and this branch's two files, the test module and the two new
  scratch scripts are listed with their sha256.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Model-currency addendum: 20128's 6.1 Sol effort after #534's restart

main moved during this rebase: #534 restarted OmniRoute 20128 at
2026-09-30T06:32:50Z onto build cf6748d04, carrying the open upstream PR #15167
that adds gpt-6.1-sol to reasoningSuffix.ts's alias sets. The addendum's gateway
item read the earlier build (before 04:52Z) and stated the xhigh clamp in the
present tense. It now keeps that source reading in the past tense and adds what
#534's record shows (1,154 of 1,495 gpt-6.1-sol rows sent at xhigh before the
restart; cx/gpt-6.1-sol with body max sent at max after it; 20129 unchanged);
the Decision sentence and the preregistered comparison's reason for native
Codex follow. Nothing on either port was observed again here. The routing
record's attribution line says gateway-effort evidence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Codex 0.159.2 receipt: withhold the quoted host client configuration

data.host_resolution.config_toml_top_level_model quoted the two top-level model
keys of the host's active ~/.codex/config.toml. AGENTS.md keeps machine-specific
active client configuration out of evidence, so the value is withheld; the entry
still records that the file was read once, read-only, at 2026-09-30T05:37:50Z.
Claim and limitations are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Codex 0.159.2 receipt: scope the dry-run refusal to what each run printed

The claim said each dry run after the constant move refused only on the three
preconditions an empty scratch home cannot meet; the 0.157.1 control printed a
fourth [fail] line, its codex version. The claim now scopes "only the three" to
the 0.159.2 run and says the control adds its version line.
data.amended_at_utc is the time of this last amendment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Codex user template: CODEX_MODEL from the platform's Codex pin (review of #542)

The template set model and default_subagent_model to "gpt-6.1-sol" on every platform, while
adoption/pins-macos-arm64.json pins Codex 0.155.1, whose bundled catalog has no GPT-6.1 entry. Both keys now read
${CODEX_MODEL}, which tools/adoption/render_config.py fills from the selected platform's Codex pin as it fills
SOCRATICODE_VERSION: gpt-6.1-sol from Codex 0.159.1, gpt-6-astra before it. --set CODEX_MODEL=<model> names
another; --out and --check print a derived value with its pin and sources.

The threshold is 0.159.1, not 0.159.0: openai/codex codex-rs/models-manager/models.json has no "gpt-6.1-sol" slug
at rust-v0.159.0 (687a119f) and one at rust-v0.159.1 (8e68a98e, line 178), whose release notes read "Added GPT-6.1
Sol as the default model in the bundled catalog". At rust-v0.155.1 (be2951ea) models.json lists gpt-6-astra with
efforts low to ultra, and config/src/config_toml.rs L694-696 reads both [agents] default_subagent keys.

The stack-worker profile keeps its literal gpt-6.1-sol: apply_codex_lane.py installs it verbatim, worker_pins()
passes its model as -m, and the lane refuses any codex but CODEX_VERSION (the Linux pin). test_profile_template
now asserts that the literal equals the rule for lane.CODEX_VERSION.

Tests: CodexModelTests (both platforms, the 0.159.0/0.159.1 boundary, a host override, a platform without pins
failing closed, the --out/--check note) failed first against the unchanged renderer and template (9 run: 6
failures, 12 errors). The K2 check in test_omniroute_profile_template reads a Linux render, and the strict-config
integration fixture fills CODEX_MODEL from the rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Docs and receipt: CODEX_MODEL keeps gpt-6-astra on Codex pins before 0.159.1

- docs/decisions/2026-09-27-model-currency.md, addendum 2026-09-30: the template lines now read the placeholder
  (lines 7-8 and 30-31), the table row cites the Linux render, the "Still open" list names the rule, and the macOS
  follow-up records the placeholder, its upstream source and the offline prompt-input check instead of "It is not
  implemented here".
- evidence/receipts/codex-01592-qualification-20260930.json: limitations[12] states the placeholder, and the new
  data.checks_after_the_constant_move.template_model_per_platform records the per-platform renders and a
  no-network `codex debug prompt-input` check: the 0.155.1 build over the macOS render includes Ultra's
  multi_agent_role and multi_agent_mode developer messages, drops both when only the two model values are set to
  gpt-6.1-sol, and 0.159.2 includes both over either render. Linux builds only; no model call.
- adoption/platforms/macos-arm64.md and adoption/bootstrap.md: one clause each on the macOS render and the new
  derived placeholder.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Provenance wording for the folded Sol-defaults record: no inferred author (Codex runtime lane's request)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* Sol-defaults record: Astra/Ultra coordinates a complex workflow, Astra/Max takes a single consequential judgment

The user's 2026-09-30 selection named "astra ultra when tasks needed suitable for complex workflow"; the catalog
semantics in this record (Ultra = proactive delegation with xhigh reasoning, Max = the highest reasoning effort)
split the escalation accordingly. Docs only.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* Re-register the changed hash-listed files in manifests/evidence.json (hot-file protocol)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Scout <scout@local>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:shared Touches files owned by both lanes; needs both lanes' acknowledgement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant