Skip to content

trading: NativeStack2604 research runtime, EdgarTools 5.60.0 (runtime and catalog), hash-pinned build backend - #703

Merged
seathatflowsinourveins merged 45 commits into
mainfrom
trading/runtime-2604-20261004
Oct 5, 2026
Merged

seathatflowsinourveins merged 45 commits into
mainfrom
trading/runtime-2604-20261004

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Scope

This PR packages the NativeStack2604 north-star research runtime, moves EdgarTools to 5.60.0 in the runtime and the catalog together, and closes the unit-T PR-1 additions.

  • Runtime bundle. Install and offline-acceptance scripts, an owned uv project, the locked transitive set (242 entries, CPython 3.12.3), a README, the decision record and sanitized receipts. The project carries NautilusTrader 2.0.0rc5 with the in-tree IBKR adapter, alpaca-py 0.44.0 and the research set. The recorded run (job-031, 2026-10-04) shows install PASS and 25/25 offline acceptance PASS on NativeStack2604. That run used EdgarTools 5.58.0 and is labelled pre-relock evidence.
  • EdgarTools 5.60.0. The catalog and the runtime move together:
    • The catalog's own native SEC acceptance passed at 5.60.0 on 2026-10-04 (receipt native-sec-edgartools-5600-20261004): one GET answered 200, 0 retries, 371 rows, and the same five CIK/accession rows as the 2026-09-19 and 2026-09-24 receipts.
    • data-research.json data-edgartools moves to v5.60.0 (1e7a61b3). The catalyst-provenance lock now equals the accepted environment, with 4 versions moved. Live plan rows and recipe pins move with their tests; dated historical snapshots keep 5.58.0.
    • CI at the tag was assessed from the runs:
  • Build backend pinned by hash. antlr4-python3-runtime 4.9.3 is the lock's only entry without a wheel. [tool.uv] build-constraint-dependencies pins its setuptools build backend to 84.0.0 with the lock's own wheel and sdist hashes, and uv.lock records it. Proof:
    • positive: cold-cache sync exit 0, with antlr4's WHEEL reading Generator: setuptools (84.0.0);
    • NC-1 exits 1, NC-2 exits 1 and NC-3 exits 2.
  • Census test and shared sync vector. A census test fixes the wheel-less set at {antlr4} and checks that the constraint equals the lock's setuptools entry. sync-trading-2604.sh holds the one install vector (uv lock --check; uv sync --locked --no-dev; uv pip check), which the installer runs and the trading-native CI job (PR-2) will reuse. A byte-identity test pins the installer to it.
  • OSV coverage. osv-scanner now scans the runtime's uv.lock.

Base: the branch is based on 38ac9aca; the landing queue refreshes it onto current main. Lane: lane:trading. Paper and research only; nothing here enables a live mode, endpoint or key, and no broker or provider call was made.

SOTA sources

  • uv 0.12.17: projects, locked sync, build constraints and the settings schema, plus crates/uv-build-frontend/src/lib.rs:53-60 for the default legacy backend.
  • EdgarTools v5.60.0 (1e7a61b3a142dbf5d19bc82444f85239c1786348), PyPI 5.60.0, the Oct 3 scheduled run, and the test-only fix commits 9ea5def31b and 156c45b327.
  • NautilusTrader rc5 quickstart at 1b0a49d2.
  • The trading unit T final decision record (cross-family consensus, 2026-10-04), units PR-1 and section 4.
  • This repository: scripts/host_receipts.py, adoption/host-receipt.schema.json, docs/acceptance-evidence-policy.md, docs/contributing-evidence.md and docs/lanes.md.

Evidence-class table

Claim Evidence class Receipt / command
Oct 4 install and 25/25 offline acceptance on NativeStack2604 at EdgarTools 5.58.0 native_proven, historical host-local, pre-relock evidence/receipts/native-trading-runtime-2604-20261004.json
Native SEC acceptance at EdgarTools 5.60.0 native_proven (one bounded request) blueprints/us-equities/catalyst-provenance/native-network-edgartools-5600-20261004.json
8-K parse at 5.60.0 equals 5.58.0 up to whitespace local_integration (offline fixture) evidence/artifacts/edgartools-5600-20261004/
Build constraint takes effect and fails closed local_integration (scratch cold-cache proofs) evidence/artifacts/trading-runtime-2604-20261004/build-constraint-proof.json
NativeStack2604 re-run on the final lock pending the command center re-runs install and accept; a separate receipt follows
Paper or broker execution none claimed the existing gates remain open

Local commands run

All runs used a TMPDIR outside /tmp and outside the worktree, and nice -n 19.

uv 0.12.17 --no-config lock --check (bundle vector)            exit 0
python3 -m unittest tests.test_trading_2604_lock               11 OK
python3 -m unittest tests.test_catalyst_dataset tests.test_lifecycle_sample   OK
python3 -m unittest tests.test_osv_lockfile_coverage           OK
python3 scripts/validate.py                                    exit 0
python3 scripts/evidence_manifest.py --check                   exit 0
python3 scripts/validate_catalogs.py                           exit 0
python3 scripts/catalog_decisions.py --check                   exit 0
python3 scripts/host_receipts.py validate                      exit 0
bash -n install / accept / sync scripts                        exit 0
python3 scripts/validate.py --scan-file <each changed file>    exit 0
git diff --check                                               exit 0

ShellCheck is not installed here. The full suite runs in CI.

Decision record

docs/decisions/2026-10-04-trading-2604-preparation.md covers the runtime, the EdgarTools 5.60.0 move with its CI assessment, and the build constraint with its proofs. The 5.59.1 overturn test is superseded by the 5.60.0 acceptance. Python 3.12.3 versus 3.13 ratification stays open.

Host evidence

  • python3 scripts/host_receipts.py validate passes.
  • The NativeStack2604 re-run on the final lock is requested from the command center; it gets its own receipt.
  • No platform-status change.

Checklist

  • No workflow changed; osv-scanner coverage is a data-file entry.
  • Published files were sanitized and scanned; no secret was added, and the SEC contact appears only as a withheld hash in the private original.
  • No paid hosting or billing surface.
  • No live-trading enablement.

GPT-6.1 Sol rounds (packaging, 5.60.0, round c) through the packaged SDK worker; the coordinator committed. A cross-family Claude read follows before the landing request.

Recorded residuals (bounded review, 2026-10-05)

Claude Opus gate read pinsrc-d at ac5ca6658125 returned ACCEPT with no p1. Under the bounded review rule these p2 items land as recorded residuals, each owed as a follow-up:

  • tests/test_architecture_pin_source.py:119, :125-126; docs/harness-defaults.md:89 ('exact version'); test name at :182 ('rejects_other_versio: The right-hand lookahead (?![\d.]) and the unbounded left side accept PEP 440 suffixes (0.44.0rc1, a1, b2, post1, +local, -1, -rc.1) and left-prefixed package names (foo-alpaca-py 0.44.0).

Recorded residuals (bounded review, 2026-10-05; Claude Opus gate read pinsrc-f at af3af3a)

Claude Opus gate read pinsrc-f at af3af3a4c88d returned ACCEPT with no p1. Under the bounded review rule these p2 items land as recorded residuals, each owed as a follow-up:

  • evidence/receipts/native-trading-runtime-2604-20261004.json:464; evidence/receipts/edgartools-5600-pin-move-20261004.json:104; manifests/evi: Dated superseded_note fields and the decision paragraph still call lock 4c98672d 'final' and say the rerun is resolved;
  • catalogs/foundation/new-wsl-architecture-20261001.json:1534-1541 (DVC arm; install command :1539): The foundation new-WSL architecture still tells the new distribution to pip install the current DVC, with no pointer to PYSEC-2026-2447 or the data-dvc hold.

🤖 Generated with Claude Code

Scout and others added 6 commits October 4, 2026 18:11
…ne acceptance scripts, uv project and lock, README, decision record, receipts)

Packages the CC's job-031 runtime: CPython 3.12.3 in an owned uv project, a 242-entry lock, NautilusTrader 2.0.0rc5 with
the in-tree IBKR adapter and alpaca-py 0.44.0 plus the research set. Install PASS and 25/25 offline acceptance PASS on
NativeStack2604 (historical host-local native execution, 2026-10-04). Receipts are sanitized; the runtime-target
catalog gains one dated evidence-only follow-up; no selection or gate status changes. Open items stay open: Python
3.12.3 vs 3.13 ratification and the EdgarTools overturn test.
Packaged by GPT-6.1 Sol through the packaged SDK worker; acceptance in the round's result.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…her (native SEC acceptance passed)

- Runtime: pyproject and uv.lock pin edgartools 5.60.0 (relocked with uv 0.12.17 and the bundle vector,
  --upgrade-package edgartools: only EdgarTools moved; lock 6b4e6a4d); install and accept scripts, README and the
  decision record follow, with the CI-at-tag assessment (release-day push runs green; the Oct 3 scheduled failure is
  the clock-dependent #893 TTM cassette pair, fixed test-only upstream in 9ea5def31b and 156c45b327).
- Catalog: data-research.json data-edgartools moves to v5.60.0 (1e7a61b3) on the native SEC acceptance receipt
  native-sec-edgartools-5600-20261004 (one GET 200, 371 rows, same five CIK/accession rows as 2026-09-19 and
  2026-09-24); catalyst-provenance requirements.lock equals the accepted environment's 42-package freeze; live
  plan rows and recipe pins move with their tests; dated historical snapshots keep 5.58.0. The runtime-target
  EdgarTools open item closes with the receipt id.
- Offline fixture evidence at 5.60.0 (local, not SEC acceptance): the 8-K markdown changed in whitespace only.
- The recorded 2604 run (5.58.0) stays truthful; the NativeStack2604 re-run at 5.60.0 gets its own receipt.
GPT-6.1 Sol rounds trading-2604-edgartools-5.60.0 (a, b2) through the packaged SDK worker; receipt built by the
coordinator from the command center's run; the coordinator commits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nsus test and one shared sync vector (unit T PR-1)

- trading-2604-runtime/pyproject.toml: [tool.uv] build-constraint-dependencies pins setuptools==84.0.0 with the
  lock's own wheel and sdist sha256 (uv 0.12.17: uv.schema.json:46-50, docs/concepts/projects/build.md:61-79);
  the relock records it in uv.lock's [manifest] (lock 4c98672d; no package moved). antlr4-python3-runtime 4.9.3 is
  the only lock entry without a wheel, and uv would otherwise build it against an unpinned setuptools>=40.8.0.
- Proof (retained in evidence/artifacts/trading-runtime-2604-20261004/build-constraint-proof.json): positive
  cold-cache sync exit 0 with antlr4's WHEEL reading Generator: setuptools (84.0.0); NC-1 (pyproject digest only)
  lock --check exit 1; NC-2 (relock with an invalid-only digest) exit 1, hash mismatch; NC-3 (invalid-only digest in
  pyproject and manifest) cold sync exit 2, no overlapping hashes.
- tests/test_trading_2604_lock.py (stdlib tomllib): manifest equals the pyproject constraint, the constraint is an
  == pin of the lock's setuptools with exactly its hashes, and the wheel-less set is {antlr4-python3-runtime};
  planted fixtures fail.
- sync-trading-2604.sh holds the single argument vector (uv lock --check; uv sync --locked --no-dev; uv pip check)
  that the installer runs and the future trading-native CI job will run; a test pins the installer to it byte for
  byte.
- The earlier 25/25 NativeStack2604 summary is labelled pre-relock evidence; the re-run on the final lock gets its
  own receipt.
GPT-6.1 Sol round trading-2604-c through the packaged SDK worker; the coordinator commits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ed by it)

tests/test_osv_lockfile_coverage requires every tracked lockfile and manifest in .github/osv-scanner-lockfiles.json;
the pre-push registry tests caught the new runtime project.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fore the final hot-file commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (hot-file protocol: every hot-file edit in the last commit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@seathatflowsinourveins seathatflowsinourveins added the lane:trading Trading lane: sim, paper and live north star label Oct 5, 2026
Scout and others added 3 commits October 4, 2026 21:09
…SS, 25/25 offline acceptance)

The command center re-ran this PR's own install-trading-2604.sh and accept-trading-2604.sh on NativeStack2604 at
d02c082 against the final lock (sha256 4c98672d14147a1b...), 2026-10-05T01:00:17Z-01:01:07Z: install PASS; 25/25
PASS, 0 FAIL, 0 BLOCKED; the locked sync moved edgartools 5.58.0 -> 5.60.0 and import_edgartools passed. Sanitized
receipt by the command center; per-check logs stay private on the host.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fore the final hot-file commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (hot-file protocol: every hot-file edit in the last commit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@seathatflowsinourveins seathatflowsinourveins added lane:shared Touches files owned by both lanes; needs both lanes' acknowledgement and removed lane:trading Trading lane: sim, paper and live north star labels Oct 5, 2026
Scout and others added 13 commits October 4, 2026 23:26
…asses, freeze limitation restored

- The README, decision record, runtime target, stack row and data research now cite the
  rerun receipt (install PASS, 25/25 offline acceptance at d02c082, lock 4c98672d14147a1b)
  in place of the pending status.
- The rerun receipt uses kind native_cli_e2e; native_proven covers only the unchanged
  nautilus_quickstart row, local_integration the other 24 destination-host rows.
- The historical host receipt and the original runtime receipt keep their measurements and
  gain a dated supersession note.
- The edgartools freshness row again says the catalyst-provenance requirements.lock is a
  name==version freeze, not hash-locked.
- Coordinator: the SEC 5.60.0 receipt no longer publishes the private original's sha256 and
  byte count, and committed_copy_sha256 now covers the trailing newline catalyst.py writes.

Built by GPT-6.1 Sol through the packaged SDK worker (round trading-2604-d); committed by the
coordinator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tack2604 rerun and link it

- evidence/artifacts/trading-runtime-2604-20261004/rows-native-trading-runtime-2604-rerun-d02c0827.json:
  the operator's sanitized outer status rows (install PASS; 25 acceptance rows, each
  PASS with exit 0), copied byte for byte by the coordinator.
- The rerun receipt cites the artifact by path, sha256 and size. It carries the 25 checks
  transcribed from the artifact (names, order, statuses and exits match exactly), and closes
  operator_followup on 2026-10-05. Per-check logs stay private, the evidence-class scoping is
  unchanged, and independent review is still pending.
- The decision record notes the delivery.

Built by GPT-6.1 Sol through the packaged SDK worker (round trading-2604-e); committed by the
coordinator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… to the merge base before the final hot-file commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…its on the merge base (hot-file protocol: every hot-file edit in the last commit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ation, host receipt restored, census and mise wording)

- catalogs/us-equities/data-research.json: the edgartools limitation cites the recorded rerun
  in place of "pending".
- The SEC 5.60.0 receipt's private_original_note is dated 2026-10-05 and says the private
  original's sha256 and byte count were withdrawn after an earlier pushed commit of this PR
  carried them. committed_copy_note records that the earlier value was taken without the
  trailing newline.
- The rerun receipt and its receipts[] copy add the limitation that no independent post-run
  observation or discriminating controls were supplied on NativeStack2604. The only
  same-check controls ran on the packaging worker.
- The recorded host receipt evidence/hosts/native-stack-2604-20261004/...--nautilustrader--use--
  20261004.json is restored to its recorded bytes as introduced in 29da752. Recorded host
  receipts change only through append-only reviews; the forward pointers stay in the runtime
  receipt, its registry copy and runtime-target.json.
- The decision record uses the README's census wording ("packages without any wheel"; no
  target-compatible wheel coverage check).
- edgartools-5600-pin-move-20261004.json and its receipts[] copy gain superseded_note_20261005.
- The mise wording now says exactly what ran under `mise exec uv@0.12.17`: the install
  script's sync, including `uv lock --check`. The relock itself did not run through mise.

Built by GPT-6.1 Sol through the packaged SDK worker (round trading-2604-f); committed by the
coordinator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… to the merge base before the final hot-file commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…its on the merge base (hot-file protocol: every hot-file edit in the last commit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The re-scoped mise sentence named only one relock. The text now names both, with their recorded
artifacts:
- `uv lock --upgrade-package edgartools` produced lock 6b4e6a4d;
- the round-c build-constraint relock then produced the final lock 4c98672d14147a1b.

Both ran with the installed native uv 0.12.17 on the packaging worker, where mise was not
available, so neither went through mise. The separate claim stays: the destination-host sync
ran under mise exec uv@0.12.17. The receipts[] copies stay payload-equal.

Built by GPT-6.1 Sol through the packaged SDK worker (round trading-2604-g); committed by the
coordinator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… to the merge base before the final hot-file commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…its on the merge base (hot-file protocol: every hot-file edit in the last commit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…g runtime branch

- catalogs/foundation/new-wsl-architecture-20261001.json: all four EdgarTools blocks keep this
  branch's 5.60.0 pin, acceptance and upstream_currency text. Every pin_source cites the merged
  manifests/stack.json version line, :1524.
- manifests/stack.json auto-merged: it is main's stack with only the EdgarTools component taken
  from this branch.
- manifests/evidence.json: main's 202 receipts are kept, plus this branch's four. 51 payload
  files are re-registered last.
- The four generated reports were refreshed with their repository builders. Every other file
  keeps its own side's content.

Resolved by GPT-6.1 Sol through the packaged SDK worker (round trading-2604-merge); committed by
the coordinator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… to the merge base before the final hot-file commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…its on the merge base (hot-file protocol: every hot-file edit in the last commit)

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

socket-security Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Dependency limit exceeded — report not shown.

This pull request scan exceeded the 10,000-dependency limit applied to this scan, so the results are incomplete and may be inaccurate. To avoid reporting false positives, Socket has not posted a report.

Upgrade your plan to raise the dependency limit and get complete reports, or view the partial scan in the dashboard.

Socket is always free for open source. If this is a non-commercial open source project, contact us to request a free Team account.

Scout and others added 4 commits October 5, 2026 02:56
…60.0 mirrors synced; pin_source line test

- catalogs/foundation/new-wsl-architecture-20261001.json: 14 pin_source cells that cited `{` or
  `},` after this PR's 3-line growth of manifests/stack.json are recomputed to each component's
  version (or revision) line. The cells are skills-ref, jcodemunch-mcp, poppler, the Nemotron
  embedding revision, tavily-cli, playwright-test, zizmor, fastapi, nextjs, postgresql,
  exchange-calendars ×3 and omniroute. Pins, text and the labelled architecture_pin_drift
  cells are unchanged.
- New tests/test_architecture_pin_source.py checks that every `pin_source:
  manifests/stack.json:N` cell points at a version or revision line of the named component in
  the current stack. It is red at the merge head and green after the fix, and it also passes on
  origin/main's pair. Whichever of #703 and #713 lands second must now recompute, because CI
  enforces it.
- catalogs/landscape/upstream-snapshot.json and
  blueprints/token-native-focus/saturation-audit.json now mirror EdgarTools 5.60.0. #703 moved
  the stack pin without them, which is what made build_ecosystem.py --check and the landscape
  check fail.
- docs/harness-defaults.md logs the anti-pattern: a merge that changes a cited file's line
  numbers needs its cross-file line citations recomputed.

The command center found the shifted cells during its foundation ACK check. Built by GPT-6.1 Sol
through the packaged SDK worker (rounds trading-2604-pinsrc and -b); committed by the
coordinator. The coordinator re-ran test_architecture_pin_source, test_trading_2604_lock,
build_ecosystem --check, landscape.py --root . and validate: exit 0 each.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… to the merge base before the final hot-file commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…its on the merge base (hot-file protocol: every hot-file edit in the last commit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rs in every cited file, with a test that covers them all

- manifests/stack.json: the EdgarTools component's evidence_ids now include native-trading-runtime-2604-rerun-d02c0827-20261005, matching the saturation audit's public_receipts, which tests/test_stack_lifecycle.py:34 requires to be equal. The receipt decides this: evidence/receipts/native-trading-runtime-2604-rerun-20261005.json:27 records the locked sync to 5.60.0 with import_edgartools PASS, :45 names EdgarTools, and :116-119 record the import check as local_integration.
- catalogs/foundation/new-wsl-architecture-20261001.json: all 128 line-bearing pin_source citations, across 11 cited files, are recomputed.
  - The three NautilusTrader locators move from runtime-target.json:26, which became '},' after this PR re-serialized that file, to :32.
  - 14 stack locators shift after the added evidence id.
  - Eight pre-existing wrong-line locators are corrected: six Alpaca, :99 to :158; the SDK constraints, :19-20 to :22-23; the Ubuntu image, :295 to :105.
- tests/test_architecture_pin_source.py now checks every line-bearing pin_source in every cited file, not only stack.json. It takes the expected content from each winner's own component, repository, package or pin key, and reuses scripts/build_ecosystem.py's locator validation. Against the unchanged catalog it rejected exactly 11 locators, and it passes after the fix. The docstring no longer cites a script that does not exist.
- The EdgarTools pin-site classification and the pin-move receipt carry dated 2026-10-05 corrections for the five sites that moved to 5.60.0 but were still classed as history (docs/harness-defaults.md:83: correct the record where it was relayed). All 327 original inventory records are kept. New tests/test_edgartools_pin_move.py covers the corrections.
- docs/harness-defaults.md: an anti-pattern row for this mistake.

Built by GPT-6.1 Sol through the packaged SDK worker (round trading-2604-pinsrc-c); committed by the coordinator. The builder's runs each exited 0:
- the tests: test_stack_lifecycle, test_architecture_pin_source, test_trading_2604_lock, test_edgartools_pin_move, test_catalogs, test_validate, test_adoption_docs_consistency, test_ecosystem_manifest and test_host_receipts;
- build_ecosystem --check, landscape.py --root . and validate;
- evidence_manifest --check and git diff --check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 5, 2026
…ndbook and unite the receipt and registry entries

- The catalog merged cleanly as text. tests.test_architecture_pin_source and tests.test_stack_lifecycle pass on the result.
- docs/new-wsl-handbook.{md,json} were regenerated with build_new_wsl_handbook.py --write, and --check passes.
- The handbook receipt is #715's version with regenerations united at the entry level: base 7, #715's 5, main's #703 entry, and this refresh's entry. Its outputs, generator and profile digests are refreshed.
- manifests/evidence.json is main's registry plus #715's two receipt rows, with #715's 18 paths re-registered. The hot-file commit follows.

Checks: 96 tests OK (test_new_wsl_handbook, test_architecture_pin_source, test_stack_lifecycle); validate.py exit 0; evidence_manifest --check exit 0.

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

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5a1861bd94

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +60 to +62
case "$docker_host" in
''|unix:///var/run/docker.sock|unix:///run/docker.sock)
blocked 'BLOCKED: a non-default rootless Docker endpoint is required.' 69 docker-endpoint-unavailable ;;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Verify the selected Docker daemon is actually rootless

When the selected context points to a rootful daemon on any nonstandard Unix socket or TCP/SSH endpoint, this check accepts it merely because its URL is not one of the two default sockets; the later docker image pull commands can therefore mutate an unintended rootful or remote daemon despite the recipe's rootless safety contract. Inspect the daemon's SecurityOptions for name=rootless before proceeding, as the existing check in blueprints/runtime-workers/openhands/host.py:207-211 does.

Useful? React with 👍 / 👎.

"offline_runtime_followup_20261004": {
"recorded_at_utc": "2026-10-04T21:23:33Z",
"host": "NativeStack2604",
"evidence_class": "native_proven",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Classify the aggregate runtime evidence as local integration

The referenced receipt explicitly describes the 25-row harness as local integration and classifies every row except the unchanged Nautilus quickstart that way, so assigning native_proven to the entire follow-up promotes import probes and locally adapted examples beyond their recorded evidence class. Consumers of runtime-target.json can consequently treat the complete runtime as natively proven; use an aggregate local_integration class and retain native_proven only for the individual quickstart row.

AGENTS.md reference: AGENTS.md:L17-L18

Useful? React with 👍 / 👎.

"schema_version": 1,
"id": "native-trading-runtime-2604-rerun-d02c0827-20261005",
"kind": "native_cli_e2e",
"claim": "On NativeStack2604, PR #703's own install-trading-2604.sh and accept-trading-2604.sh ran at head d02c0827 against its final lock: install PASS; acceptance 25/25 PASS, 0 FAIL, 0 BLOCKED.",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not record uncontrolled local checks as accepted passes

This new claim records all 25 checks as acceptance passes even though the receipt itself states that the local checks had no discriminating controls or independent post-run observation. Under docs/acceptance-evidence-policy.md:42-53, those newly claimed local checks must be recorded as untested until the same checks fail with their conditions removed; otherwise the receipt and downstream manifest freshness entries overstate what the run establishes.

AGENTS.md reference: AGENTS.md:L17-L18

Useful? React with 👍 / 👎.

fi
fi
mkdir -p "$project"
rm -f -- "$project/.trading-2604-complete"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve a valid completion marker through preflight failures

On any rerun of an already completed installation, this removes the only marker accepted by accept-trading-2604.sh before the daemon, bundled-lock, interpreter, or network preflights have succeeded. A transient Docker outage at lines 147-149, for example, leaves the previously valid environment unchanged but permanently blocks all acceptance checks until a full successful reinstall; defer invalidating the marker until the first operation that can actually mutate the accepted runtime.

AGENTS.md reference: AGENTS.md:L15-L15

Useful? React with 👍 / 👎.

seathatflowsinourveins pushed a commit that referenced this pull request Oct 5, 2026
…ER_THREADS at d25ea1f)

- **T1:** evidence/receipts/ns2604-requalification-20261005.json restores the `#/bounded_repair_rulings` locator. bfff257 had pointed it at `#/micro_repair_rulings`, which records only superseded32.
- **T2:** scripts/build_new_wsl_handbook.py now existence-checks `readiness.official_source` and `independent_review.recorded_source_review`, and hashes both through inputs.read, as it already does for the decision record. Both paths now appear in docs/new-wsl-handbook.json `sources`. A new test covers each missing source and a valid run.
- **T3, amendment times:**
  - review-715-corrections.json keeps its initial recorded_at_utc (12:07:21Z). The later ruling blocks gain amended_at_utc and amendment_source_item: 17:08:27Z (item 20261005T170827Z) and 18:18:52Z (item 20261005T181852Z).
  - The two receipts whose claims were revised after their recorded_at_utc (ns2604-requalification and ns2604-roadmap-evidence) gain an `amendments` list with times from the git history.
- **T4:** dated-readiness-rulings.json:191 cites main commit c148e04, where consensus.json is byte-identical. 1d74a85 was not reachable. Lines :474-476 are kept.
- **P3 boundary wording:** catalogs/foundation/new-wsl-architecture-20261001.json :8 and :1208, and the requalification receipt's provisional-count limitation, now carry the qualification_bar.scope sentence: "The official baseline uses the #700 bar. Captured-status counts and model READY leads remain source_review; they are not measured qualification at that bar."
- **Optional P3:** the decision record notes the merge of main ecfa112 (#703) at :48 and :463.
- **Regeneration:**
  - docs/new-wsl-handbook.{md,json} were regenerated, and the handbook receipt records the regeneration.
  - The 11 changed files are re-registered, and the requalification receipt's mirrored limitations are refreshed in the registry. The hot-file commit follows, with the registry last.

Checks:
- validate.py exit 0;
- unittest of test_new_wsl_handbook, test_architecture_pin_source and test_stack_lifecycle: 97 OK, exit 0;
- build_new_wsl_handbook.py --check exit 0;
- component_matrix.py --check exit 0;
- new_host_grand_list.py --check exit 0;
- evidence_manifest.py --check exit 0;
- git diff --check clean.

Built by GPT-6.1 Sol through the packaged SDK worker (round 715-r3); registry and commit by the coordinator, the single writer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Oct 6, 2026
…ites WSL's time-zone default explicitly

On 2026-10-05 the user asked that times shown to them be in their local time,
resolved at the root of the harness rather than in a memory note or per-host
edits. Records (ledger rows, receipts, evidence, commits) stay UTC.

- One sentence, one wording, in both user-level templates:
  examples/claude-native/CLAUDE.md (Core rule bullet) and
  adoption/templates/codex.AGENTS.template.md (session-lanes line). The F9
  carriers are regenerated and hold it once each; the nativestack2604 render
  matches them byte for byte.
- Pins amended together: a fail-first StandingRuleSurfacesTests check, the
  Codex TOP_RULE_SHA256 and size comments, the client-configuration projection
  addendum, and a context-budget addendum (startup scopes 23,796/19,560 bytes
  under the unchanged 24,458/20,103 constants; new pin value recorded).
- The new-distro recipe writes [time] useWindowsTimezone=true, WSL's
  documented default, so W5 reads it back: cloud-init user-data (path A), W6
  (path B), the W5 read-back, the first-boot checklist, the receipt example,
  the command table and a dated amendment of the recipe record. Source:
  Microsoft wsl-config "Time settings" (MicrosoftDocs/WSL 7ea1c6f9,
  WSL/wsl-config.md:152-158).
- The WSL image experiment's four edited frozen inputs move to
  evidence/artifacts/user-facing-local-time-20261005/frozen-inputs/ with
  unchanged hashes (fix-wave precedent).
- Decision: docs/decisions/2026-10-05-user-facing-local-time.md.

Rebased onto main ecfa112 (#703). The shared hot files (the new-WSL handbook
pair, its receipt and manifests/evidence.json) are regenerated and
re-registered in the branch's last commit, under the hot-file protocol of
docs/lanes.md.

Source review and local integration only: no first boot, import, host
re-render or model run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Oct 6, 2026
… receipt and the registry

Hot-file protocol (docs/lanes.md):
1. take main's manifests/evidence.json;
2. run python3 scripts/build_new_wsl_handbook.py --write on the rebased
   tree;
3. re-register last, through host_receipts.register_file.

Results:
- docs/new-wsl-handbook.{md,json} are regenerated. They carry #703's catalog
  digest (8420f58e...) and the edited recipe's digest (ef2ca82a...).
- evidence/artifacts/new-wsl-handbook-20261001/receipt.json:
  - outputs are 0fe0d761... and 997b05c0...;
  - this change's 2026-10-05 regenerations entry follows #703's, with
    previous_outputs b1dd8bdb... and 32da2ef7... (main's).
- manifests/evidence.json is main's copy plus 20 changed and 5 new file
  entries. receipts[] and convergence_records[] are unchanged.
- component_matrix.py --write and new_host_grand_list.py --write changed
  nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Oct 6, 2026
… receipt and the registry

Hot-file protocol (docs/lanes.md):
1. take main's manifests/evidence.json;
2. run python3 scripts/build_new_wsl_handbook.py --write on the final tree;
3. re-register last, through host_receipts.register_file.

Results:
- docs/new-wsl-handbook.{md,json} are regenerated. They carry #703's catalog
  digest (8420f58e...) and the edited recipe's digest (3d616445...).
- evidence/artifacts/new-wsl-handbook-20261001/receipt.json:
  - outputs are 50585de8... and 70cf495c...;
  - this change's one 2026-10-05 regenerations entry follows #703's, with
    previous_outputs b1dd8bdb... and 32da2ef7... (main's).
- manifests/evidence.json is main's copy plus 20 changed and 5 new file
  entries. receipts[] and convergence_records[] are unchanged.
- component_matrix.py --write and new_host_grand_list.py --write changed
  nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Oct 6, 2026
…ites WSL's time-zone default explicitly

On 2026-10-05 the user asked that times shown to them be in their local time,
resolved at the root of the harness rather than in a memory note or per-host
edits. Records (ledger rows, receipts, evidence, commits) stay UTC.

- One sentence, one wording, in both user-level templates:
  examples/claude-native/CLAUDE.md (Core rule bullet) and
  adoption/templates/codex.AGENTS.template.md (session-lanes line). The F9
  carriers are regenerated and hold it once each; the nativestack2604 render
  matches them byte for byte.
- Pins amended together: a fail-first StandingRuleSurfacesTests check, the
  Codex TOP_RULE_SHA256 and size comments, the client-configuration projection
  addendum, and a context-budget addendum (startup scopes 23,796/19,560 bytes
  under the unchanged 24,458/20,103 constants; new pin value recorded).
- The new-distro recipe writes [time] useWindowsTimezone=true, WSL's
  documented default, so W5 reads it back: cloud-init user-data (path A), W6
  (path B), the W5 read-back, the first-boot checklist, the receipt example,
  the command table and a dated amendment of the recipe record. Source:
  Microsoft wsl-config "Time settings" (MicrosoftDocs/WSL 7ea1c6f9,
  WSL/wsl-config.md:152-158).
- The WSL image experiment's four edited frozen inputs move to
  evidence/artifacts/user-facing-local-time-20261005/frozen-inputs/ with
  unchanged hashes (fix-wave precedent).
- Decision: docs/decisions/2026-10-05-user-facing-local-time.md.

Rebased onto main ecfa112 (#703). The shared hot files (the new-WSL handbook
pair, its receipt and manifests/evidence.json) are regenerated and
re-registered in the branch's last commit, under the hot-file protocol of
docs/lanes.md.

Source review and local integration only: no first boot, import, host
re-render or model run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Oct 6, 2026
… receipt and the registry

Hot-file protocol (docs/lanes.md):
1. take main's manifests/evidence.json;
2. run python3 scripts/build_new_wsl_handbook.py --write on the final tree;
3. re-register last, through host_receipts.register_file.

Results:
- docs/new-wsl-handbook.{md,json} are regenerated. They carry #703's catalog
  digest (8420f58e...) and the edited recipe's digest (3d616445...).
- evidence/artifacts/new-wsl-handbook-20261001/receipt.json:
  - outputs are 50585de8... and 70cf495c...;
  - this change's one 2026-10-05 regenerations entry follows #703's, with
    previous_outputs b1dd8bdb... and 32da2ef7... (main's).
- manifests/evidence.json is main's copy plus 20 changed and 5 new file
  entries. receipts[] and convergence_records[] are unchanged.
- component_matrix.py --write and new_host_grand_list.py --write changed
  nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Oct 6, 2026
…715)

### Scope

Publish the retained NativeStack2604 observations and correct the handbook after the command center's three-item micro-review. Official readiness remains the historical **30/80** from #700, whose bar is **upstream acceptance, wiring and fresh-session use, with the harness text present**.

The command center's captured-status provisional **30/80 is as of 11:44Z**, excluding custody's 13:02Z BY_DESIGN change. It includes difftastic, structural-search, inspect-ai, harbor and codex-sdk despite **fresh-session use not evidenced**, so it is **not measured qualification on the #700 bar**. Earlier 37/40/44/32 proposals are superseded. Generated current/conditional values remain null.

The organic native arm differs in one respect: **no harness text names the tool**. Upstream acceptance, wiring and fresh-session use remain required. Its count comes only from the command center's final verified E2E **S4**, independent review and adjudication.

- Base: main `ecfa112764c664d35377dd66b8cfcb67e5a94d60` (after #703), merged into this branch at `44bf09713`. Head: `e50f0f480cabd66aea4f0552c1ebd589d45ebbf1`.
- Lane: exactly `lane:foundation`. Pending the command center's micro-check and ACK at the exact head. Its ruling at `d25ea1f7d` was ACK_AFTER_THREADS; the four thread fixes and the boundary P3 are applied in `d4db4726c`.
- Owned paths: decision, receipts/artifacts, handbook builder/tests, architecture scope/notes and generated outputs; registry committed last.
- Serena and MinerU remain demoted while condition-absent controls are open; ccusage and session-analytics remain open. Retained failures, native attempts, local checks and model verdicts keep separate classes.
- All 80 historical slot records and main owner/profile/pin fields are preserved. #713 landed as1796303f; #705 changed command-output's historical owners/29 operation.

## SOTA sources

- `native-agent-stack@4c89741:evidence/artifacts/ns2604-e2e-20261004/method.md:60`: the frozen #700 qualification bar. [PR #700](#700).
- The same pin's `docs/decisions/2026-10-04-ns2604-verified-e2e.md:114–121`: final-readiness authority.
- `native-agent-stack@424b8a7:docs/lanes.md:94–128` and `scripts/host_receipts.py:710`: main-registry restoration, native re-registration and registry last.
- The same pin's `docs/acceptance-evidence-policy.md:28–69` and `scripts/build_new_wsl_handbook.py:46`: evidence boundaries and existing generator interface.
- Command-center source review `task-ns2604-coop-20261005T181852Z:12–23`, SHA256 `fa512269d639605a344f690166c436a208fffb79403bb0f55b2b48f0c9a7ef63`, retained in `review-715-corrections.json#/micro_repair_rulings`. It corrects its earlier bar wording; it is not upstream acceptance.

### Evidence-class table

| Claim | Evidence class | Boundary |
| --- | --- | --- |
| Official #700 30/80 | Historical qualification | Existing dated baseline; no new host run |
| Captured-status provisional30 and missing fresh-use proofs | Source review | Not measured #700 qualification or a derived numerator |
| Retained native attempts, wrappers, fixtures and verdicts | Original separately scoped classes | Failures and client-leg limits retained |
| Generators, tests and registry | Local integration / structural validation | Publication consistency only |
| Organic native-arm readiness | None recorded here | Count pending final S4 |

### Local commands run (at head `e50f0f480`; content commits `d4db4726c`, `52a7680d9` and `a305d2cbf`)

- `python3 scripts/validate.py`: exit 0; 69 components, 4 profiles, 214 receipts, 10,284 hashes.
- `python3 -m unittest tests.test_new_wsl_handbook tests.test_architecture_pin_source tests.test_stack_lifecycle`: exit 0; 97 tests OK.
- `python3 scripts/build_new_wsl_handbook.py --check`: exit 0 (regenerated with `--write`).
- `python3 scripts/component_matrix.py --check`: exit 0; 32 rows.
- `python3 scripts/new_host_grand_list.py --check`: exit 0; 32 layers, 66 winners.
- `python3 scripts/evidence_manifest.py --check`: exit 0.
- `git diff --check`: exit 0.
- CI runs on this head.

### Refresh onto main and the command center's ruling

- **Refresh.** `44bf09713` merges main `ecfa11276`:
  - The catalog merged cleanly as text, and the pin-source test passes.
  - The handbook was regenerated.
  - The handbook receipt's `regenerations` were united at the entry level.
  - The registry is main's 212 receipts plus this PR's 2, with its paths re-registered.
  - The hot-file pair keeps the registry last.
  - A GPT-6.1 Sol same-thread delta read of `82c25177f..d25ea1f` returned ACCEPT.
- **Ruling.** The command center ruled ACK_AFTER_THREADS at `d25ea1f7d`: no P0 or P1, four valid P2 threads, one P3. `d4db4726c` applies:
  - **T1:** restores the `#/bounded_repair_rulings` locator.
  - **T2:** the handbook builder existence-checks and hashes `readiness.official_source` and `independent_review.recorded_source_review`, with a test.
  - **T3:** amendment times on the later ruling blocks and the two revised receipts.
  - **T4:** cites the reachable main commit `c148e049`.
  - **P3:** the `qualification_bar.scope` boundary sentence in the catalog notes (`:8`, `:1208`) and the receipt limitation.
  - **Optional:** a dated merge note in the decision record.
- **T3 completion (`52a7680d9`).** The command center found T3 partial at `c3f4d8ddf`. The ruling blocks' amended_at_utc now carry their revisions' write times: 19:12:17Z from `73d75df4b` and 19:28:40Z from `bfff257c0`. Both equal the receipts' amendment times, and the item times stay in amendment_source_item. The handbook was regenerated and re-registered.
- **Round 3 (`a305d2cbf`).** The command center found that `bfff257c0` also revised `bounded_repair_rulings`, adding `captured_status_boundary`, so the block now carries an `amendments` list that mirrors the receipts:
  - `73d75df4b` at 19:12:17Z (item 170827Z);
  - `bfff257c0` at 19:28:40Z (item 181852Z).

  A per-block check over the file's history finds a matching stamp for every content revision. The handbook was regenerated and re-registered.
- **Threads.** All four are answered with the command center's text and resolved.

Prior failed attempts remain retained. Reads so far:
- a GPT-6.1 Sol delta read of the refresh (`82c25177f..d25ea1f`);
- the command center's exact-head reads at `d25ea1f7d` (ruling ACK_AFTER_THREADS), `c3f4d8ddf` (T3 partly fixed) and `3457c9beb` (T3's bounded block still incomplete).

The round-3 fix at this head awaits the command center's micro-check. No read yet covers it. These are source and integration review, not S4 qualification. All 212 main receipt entries (main `ecfa11276`) are preserved, with two owned receipts re-registered through the existing native library.

### Decision record

`docs/decisions/2026-10-05-ns2604-foundation-requalification.md` records methods, sources, open controls/lifecycle gaps, superseded proposals and overturn conditions. Publication review or ACK does not provide S4 qualification.

### Host evidence

No host-receipt or platform-status change. The command center is asked to micro-check round 3 at `e50f0f480` and ACK that exact head. Landing waits for the repo-wide fsspec relock (GHSA-27vj-qcqg-25rc).

### Checklist

- [x] Main owner data, all80 historical slots and all 212 main registry receipts preserved.
- [x] No credentials, active settings, private paths or raw conversations published.
- [x] No host/config/install/service/billing change; #750 untouched.
- [x] One lane label; registry-only final commit; exact head `e50f0f480` reported to the command center.
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Oct 7, 2026
…s follow the Windows time zone (#758)

### Scope

- What this PR changes:
  - **Shared instruction templates.** The Claude template (`examples/claude-native/CLAUDE.md`) and the Codex template (`adoption/templates/codex.AGENTS.template.md`) each gain one rule: when an agent tells the user a time, it gives the host's local time first with UTC beside it, and keeps UTC in ledger rows, receipts, evidence and commits. The rendered carriers are regenerated, and the pinned hashes, size comments, budget addendum and registry are amended together.
  - **New-distribution recipe.** It now writes `[time] useWindowsTimezone=true` explicitly (WSL's documented default) so that W5 reads it back, and W5 pairs the time zone the distribution reports (`timedatectl show -p Timezone --value`) with the Windows time zone (`tzutil /g`). The cloud-init template, the recipe, the W5 and W6 read-backs, the first-boot checklist, the receipt example, the command table and the tests are updated.
- Base commit: `ecfa112764c664d35377dd66b8cfcb67e5a94d60` (main after #703); head `418a3d9e01aa7ce69d786ae0ce53c3e40b800f27`. The branch was rebased under the hot-file protocol of `docs/lanes.md`: the handbook pair, its receipt and `manifests/evidence.json` are regenerated and re-registered in the last commit.
- Lane: `lane:foundation`.
- Owned paths touched:
  - `examples/claude-native/CLAUDE.md`, `adoption/templates/codex.AGENTS.template.md` and `adoption/new-wsl/{claude,codex}-user-instructions.md`;
  - `adoption/templates/wsl/*`, `adoption/platforms/linux-wsl2-new-distro.md`;
  - `docs/decisions/2026-10-05-user-facing-local-time.md` (new), with addenda to the 2026-10-01, 2026-10-02 and 2026-10-05 budget records;
  - `docs/new-wsl-handbook.{md,json}` and their receipt;
  - the tests `test_install_claude_profile`, `test_codex_worker_lane` and `test_wsl_new_distro_recipe`;
  - `tools/adoption/*` (citations and comments), `manifests/evidence.json`, and `evidence/artifacts/user-facing-local-time-20261005/`;
  - `blueprints/convergence-practice/wsl-new-distro-image-20261001/experiment.json` (its four frozen-input paths only, moved to `evidence/artifacts/user-facing-local-time-20261005/frozen-inputs/` with unchanged hashes).

The user asked for this to be resolved at the root of the harness rather than through a memory note or per-host edits. The rule has two halves: a display rule (how an agent tells the user a time) and a records rule (ledger rows, receipts, evidence and commits keep UTC, written as RFC 3339 date-times with `Z`). Only the times an agent reports to the user change; the records stay UTC.

This revision answers the command center's review of `8dfc91e4` (changes requested):
- it is rebased onto `ecfa1127`;
- neither this text nor the record plans any change to the user's own host rule;
- Decision 3 states the records rule as the sentence does;
- the `useWindowsTimezone` rationale says what W5 detects and what it does not;
- the `[time]` check reads by section;
- W5 gains the zone pair;
- the Learn citations are pinned;
- two overturn conditions are raised to the user instead of acted on.

Round 3 answers the command center's ruling on `608c5266` (ACK after fixes):
- the record states both paths that set the zone: instance start, and the live push of a Windows time-zone change into a running instance, each with its microsoft/WSL source lines;
- a W5 zone mismatch is recorded and stops the run for review, without the failed-proof export and unregister, on both paths, and the recipe names the remedy;
- the W5 bullet pins CLDR and the tzutil page;
- `experiment.json` joins the owned paths.

The series is rebuilt so that the hot files stay in the last commit.

### SOTA sources

- Microsoft WSL, Advanced settings configuration, "Time settings" (https://learn.microsoft.com/en-us/windows/wsl/wsl-config#time-settings, read 2026-10-05). Source: MicrosoftDocs/WSL@7ea1c6f, `WSL/wsl-config.md:152-158`, still that file's latest commit on 2026-10-05. It documents `[time]` `useWindowsTimezone` as a boolean, default `true`, that makes WSL "use and sync to the timezone set in Windows". The recipe's explicit key restates this default.
- microsoft/WSL@91f161f (tag 3.0.1, the release W1 requires):
  - `src/linux/init/WslDistributionConfig.h:25` and `:58` (`bool AutoUpdateTimezone = true;`);
  - `src/linux/init/timezone.cpp:22-110`: `UpdateTimezone` returns early when the key is off (`:49-52`), when the mapping is empty (`:54-58`) or when the zone's file is missing (`:66-70`); otherwise it relinks `/etc/localtime` (`:76-106`);
  - at instance start, `ConfigInitializeCommon` reads `/etc/wsl.conf` once (`src/linux/init/config.cpp:532`), and `config.cpp:882` calls `UpdateTimezone`;
  - in a running instance whose key was true at start:
    - the service's window receives the broadcast `WM_TIMECHANGE` (`src/windows/service/exe/LxssUserSession.cpp:607-647` and `:4294-4305`);
    - it updates every running instance (`:3835-3846`; `src/windows/service/exe/WslCoreInstance.cpp:349-362`);
    - init's loops call `UpdateTimezone` (`src/linux/init/init.cpp:2559-2561` and `:2745-2747`);
    - that a Windows time-zone change raises `WM_TIMECHANGE` rests on WSL's own comment (`:619`) and log text (`:3838`);
  - `src/windows/common/helpers.cpp:358-413`: the Windows zone and region are mapped by `ucal_getTimeZoneIDForWindowsID`, with Windows' own ICU.
- ICU and CLDR, cited for the mapping's meaning only (the data version Windows ships is not established):
  - ICU release-78.3 (21d1eb0f306e1141c10931e914dfc038c06121da), `icu4c/source/i18n/unicode/ucal.h:1644-1674` and `icu4c/source/i18n/timezone.cpp:1698-1719`: the first zone of the region's row, else the `001` row;
  - CLDR release-48-2 (11299982335beb974c1c63c45265184e759c0f41), `common/supplemental/windowsZones.xml:130` and `:133`: `Eastern Standard Time` maps to `America/New_York`.
- Microsoft `tzutil` (https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/tzutil, read 2026-10-05; MicrosoftDocs/windowsserverdocs@48fd053, `tzutil.md:18` and `:25`): `/g` displays the current time zone ID.
- RFC 3339 (Date and Time on the Internet: Timestamps, https://www.rfc-editor.org/rfc/rfc3339):
  - §4.1 gives the reason for UTC;
  - §4.2 defines local offsets, which records do not use;
  - §4.3 defines the `Z` designator, which records use;
  - §5.6 gives the grammar.
- Claude Code memory documentation (https://code.claude.com/docs/en/memory): user-level `~/.claude/CLAUDE.md` instructions load in every session, so the rule belongs in the rendered user block, not in auto-memory.
- Codex AGENTS.md guide (https://developers.openai.com/codex/guides/agents-md): the global `~/.codex/AGENTS.md` is read first in every session.
- ubuntu/wsl-setup@73418e3 (0.6.3), `wsl-setup:55-73` (`set_user_as_default`).
- cloud-init `write_files`: the existing recipe's mechanism for `/etc/wsl.conf`, validated with `cloud-init schema -c` (26.1).

### Evidence-class table

| Claim | Evidence class | Command / receipt |
| --- | --- | --- |
| The rule renders exactly once in each client's managed block, byte-identical to the committed carriers | local_integration | `new_wsl_client_config.py --render --host nativestack2604 --out <scratch>` exit 0: the merged blocks are 12,071 and 8,601 bytes, one copy each; `--check` exit 0 |
| Startup context stays under the unchanged budgets (Claude 23,796 of 24,458 bytes; Codex 19,560 of 20,103), re-measured at base `ecfa1127` | local_integration | `tests.test_install_claude_profile.PortableTopRuleTests` (`test_rendered_startup_files_fit_each_clients_fixed_byte_budget`); the budget addendum in `docs/decisions/2026-10-05-harness-context-budget.md` |
| The user-data appends a `[time]` section holding only `useWindowsTimezone=true`, before `[user]`, and each wsl.conf path leaves every key once | local_integration; synthetic | `cloud-init schema -c` gives "Valid schema"; the section reading in `test_wsl_new_distro_recipe` and its mutants (a key moved under `[user]` fails); two `/etc/wsl.conf` simulations |
| W5 reads the zone the distribution reports beside the Windows zone; a mismatch stops for review without the failed-proof export and unregister, with its remedy and pins | local_integration | `TimeZonePairTests`: the command-table rows, the checklist, the receipt example, the failure rule's exception, the remedy and the CLDR and tzutil pins, with fourteen mutants |
| On NativeStack2604, `timedatectl show -p Timezone --value` gives `America/New_York` and `tzutil /g` gives `Eastern Standard Time` | native_proven (host read, outputs in the record; not a W5 run) | both exit 0 on 2026-10-05; `/etc/localtime` links to the same zone |
| On NativeStack2604, `useWindowsTimezone` was false, with no repository record, until the coordinator set it to true; a private host plan had pinned it because Windows' automatic time zone setting was on | native_proven (host read) | `/etc/wsl.conf` before and after (coordination evidence, outside the repository) |
| Agents follow the rule in fresh sessions | NOT MEASURED | no model run; to be observed after the F9 re-render |

### Local commands run

All ran at base `ecfa1127`, on NativeStack2604. "Round 3" runs used the final tree, `418a3d9e`. "Round 2" runs used `608c5266`; round 3 changed no template, carrier, user-data or startup file those runs read.

```
# round 3, on 418a3d9
$ python3 scripts/validate.py
exit 0 (10,277 hashed files, 212 receipts)
$ python3 -m unittest tests.test_install_claude_profile tests.test_codex_worker_lane tests.test_wsl_new_distro_recipe
exit 0 (334 tests, 13 skipped)
$ python3 -m unittest tests.test_new_wsl_handbook tests.test_new_wsl_client_config tests.test_new_wsl_profile tests.test_host_baseline_probe
exit 0 (309 tests: the modules that read the recipe, the handbook receipt or the probe)
$ python3 -B tools/adoption/new_wsl_client_config.py --check
exit 0 (two warnings, both about slot mcp-inspector, from inputs this change does not touch)
$ python3 scripts/build_new_wsl_handbook.py --check
exit 0
$ python3 scripts/evidence_manifest.py --check
exit 0
$ python3 scripts/validate_convergence.py blueprints/convergence-practice/wsl-new-distro-image-20261001/experiment.json
exit 0
$ git diff --check
exit 0
# round 2, on 608c526
$ python3 -m unittest <the 19 other modules that pin the touched files>
exit 1 (2,237 tests, 1 failure: test_token_e2e_grader F27c; its `git clone --local` from this worktree into /tmp fails with "Invalid cross-device link" before any check; it passed in a clean clone at the previous base)
$ python3 -B tools/adoption/new_wsl_client_config.py --render --host nativestack2604 --out <scratch>
exit 0 (each rendered carrier equals the committed carrier and holds the sentence once)
$ cloud-init schema -c <P2's render>   # 26.1-0ubuntu3~26.04.1
exit 0 (Valid schema)
$ node test-envelope.mjs; node test-contract-mutations.mjs   # examples/claude-native/workflows
exit 0; exit 0 (254 and 74 passed)
$ python3 -m unittest   # the full suite
exit 1 (10,347 tests, 903 skipped, 11 failures and 18 errors, none in a module this change edits; all 29 are the environmental classes the first round found recurring in a clean clone of the previous base: a missing exchange_calendars module (23), `dirname: command not found` (3), a systemd scope state (1), the installed Claude Code's auth_storage_failure notification type (1) and F27c above (1))
```

### Decision record

`docs/decisions/2026-10-05-user-facing-local-time.md` records the context, the decision, the alternatives and the overturn conditions. The rejected alternatives are:
- a memory note, which the user rejected;
- per-host lines outside the managed block as the harness mechanism, which cannot be reproduced on a new host;
- the system zone alone, which cannot change how an agent words a time;
- local-time records, rejected for DST ambiguity and cross-host consistency.

Two overturn conditions are raised to the user rather than acted on: a native client setting, and a host whose zone is not the user's. The records half stays in force whatever display setting is adopted.

### Host evidence

Not applicable: no file under `evidence/hosts/` changes.

### Checklist

- [x] New/changed GitHub Actions are pinned to a full commit SHA with a version comment (no workflow changes).
- [x] New/changed workflows declare top-level `permissions: {}` (no workflow changes).
- [x] No secrets are printed, logged or committed.
- [x] No new paid hosting, subscription or billing surface.
- [x] Peer-owned untracked files and worktrees were preserved.

After landing, the next F9 re-render puts the rule in every host's managed block. A re-render replaces only the text between the managed markers (`tools/adoption/managed_block.py:106-113`). On NativeStack2604 the user's own dated rule, after the end markers, therefore stays in place, and the rule loads twice there until the user decides. Whether to remove the user's copy is the user's call. Also open for the user: whether "commits" covers git's author and committer dates, which carry the host's numeric offset.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
seathatflowsinourveins pushed a commit that referenced this pull request Oct 7, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 7, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 7, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 7, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 7, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 7, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 7, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 8, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 8, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

Record (docs/decisions/2026-10-05-omniroute-gateway-composition.md):
- RC1/RC2: the patched tree id b7c68690... is pinned; the drain moves out of the "runs on 20128" table into "Candidate, not deployed" with adoption status (canary pending), tarball sha256 and BUILD_SHA;
  RC11: the first-hop rollback (20128 returns to the cf6748d04 prefix, kept until the acceptance passes; 2604's kept 21128 install named by its tarball sha256)
- RC8/RC9: scope of the evidence (Responses and Chat Completions with a stubbed upstream, Anthropic format by code reading only), an outcome-based removal check, upstream prior art (#5491, #10608, #14342),
  what the patch does not close, what the drain changes for every client, the reviews paragraph and the not-yet-done list
Acceptance (RC3/RC8): checks/live-acceptance-protocol.md freezes inputs, commands, repetitions and expected outcomes before the switch; per-request attribution (X-Correlation-Id / response id), two reads (12 s and 60 s),
  a Chat Completions client, three effort probes with the baseline's four columns; same-day baselines on the unpatched build: raw set, race set (5 of 6 lost), native astra-max (3 of 3 lost), two-request (observed)
Validation (RC4/RC5): the unit test is extracted from the patch with git apply --include and its blob id checked against the patch's index line; counts and failing test names are enforced per stage;
  all stage logs, the 239-file list, runner summaries and the failing test's output are retained; controls: wrong tree, tampered patch, missing patch
Handler e2e (P3s): five scenarios incl. Chat Completions, per-scenario rows logged before asserting, the test file sha256 pinned, 4 of 5 must fail unpatched (by name), outcome-only mode for the removal check
Scripts (RC6/RC12/RC13): build-drain v2 (own tree, tree ids and clean status checked, every gate decides the exit status), install-drain v2 (pinned sha256, npm integrity, entry count, BUILD_SHA, shim hash, drain marker,
  checked copy, SHA256SUMS written), smoke v4 (free port, owned process group, loopback and API key required, group-selector control), each with controls and a real run
Receipt (RC7): checks/show-log-dropins-receipt.txt (value-free) for the OMNIROUTE_SHOW_LOG drop-ins on both units
RC10: superseded and failed attempts kept in superseded/ with an index (first-version results, validation v1-v3, smoke v1-v3, build v1, install v1, the timestamp-only repro scripts, acceptance attempt 1)
Rebased over ecfa112 (#703); the patch itself is unchanged (sha256 74c0f449...).

Co-Authored-By: Claude Sonnet 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