Skip to content

Rules: a landscape candidate is finalized by its vendor's clean install and the vendor's own check - #833

Merged
seathatflowsinourveins merged 10 commits into
mainfrom
cc/adoption-evaluation-rule-20261007
Oct 7, 2026
Merged

seathatflowsinourveins merged 10 commits into
mainfrom
cc/adoption-evaluation-rule-20261007

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

  • What this PR changes, in one or two sentences: adds a dated decision that a landscape candidate is finalized by its vendor's clean install and the vendor's own check in each client, with use read and published but no longer a condition of a row (it applies the 6 October upstream-evidence rule, replaces that rule's counter condition, and withdraws five exclusions of 7 October that were never applied), and an on-demand command center guide; harness defaults point to both and gain three anti-pattern rows; the project CLAUDE.md gains one pointer line.
  • Base commit: 003804f24fa5d998ba429dff3235b0d7dba9fa93
  • Lane: lane:foundation
  • Owned paths touched: docs/decisions/2026-10-07-clean-upstream-install-finalizes-a-candidate.md (new), docs/command-center.md (new), docs/harness-defaults.md, CLAUDE.md, one pointer paragraph in docs/decisions/2026-10-06-upstream-evidence-over-local-evaluation.md (the record this one amends), and the registry entries for those five in manifests/evidence.json. AGENTS.md and both user-instruction carriers are unchanged.

SOTA sources

  • Anthropic, Writing effective tools for agents, https://www.anthropic.com/engineering/writing-tools-for-agents (read 2026-10-07): beside accuracy, collect runtime, the number of tool calls, token consumption and tool errors; more tools do not always lead to better outcomes; overlapping tools confuse the agent; held-out tasks guard against overfitting.
  • Anthropic, Effective context engineering for AI agents, https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents (published 2025-09-29, read 2026-10-07): the smallest set of high-signal tokens.
  • Claude Code documentation, Monitoring, https://code.claude.com/docs/en/monitoring-usage (read 2026-10-07): the client's own OpenTelemetry metrics and events that the monitor reads.
  • This repository at the base commit: docs/decisions/2026-10-06-upstream-evidence-over-local-evaluation.md (the rule amended), docs/decisions/2026-10-06-cc-orchestration-composition.md (the tool composition the guide operates), docs/decisions/2026-10-04-new-wsl-token-layer-default.md (the Harbor result the 7 October check agrees with in direction).

Evidence-class table

Claim Evidence class Command / receipt
The startup text stays inside both fixed byte budgets (Claude 24105 of 24458, Codex 20101 of 20103) local_integration PortableTopRuleTests.startup_files at this head; python3 -m unittest tests.test_install_claude_profile
The anti-pattern log keeps its five-column dated shape local_integration python3 -m unittest tests.test_adoption_docs_consistency
Registry integrity local_integration python3 scripts/validate.py
The state table of 7 October in the decision source_review of private host records named by path and SHA256 in the decision, and both clients' own server listings; they are locators, not files added here the decision's "State on 2026-10-07" section
The upstream statements cited source_review the three pages above, read 2026-10-07

Local commands run

$ python3 scripts/validate.py
{"components": 69, "hashed_files": 10510, "profiles": 4, "receipts": 224, "status": "passed"}   (exit 0)
$ python3 -m unittest tests.test_adoption_docs_consistency tests.test_install_claude_profile tests.test_sota_convergence tests.test_ecosystem_manifest
Ran 385 tests in 56.963s  OK (skipped=2)   (exit 0)
$ python3 scripts/evidence_manifest.py --check
{"files": 10510, "status": "passed"}   (exit 0)

The full hosted suite was not run locally; hosted validate at this head is the full run.

Decision record

docs/decisions/2026-10-07-clean-upstream-install-finalizes-a-candidate.md: evidence, what it amends and what would overturn it are in the record. No test file is modified, so there is no contract change to declare.

Host evidence

Not applicable: nothing under evidence/hosts/ changes.

Checklist

  • New/changed GitHub Actions are pinned to a full commit SHA with a version comment: not applicable, no workflow or action changes.
  • New/changed workflows declare top-level permissions: {}: not applicable, no workflow changes.
  • No secrets are printed, logged or committed; no new required secret.
  • No new paid hosting, subscription or billing surface.
  • Peer-owned untracked files and worktrees were preserved.

🤖 Generated with Claude Code

@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 7, 2026
@seathatflowsinourveins seathatflowsinourveins changed the title Rules: an installed component stays for its effect on the native workflow; command center guide Rules: a landscape candidate is finalized by its vendor's clean install and native use; command center guide Oct 7, 2026
@seathatflowsinourveins seathatflowsinourveins changed the title Rules: a landscape candidate is finalized by its vendor's clean install and native use; command center guide Rules: a landscape candidate is finalized by its vendor's clean install and the vendor's own check Oct 7, 2026
seathatflowsinourveins and others added 9 commits October 7, 2026 17:24
…flow; command center guide

Adds a dated decision that amends the 6 October upstream-evidence rule with
retention: organic use read from the clients' own telemetry, a bounded
with-and-without check on fresh sessions, one component per job, and a verdict
(keep, interim, excluded) that stays on the monitor. Its first application
records the 7 October verdicts.

Adds an on-demand command center guide (the role, where each answer comes
from, direction and messages, landing, tools windows, published evidence,
taking over). Harness defaults point to both and gain two anti-pattern rows.
The project CLAUDE.md gains one pointer line; AGENTS.md is unchanged, so the
Codex startup text stays at 20101 of 20103 bytes and the Claude startup text
is 24095 of 24458.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…an untested boundary until its first check

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Separate the three evidence classes in the context; make SocratiCode a
selection ruling instead of a retention verdict; state that the cited promptfoo
configuration is an unexecuted skeleton; add due dates for the interim rows and
the monitor's cadence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reserved acts are listed once each (the command center's under a direct owner
instruction; the owner's alone); deciding from evidence applies only inside the
command center's authority; the messaging summary points to the complete
standing-delegation checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ll and native use

Rewrites the 7 October decision to the owner's direction of the same day and
renames its file. The five dated exclusions are withdrawn (never applied to the
host). A candidate is installed by the vendor's official installer and full
route; zero use is an install gap first; a component leaves only when the
landscape replaces it or its official install cannot work here; the monitor
informs and gates nothing; no status carries a future check date. Harness
defaults, the command center guide and the project pointer follow, and the
anti-pattern log gains the row for excluding a tool from a partial install.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… four findings of the read at ba740df

- Rule 3: a row is ready on the selection, the vendor's installation and the vendor's own check or one named operation in each client. Organic counters are read and published under rule 7 and are no longer a condition. This replaces the counter condition of the 6 October decision.
- Rule 2: an installer whose default writes an exclusive routing policy or a hook on every tool call is run in its documented selective form unless that tool is the single owner of its job; a route that moves a client's model traffic or sign-in through another process is taken only on the owner's word.
- State table: state words defined; a Claude Code record cited for Claude Code use; the five tools restated from each vendor's installer as read on 7 October (qmd, semble, jCodeMunch and Headroom final in a vendor-documented form; SocratiCode install owed at 1.16.0 with the vendor's skills and agent).
- Guide: the standing-delegation pointer sentence in the reviewer's wording.
- Harness defaults: the exclusion anti-pattern row no longer forbids what rule 5 allows; the pointer paragraph carries the new bar.
- The landscape manifest, its review, where the monitor publishes and who ran the first-request measurement are named.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he read at 683d885; add the plugin rule

- What this amends: the 6 October decision's rule 4 is named as amended (READY no longer waits on organic counters, which are still collected and published), and that record carries a pointer to the amendment.
- Claude Code use is counted from the eighteen with-stack sessions of the cited check, with the count time, the definition of a call and the record.
- State words: final, release owed, install owed. ai-memory and jCodeMunch read release owed with the release named; Serena's pinned commit is stated.
- The hook timing cites its capture (median 0.58 s over seven runs) and the registrations the installer wrote.
- Rule 2: on Claude Code a vendor's plugin is the route where one exists, with host settings on a user-scope entry of the same command line; SocratiCode takes its plugin on that basis and qmd keeps its documented manual entry. The client's precedence rule and the trial record are cited.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (P3 wording condition of the read at 2680c18)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The landing-turn rebase took main's manifests/evidence.json at each conflict, as docs/lanes.md's hot-file protocol directs, and this commit registers CLAUDE.md, docs/command-center.md, docs/harness-defaults.md and the two decision records again with their current hashes. scripts/evidence_manifest.py --check and scripts/validate.py pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the cc/adoption-evaluation-rule-20261007 branch from 2680c18 to 1b4ea7d Compare October 7, 2026 21:27
@seathatflowsinourveins
seathatflowsinourveins marked this pull request as ready for review October 7, 2026 21:29
…quest

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

Copy link
Copy Markdown
Collaborator Author

Claude session native-agent-stack-5f: landing at head f51075cc386acdbd382555780f4cafe94e4318ca. The command center (wsl-architecture-design) gave its ACK at this exact head; under the user's 2026-10-04 decision it owns merges that touch the hot registry. The read-only cross-family review (GPT-6.1 Sol max, the packaged Codex SDK worker) returned ACCEPT at this exact head, with no P1 item.

Observed main 28327acc67e85c480fbf3f9410c65f3d76b5cca4. coordination/merge_tree_landing_check.py (sha256 a11649fcf2e5844c…) exit 0:

main 28327acc67e85c480fbf3f9410c65f3d76b5cca4 head f51075cc386acdbd382555780f4cafe94e4318ca base 28327acc67e85c480fbf3f9410c65f3d76b5cca4 merged-tree 7ec1fc80adf8e58996aed499b8c8911e0a3b4e29 merge-tree-exit 0
ok   1: clean three-way merge
ok   2: merged-vs-main paths 6, outside PR-owned 0 []
ok   3: main drift 0 paths, overlap with PR-owned inputs (registry excluded) []
ok   4: registry foreign rows equal True, order preserved True, PR-owned rows 5, unowned top-level keys differing []
ok   5: merged files[] sorted by path with no duplicates: True (10556 rows)
LANDABLE
condition 5: merged files[] sorted and unique (tree 7ec1fc80adf8e58996aed499b8c8911e0a3b4e29)

Required checks at this head: 7 pass . Unresolved review threads: 0.

@seathatflowsinourveins
seathatflowsinourveins merged commit 36654a8 into main Oct 7, 2026
32 of 46 checks passed
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Claude session native-agent-stack-5f: post-merge observation. Landed as 36654a8174b5cad1380bd13ed1fffc0f135aac2c (parent 28327acc67e85c480fbf3f9410c65f3d76b5cca4), tree 7ec1fc80adf8e58996aed499b8c8911e0a3b4e29. The landed tree equals the checked merged tree and the parent is the observed main.

@seathatflowsinourveins
seathatflowsinourveins deleted the cc/adoption-evaluation-rule-20261007 branch October 7, 2026 23:47
seathatflowsinourveins added a commit that referenced this pull request Oct 8, 2026
#833 (36654a8) made READY the vendor's installation plus the vendor's
own check or one named operation in each client, with organic counters
read and published but no longer a condition, and settled code search as
two jobs (SocratiCode for indexed projects, semble for any other
repository).

- jCodeMunch: zero use is an install gap first (rule 4); its state is
  release owed (1.108.332), not an exclusion candidate.
- Readiness dispositions: drawn under the earlier bar; the readiness
  owner re-reads them under rule 3.
- Code search: settled by #833. On the Mac, semble 0.6.2 is final by
  the vendor's route, with one named search passing in each client
  (host receipt semble-mac-20261007/receipt.json); SocratiCode stays.
- Readiness verdict: selections complete; NativeStack2604's
  fix-and-smoke group still gates READY.

validate.py passed; tests.test_adoption_docs_consistency OK (39 run,
1 skipped).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WhN8fzZs47tp6KunqRQ9gs
seathatflowsinourveins added a commit that referenced this pull request Oct 8, 2026
The completeness critic of the finalization review found four rows that
the unit results contradict:
- Claude Code: the Mac runs 2.1.293 since its native self-update at
  18:18Z under autoUpdatesChannel latest, the recorded policy (decisions
  2026-09-23 item 2, 2026-09-28 M51); the recorded pin moves after the
  2026-10-08T17:18Z gate.
- SocratiCode: not optional; it holds code search over indexed projects
  under #833, beside semble.
- Graphiti: the library lane installs hash-pinned against constraints
  from graphiti 86f1c941's uv.lock (openai 2.32.0, httpx 0.28.1); the
  MCP lane is deferred.
- context-mode: the marketplace ref is a pin request; the installed
  plugin commit at v1.0.169 is not corroborated, so the Mac section no
  longer claims native proof for that row.

validate.py passed; tests.test_adoption_docs_consistency OK.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WhN8fzZs47tp6KunqRQ9gs
seathatflowsinourveins added a commit that referenced this pull request Oct 8, 2026
…e (review thread P2)

The ceilings were measured scope + 5% from a first draft (19,471 and 15,778 bytes). The landing head measures 19,885 (Claude: block 11,411 + AGENTS.md 7,499 + CLAUDE.md 975) and 15,983 (Codex: block 8,484 + AGENTS.md 7,499) with the test's own PortableTopRuleTests.startup_files(), after the restored trading sentence and #833's CLAUDE.md pointer line. The ceilings become 20,880 and 16,783 (+5%, rounded up), and the decision record's table, totals and contract row 5 follow, with a note on why the figures moved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seathatflowsinourveins added a commit that referenced this pull request Oct 8, 2026
A cross-family pre-review (GPT-6.1 Sol at max through OmniRoute, codex
exec review --base origin/main at head 3431fd1, run
prreview.20261008T004955Z.190120) found two defects; the coordinator
verified both against source:

- The ai-memory swap stopped the agent before `ai-memory backup`, but
  backup is a thin HTTP client that needs the running server
  (adoption/lifecycle.md L282-283). The backup now runs against the
  running 2.5.2 server and is verified by a restore into an empty
  fixture before the agent stops.
- The readiness groups covered 50 of the 51 slots: semantic-rag/
  code-search (INTERIM in ns2604-requalification-20261005/slots.json)
  was in none. It joins the fix-and-smoke group: semble is final there
  under #833, SocratiCode is install owed (1.16.0 with the vendor's
  plugin and its codebase_health check), and the Mac's semble evidence
  does not adjudicate the workstation's slot.

validate.py passed; tests.test_adoption_docs_consistency OK.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WhN8fzZs47tp6KunqRQ9gs
seathatflowsinourveins added a commit that referenced this pull request Oct 8, 2026
…heck (#838)

### Scope

The required Linux test job runs serially and blocks each landing for roughly half an hour. This change runs native unittest discovery as eight module shards and keeps one final required check named `validate`, which fails on any unsuccessful dependency or incomplete module coverage.

- Base commit: `b16cb8cf7cb8e37bf0d0edb9924502beb3e6a276`.
- Lane: `lane:shared`; the command center requests trading acknowledgement for the one promotion workflow-contract method.
- Owned paths: validate workflow, shard helper/weights, its fixtures, declared workflow-contract tests, the decision/receipt and the final registry commit.
- Landing path: exact-head co-op cross-family read after the draft's hosted timing run; command-center ACK; 5f lands after #833/#836 and before #820/#829/#776, per GO-RELAUNCH230713Z and RULING203309Z. The draft stays draft until that read. Critical-path cap allowance confirmed by item191739Z; all25kind3rows accepted by name in203309Z subject to their stronger-assertion condition.
- #706 relation: this final summary supersedes G-6 (serial suite counts); G-1 (PR-metadata workflow work) stays in #706 for its rank38 turn.

## SOTA sources

- [GitHub matrix strategies and failure handling](https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations), read 2026-10-07.
- [GitHub needs result](https://docs.github.com/en/actions/reference/workflows-and-actions/contexts#needs-context) and [always](https://docs.github.com/en/actions/reference/workflows-and-actions/expressions#always), read 2026-10-07.
- [Skipped jobs](https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/control-jobs-with-conditions) report success even when required; [required status checks](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging) accept skipped statuses. This final job always runs and explicitly rejects skipped/cancelled/failed dependencies.
- [CPython v3.12.3 native discovery](https://github.com/python/cpython/blob/v3.12.3/Lib/unittest/loader.py#L109), [load_tests protocol](https://docs.python.org/3.12/library/unittest.html#load-tests-protocol) and [TextTestRunner](https://docs.python.org/3.12/library/unittest.html#unittest.TextTestRunner). The helper supplies assignment and receipt glue; unittest runs the tests.
- `native-agent-stack@b16cb8c:.github/workflows/validate.yml:147-250`: the unchanged provisioners and diagnostics.
- Same pin, `docs/decisions/2026-10-03-suite-parallelism-trial-outcome.md:24-27`: the superseded Linux serial instruction; failed pool-trial evidence and macOS instruction preserved.
- Existing pinned download/upload artifact actions are reused; no requirement file or other workflow job changes.

### Evidence-class table

| Claim | Evidence class | Command / receipt |
| --- | --- | --- |
| Historical timing weights | source_review of retained native output | run37653671981/job112905135751, log SHA b1d2d43e; 17 failures retained |
| Native discovery and assignment | local_integration | Current tree discovery-only sample:272owners/11607cases, no bodies; predates final fixture set |
| Focused contracts and fixtures | local_integration; synthetic fixtures remain synthetic | 368tests/95.067s with one retained serial-binding failure; its authorized class delta3tests/0.874s passes; final new-module13tests/3.383s passes |
| Syntax/integrity | local_integration | actionlint0; offlinezizmor0/findings[]; py_compile0; diff--check0; validate.py0 |
| Hosted timing and exact module/count union | pending | The draft's actual run supplies this; historical estimates are not acceptance |

Expected first-run limitation: this branch is still based on b16cb8c, while main28327acc carries #837's new frozen-lock exceptions. The first osv-scanner check is expected red for that base; it is refreshed only at the command-center landing cue's single rebase. No exception or requirement change is added here, and a local check never substitutes for the landing head's hosted result.

### Local commands run

```text
nice -n 19 ionice -c3 actionlint -color .github/workflows/validate.yml
exit0

nice -n 19 ionice -c3 zizmor --offline --no-config --no-ignores --format json .github/workflows/validate.yml
exit0, []

python3 -I -B -X pycache_prefix=<ignored-owned-path> -m py_compile <helper and five touched test modules>
exit0

nice -n 19 ionice -c3 <activated Python3.12.3> -I -B -X faulthandler <stdlib unittest bootstrap> -q --durations 50
selected: test_validate_shards, test_workflow_hardening, test_shell_parser_ci,
test_landscape_sweep_skills, test_workflow_security_coverage, test_promotion_gate,
test_adoption_docs_consistency
exit1, 368ran/95.067s/onefailure/fiveskips (retained)
Only failure: the promotion class's serial-command binding.
Authorized delta: that class exit0, 3ran/0.874s; other36method ASTs and surrounding bytes preserved.
New fixture deltas:12ran/3.407s and13ran/3.383s, both exit0.
No full-suite phase or hidden baseline waiver.

nice -n 19 ionice -c3 <activated Python3.12.3> -I -B scripts/validate.py
exit0, components69/hashed_files10559/profiles4/receipts226.
git diff --check
exit0
```

The local environment has Python3.12.3/PyYAML6.0.3 and real Node24.21.0/npm11.19.0 bins before generic PATH. It is a focused environment, not full hosted-image parity. Every hosted cell keeps the current installer and promotion/parser/NodeYAML provisioners; non-test checks execute once in cell zero.

### Contract changes

Each listed existing test deliberately replaces the serial whole-suite binding with complete module-shard coverage under `docs/decisions/2026-10-07-validate-module-shards.md` (kind3). Provisioning, history, timeout/faulthandler and native failure controls remain. The one promotion method additionally runs the tiny native aggregate fixture; neighboring and numeric assertions remain byte-identical.

The trading lane's conditional acknowledgement, ledger row `report-native-agent-stack-5f-20261007T200005-shardack`, binds that promotion method to three conditions:

1. Every shard runs the promotion provisioner with `--require-hashes` on `blueprints/us-equities/data/requirements.lock` and exports `REQUIRE_PROMOTION_GATE_VENV=1` before testing, including the shard assigned this module.
2. Module coverage comes from live native discovery, with each module's executed suite exactly once. Weights are scheduling estimates, not a separate test inventory.
3. Final `validate` runs under `if: always()` and passes only on successful shards; cancellation, skipping and timeout fail the gate. The trading lane checks these again on this PR before merge.

| Test ID | Kind | Record |
| --- | --- | --- |
| `tests.test_workflow_hardening.WholeSuiteJobsCheckOutFullHistory.test_whole_suite_jobs_set_fetch_depth_zero` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_workflow_hardening.WholeSuiteHeadroomAndDiagnostics.test_every_whole_suite_job_names_its_suite_step` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_workflow_hardening.WholeSuiteHeadroomAndDiagnostics.test_each_suite_lists_its_50_slowest_tests_with_faulthandler_on` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_workflow_hardening.WholeSuiteHeadroomAndDiagnostics.test_linux_suites_abort_five_minutes_before_the_job_limit` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_workflow_hardening.WholeSuiteHeadroomAndDiagnostics.test_validate_uploads_its_verbose_log_even_when_the_suite_fails` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_workflow_hardening.ValidateSuiteStepTracesAHang.test_a_hang_prints_the_hung_test_traceback_and_fails_the_step` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_workflow_hardening.ValidateSuiteStepTracesAHang.test_control_without_faulthandler_the_hang_leaves_no_traceback` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.ProvisioningStepTests.test_provisioning_step_exists_in_the_validate_job` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.ProvisioningStepTests.test_provisioning_step_precedes_the_unittest_step` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.ProvisioningStepTests.test_step_command_is_derived_from_the_pin_file` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.ProvisioningStepTests.test_step_exports_the_directory_through_github_env` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.ProvisioningStepTests.test_step_cannot_be_skipped_or_ignored` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.ProvisioningStepTests.test_the_provisioning_job_is_the_job_that_runs_the_suite` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.ProvisioningStepTests.test_every_whole_suite_job_provisions_the_parser_or_is_a_recorded_gap` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.ProvisioningControls.test_each_mutant_is_reported_in_its_category` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.ProvisioningControls.test_a_scratch_copy_of_the_workflow_without_the_step_fails_the_structure_tests` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.RealRatchetControls.test_the_real_workflows_pass` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.RealRatchetControls.test_a_new_whole_suite_job_in_a_real_workflow_is_reported` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.RealRatchetControls.test_provisioning_a_recorded_gap_job_is_cleared_by_deleting_its_entry` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_shell_parser_ci.RealRatchetControls.test_a_step_that_only_names_the_pin_file_is_judged_by_the_structure_checks` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_landscape_sweep_skills.SkillsYamlProvisioningTests.test_the_validate_job_provisions_the_yaml_pin_before_the_suite` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_landscape_sweep_skills.SkillsYamlProvisioningTests.test_every_whole_suite_job_provisions_the_yaml_pin_or_is_a_recorded_gap` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_landscape_sweep_skills.SkillsYamlProvisioningControls.test_each_mutant_is_reported_in_its_category` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_landscape_sweep_skills.SkillsYamlProvisioningControls.test_the_ratchet_reports_a_new_whole_suite_job_and_a_gap_that_now_provisions` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |
| `tests.test_promotion_gate.WorkflowProvisioningContract.test_unittest_step_runs_the_full_suite` | 3 | docs/decisions/2026-10-07-validate-module-shards.md |

### Failed attempts and limits

The failed unittest-parallel trial remains unchanged. The historical weighting run failed17 tests. Worker fixture-authoring attempts (one missing-helper error; then one failure/one error among12cases) remain disclosed separately; later root runs do not replace them. An early validate returned1 for pending registry hashes, and an incorrect register_file CLI probe returned2 before the documented Python API was used.

The source critic's two fixture gaps (global zero discovery and a package hook invoking nested discovery) are covered by the passing native delta fixtures. Shared fixture origins trigger an explicit serial fallback; that preserves native semantics and must be reported as a performance constraint. Actual hosted latency, skips and complete module coverage remain pending.

### Decision record

`docs/decisions/2026-10-07-validate-module-shards.md`; scoped observations in `evidence/artifacts/validate-module-shards-20261007/preparation.json`. The final commit changes only `manifests/evidence.json`.

### Host evidence

No host receipt, platform-status change, install or setting change.

### Checklist

- [x] Changed actions pinned to full SHAs with version comments.
- [x] Top-level permissions empty; each job grants contents:read only.
- [x] No credential value or new secret.
- [x] No new billing surface.
- [x] Peer worktrees preserved.
- [ ] Trading acknowledgement before merge (command center requests it).
- [ ] Hosted timing/coverage receipt and exact-head cross-family read.
seathatflowsinourveins added a commit that referenced this pull request Oct 8, 2026
…story rows when a client closes right after the terminal event (canary passed on 20128; evidence) (#757)

### Scope

- What this PR changes, in one or two sentences: records the cause of the dropped `call_logs` and `usage_history` rows of clients that close the connection right after the terminal event (found on 2604 by the co-op, reproduced on NativeStack's 20128), adds the drain patch that fixes it (a change in `open-sse/utils/streamHandler.ts` reusing upstream's own `drainCompletedToolHandoff`, plus our six-test file) as a candidate that **passed its canary on NativeStack's 20128 on 2026-10-08 and runs there** (`checks/live-acceptance-canary-*.txt`), with its validation, build, install and boot-smoke evidence, and a live-acceptance protocol (version 2) with the scripts, guards and offline controls it needs; it also adds the dated 09-30 note on the serve supervisor dropping the child's console output and the `OMNIROUTE_SHOW_LOG=1` drop-ins on both NativeStack units (applied 2026-10-05 20:12Z).
- Head `c9e8c2917027bbee67c6a1922915bfe642ee321e` (content commit `67ba4eb0215221a66365225765005ec456d94169`: the decision record and the evidence README brought to the position after the canary, i.e. a dated current-state block, the running build ids, the adoption status, the PR 15167 head remark, the dependency-graph remark and alternative (C), for review thread PRRT_kwDOUg_LrM6pM_AO; registry commit last; no script, control, census, patch or recorded-output byte changes) supersedes `205c1cd61` (the canary's evidence push, content commit `089b2082c`: the recorded results of the canary only, i.e. the 17 files `checks/live-acceptance-canary-*.txt`, their rows in `checks/logs/MANIFEST.txt`, one README row that names them and one dated update section of the record), `def9e67a7` (the canary's frozen head, accepted by 5f's bounded delta check r20 with canary_ok=true), `9db475cf4` (bounded delta check r19: 5f's bounded delta check and the command center's RULING-757-R20), `6b5e929e` (final delta check r18: 5f's FINAL delta check and the command center's RULING-757-R19), `e5c8a7fd` (delta check r17), `51e446ddf` (delta check r16), `1004174e3` (read r15: 5f's FULL read), `115b885ba` (read r14), `ec4b489d9` (read r13), `4624137290` (read in FULL scope by r12), `41a671681` (delta read r11), `6b734c6bf` (delta read r10), `8f9d89662`, `04e505a5d` and `bcb09e8b8` before them. The patch is unchanged (sha256 `74c0f449b5f0d6a6f435d875c876aed335c341601c7f23a22a4e0765e1ca2161`, patched tree `b7c6869001ce8bdd23e2e2352f48ce3058bc13d2`); no frozen script byte changed (raw script 2.2, native script 2.1, the identity read-back, the wrapper and the raw baseline are byte-identical to every earlier head). Since `9db475cf4` (the bounded delta check r19) the census also refuses an IDENTITY line that carries any activity field (ONE condition: `checks/census-delta-after-r19-read.txt`, 1 line changed) and its controls gained G20a-G20d; since `6b5e929e` (the final delta check r18) the census reconciles the IDENTITY line's pending_total with both INFO readings (at canary scope the counter must be on the line) and the canary gate needs exactly one INFO line (`checks/census-delta-after-r18-read.txt`, 30 changed lines), its controls gained G19a-G19n and the controls' fixture writer writes the guard's quiet INFO line and its IDENTITY line by default; the runner exit-status control, the guard, the census's property test, the frozen scripts and the patch are byte for byte as that check had them; the record, the protocol, the README, these texts and the retained receipts changed too; new are `superseded/window-census-r29.py.txt` and `superseded/window-census-r30.py.txt` (the censuses as those two checks had them), `checks/census-delta-after-r18-read.txt` and `checks/census-delta-after-r19-read.txt`. Earlier deltas (r17, r16, r15, r14 and before) are in the record and in the `checks/census-delta-after-r12-read.txt` to `-r17-read.txt` files (each now holds the complete census diff to this head); the other retained receipts are regenerated from the census or rerun, with new dates. Base: `origin/main` `ffd4b8508ae2494bf5bf7ed9df1932537dbb7ecf` at the push (it moved since the previous push; the branch was rebased over it, 24 commits, no conflict; the previous base was `36654a8174b5`, after #837, the osv fix for the frozen macOS lockfile, and #833).
- **Status:** the canary PASSED on 2026-10-08 (window 2, the command center's RULING-757-CANARY-W2, at the frozen head `def9e67a7`, which 5f's bounded delta check r20 accepted with canary_ok=true; window 1 was stood down for the owner's client update before any switch): the drain build `2a41147b7` has run as NativeStack's 20128 since 2026-10-07T23:41:47Z (that unit only; 20129 untouched). The frozen acceptance protocol (version 2) gave raw set PASS 20, race set PASS 6, native single-request turns PASS 4 and native tool-call turns PASS 8 (the wrapper exited 0), the window census `CENSUS-RESULT PASS exit=0 problems=0 scope=canary` (43 inbound lines, 43 call rows, 43 usage rows, 0 foreign, no orphan) and two clean journal scans (`journal_failed_to_save_call_log=0` at the end of the acceptance and 30 minutes later). The recorded results are `checks/live-acceptance-canary-*.txt` (evidence class `local_integration`: our frozen clients and the live gateway on the real host, a real switch and real provider requests; not an upstream test); the census's untested boundary stands as stated in `checks/live-acceptance-canary-census.txt`. This is the first real live PASS of the census; whether it meets the command center's condition 3 of the lift is the command center's to say. The 2604 install and the landing of this PR are the command center's to cue. All six review threads of chatgpt-codex-connector are resolved (2026-10-08T02:03Z): each carries a reply that verifies its fix at `c9e8c2917`, and thread PRRT_kwDOUg_LrM6pM_AO also led to updating the decision record and the README, which still described the drain patch as an undeployed candidate after the canary.

### What the earlier reads found (`bcb09e8b8`, `04e505a5d`, `8f9d89662`), and what this head does about each

The two reads of `bcb09e8b8` (5f's full-scope read: 1 P1, 4 P2, 3 P3; the command center's round-3 ruling: 1 P1, 5 P2, 9 P3), 5f's full-scope read of `04e505a5d` (1 P1, 8 P2, 5 P3) and his full-scope read of `8f9d89662` (0 P1, 6 P2, 8 P3) were each answered with a fix or a disposition for every item, every script defect reproduced by an offline control next to the right answer of the current version (`checks/acceptance-controls*.txt`); the scripts that measure changed, so the same-day baselines of the unpatched build were rerun, and no frozen byte changed after `8f9d89662`. The tables of those rounds are in the decision record, the README of the evidence folder and `checks/census-adversarial-reviews.txt`. The build script's state: build script v5 (the clean-tree gate checks the exit status of `git status` and enforces `git diff --quiet`; its real offline run is `checks/build-v5-results.txt`).

### What the delta reads r10 and r11 found (`6b734c6bf`: 0 P1, 5 P2, 3 P3; `41a671681`: 0 P1, 9 P2, 4 P3), and what this head does about each

Both reads were delta reads by 5f (GPT-6 Astra max, 2026-10-06), canary_ok false; every item was fixed or answered in the following rounds (the pad of the usage rows, the journal as the second record of the inbound requests, the calendar-valid stamps, the trailing usage pad, the substitution residual and the width of the residual). The full tables of both reads are in the record (`checks/census-adversarial-reviews.txt`) and the README; they were condensed here in round 29 to keep this description under 65,000 characters. No frozen byte changed (git blobs `f3712b633`, `71215df2f`, `afcf63f29`, `edefc1db6`); the controls that those reads asked for fail on the censuses that were read (`checks/census-negative-controls.txt`).

### What the full-scope read r12 of `4624137290` found (5f, GPT-6 Astra max on a fresh thread, launched 2026-10-06 22:07Z, findings 22:50Z: 2 P1, 5 P2, 9 P3, canary_ok false), and what this head does about each

r10 and r11 were delta reads (what had changed since the earlier heads), not full-scope reads; the earlier texts called them full-scope (r12-P3-2), and r12 is the first full-scope read since r9. The command center's ruling on the residual (2026-10-06 22:04Z): the canary's acceptance may rest on the stated residual only if (1) the full-scope read has no P0 or P1 and every P2 is fixed or explicitly accepted by the command center, (2) the receipt states the residual verbatim as an untested boundary together with its evidence classes, and (3) acceptance needs one real live PASS (condition 3: the controls show that a PASS is possible, not that one happened; if every live arm is INCONCLUSIVE, the canary is not accepted: report it and stop); the lift condition is therefore a clean FULL-scope read of this head (r13). No frozen script byte changed (git blobs `f3712b633`, `71215df2f`, `afcf63f29`, `edefc1db6`) and the patch is unchanged. The scripts and controls for eight of the findings (P2-2 to P2-5, P3-1, P3-7, P3-8, P3-9) were built in isolated worktrees (one builder for the native runners, the smoke and the real-run gate, one for the guard and the show-log receipt) and read by the coordinator before they were integrated; each control fails on the text that r12 read.

| Item | Where it is fixed or dispositioned |
| --- | --- |
| **P1-1** a substituted usage row still PASSed with every own and foreign arrival line present (the reviewer's world; control J12c itself expected the false PASS): the arrival line is logged before the policy work, the credential refresh and the duration clock (`src/sse/handlers/chat.ts:637` against `open-sse/handlers/chatCore.ts:571` at OmniRoute `c1e30b76`), so no lead is a physical bound | the independent record is anchored at the END of the lifecycle: the stream controller's end line (`[STREAM]`, printed by `logStream` in `streamHandler.ts`, independent of whether the rows persist; one primary line per controller, grouped with its post-abort echo), whose time is where the rows are written, with the disconnect grace (10 s by default, `runtimeTimeouts.ts`) as the bounded tail of a drain; every own call row needs a stream-end line of its provider and model whose implied start is within 0.25 s of its estimated start, and a matched usage row must share its call row's clock start (START-AGREEMENT, 0.25 s); the arrival lines are still counted, timed by the gateway's own `time` field; J12c is INCONCLUSIVE; a non-streaming foreign request is covered by neither record, and neither is a Responses-over-WebSocket turn (the canary tarball ships `dist/server-ws.mjs`; its rows are stamped at the turn's start and it writes neither journal line): a window that a WebSocket call row reaches is INCONCLUSIVE (fourth review, J30a-J30l), and the receipt says so; J22a-J22u, J23a-J23d |
| **P1-2** the serving child can restart under the persistent supervisor (`processSupervisor.mjs`) while MainPID and its start time stay equal, so the census could read two incarnations as one | the census establishes the serving process itself: the listener on the port, its start time and cgroup, the process that wrote the request lines (journal `_PID`, `_SYSTEMD_CGROUP`), the supervisor's restart strings and the child's startup banners in the journal, and the holders of the store file; a listener younger than the window, a second writer or any restart evidence is INCONCLUSIVE; the journald limits (rate limit) are read and the peak rate must stay below a tenth of the burst; J24a-J24n, J25a-J25h |
| P2-1 the "3 s per link" bound is not a bound on physical arrivals (a 5.5 s displacement reproduced) | the width is stated in terms of estimated starts and the arrival's delay as unbounded, in the census, its receipt, the protocol and the record; the parameters are measured (`scripts/census-calibration.py.txt`, `checks/census-calibration-measurements.txt`); J27a-J27c |
| P2-2 the native test runners record the test process's exit status and do not enforce it | `drain-prototype.sh.txt` (6), `handler-e2e.sh.txt` (3) and `handler-e2e-session-tag.sh.txt` (2) pass each stage's expected status and refuse a run whose counters match but whose status differs (`EXIT STATUS VIOLATED`; drain-prototype: 1 for A, N, N2 and A2, which expect failures, 0 for P and B2; handler-e2e 1 and 0; session-tag 0, 1 and 0); `checks/runner-exit-status-controls.txt` fails on `4624137290` and passes here; the success lines are unchanged |
| P2-3 an unavailable journal could be reported as zero credential-shaped matches | `show-log-receipt.py.txt` prints `unavailable` with a sanitized diagnostic and exits 2 for a failed or empty `systemctl` or `journalctl` observation; `checks/show-log-receipt-controls.txt` runs the earlier and the repaired script in a private network namespace (28 runs) |
| P2-4 the guard could declare an unexecutable rollback or target prefix intact | `check_prefix()` requires `bin/omniroute` and `shim/lsof` to be regular files, symlinks resolved, readable and executable by the guard's user; the guard's sha256 changes, and the census pins the repaired guard for the canary and accepts the earlier one for a trial (J29a, J29b); K12-K19 and E7 in `checks/guard5-controls.txt`, the whole G series (G9-G13 included) in `checks/guard5-existing-controls-poller.txt` |
| P2-5 a failed first process-group observation left the smoke child running | `smoke.sh.txt` (6) arms an EXIT trap at the launch and signals only a group observed as the child's own; `checks/smoke-initial-ps-control.txt` runs the whole script with a failing, a wrong and no first `ps` and with TERM, INT and HUP while it polls |
| P3-1 E6 outside the private network namespace | E6 runs in it |
| P3-2 r10 and r11 recorded as full-scope reads | labelled delta reads in this description, the record, the protocol and the README; the lift condition is a full-scope read |
| P3-3 the control inventory called R10a-b and N10a current-version-only | the README states which controls run the earlier version next to the current one (R10a-d, N10a-b, G13-G15, W7-W12) |
| P3-4 the first build receipt's header pointed at the current script and a path that no longer exists | the header names the retained historical paths |
| P3-5 the journal command's provenance disappeared on failed observations | the command, binary, version and stderr are printed on failure too (J26a-J26c) |
| P3-6 "282 clean worlds" in the property test's account | described as expected-PASS worlds, which include the documented residual worlds, so 0 disagreements means agreement with those authored oracles |
| P3-7 the installer's numbered description named a live prefix | names the committed, hash-checked shim (comment-only: the executable lines are unchanged) |
| P3-8 a test-only variable (`ACCEPT_TEST_N_TWO_PRE`) changes the real precontrol's request count in the frozen wrapper | the wrapper stays frozen; the external real-run gate, run on the same command line, refuses those variables and a wrapper of another sha256 (`checks/real-run-gate-control.txt`) |
| P3-9 the log receipt's logging-enabled boolean used substring matching | the exact variable name and value of the parsed `Environment` assignments |

Before the push this head had a third independent adversarial review of the census (a read-only Opus tester with the controls' builders: 261 targeted runs in nine families and 2,300 random mutations: 1 P1, 4 P2, 4 P3: a restart of the serving child invisible to the census, a residual line that said no control observes its worlds, reserved words recognised only after a prefix, two crashes without a receipt, no arrival lead at the range's end, a canary gate that did not pin the wrapper's verdict mode and reads, arrival lines timed by journald's receive stamp), fixed with controls J28a-J28q and E26. A fourth independent adversarial review of the census (read-only Opus tester: 569 receipts in twelve families, 400 mutations of the journal entries, three real reads of the store and the journal and a read of the canary tarball's code; 0 P1, 2 P2, 7 P3) found that a Responses-over-WebSocket turn (the tarball ships dist/server-ws.mjs) writes neither an arrival line nor a stream-end line and is stamped at its start in both tables, so neither journal record covers it (a window that such a call row reaches is now INCONCLUSIVE, J30a-J30l, and the residual detail names it; a turn whose call row was lost as well stays a case of items (1) and (3)), two stale statements about the arrival range and a bound that r12 had refuted, and seven smaller points (console-only matching of the restart patterns and the stream marker, systemd.time spans, a partial-read warning of journalctl, the disconnect grace read as the gateway reads it, a missing _PID, the arrival line's clock, docstrings), fixed with J31a-J35c and X4; the reviewer's own cases were rerun against the fixed census. All recorded in `checks/census-adversarial-reviews.txt`.

### What the read r13 of `ec4b489d9` found (the command center's GPT read of 2026-10-07: 1 P1, 2 P2, 1 P3, canary_ok false; 5f's FULL read r13, GPT-6 Astra max on a fresh thread: 2 P1, 5 P2, 5 P3, canary_ok false), and what this head does about each

The command center's four findings are 5f's P1-1, P2-1, P2-2 and P3-1, found independently by both reads; 5f's record adds eight more (P1-2, P2-3, P2-4, P2-5, P3-2 to P3-5). Both reads put the prior partials (r9-P2-1, r11-P2-1 through J22e; r12-P3-2 through the three labels; r12-P1-2 subject to the fixture root) into the same fixes.

| Item | Where it is fixed or dispositioned |
| --- | --- |
| **P1-1** (both reads) control J22e expected PASS for a NON-STREAMING foreign request whose usage row stands in for a missing own one (its call row never written, no stream-end line); its arrival line precedes its duration clock by more than the counted range, and no lead is a physical bound (the arrival is logged before the policy work, the credential refresh and the duration clock) | for the canary every inbound POST line since the serving process's start needs its own call row of its path, whatever its lead (a maximum matching: `incarnation_unmatched()`, checked against a brute force over all assignments and scipy's `maximum_bipartite_matching`, X6; J36a-J37g, J22e INCONCLUSIVE, J22f keeps the narrowest residual); the journal must reach the serving process's start (each listener pid needs a startup banner from [its start - 1 s, its start + 120 s] and no entry dated more than 1 s before its start, which is what a forward wall-clock step looks like; its own startup banners and the supervisor's restart lines just before its start are not restart evidence: J38a-J38i, J44a-J45b); item (1) of the ruling stays: an arrival line that was not logged or not kept (J36f), and item (2): a spare call row of its path (J37e) |
| **P1-2** (5f) a successful HTTP stream persists its rows at the transform's flush and prints its stream-end line when the downstream reader has seen the terminal event, which an unread downstream queue delays without bound, so the finite completion range can miss a substitute owner | the stream-end record is restated as a SECOND record, not a bound (docstring, receipt lines, protocol, record: the claims that its time is where the rows are written, within about 0.2 s, were measurements); a late-ending foreign stream is covered by the arrival matching over the incarnation (J40a-J40f, property fault `late_end_substitution`); 5f's two node:test reproductions are rerun on the scratch tree of the patched composition (5.76 s late: `checks/late-end-native-reproduction.txt`, `scripts/late-end-reviewer-tests/`) |
| **P2-1** (both) `CENSUS_PROC_ROOT` replaces the process evidence and `scope=canary` was still possible | `host_fixture_reasons()`: a run with `CENSUS_PROC_ROOT` set, or with a `journalctl`, `ss`, `systemctl` or `systemd-analyze` that does not resolve to `/usr/bin`, `/usr/sbin`, `/bin` or `/sbin`, says `scope=canary-fixture` (or `trial-fixture`) and the protocol accepts only `scope=canary` (J39a-J39d, X7); the same fabricated world on the host itself cannot PASS (J39c) |
| **P2-2** (both) the manual journal scan (`journalctl ... \| grep -c`) prints 0 when journalctl fails or reads nothing | `scripts/journal-save-failures.sh.txt`: journalctl's output goes to a file, its exit status, its stderr (the census's alarm words), an empty read and the start timestamp are checked before anything is counted; `JOURNAL-UNAVAILABLE`, exit 2, prohibits acceptance and queueing; D0 reproduces the old pipeline, C1-C13b the script (17 cases, C13 and C13b fail on the scan as it was: `checks/journal-save-failures-controls.txt`); real read-only runs on the host: `checks/journal-save-failures-live-read.txt` |
| **P2-3** (5f) the real-run gate accepted a failed environment listing (a stand-in that exited 42 printed `clean`) | the listing goes to a file and the gate refuses when the command fails or lists nothing (G9a-G9d; G9a-G9c fail on the gate as it was: `checks/real-run-gate-control.txt`, three runs) |
| **P2-4** (5f) the show-log receipt accepted a partial journal read (journalctl exit 0, `some journal files were not opened` on stderr) | printed as `unavailable` with the sanitized stderr, exit 2 (d3 fails on the earlier text, d4 keeps a benign stderr a genuine zero: `checks/show-log-receipt-controls.txt`) |
| **P2-5** (5f) the decision record and the README still described the narrower residual and the old counted ranges | restated in terms of the estimated start, the counted ranges (4 s before the window to 4 s after its end), the unbounded arrival lead, the late stream-end line, the incarnation and the WebSocket qualification |
| **P3-1** (both) delta reads called full-scope reads in `census-controls.py:10`, `guard5-controls.py:4` and `superseded/README.md:33` | corrected; the lift condition stays a FULL-scope read |
| P3-2 (5f) the protocol called G13-G16 and W7-W12 current-only; the record said three drain-prototype controls | G13-G15 and W7-W12 are paired with the earlier version, G16 is current-only; the record names four controls |
| P3-3 (5f) a journal timeout discarded the stderr captured before it | kept and bounded (X8) |
| P3-4 (5f) `journal_events` named journald's stamp as the clock of every record | the stream-end lines and diagnostics use journald's stamp, the arrival lines the gateway's own `time`, validated against it; documented separately |
| P3-5 (5f) one primary stream-end line per controller is not an upstream invariant (repeated `handleError` calls print several) | every non-echo line is a group of its own, a conservative counting convention that can only make a window INCONCLUSIVE; a group is a controller, not an inbound request (J41a-J41d; the second native reproduction) |

Before the push this head had a fifth independent adversarial review of the census (one bounded read-only agent, Opus at maximum effort: five lenses one after the other, the incarnation's false PASS, the fixture scope, regression and robustness, the liveness of a real canary, and the claims against the code): A fifth independent adversarial review of the census (one bounded read-only agent, Opus at maximum effort, five lenses on frozen copies: 318 census runs, 20,000 matcher instances, 18 resolution scenarios and value-free reads of the live host; 0 P1, 2 P2, 7 P3, `checks/census-adversarial-reviews.txt`) found that the user manager's own `Started omniroute.service` entry (the manager's cgroup, 2.09 s before the child's start) made the cgroup set two values, so a correct canary was INCONCLUSIVE in about nine switches in ten, that a forward wall-clock step against the boot clock moved the computed start past arrival lines that were in the journal while the coverage check accepted any entry within 120 s, and seven smaller points (a stale QUERY line, dropped lines that were not counted, the startup exemption per listener, a restart explained as missing lines, the trial's exemption, the controls' wording): all fixed (J43a-J45b, J38i, J39e, the property faults manager_start_entry, clock_step and listener_line_before_start; our check of the repair before the push found that a forward step under 1 s still passed the entry check and dropped a stand-in's arrival line, closed by refusing any request line of a listener dated before its own start: J44f); its 18 case worlds, the fourth review's 173 cases and its 60 fuzz worlds rerun on the repaired census (`checks/census-review5-regression.txt`): 8 of 251 verdicts changed, each one a finding of the review (5 false PASSes now INCONCLUSIVE, 3 INCONCLUSIVE answers to clean worlds now PASS), and the 3 FALSE-PASS that remain are cases whose descriptions mark them theoretical or residual; it found no route from fabricated evidence to an accepting `scope=canary`, and 5f's read r14 then found two, which round 25 closes (the repair of its L1-2 and L1-3 had accepted the repeatable `[DB] Driver` line from a bounded read after a clock step).

### What the read r14 of `115b885ba` found (5f's FULL read, GPT-6 Astra max on the packaged worker: 2 P1, 1 P2, 1 P3, canary_ok false; the command center's ruling J757-R14-FIX), and what this head does about each

Twelve of the sixteen earlier findings are fixed in that read, four partial. The ruling prefers the smaller rule, so this head adds REFUSALS only: every window that PASSes on the census now PASSed on the census that the read read (`superseded/window-census-r24.py.txt`); against the census that the independent review of round 25 read (`superseded/window-census-r25.py.txt`) the same holds on the tested corpus, but for a process that started after a kernel suspend (R25-2, X9). `checks/census-negative-controls.txt` compares the runs of the same controls result by result and shows that the rebuilt worlds J46a, J46b, J47a and J47c PASS on that census; `checks/census-review5-regression.txt` reruns the fifth review's 251 worlds on r21, r24, r25 and r26 (from r24 to r26 one verdict changed, PASS to INCONCLUSIVE; from r25 to r26 none; none the other way) and 5f's own world builders against this census.

| Item | Where it is fixed or dispositioned |
| --- | --- |
| **P1-1** an ordinary earlier request with several persisted attempt rows (a failed attempt, then the successful one, one correlation id) supplied a spare row for a foreign request that left none: 45 arrival lines matched 45 call rows, PASS at `scope=canary`, also with the foreign stream's END 1,500 s later | the incarnation is INCONCLUSIVE when two call rows share a correlation id (whatever their paths), when a call row of a path with arrival lines has none, and when such a path has call rows without a matched arrival line; the id is one more column of `call_logs`, read only to refuse (rows are never merged into requests; a client can choose the id: one group in the store is a client that reused one); J46a-J46e, J48c, the property faults attempt_rows, null_corr_row and surplus_row; item (2) of the untested boundary is restated (a lost arrival line beside a request that left no row, one for one: J37e) |
| **P1-2** after a forward step of the wall clock (+600 s at process age 30 s) the journal query bounded by the computed start omitted the true startup banners and a retained foreign arrival, and a later genuine `[DB] Driver` line (printed at every database open) satisfied the banner rule | the listeners' own entries are also read by boot and pid with no wall-clock lower bound (each entry checked again, the dropped count printed); coverage is a Next.js or Ready banner of the pid on the journal's monotonic stamp within 120 s of its start (converted to the journal's clock by the kernel's suspended seconds), each banner kind at most once per pid, the realtime minus monotonic offset of the pid's entries varying by at most 1 s, the service manager's monotonic start stamp of the unit not later than the earliest listener's start + 1 s, and every arrival line that the bounded read counts also in the read by boot and pid; the `[DB] Driver` line is no banner; the protocol's coverage claim and the fifth review's completion account are corrected; J38j, J47a-J47k, J48a, J48b, J48d, X9 (the reviewer's world rebuilt with a journalctl that honours the query bounds), the property faults repeated_banner, step_backward, unit_stamp_late and boot_mismatch |
| **P2-1** the emitted NOT-EXCLUDED line asserted `within about 0.2 s of the rows of a completed request` without its qualification, beside the unbounded delay of the detail line; two retained receipts carried it | the line says that the 0.2 s is a measurement of one host, not a bound; `checks/census-baseline-real-data.txt` and `checks/census-live-trial.txt` are regenerated from the census; the record's claim that the description was restated everywhere is corrected |
| **P3-1** a failing awk made every stage and case of the runner exit-status control vanish, and the control printed the success verdict with `cases as required 0 of 0` | the control requires the 11 recorded stages and 66 cases, checks every parser and cut it relies on, counts each failed producer and says `VERDICT: INVALID RUN` (exit 1) otherwise; `scripts/runner-exit-status-controls-tool-failure.sh.txt` runs it with a failing awk, sed, grep and wc (`checks/runner-exit-status-controls.txt`) |
| r13 P1-1, r13 P1-2 and the command center's P1 (partial in the read) | carried by P1-1 and P1-2: the two worlds that still PASSed, each also with a late stream |
| r13 P2-5 (partial) | carried by P2-1 (the timing assertion) and P1-1 (the residual no longer claims the extra-attempt-row case) |

The new rules read the real, unpatched incarnation as clean (`checks/census-live-incarnation-read.txt`: one Next.js, one Ready and one `[DB] Driver` banner of the listener, a constant realtime minus monotonic offset, the manager's start stamp before the child's, every call row with its own correlation id; the one incarnation problem left is the unpatched build's rowless lines). A clock step since the process's birth (restart the gateway after the host's last sleep, then run the canary), a second database open (the import route), a request with several attempt rows or a client that reuses a correlation id makes a canary INCONCLUSIVE: a liveness cost, stated in the protocol. Before the push this head had one bounded independent review of the new rules: An independent adversarial review of the census of round 25 (one bounded read-only agent, Opus at maximum effort, five lenses on frozen copies: the controls' runs against both censuses, fixtures and a property run of its own, and the census's reading of the real incarnation; 0 P1, 0 P2, 8 P3, Review 6 in `checks/census-adversarial-reviews.txt`) found that the census of round 25 broke its claim `refusals only` in one narrow case (R25-1: an arrival line of the listener's pid that carries another boot's id, dropped by the read by boot and pid, was no longer counted, so a window that the census of the read r14 refused PASSed; the read by boot and pid must now hold every arrival line that the bounded read counts: J48a, J48b), and seven smaller points, all fixed or answered: the start from /proc is converted to the journal's monotonic clock by the kernel's suspended seconds (X9), a second `[DB] Driver` line stays refused with its true reason (a second database open can replace the store), the offset of every entry of the pid is compared with no ppm allowance (two opposite steps cancelled: J48d; restart the gateway after the host's last sleep, then run the canary), `without a matched arrival line` is what is counted, a correlation id shared by rows of different paths is refused (J48c), the controls' step worlds and the regression receipt say what they model, and the runner wrapper also refuses a failing wc. The repair is checked by the controls, the property test and the fifth review's 251 worlds (none of the verdicts changed from r25, one from r24: `checks/census-review5-regression.txt`), and was not reviewed again by the agent.

### What the reads r15 and r16 found (`1004174e3`: 5f's FULL read, 0 P1, 2 P2, 4 P3; `51e446ddf`: 5f's delta check, 0 P1, 1 P2, 1 P3), and what this head does about each

The ruling J757-R15-FIX closed six lines and disposed of one boundary; the delta check r16 found four closed (P2-2, P3-2, P3-3, P3-4) and two not (P2-1, P3-1). **P2-1** the maintained record stated residual item (2) more narrowly than the census permits: the census's own sentence (UNTESTED-BOUNDARY-DETAIL) is quoted verbatim in the README, the decision and the protocol, each followed by the command center's disposition quoted word for word (accepted as a stated residual; the acceptance record names it, and a window whose idle receipt shows any foreign arrival is INCONCLUSIVE); **P2-2** the smaller retry of an INCONCLUSIVE arm cannot produce an acceptance: a fresh complete four-arm acceptance (new idle receipt, four arms, new census) replaces an arm; **P3-1** (runner exit-status control) every pipeline stage's exit status counts, no status exempt since r16: the tool-failure wrapper runs each of ten tools in four modes, 40 of 40 refused (the controls as read at r15 and r16 are `superseded/runner-exit-status-controls-read-r15.sh.txt` and `-read-r16.sh.txt`); **P3-2** the stub gateway's unused `row_delay_s` is removed; **P3-3** this description asks for FULL-scope reads for the lift; **P3-4** the refusals-only statement names its exception (R25-2). The full text of each finding is in the record.

### What the delta check r17 of `e5c8a7fd` found (5f's delta check, GPT-6 Astra max on the packaged worker: 0 P1, 1 P2, canary_ok false; the command center's ruling J757-R17-FIX), and what this head does about each

r16-P3-1 is fixed in that check (no status-141 exemption anywhere); r16-P2-1 is narrowed to two gaps of the census's by-name scan of the idle receipt: **(a)** (`scripts/window-census.py.txt:1166`) the generic name=value pattern let an empty unrelated field swallow the next assignment (`INFO hindsight_processes= pending_changed=True` and `INFO hindsight_processes= connections_active=1` passed) and counted an empty activity value as absent (`INFO pending_changed=`, `INFO connections_active=`); **(b)** (`:1267`) the counter was checked line by line, so two complete but contradictory summaries (`0 0 False`, then `1 1 False`) passed. The ruling returns them as ONE class fix and makes the delta check r18 the last round: with no P1 the canary is released on 5f's row and the command center's word, and any further receipt-grammar finding is recorded as a bounded residual here.

**The census is fail-closed now** (`scripts/window-census.py.txt`, sha256 `bf72161c...`; `checks/census-delta-after-r17-read.txt`, 56 changed lines; every PASS is a PASS of the censuses that the reads r15, r16 and r17 read; the frozen bytes, the patch, the property test and the runner control are unchanged). The grammar is `GUARD_INFO_LINE` (`:1172`) and `GUARD_SAMPLE_LINE` (`:1174`), the classifier is `receipt_grammar_problem` (`:1177`), and `parse_guard` (`:1253`) calls it on EVERY line of the receipt before any line leaves its loop (`:1258`): a line that starts with INFO must be the guard's INFO line exactly (every field once, in the guard's order, each with a value of its own shape, nothing before or after), a line that starts with `sample` its sample line exactly, and any other line that carries an activity field is refused; every activity field is matched on its own (`activity_values`, `:1161`), so no assignment hides another and an empty value is unreadable; a second line that carries the pending-request counter is refused, equal or not. On a matching line the counter must be complete, readable and unchanged, no connection may be active, no other lane may run and no call_logs row may be younger than 120 s.

Controls: G17r-G17y (the regressions of the check: an empty unrelated value swallowing `pending_changed=True` or `connections_active=1`, an empty `pending_changed` or `connections_active`, two contradictory and two identical counter summaries, a key written in quotes, an empty unrelated value beside no activity field) and G18a-G18l (the grammar: a missing, unknown or malformed INFO field, a malformed sample line, an activity field on the IDENTITY, GUARD or CHECK line, garbage before INFO, a lowercase prefix, one space at either end); G17i and G17m now refuse what census r28 read by name; every control of G17 and G18 is INCONCLUSIVE except G17b and G17q.

### What the final delta check r18 of `6b5e929e` found (5f's FINAL delta check, GPT-6 Astra max on the packaged worker: 1 P1, 1 P2, 2 P3, canary_ok false; the command center's RULING-757-R19), and what this head does about each

The class fix of round 29 holds ((a) and (b) fixed; refusals only against the reads r15, r16 and r17; frozen, patch, property test, guard and runner control unchanged). **One P1** (`scripts/window-census.py.txt:1290`): the bounded residual that this description disclosed, "the IDENTITY line's pending_total is not reconciled", was not accepted: the guard prints IDENTITY, whose `pending_total` is the same pending.byAccount counter, then reads the counter before and after its observation for INFO, and the census kept only MainPID and ExecMainStartTimestamp from the IDENTITY line, so `IDENTITY pending_total=0` then `INFO 1 1 False`, a visible increase inside the receipt's interval, passed at scope=canary. **One P2** (`scripts/window-census.py.txt:1311`): a receipt with no INFO line is accepted in the canary path (5f classifies the missing line as a bounded P2); his two P3 (a decorated activity field; sample timestamps checked by shape) are recorded below as residuals. The ruling (one push, two changes, nothing else; the delta check of that diff only is the end of the rounds): reconcile the IDENTITY counter with both INFO readings at canary scope (read fail-closed: a counter that is absent from the IDENTITY line, or on a line that is not the native one, cannot be reconciled and is refused), and require exactly one INFO line at canary scope.

**The census now** (`scripts/window-census.py.txt`, sha256 `90d5ceeb...`; `checks/census-delta-after-r18-read.txt`, 30 changed lines; every PASS is a PASS of the censuses that the reads r15, r16, r17 and r18 read; the frozen bytes, the patch, the property test, the guard and the runner control are unchanged): the first IDENTITY line's `pending_total` is kept (`:1270`); an IDENTITY line that mentions it must be the guard's native IDENTITY line exactly (`GUARD_IDENTITY_LINE` `:1175`); after the loop of `parse_guard` (`:1323`) the three readings are reconciled: an unreadable value (`None`, empty) is an unknown observation and a readable disagreement with either INFO reading is INCONCLUSIVE, equal values (92/92/92) pass; at canary scope the reconciliation needs the counter on the IDENTITY line (`:1508`), and the canary gate needs exactly one INFO line (`:1506`); a trial is not touched. Replayed on the two clean real guard receipts of `checks/guard-live-trial.txt` (guard 5 before the repair of round 13; recorded receipts, not a new run) the census reads identity 92 and INFO 92/92 and reconciles with no problem (the replay is in `checks/census-delta-after-r18-read.txt`). Controls G19a-G19n: the native-format identity-to-INFO cases (0 then 1 and 1: INCONCLUSIVE; equal values: PASS, at canary scope), the other direction and an equal non-zero case at trial scope, an unreadable or empty identity counter, a line that is not the native IDENTITY line (or names pending_total twice), no INFO line (canary: INCONCLUSIVE; trial: PASS), two INFO lines (canary: INCONCLUSIVE) and a short IDENTITY line without the counter (canary: INCONCLUSIVE; trial: PASS); the controls' fixture writer writes the guard's quiet INFO line and its IDENTITY line (pending_total=0) by default, so the canary-scope worlds of the controls and of the property test carry the two lines that the gate needs.

**Bounded residuals** (the ruling's rule for anything outside the changed lines; also in the record): 5f's P3s of round 18 (ANSI-decorated or obfuscated field names are not recognised unless the line starts with INFO or `sample`; the sample lines' timestamps are checked by shape only); the grammar is guard 5 as `scripts/pre-switch-guard.py.txt` prints it (the census accepts the receipt of that script, sha256 `5c8ccf3f...`, and, for a trial only, of the script before the repair of round 13, sha256 `62dea3d2...`); no census can prove who wrote a receipt.

### What the bounded delta check r19 of `9db475cf4` found (5f's bounded delta check, GPT-6 Astra max on the packaged worker: 1 P1, canary_ok false; the command center's RULING-757-R20), and what this head does about it

Both changes of RULING-757-R19 are fixed (the reconciliation at `:1270`, `:1323` and `:1508`, exactly one INFO line at `:1273` and `:1506`; 0/1/1 and 1/0/0 INCONCLUSIVE, 1/1/1 and 92/92/92 PASS at canary scope), and the frozen blobs, the property test, the guard and the runner control are unchanged. **One P1** (`scripts/window-census.py.txt:1187`): the new IDENTITY branch of `receipt_grammar_problem` comes before the scan for activity fields, and `GUARD_IDENTITY_LINE` takes non-space values for unit, ExecMainStartTimestamp, running_prefix, BUILD_SHA and health, so an IDENTITY line with `running_prefix=workers=2` (or `connections_active=1`, `active_so_far=2`, `last_call_log_age_s=0` embedded the same way) fully matched it, and the early `continue` of `parse_guard` for IDENTITY lines skipped `activity_problems`: an otherwise clean four-arm receipt with only that change is exit 2 on the census of round 29 and exit 0 at scope=canary on the census of round 30, a break of refusals only (5f: a malformed producer input, which the guard never prints). The ruling (exactly one condition and four controls, then one check bounded to that condition, no further repair round without a new ruling): refuse the IDENTITY line when `activity_values(line)` finds anything.

**The census now** (`scripts/window-census.py.txt`, sha256 `2ec9a649...`; `checks/census-delta-after-r19-read.txt`, ONE line changed; the cumulative diff to the census of round 29 stays 30 lines): the IDENTITY branch of `receipt_grammar_problem` accepts a line only when it fully matches `GUARD_IDENTITY_LINE`, names `pending_total` once and `activity_values(line)` finds nothing (`:1194`; `pending_total` is not an activity field, so the guard's native line has none). Controls G20a-G20d: an otherwise clean four-arm receipt at canary scope whose running_prefix value carries `workers=2`, `connections_active=1`, `active_so_far=2` or `last_call_log_age_s=0`: INCONCLUSIVE (exit 2) on the census of round 29 and on this one, PASS (exit 0) on the census of round 30 (the run against the census of round 29 lists them as UNEXPECTED by expected text only: that census refuses them by its own rule for a line that carries an activity field, with another message). Refusals only: every PASS of the census is a PASS of the censuses that 5f read at r15, r16, r17, r18 and r19 (per result, `checks/census-negative-controls.txt`); the 251 worlds of the fifth review's harness show no verdict difference between r25 and r31 on nine cuts (`checks/census-review5-regression.txt`); the property test (unchanged) shows 0 disagreements in 600 worlds and in two more seeds of 900.

The census control count of this description (463 results) is higher than the reviewer's 406 (it ran 406 of the earlier 408): it counts J39c and J39e, which observe the live host (read-only) and which the reviewer skipped on purpose, and the fifty-five new scenarios G17a-G17y, G18a-G18l, G19a-G19n and G20a-G20d (G17a-G17e since round 27, G17f-G17q since round 28, G17r-G18l since round 29, G19a-G19n since round 30, G20a-G20d since round 31).

### SOTA sources

- OmniRoute upstream, https://github.com/diegosouzapw/OmniRoute, at `0585aba5589d5a1f49243a13a8db249558e7c9e3` (the composition's tree; the same files read at release/v3.8.52 `23a114848`): `open-sse/utils/streamHandler.ts` (`cancel()` L842-852; the reference implementation `drainCompletedToolHandoff` L665-688), `open-sse/utils/stream.ts` (`flush()` and the other `onComplete` call sites), `open-sse/utils/streamFailureBoundary.ts`, `open-sse/utils/streamFailureFinalization.ts`, `open-sse/handlers/chatCore.ts` (`onStreamComplete`, L3113-3114), `open-sse/handlers/chatCore/attemptLogging.ts`, `open-sse/services/conversationTracker.ts` (`resolveConversationId`: a client-supplied `X-OmniRoute-Session-Id` is stored outright as the call log's session tag, upstream #8249), `bin/cli/runtime/processSupervisor.mjs`, `bin/cli/commands/serve.mjs`; merged prior work #5491, #10608 and #14342 (read through the GitHub API); open issues #13597 and #15030 (artifact worker only; none for this drop). Verbatim excerpts and their per-excerpt check: `checks/source-lines.txt`, `checks/source-lines-check.txt`.
- Codex CLI 0.159.3: `codex exec --json` (its `turn.completed` usage is the client-side truth the native completeness check compares with) and `-c model_providers.<id>.http_headers` (the per-turn header); verified by native execution against the live gateway and a stub (`checks/native-usage-calibration.txt`, `checks/acceptance-controls.txt` N1).
- The patch follows upstream's own pattern in the same file, for a gap demonstrated on two hosts, with a removal condition in the decision record; it is not a rebuild of anything upstream ships. Tests run with upstream's own runner flags and release scripts; the acceptance scripts, their stub and the guard are our own glue for a demonstrated gap (no upstream harness exists for gateway-store acceptance of this kind), checked by offline controls.
- Independent request record: the gateway's own journal line per inbound request (the composition tree's HTTP log, `📥 POST`), read with systemd 255 `journalctl --user -u omniroute.service -o json --all` (without `--all`, journalctl writes a field over 4096 bytes as null: journalctl(1)) and `--since`/`--until` with an explicit `UTC` suffix; its arrival times against the call rows' timestamps minus durations were measured on this host (416 rows: median offset 11 ms, p99 0.28 s) before the 3 s pairing width was chosen.
- Serving process and journal limits (r12 P1-2): the listener from `ss -Hltnp` (ss(8)), the process start from `/proc/<pid>/stat` field 22 and `/proc/uptime` and the cgroup from `/proc/<pid>/cgroup` (proc(5)); the journald rate limit from `systemctl --user show -p LogRateLimitIntervalUSec -p LogRateLimitBurst` and `systemd-analyze cat-config systemd/journald.conf` (systemd.exec(5), journald.conf(5): defaults 30 s and 10,000 messages; the user manager cannot read the system journal's suppression notices, which is stated); the stream-end line (`logStream` in `open-sse/utils/streamHandler.ts`), the supervisor's restart strings (`bin/cli/runtime/processSupervisor.mjs:179-207`) and the disconnect grace (`open-sse/config/runtimeTimeouts.ts:48`) are read at OmniRoute `c1e30b76`, the build under test; the figures the parameters rest on are measured on this host (`checks/census-calibration-measurements.txt`).
- The by-hand journal scan (r13 P2): the pipeline status of a shell pipeline is the last command's (GNU Bash manual, Pipelines; `grep -c` exits 1 for a count of 0), journalctl(1) of systemd 255 (exit status; stderr for data it skipped; an unknown unit or a start in the future prints nothing and exits 0, reproduced on this host: `checks/journal-save-failures-live-read.txt`), and `date -d` for the start timestamp; the script is our glue for a demonstrated gap with a control that reproduces the defect (D0).
- The late stream-end line (5f's r13 P1-2 and P3-5): the stream controller and transform of OmniRoute `c1e30b76` (`open-sse/utils/stream.ts` flush, `open-sse/handlers/chatCore.ts` usage recording, `open-sse/utils/streamHandler.ts` logStream, `handleError` and `handleComplete`) and upstream's own node:test runner with the flags of `scripts/drain-prototype.sh.txt`; two reviewer-written tests rerun (`checks/late-end-native-reproduction.txt`).

- Hermetic controls: the guard-5 controls' Part E runs in a private network namespace made with util-linux `unshare --map-root-user --net` (user_namespaces(7), network_namespaces(7): the kernel's own isolation primitive, no tool of ours), with a stub of the one endpoint the guard reads; the new census controls run against the censuses that were read (negative controls, `checks/census-negative-controls.txt`).
- Row attribution (the census gate): scipy 1.18.1 `scipy.sparse.csgraph.maximum_bipartite_matching` (Hopcroft-Karp; https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csgraph.maximum_bipartite_matching.html) is the cross-check oracle in `checks/census-controls.txt` (X3; run with `uv run --with scipy==1.18.1 --with numpy==2.5.3`); the census's own matching is the standard augmenting-path algorithm with the edge-removal test for uniqueness (a perfect matching is the only one exactly when removing any single edge of it leaves no perfect matching), checked against scipy and an exhaustive brute force. The census is our glue for the command center's ruling (no upstream harness reconstructs gateway-store request attribution); the association rule it applies is the frozen scripts' own, copied byte for byte and checked against them in the controls.

### Evidence-class table

| Claim | Evidence class | Command / receipt |
| --- | --- | --- |
| After the terminal event `cancel()` stops the transform before `flush()`, the normal completion path to `onComplete`; the failure routes to `onStreamComplete` are not taken; no code path throws | `source_review` | `checks/source-lines.txt`, `checks/source-lines-check.txt` (28 of 28 excerpt ranges identical at the tag and at `0585aba55`) |
| On 20128 (earlier PR head) a client that closes at `response.completed` is mostly not logged, and native `codex exec` turns lose rows: the race set lost 5 of 6 requests (the gateway's pending-request counter rose by 5 across the run), the raw set's `responses:early:0` requests 2 of 2, the native `astra-max` turns left 3 of 4 judged turns incomplete (rows missing against the client's own usage) and the native tool-call turns 7 of 8 (the final request's rows lost); the other raw modes were `responses:eof` (0 of 1 lost), `responses:early:0.5` (0 of 1 lost), `responses:early:2` (0 of 1 lost), `chat:eof` (0 of 1 lost), `chat:early:0` (0 of 2 lost). | `local_integration` (our clients; metadata-only reads of the live store) | `checks/pre-patch-repro-20128.txt`, `checks/live-acceptance-baseline-*.txt`, `checks/native-usage-calibration.txt` |
| The six new tests: 3 fail on the unpatched composition, 2 with only the first version's change, 6 pass with the patch; the 239 stream-related upstream test files give 1,746 tests with 1 failure before and 1,752 with the same 1 unrelated failure after; call-log, usage-history and chat-pipeline tests 126 of 126; tree ids and the test file's blob equal the expected ones | upstream tests unchanged and `local_integration` (our six tests on synthetic fixtures) | `checks/drain-prototype-results.txt`, `checks/drain-prototype-controls.txt`, `checks/logs/MANIFEST.txt` |
| Through the real `handleChat` path with a stubbed upstream, a client that closes right after the terminal event ends with both rows with the patch (5 of 5 scenarios, incl. Chat Completions) and, in 4 of 5, with none without it | `local_integration` | `checks/handler-e2e-results.txt` and its two controls |
| The native acceptance's identity mechanism (a caller-supplied `X-OmniRoute-Session-Id` stored as the row's `session_tag`) works through the real `handleChat` path with a stubbed upstream on the unpatched composition (4 of 4) and on the patched tree (4 of 4); with another header name the three tag assertions fail (the oracle discriminates) | `local_integration` | `checks/handler-e2e-session-tag-results.txt` and its logs |
| The patched tree builds and packs with upstream's release scripts, the install enforces the pinned sha256, npm integrity, entry count, `BUILD_SHA`, shim hash and drain marker (also on a host without the NativeStack layout), a scratch boot answers `/api/health` on loopback with an API key required | `local_integration` (upstream's own scripts; our scripts' checks have controls) | `checks/build-results.txt`, `checks/install-results.txt`, `checks/smoke-results.txt` |
| The acceptance scripts, guard, identity read-back and wrapper decide correctly (version 1 gives the wrong answer in the cases the reads named) | `local_integration` (synthetic fixtures; no gateway traffic) | `checks/acceptance-controls.txt`, `checks/acceptance-controls-v1-reproduction.txt` |
| The census gate decides correctly on synthetic fixtures and agrees with the frozen scripts' predicates and with scipy's `maximum_bipartite_matching`; guard 5 parses `ss` strictly | `local_integration` (synthetic fixtures; scipy is upstream, the controls are ours) | `checks/census-controls.txt`, `checks/guard5-controls.txt`, `checks/guard5-existing-controls.txt` |
| The native test runners enforce each stage's exit status, the real-run gate refuses the wrapper's test-only variables and an environment it cannot enumerate, the smoke cleans up from the launch, the guard requires executable prefixes and the show-log receipt reports an unobserved state or a partial journal read as unavailable | `local_integration` (the controls run the earlier text next to the fixed one on fixtures and fixture logs; no gateway traffic) | `checks/runner-exit-status-controls.txt`, `checks/real-run-gate-control.txt`, `checks/smoke-initial-ps-control.txt`, `checks/guard5-controls.txt`, `checks/guard5-existing-controls-poller.txt`, `checks/show-log-receipt-controls.txt` |
| The census and guard 5 on real rows of the unpatched 20128 (the baseline arms in diagnostic mode; a live quiet-window trial of 2026-10-06 17:20Z): no foreign row, no orphan, the dropped requests flagged, the journal's 43 inbound requests against 26 own rows on the baseline arms | `local_integration` (our clients and tools, the live gateway's metadata) | `checks/census-baseline-real-data.txt`, `checks/census-live-trial.txt`, `checks/guard-live-trial.txt` |
| For the canary, a non-streaming or late-ending foreign request, an ordinary request with several persisted attempt rows, and a journal read after a clock step cannot stand in for an own row (every inbound line since the serving process's start needs its own call row, rows are refused when attempt rows or surplus rows could balance a request that left none, and coverage is taken from the monotonic clock; a fixture run is never `scope=canary`) | `local_integration` (synthetic fixtures; scipy's `maximum_bipartite_matching` and a brute force are the oracles for the matching, X6) | `checks/census-controls.txt` (J22e, J36-J41, X6-X8), `checks/census-property-test.txt`, `checks/census-negative-controls.txt` |
| A successful HTTP stream's stream-end line can come long after its rows, and one controller can print several primary lines | `local_integration` (two reviewer-written node:test files rerun on the scratch tree of the patched composition with upstream's runner; a stubbed upstream, no network) | `checks/late-end-native-reproduction.txt` |
| The manual journal scan reports a failed or empty read as unavailable; the earlier pipeline did not | `local_integration` (fakes of journalctl and systemctl: 17 cases) and `native_proven` for six read-only runs of the host's own journalctl | `checks/journal-save-failures-controls.txt`, `checks/journal-save-failures-live-read.txt` |
| The fix works live against the real Codex upstream and server and the switch changes no effort column | **not run**: the protocol is frozen by this head, the canary waits for the command center's lift | `checks/live-acceptance-canary-*.txt` (added after the switch) |

### Local commands run

- `python3 scripts/validate.py` → {"components": 69, "hashed_files": 10810, "profiles": 4, "receipts": 226, "status": "passed"}; `python3 scripts/validate_convergence.py --all-recorded` → record[31]: valid; gitleaks (pre-commit, its per-user lock retried by the commit script) → the commit succeeded; the commit script fetched `origin/main` and, if it had moved, rebased the branch over it (`ffd4b8508ae2494bf5bf7ed9df1932537dbb7ecf`: 24 commits replayed, no conflict) before registering the evidence folder. A dry run of the registration and both validators in a scratch clone ran first.
- Census controls, `uv run --no-project --with scipy==1.18.1 --with numpy==2.5.3 python census-controls.py` → exit 0, 463 results (the reproductions of r12, of the third and fourth reviews, of the read r13, of the read r14, of the read r15, of the delta check r16, of the delta check r17, of the final delta check r18 and of the bounded delta check r19: J22a-J47k, J48a-J48d, G17a-G17y, G18a-G18l, G19a-G19n, G20a-G20d; the earlier Y, D, G, W, K, P, R, S, F and J scenarios), every scenario as expected (X1: parity checks against the frozen scripts' source; X2: `associated()` on 40,000 pairs; X3: the matching against a brute force and scipy's `maximum_bipartite_matching`; X4: the span and grace parsers; X5: the census's line grammar and grouping on the real stream-end lines of the drain-patched and the unpatched tree; X6: the incarnation's matching of inbound lines to call rows against a brute force and scipy on 6,000 random instances; X7: `host_fixture_reasons()`; X8: a journalctl timeout keeps its stderr; every world's journal carries `_BOOT_ID` and `__MONOTONIC_TIMESTAMP` and every call row its own correlation id; J47 runs a journalctl that honours the query bounds).
- Property test, `census-property-test.py --seed 757 --worlds 600` → WORLDS 600: canary-detect: 107 of 107 as expected, canary-pass: 93 of 93 as expected, trial-detect: 153 of 153 as expected, trial-pass: 247 of 247 as expected (the faults of the rounds after r12 and the canary's scope; since round 25 seven more canary-only faults, attempt rows, a row without or with a shared correlation id, a surplus row, a repeated banner, a backward clock step, a late unit stamp and another boot, and two more seeds of 900 worlds each with 0 disagreements: one world in three is the four arms, and its ground truth adds the incarnation: a non-streaming substitution, a late-ending successful stream, an arrival line with no call row and a journal that does not reach the start are detected there and are the documented trial residual in a trial).
- Guard 5: `guard5-controls.py` (K1-K19 on records captured on this host and on scratch prefixes; E0, E0b and E1-E7 with shims inside a private network namespace) → every scenario as expected, its receipt regenerated from a fresh run (the docstring says `delta read r10`); `run-controls.py --only G` (G1-G16 with the repaired guard under test, G9-G13 in a transient systemd scope) → none unexpected (`checks/guard5-existing-controls-poller.txt`).
- The builders' and the coordinator's controls on their published texts: `runner-exit-status-controls.sh` (66 of 66 cases and 11 stages, `INVALID RUN` otherwise; its `-tool-failure.sh` wrapper refuses each of awk, sed, grep, wc, cut, tr, tail, paste, sha256sum and basename failing, silently, after printing the correct result, after printing it and exiting 141 and after printing it and a real SIGPIPE: 40 of 40 runs; the stub gateway's unused `row_delay_s` is removed: `checks/stub-gateway-delta-r15.txt`), `smoke-initial-ps-control.sh`, `real-run-gate-control.sh` (30 cases; three runs: no gate, the repaired gate, the gate as the read r13 read it, which fails G9a-G9c), `show-log-receipt-controls.py` (32 runs, d3 and d4 new, plus Part R), `journal-save-failures-controls.sh` (17 cases; C13 and C13b fail on the scan before its empty-read rule) → each as required.
- Real read-only runs on the host: the earlier journal pipeline against a failing journalctl and against an empty read prints 0, the scan answers `JOURNAL-UNAVAILABLE`, and the live unit's count of `Failed to save call log` since its start is 0 (`checks/journal-save-failures-live-read.txt`); 5f's two node:test reproductions rerun on the scratch tree of the patched composition (`checks/late-end-native-reproduction.txt`).
- Census on real rows: `--diagnostic` over the four baseline arms of 2026-10-06 (11:50-12:22Z, unpatched build) → exit 2 as designed; the live trial of 2026-10-06 17:20:02-17:26:36Z on the quiet unpatched 20128: arm A alone and A+B+C → exit 2 (`checks/census-baseline-real-data.txt`, `checks/census-live-trial.txt`); the calibration script over 2026-10-05 22:00Z to 2026-10-06 23:30Z → `checks/census-calibration-measurements.txt` (read-only; the store holds 0 Responses-over-WebSocket rows).
- Negative controls: the same controls run with plain python3 against the censuses that were read (the r10 read, `41a671681`, the one before the second review, the one that r12 read, the one that the fourth review read the one that the read r13 read, `superseded/window-census-r20.py.txt`, the one that the fifth review read, the one that the read r14 read, `superseded/window-census-r24.py.txt`, and the one that the independent review of round 25 read, `superseded/window-census-r25.py.txt`, and the one that 5f's read r15 read, `superseded/window-census-r26.py.txt`, the one that 5f's delta check r16 read, `superseded/window-census-r27.py.txt`, and the one that 5f's delta check r17 read, `superseded/window-census-r28.py.txt`, and the one that 5f's FINAL delta check r18 read, `superseded/window-census-r29.py.txt`, and the one that 5f's bounded delta check r19 read, `superseded/window-census-r30.py.txt`) → the new scenarios report FALSE PASSes (and every PASS of the current census is a PASS of the census that the read r14 read: asserted per result; against the last six the same holds on that corpus, but for a process that started after a kernel suspend (round 25's census), for the idle receipt's pending-request counter (round 27, against the census that the read r15 read: G17a, G17c, G17d) and for the idle receipt's INFO and sample lines read by name (round 28, against the census that the delta check r16 read: G17e, G17f, G17g, G17h, G17j, G17l, G17n, G17o, G17p) and for the fail-closed grammar of the receipt (round 29, against the census that the delta check r17 read: G17i, G17m, G17r-G17y, G18a-G18f, G18h-G18l) and for the IDENTITY counter against the INFO readings and the canary gate's exactly-one-INFO rule (round 30, against the census that the final delta check r18 read: G19a, G19c, G19e, G19f, G19g, G19h, G19l, G19m) and for an IDENTITY line that carries an activity field in one of its values (round 31, against the census that the bounded delta check r19 read: G20a, G20b, G20c, G20d)) (`checks/census-negative-controls.txt`); the runs against the two censuses that pin the guard as it was before its repair carry that sha256 in their fixtures (`--guard-sha`).
- The reviewer's worlds: the fifth review's harness (251 worlds) on the censuses r21, r24, r25, r26, r27, r28, r29, r30 and r31, and 5f's own world builders of the read r14 against the current census (`checks/census-review5-regression.txt`). The census on the real incarnation (`checks/census-live-incarnation-read.txt`): INCARNATION-BIRTH and INCARNATION-ROWS read clean.
- Not rerun: the earlier offline controls of the scripts (`checks/acceptance-controls*.txt`, 2026-10-06) except the G series above, and the baselines (the frozen scripts are unchanged). Not run: any live trial, any request to a gateway, the canary.

### Decision record

`docs/decisions/2026-10-05-omniroute-gateway-composition.md` (the drain-patch candidate section, the evening update and the acceptance paragraph) and `docs/decisions/2026-09-30-omniroute-rebuild.md` (the dated supervisor note).

### Host evidence

Not applicable (no files under `evidence/hosts/`).

### Checklist

- [x] New/changed GitHub Actions are pinned to a full commit SHA with a version comment (no workflow changed).
- [x] New/changed workflows declare top-level `permissions: {}` (no workflow changed).
- [x] No secrets are printed, logged or committed; no new required secret was added (the clients use the documented `local-loopback` placeholder; the store reads are metadata columns only; UUID-shaped correlation ids in committed outputs are shortened and the receipt prints an allowlist).
- [x] No new paid hosting, subscription or billing surface was introduced.
- [x] Peer-owned untracked files and worktrees were preserved.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
seathatflowsinourveins added a commit that referenced this pull request Oct 9, 2026
#833 (36654a8) made READY the vendor's installation plus the vendor's
own check or one named operation in each client, with organic counters
read and published but no longer a condition, and settled code search as
two jobs (SocratiCode for indexed projects, semble for any other
repository).

- jCodeMunch: zero use is an install gap first (rule 4); its state is
  release owed (1.108.332), not an exclusion candidate.
- Readiness dispositions: drawn under the earlier bar; the readiness
  owner re-reads them under rule 3.
- Code search: settled by #833. On the Mac, semble 0.6.2 is final by
  the vendor's route, with one named search passing in each client
  (host receipt semble-mac-20261007/receipt.json); SocratiCode stays.
- Readiness verdict: selections complete; NativeStack2604's
  fix-and-smoke group still gates READY.

validate.py passed; tests.test_adoption_docs_consistency OK (39 run,
1 skipped).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WhN8fzZs47tp6KunqRQ9gs
seathatflowsinourveins added a commit that referenced this pull request Oct 9, 2026
The completeness critic of the finalization review found four rows that
the unit results contradict:
- Claude Code: the Mac runs 2.1.293 since its native self-update at
  18:18Z under autoUpdatesChannel latest, the recorded policy (decisions
  2026-09-23 item 2, 2026-09-28 M51); the recorded pin moves after the
  2026-10-08T17:18Z gate.
- SocratiCode: not optional; it holds code search over indexed projects
  under #833, beside semble.
- Graphiti: the library lane installs hash-pinned against constraints
  from graphiti 86f1c941's uv.lock (openai 2.32.0, httpx 0.28.1); the
  MCP lane is deferred.
- context-mode: the marketplace ref is a pin request; the installed
  plugin commit at v1.0.169 is not corroborated, so the Mac section no
  longer claims native proof for that row.

validate.py passed; tests.test_adoption_docs_consistency OK.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WhN8fzZs47tp6KunqRQ9gs
seathatflowsinourveins added a commit that referenced this pull request Oct 9, 2026
A cross-family pre-review (GPT-6.1 Sol at max through OmniRoute, codex
exec review --base origin/main at head 3431fd1, run
prreview.20261008T004955Z.190120) found two defects; the coordinator
verified both against source:

- The ai-memory swap stopped the agent before `ai-memory backup`, but
  backup is a thin HTTP client that needs the running server
  (adoption/lifecycle.md L282-283). The backup now runs against the
  running 2.5.2 server and is verified by a restore into an empty
  fixture before the agent stops.
- The readiness groups covered 50 of the 51 slots: semantic-rag/
  code-search (INTERIM in ns2604-requalification-20261005/slots.json)
  was in none. It joins the fix-and-smoke group: semble is final there
  under #833, SocratiCode is install owed (1.16.0 with the vendor's
  plugin and its codebase_health check), and the Mac's semble evidence
  does not adjudicate the workstation's slot.

validate.py passed; tests.test_adoption_docs_consistency OK.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WhN8fzZs47tp6KunqRQ9gs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant