Skip to content

OmniRoute gateway: drain patch for the dropped call_logs and usage_history rows when a client closes right after the terminal event (canary passed on 20128; evidence) - #757

Merged
seathatflowsinourveins merged 25 commits into
mainfrom
claude/99-omniroute-drain-patch-20261005
Oct 8, 2026
Merged

seathatflowsinourveins merged 25 commits into
mainfrom
claude/99-omniroute-drain-patch-20261005

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

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 fix: except six next 16.3.5 advisories in the frozen macOS lock only #837, the osv fix for the frozen macOS lockfile, and Rules: a landscape candidate is finalized by its vendor's clean install and the vendor's own check #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

  • New/changed GitHub Actions are pinned to a full commit SHA with a version comment (no workflow changed).
  • New/changed workflows declare top-level permissions: {} (no workflow changed).
  • 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).
  • No new paid hosting, subscription or billing surface was introduced.
  • Peer-owned untracked files and worktrees were preserved.

🤖 Generated with Claude Code

@seathatflowsinourveins seathatflowsinourveins added the lane:shared Touches files owned by both lanes; needs both lanes' acknowledgement label Oct 5, 2026

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 26c629a5a5

ℹ️ About Codex in GitHub

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

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

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

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

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-05T20:31:35.015933Z 26c629a PR opened
ℹ️ About Codex in GitHub

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

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

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/99-omniroute-drain-patch-20261005 branch 5 times, most recently from 3685a41 to 7e5e2f6 Compare October 5, 2026 22:41
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

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

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/99-omniroute-drain-patch-20261005 branch from 7e5e2f6 to bcb09e8 Compare October 6, 2026 00:27
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…ss, guard, identity read-back, wrapper) after the full-scope read and the round-3 ruling; protocol is a DRAFT, v2 baselines pending

Pushed as a safe point before a supervised host restart (02:45Z); the canary hold is unchanged and no canary may run on this head.
- Scripts (all with offline controls, v1 vs v2 on a stub gateway, no gateway traffic; checks/acceptance-controls*.txt): raw acceptance (terminal and early close required, full predicate and stable rows at both reads, exit 3 for errors before any request),
  native acceptance (per-turn X-OmniRoute-Session-Id = call_logs.session_tag, completeness against the client's codex exec --json usage, the tool-call turn a gate, hangs INCONCLUSIVE), gateway-identity, pre-switch-guard, run-acceptance wrapper, receipt v2 (allowlist)
- checks/native-usage-calibration.txt: on the unpatched build every fully stored turn matched the client's usage exactly; 3 of 7 two-request turns lost the final request's rows
- validation script v5 (the patch's blob id must parse) with its real run and four controls; install script v3 (paths overridable, shim from the repository, inputs checked before npm install) with controls and a positive run without the NativeStack prefix layout;
  the handler tree-check control with its exit status as a line; dates of headers corrected; unshortened raw outputs kept privately and listed in checks/logs/MANIFEST.txt
- record: the reviews paragraph no longer calls the P1s fixed; 2604's kept prefix named; the live-acceptance paragraph describes version 2; the early-loss claim is qualified; the pending-request counter observation
- NOT in this push: the same-day v2 baselines (running when the restart was announced), the build script v3 real run, the frozen protocol (checks/live-acceptance-protocol.md says DRAFT)

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/99-omniroute-drain-patch-20261005 branch from bcb09e8 to 9ef72e5 Compare October 6, 2026 02:05
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
… baselines, guard v3, build script v4 and the pack-boot finding

The patch is unchanged (sha256 74c0f449..., patched tree b7c68690...); the record, the acceptance protocol, its scripts and their evidence changed. Pre-deployment: the canary hold is unchanged and waits for the command center's lift.
- raw script 2.1: effort probes judged as groups of three attempts (the gateway stores the effort columns only for a response with encrypted reasoning, so NULL is unobservable), a reasoning-eliciting probe prompt chosen by a calibration series (45 of 45 attempts observed); the baselines rerun on the unpatched build cf6748d04: raw 20, race 6, native 4, tool-call turns 8 observed (race 6 of 6 lost, early:0 2 of 2, tool-call turns 5 of 8 incomplete)
- guard v3: connections classified by the owner of the client end, the 20129 gateway's poll tolerated by its unit, everything else must be idle; live trials of v3 and v2 (v2 failed on the poll at 05:13Z), control G12 reproduces that failure
- session-tag handler check: X-OmniRoute-Session-Id stored as call_logs.session_tag through the real handleChat path on the unpatched composition and the patched tree (4 of 4 each), with a negative control
- build script v4: check:pack-boot with the reviewed lsof shim v2 first on PATH; version 3 failed twice there (the harness's own poll is listed by the CLI's lsof -ti preflight because a connect to a never-bound closed loopback port hangs on this host); one-minute reproduction, probe, shim controls 10-12; the real run exits 0 at every gate, tarball compared entry by entry with the recorded one
- wrapper frozen with the committed baseline's sha256; offline controls rerun with the final bytes (parts A, B, B2, C, D)
- record: live-acceptance and build paragraphs updated, the first composition build's pack-boot failure explained; evidence README, superseded index and PR body rewritten

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/99-omniroute-drain-patch-20261005 branch from 9ef72e5 to 04e505a Compare October 6, 2026 09:58
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Head 04e505a5d (content commit c525e5460) is pushed: protocol 2 with raw script 2.1 frozen with same-day baselines (wrapper exit 0, 06:05:33Z), guard v3, the session-tag handler check, build script v4 with its passing real run, and the rest listed in the PR body. The patch itself is unchanged.

  • No canary has run; the hold is unchanged. A full-scope read of this head is requested from 5f. The command center is asked to read checks/live-acceptance-protocol.md before any lift.
  • The restart time will be proposed only after that read returns and agreed with 5f: its review workers call 20128, and the guard refuses while a worker of another lane runs.
  • One finding worth a second pair of eyes: version 3 of the build script failed twice at upstream's check:pack-boot because, on this host, a connect to a never-bound closed loopback port hangs instead of being refused, so the harness's own poll is listed by the CLI's lsof -ti :PORT preflight (checks/preflight-race-reproduction.txt; the cause of the host behaviour is not established, and the 10-05 first composition build most likely failed the same way).
  • CI: osv-scanner fails on every open PR (GHSA-68fv-2mgg-jv7q, source-map-js 1.2.1 in the macOS application evidence lockfile), not on content of this PR; the verdict-review-gate entry that showed a failure is a cancelled earlier run (its steps all succeeded) that the body edit superseded.

seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

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

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…ss, guard, identity read-back, wrapper) after the full-scope read and the round-3 ruling; protocol is a DRAFT, v2 baselines pending

Pushed as a safe point before a supervised host restart (02:45Z); the canary hold is unchanged and no canary may run on this head.
- Scripts (all with offline controls, v1 vs v2 on a stub gateway, no gateway traffic; checks/acceptance-controls*.txt): raw acceptance (terminal and early close required, full predicate and stable rows at both reads, exit 3 for errors before any request),
  native acceptance (per-turn X-OmniRoute-Session-Id = call_logs.session_tag, completeness against the client's codex exec --json usage, the tool-call turn a gate, hangs INCONCLUSIVE), gateway-identity, pre-switch-guard, run-acceptance wrapper, receipt v2 (allowlist)
- checks/native-usage-calibration.txt: on the unpatched build every fully stored turn matched the client's usage exactly; 3 of 7 two-request turns lost the final request's rows
- validation script v5 (the patch's blob id must parse) with its real run and four controls; install script v3 (paths overridable, shim from the repository, inputs checked before npm install) with controls and a positive run without the NativeStack prefix layout;
  the handler tree-check control with its exit status as a line; dates of headers corrected; unshortened raw outputs kept privately and listed in checks/logs/MANIFEST.txt
- record: the reviews paragraph no longer calls the P1s fixed; 2604's kept prefix named; the live-acceptance paragraph describes version 2; the early-loss claim is qualified; the pending-request counter observation
- NOT in this push: the same-day v2 baselines (running when the restart was announced), the build script v3 real run, the frozen protocol (checks/live-acceptance-protocol.md says DRAFT)

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
… baselines, guard v3, build script v4 and the pack-boot finding

The patch is unchanged (sha256 74c0f449..., patched tree b7c68690...); the record, the acceptance protocol, its scripts and their evidence changed. Pre-deployment: the canary hold is unchanged and waits for the command center's lift.
- raw script 2.1: effort probes judged as groups of three attempts (the gateway stores the effort columns only for a response with encrypted reasoning, so NULL is unobservable), a reasoning-eliciting probe prompt chosen by a calibration series (45 of 45 attempts observed); the baselines rerun on the unpatched build cf6748d04: raw 20, race 6, native 4, tool-call turns 8 observed (race 6 of 6 lost, early:0 2 of 2, tool-call turns 5 of 8 incomplete)
- guard v3: connections classified by the owner of the client end, the 20129 gateway's poll tolerated by its unit, everything else must be idle; live trials of v3 and v2 (v2 failed on the poll at 05:13Z), control G12 reproduces that failure
- session-tag handler check: X-OmniRoute-Session-Id stored as call_logs.session_tag through the real handleChat path on the unpatched composition and the patched tree (4 of 4 each), with a negative control
- build script v4: check:pack-boot with the reviewed lsof shim v2 first on PATH; version 3 failed twice there (the harness's own poll is listed by the CLI's lsof -ti preflight because a connect to a never-bound closed loopback port hangs on this host); one-minute reproduction, probe, shim controls 10-12; the real run exits 0 at every gate, tarball compared entry by entry with the recorded one
- wrapper frozen with the committed baseline's sha256; offline controls rerun with the final bytes (parts A, B, B2, C, D)
- record: live-acceptance and build paragraphs updated, the first composition build's pack-boot failure explained; evidence README, superseded index and PR body rewritten

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…he full-scope read of 04e505a (1 P1, 8 P2, 5 P3)

The patch is unchanged (sha256 74c0f449..., patched tree b7c68690...); the acceptance scripts, the wrapper, the protocol, the record and their evidence changed. Pre-deployment: the canary hold is unchanged and waits for the command center's lift.
- P1 wrapper: every identity read is enforced (exit status, sentinels) and compared with the identity accepted at the start, so an unhealthy gateway, another build or a restart between runs voids the run (controls W7-W9)
- P2 raw script 2.2 / native script 2.1: effort observability from reasoning_source (a dropped effort fails the group), the usage row associated by provider, account, endpoint, latency and time to first token (a foreign look-alike is INCONCLUSIVE); controls R10, N10
- P2 guard 4: only EMPTY connections of the 20129 unit are tolerated (it also forwards inference), a failing ss or pgrep fails the check; controls G13-G16
- P2 wrapper: an unreadable journal or start timestamp blocks, the pre-switch control counts only valid samples (W10-W12); the pack-boot reproduction helper sets loopback and an API key and is rerun; the record's tool-call gate statement is corrected
- P3: effort probes printed three times, numeric confidence figures removed, closed-port wording narrowed, calibration numbers corrected
- baselines of the unpatched build rerun with the final scripts; offline controls rerun with the final bytes (each control reproduces the earlier version's defect next to the right answer); guard 4 live trial and watch

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/99-omniroute-drain-patch-20261005 branch from 04e505a to 5ffe200 Compare October 6, 2026 12:40
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Head 5ffe200f2 (content commit e04537446) re-freezes the live-acceptance protocol after 5f's full-scope read of 04e505a5d (GPT-6 Astra max, 10:44Z: 1 P1, 8 P2, 5 P3). All 14 findings are fixed or dispositioned (table in the PR body); the patch itself is unchanged. The baselines of the unpatched build were rerun with the final scripts (wrapper exit 0, 11:50-12:22Z) and the guard's new rule was tried live (clean at 12:24:45Z, the 20129 unit's empty connections tolerated).

  • No canary has run; the hold is unchanged. A new full-scope read of this head is requested from 5f, and the command center is asked to read checks/live-acceptance-protocol.md before any lift.
  • The restart slot is proposed only after that read and agreed with 5f.
  • The branch was rebased over origin/main b0df1fb04 (10 commits, no conflict); osv-scanner still fails on every open PR (source-map-js advisory in the macOS evidence lockfile), not on content of this PR.

seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…sage-association probe, corrected counts and wording)

No frozen script byte changed (raw 2.2, native 2.1, identity, guard 4 and the wrapper are byte-identical to the previous head); the changes are evidence and text only.
- checks/usage-association-probe.txt and scripts/probe-usage-association.py.txt: a read-only probe of the live store over 2026-10-05 12:00Z to 2026-10-06 10:56Z behind the usage association's tolerances: 458 call rows, each with exactly one same-model, same-count usage row, and all 458 pairs meet every field (provider, account, endpoint, latency within 100 ms, time to first token within 1 ms; maximum differences 51 ms and 0.5 ms); the docstrings say 457, an earlier unretained count, now stated in the README and the protocol
- the protocol and the README cite the probe; the controls header and the watch header say only what was observed (a worker of another lane was seen at 11:23Z; the unseen owner of one connection is not called idle)
- the PR body's older table rows that described behaviour the table of the full-scope read of 04e505a replaces now say so

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/99-omniroute-drain-patch-20261005 branch from 5ffe200 to 8f9d896 Compare October 6, 2026 12:45
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

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

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…ss, guard, identity read-back, wrapper) after the full-scope read and the round-3 ruling; protocol is a DRAFT, v2 baselines pending

Pushed as a safe point before a supervised host restart (02:45Z); the canary hold is unchanged and no canary may run on this head.
- Scripts (all with offline controls, v1 vs v2 on a stub gateway, no gateway traffic; checks/acceptance-controls*.txt): raw acceptance (terminal and early close required, full predicate and stable rows at both reads, exit 3 for errors before any request),
  native acceptance (per-turn X-OmniRoute-Session-Id = call_logs.session_tag, completeness against the client's codex exec --json usage, the tool-call turn a gate, hangs INCONCLUSIVE), gateway-identity, pre-switch-guard, run-acceptance wrapper, receipt v2 (allowlist)
- checks/native-usage-calibration.txt: on the unpatched build every fully stored turn matched the client's usage exactly; 3 of 7 two-request turns lost the final request's rows
- validation script v5 (the patch's blob id must parse) with its real run and four controls; install script v3 (paths overridable, shim from the repository, inputs checked before npm install) with controls and a positive run without the NativeStack prefix layout;
  the handler tree-check control with its exit status as a line; dates of headers corrected; unshortened raw outputs kept privately and listed in checks/logs/MANIFEST.txt
- record: the reviews paragraph no longer calls the P1s fixed; 2604's kept prefix named; the live-acceptance paragraph describes version 2; the early-loss claim is qualified; the pending-request counter observation
- NOT in this push: the same-day v2 baselines (running when the restart was announced), the build script v3 real run, the frozen protocol (checks/live-acceptance-protocol.md says DRAFT)

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
… baselines, guard v3, build script v4 and the pack-boot finding

The patch is unchanged (sha256 74c0f449..., patched tree b7c68690...); the record, the acceptance protocol, its scripts and their evidence changed. Pre-deployment: the canary hold is unchanged and waits for the command center's lift.
- raw script 2.1: effort probes judged as groups of three attempts (the gateway stores the effort columns only for a response with encrypted reasoning, so NULL is unobservable), a reasoning-eliciting probe prompt chosen by a calibration series (45 of 45 attempts observed); the baselines rerun on the unpatched build cf6748d04: raw 20, race 6, native 4, tool-call turns 8 observed (race 6 of 6 lost, early:0 2 of 2, tool-call turns 5 of 8 incomplete)
- guard v3: connections classified by the owner of the client end, the 20129 gateway's poll tolerated by its unit, everything else must be idle; live trials of v3 and v2 (v2 failed on the poll at 05:13Z), control G12 reproduces that failure
- session-tag handler check: X-OmniRoute-Session-Id stored as call_logs.session_tag through the real handleChat path on the unpatched composition and the patched tree (4 of 4 each), with a negative control
- build script v4: check:pack-boot with the reviewed lsof shim v2 first on PATH; version 3 failed twice there (the harness's own poll is listed by the CLI's lsof -ti preflight because a connect to a never-bound closed loopback port hangs on this host); one-minute reproduction, probe, shim controls 10-12; the real run exits 0 at every gate, tarball compared entry by entry with the recorded one
- wrapper frozen with the committed baseline's sha256; offline controls rerun with the final bytes (parts A, B, B2, C, D)
- record: live-acceptance and build paragraphs updated, the first composition build's pack-boot failure explained; evidence README, superseded index and PR body rewritten

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…he full-scope read of 04e505a (1 P1, 8 P2, 5 P3)

The patch is unchanged (sha256 74c0f449..., patched tree b7c68690...); the acceptance scripts, the wrapper, the protocol, the record and their evidence changed. Pre-deployment: the canary hold is unchanged and waits for the command center's lift.
- P1 wrapper: every identity read is enforced (exit status, sentinels) and compared with the identity accepted at the start, so an unhealthy gateway, another build or a restart between runs voids the run (controls W7-W9)
- P2 raw script 2.2 / native script 2.1: effort observability from reasoning_source (a dropped effort fails the group), the usage row associated by provider, account, endpoint, latency and time to first token (a foreign look-alike is INCONCLUSIVE); controls R10, N10
- P2 guard 4: only EMPTY connections of the 20129 unit are tolerated (it also forwards inference), a failing ss or pgrep fails the check; controls G13-G16
- P2 wrapper: an unreadable journal or start timestamp blocks, the pre-switch control counts only valid samples (W10-W12); the pack-boot reproduction helper sets loopback and an API key and is rerun; the record's tool-call gate statement is corrected
- P3: effort probes printed three times, numeric confidence figures removed, closed-port wording narrowed, calibration numbers corrected
- baselines of the unpatched build rerun with the final scripts; offline controls rerun with the final bytes (each control reproduces the earlier version's defect next to the right answer); guard 4 live trial and watch

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…sage-association probe, corrected counts and wording)

No frozen script byte changed (raw 2.2, native 2.1, identity, guard 4 and the wrapper are byte-identical to the previous head); the changes are evidence and text only.
- checks/usage-association-probe.txt and scripts/probe-usage-association.py.txt: a read-only probe of the live store over 2026-10-05 12:00Z to 2026-10-06 10:56Z behind the usage association's tolerances: 458 call rows, each with exactly one same-model, same-count usage row, and all 458 pairs meet every field (provider, account, endpoint, latency within 100 ms, time to first token within 1 ms; maximum differences 51 ms and 0.5 ms); the docstrings say 457, an earlier unretained count, now stated in the README and the protocol
- the protocol and the README cite the probe; the controls header and the watch header say only what was observed (a worker of another lane was seen at 11:23Z; the unseen owner of one connection is not called idle)
- the PR body's older table rows that described behaviour the table of the full-scope read of 04e505a replaces now say so

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
seathatflowsinourveins pushed a commit that referenced this pull request Oct 6, 2026
…(guard 5, row-level census, build 5, smoke 5, install 4)

No frozen script byte changed: raw script 2.2, native script 2.1, the identity read-back and the wrapper keep their git blobs (f3712b6, 71215df, afcf63f, edefc1d) and the raw baseline is unchanged (the command center's option (b): no re-baseline). The patch is unchanged.
- P2-1 (the scripts' usage association is exclusive per request only): a recorded residual of the frozen scripts, closed for the canary window by a NEW non-frozen census gate, scripts/window-census.py.txt: own call rows by tag only, a unique perfect matching per connected component between own call rows and usage rows (the scripts' own candidate query and association rule, byte for byte), no foreign call row, no orphan usage row, a clean guard 5 --idle-only receipt at the window's start, agreeing clocks, a zero journal count; INCONCLUSIVE otherwise. checks/census-controls.txt (84 results: replacement case, one row short, foreign call row, two candidates, orphan, unreadable store, exact match; parity with the frozen scripts; matching against a brute force and scipy's maximum_bipartite_matching), checks/census-baseline-real-data.txt (real rows), checks/census-live-trial.txt (a live quiet-window trial)
- P2-2/P2-3: guard 5 parses ss strictly, keys connections by the full normalized tuple, fails closed (checks/guard5-controls.txt, checks/guard5-existing-controls.txt, checks/guard-live-trial.txt)
- P2-4: build script 5 checks git status's exit status and enforces git diff --quiet (controls 13-19, a real offline run: checks/build-v5-results.txt)
- P2-5: smoke script 5 separates an unavailable process-group observation from an empty group (checks/smoke-observation-control.txt)
- P2-6 and the record's journal-size figure: wording and figure corrected in the decision record
- P3: install script 4 (deps-hash failures are UNAVAILABLE), compare_dry_run's wording, build-v5 results wording, README inventory, the log manifest (4 superseded files, private copies rebuilt), protocol chronology and reproduction sentences; the stale 5/8 in the native script's docstring is frozen bytes and is corrected in text only (7 of 8 tool-call turns incomplete in the retained baseline)
- the protocol gains the idle receipt (step 7b), the census (step 8b), the burst-timing rule and the amendments entry; superseded copies of guard 4, build 4, smoke 4, install 3 and the earlier trial are kept

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@seathatflowsinourveins
seathatflowsinourveins force-pushed the claude/99-omniroute-drain-patch-20261005 branch from 8f9d896 to 6b734c6 Compare October 6, 2026 18:37
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Repair round for the command center's RULING-757-R19 after 5f's FINAL delta check r18 of 6b5e929e (GPT-6 Astra max on the packaged worker: 1 P1, 1 P2, 2 P3, canary_ok false; the class fix of round 29 holds), pushed as 9db475cf4fc4b95d290593b5540e26984935155e (content 2185248d12ec86b7739490ecfb39692904a20f64): one push, two changes, nothing else. The census (scripts/window-census.py.txt, sha256 90d5ceeb..., 30 changed lines: checks/census-delta-after-r18-read.txt; every PASS is a PASS of the censuses that the reads r15, r16, r17 and r18 read; the frozen scripts, the patch, the property test, the guard and the runner control are unchanged):

  • The P1 (:1290 of the head that was read): IDENTITY pending_total=0 followed by INFO 1 1 False, a visible increase inside the receipt's interval, passed at scope=canary, because only MainPID and ExecMainStartTimestamp were kept from the IDENTITY line. Now the first IDENTITY line's pending_total is kept (:1270), an IDENTITY line that mentions it must be the guard's native line (GUARD_IDENTITY_LINE, :1175), and after the loop of parse_guard the three readings are reconciled (:1323): an unreadable value or a readable disagreement with either INFO reading is INCONCLUSIVE, equal values (the stale 92/92/92) pass; at canary scope the reconciliation needs the counter on the IDENTITY line (:1508), since a receipt that gives none cannot be reconciled. Controls G19a (0 then 1 and 1, canary: INCONCLUSIVE), G19b (equal values, canary: PASS), G19c, G19d (trial), G19e, G19f, G19g, G19k, G19l, G19m (canary), G19n (trial). 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).
  • The P2: a receipt with no INFO line was accepted in the canary path; the canary gate needs exactly one INFO line (:1506); none or several are INCONCLUSIVE, a trial is not touched: G19h, G19i, G19j. The controls' fixture writer writes the guard's quiet INFO line and its IDENTITY line by default, so the canary-scope worlds of the controls and of the property test carry the two lines.
  • Bounded residuals (the ruling's rule for anything outside the changed lines; also in the record and the PR description): 5f's P3s of round 18 (ANSI-decorated or obfuscated field names; sample timestamps checked by shape only); the grammar is guard 5 as printed; no census can prove who wrote a receipt.
  • The lift condition (command center, 2026-10-06 22:04Z, unchanged): a clean FULL-scope read with no P0 or P1 and every P2 fixed or accepted by the command center, the residual stated verbatim as an untested boundary with its evidence classes, and acceptance needs one real live PASS (condition 3: if every live arm is INCONCLUSIVE, the canary is not accepted: report it and stop). The next step is 5f's one delta check of this diff (the end of the rounds: on a pass 5f relays canary_ok=true with the head and the command center gives the canary word); no live PASS exists so far. The canary stays held.

🤖 Generated with Claude Code

@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Repair for 5f's bounded delta check r19 of 9db475cf4 (GPT-6 Astra max on the packaged worker: 1 P1, canary_ok false; both changes of RULING-757-R19 are fixed), ordered by the command center's RULING-757-R20 (exactly one condition and four controls, nothing else), pushed as def9e67a7db730e07f10d23d3bc691d1d7ab07ad (content c812fd22873dcb174493d2140277b7e052c66a3c). The census (scripts/window-census.py.txt, sha256 2ec9a649..., ONE line changed: checks/census-delta-after-r19-read.txt; every PASS is a PASS of the censuses that the reads r15, r16, r17, r18 and r19 read; the frozen scripts, the patch, the property test, the guard and the runner control are unchanged):

  • The P1 (:1187 of the head that was read): the guard's native IDENTITY pattern takes non-space values, so running_prefix=workers=2 (and connections_active=1, active_so_far=2, last_call_log_age_s=0 embedded the same way) fully matched it, was returned as accepted before the scan for activity fields and was skipped by the early continue for IDENTITY lines: the census of round 29 refused such a receipt, the census of round 30 PASSed it at scope=canary. Now the IDENTITY line is accepted only when activity_values(line) finds nothing as well (:1194; pending_total is not an activity field, so the guard's native line has none).
  • The four 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): exit 2 (INCONCLUSIVE) on the census of round 29 and on the repaired census, 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). The native-guard replays stay as they were (G19a: 0 then 1 and 1 INCONCLUSIVE; G19b: 92/92/92 PASS; G19c: 1 then 0 and 0 INCONCLUSIVE at trial scope; G19d: 3/3/3 PASS at trial scope).
  • Refusals only: the controls against the censuses that 5f read at r15 to r19 (per result; G20a-G20d are the worlds that the census of round 30 accepted and this one refuses), the 251 worlds of the fifth review's harness on nine cuts (no verdict differs between r25 and r31), and the property test (unchanged: 0 disagreements in 600 worlds and in two more seeds of 900).
  • Bounded residuals (the ruling's rule for anything outside the changed lines; also in the record and the PR description): 5f's P3s of round 18 (ANSI-decorated or obfuscated field names; sample timestamps checked by shape only); the grammar is guard 5 as printed; no census can prove who wrote a receipt.
  • The lift condition (command center, 2026-10-06 22:04Z, unchanged): a clean FULL-scope read with no P0 or P1 and every P2 fixed or accepted by the command center, the residual stated verbatim as an untested boundary with its evidence classes, and acceptance needs one real live PASS (condition 3: if every live arm is INCONCLUSIVE, the canary is not accepted: report it and stop). The next step is 5f's one check, bounded to that condition and its controls (RULING-757-R20: a defect there goes to the command center, there is no further repair round without a new ruling; on a pass 5f relays canary_ok=true with the head and the command center gives the canary word); no live PASS exists so far. The canary stays held.

🤖 Generated with Claude Code

@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Canary of the drain build on NativeStack's 20128 (the command center's RULING-757-CANARY-W2, at the frozen head def9e67a7, accepted by 5f's bounded delta check r20 with canary_ok=true; window 1 was stood down for the owner's client update before any switch): PASS. The switch happened at 2026-10-07T23:41:47Z (that unit only: MainPID 341 cf6748d04 -> 339027 2a41147b7, identity_ok=True; 20129 untouched) and stays.

  • Arms (the frozen protocol v2, the wrapper exited 0): raw set PASS 20, race set PASS 6, native single-request turns PASS 4, native tool-call turns PASS 8, at both reads.
  • Census: CENSUS-RESULT PASS exit=0 problems=0 scope=canary (43 inbound lines, 43 call rows, 43 usage rows, 0 foreign, no orphan; one listener pid, no clock step, no rowless arrival).
  • Journal scans by hand, at the end of the acceptance (00:23:03Z) and 30 minutes later (00:53:14Z): journal_failed_to_save_call_log=0, exit 0 both.
  • Pre-switch control on the unpatched build: race 6 of 6 lost (it discriminates), native two-request incomplete 1 of 4.
  • This push (205c1cd61, content commit 089b2082c, rebased over origin/main 36654a817, 23 commits, no conflict) adds only the recorded results: the 17 files checks/live-acceptance-canary-*.txt, their rows in checks/logs/MANIFEST.txt (the unshortened text is kept privately), the one README row that names them and one dated update section of the decision record; registry commit last. No script, control or census byte changed. The PR title and description now say so.

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 its receipt. The landing is 5f's on the command center's cue; the 2604 install is the command center's to cue.

🤖 Generated with Claude Code

Scout and others added 25 commits October 7, 2026 22:02
… the cause of the dropped call_logs and usage_history rows, and the OMNIROUTE_SHOW_LOG drop-ins

A client that closes right after response.completed (codex exec does) skipped the SSE transform's flush(), so no call_logs and no usage_history row were written: found on 2604, reproduced on 20128 with the earlier
PR 15167 head. The patch reuses upstream's own drainCompletedToolHandoff for the case where the client already has the terminal event; it is tested in a scratch tree (negative control, 236 stream-related upstream test files,
call-log, usage-history and chat-pipeline tests); build, reviews and deployment follow. The 09-30 record gets the dated note on the supervisor dropping the child's console output and the drop-ins on both units.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…off drain, pending entry on expiry), corrected claims, six tests with two negative controls

- patch: cancel() starts the terminal drain before the tool-handoff return; the drain clears the pending-request entry when the grace period expires;
  six tests (unpatched: 3 fail, first version: 2 fail, patch: 6 pass); stream set of 239 files; the first version is kept as the superseded patch for the control
- record: the other routes to onStreamComplete (failure paths) and the persistence chain, the 93.2% share as observed under incomplete logging,
  the supervisor's exceptions, line numbers checked at the pin; source-lines.txt regenerated from the pinned mirror; README build status

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…ts scratch directory, control run, build record, wording precision

- scripts/drain-prototype.sh.txt: the composition and patched tree ids are compared with the expected ones and the script exits 3 before the patched test stages on a mismatch
  (control run with a wrong expected tree: checks/drain-prototype-tree-check-control.txt); every setup step is checked (pipefail); the script creates its own mktemp directory and deletes nothing
- checks/build-results.txt, scripts/install-drain.sh.txt, scripts/smoke.sh.txt: the build of the patched tree with upstream's release scripts (all steps exit 0, both boots healthy, persistence proven,
  a fresh pack reproduces the tarball), its install into a new prefix and the scratch boot smoke; results re-generated from a fresh run of the final script
- record and source-lines: finalizeStreamRequestLog finalizes the pending-request entry; handleComplete persists nothing; README and record updated for the finished build

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…, smoke script uses a free port and its own process group, controls for both

- scripts/drain-prototype.sh.txt: the copy of the new test file is a checked step, and a missing input file or mirror stops the script with exit 2 before any directory is created
  (checks/drain-prototype-missing-fixture-control.txt); results regenerated from a fresh run of the final script
- scripts/smoke.sh.txt: free port, child in its own process group, success needs a listener of that group, cleanup signals only that group; the superseded script falsely passed against an
  unrelated healthy process (checks/smoke-results.txt: three runs, with scripts/smoke-superseded.sh.txt and scripts/smoke-control.sh.txt)

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…PGID column and requires it empty, with a selector control

- scripts/smoke.sh.txt: the processes left in the owned group are counted with a filter on the PGID column (ps -g selects by session, so the earlier count of 0 proved nothing),
  the group must be empty again after cleanup for the smoke to succeed, and the count before cleanup is printed (3 processes, 0 after)
- checks/smoke-group-selector-control.txt + scripts/smoke-group-selector-control.sh.txt: the leader's pgid differs from its session, ps -g counts 0 members of a group of 2,
  the PGID filter counts 2 and then 0 after the group is killed; checks/smoke-results.txt regenerated from three fresh runs of the final script
- README, build record and decision record updated

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…al handleChat path, stubbed upstream), with a tree-check control

- scripts/handler-e2e.sh.txt + scripts/handler-e2e-terminal-close.test.ts.txt: a Responses client reads until response.completed and closes while the upstream body is open for 150 ms more;
  the real handleChat -> chatCore -> stream pipeline -> call-log and usage writers run with a stubbed fetch and a temporary database (upstream's chat-pipeline harness style)
- checks/handler-e2e-results.txt: unpatched composition, 3 of 4 scenarios end with no call_logs and no usage_history row (a Codex-originated client; clients whose request signal aborts first),
  patched tree, 4 of 4 end with both rows; composition and patched tree ids checked; checks/handler-e2e-tree-check-control.txt: wrong expected tree, exit 3 before the patched stage
- README and decision record updated; the patch, its tests and the validation results are unchanged

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…ve-acceptance protocol with same-day baselines, hardened validation/e2e/build/install/smoke scripts with controls, retained logs, value-free receipt, superseded attempts kept

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

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…ss, guard, identity read-back, wrapper) after the full-scope read and the round-3 ruling; protocol is a DRAFT, v2 baselines pending

Pushed as a safe point before a supervised host restart (02:45Z); the canary hold is unchanged and no canary may run on this head.
- Scripts (all with offline controls, v1 vs v2 on a stub gateway, no gateway traffic; checks/acceptance-controls*.txt): raw acceptance (terminal and early close required, full predicate and stable rows at both reads, exit 3 for errors before any request),
  native acceptance (per-turn X-OmniRoute-Session-Id = call_logs.session_tag, completeness against the client's codex exec --json usage, the tool-call turn a gate, hangs INCONCLUSIVE), gateway-identity, pre-switch-guard, run-acceptance wrapper, receipt v2 (allowlist)
- checks/native-usage-calibration.txt: on the unpatched build every fully stored turn matched the client's usage exactly; 3 of 7 two-request turns lost the final request's rows
- validation script v5 (the patch's blob id must parse) with its real run and four controls; install script v3 (paths overridable, shim from the repository, inputs checked before npm install) with controls and a positive run without the NativeStack prefix layout;
  the handler tree-check control with its exit status as a line; dates of headers corrected; unshortened raw outputs kept privately and listed in checks/logs/MANIFEST.txt
- record: the reviews paragraph no longer calls the P1s fixed; 2604's kept prefix named; the live-acceptance paragraph describes version 2; the early-loss claim is qualified; the pending-request counter observation
- NOT in this push: the same-day v2 baselines (running when the restart was announced), the build script v3 real run, the frozen protocol (checks/live-acceptance-protocol.md says DRAFT)

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… baselines, guard v3, build script v4 and the pack-boot finding

The patch is unchanged (sha256 74c0f449..., patched tree b7c68690...); the record, the acceptance protocol, its scripts and their evidence changed. Pre-deployment: the canary hold is unchanged and waits for the command center's lift.
- raw script 2.1: effort probes judged as groups of three attempts (the gateway stores the effort columns only for a response with encrypted reasoning, so NULL is unobservable), a reasoning-eliciting probe prompt chosen by a calibration series (45 of 45 attempts observed); the baselines rerun on the unpatched build cf6748d04: raw 20, race 6, native 4, tool-call turns 8 observed (race 6 of 6 lost, early:0 2 of 2, tool-call turns 5 of 8 incomplete)
- guard v3: connections classified by the owner of the client end, the 20129 gateway's poll tolerated by its unit, everything else must be idle; live trials of v3 and v2 (v2 failed on the poll at 05:13Z), control G12 reproduces that failure
- session-tag handler check: X-OmniRoute-Session-Id stored as call_logs.session_tag through the real handleChat path on the unpatched composition and the patched tree (4 of 4 each), with a negative control
- build script v4: check:pack-boot with the reviewed lsof shim v2 first on PATH; version 3 failed twice there (the harness's own poll is listed by the CLI's lsof -ti preflight because a connect to a never-bound closed loopback port hangs on this host); one-minute reproduction, probe, shim controls 10-12; the real run exits 0 at every gate, tarball compared entry by entry with the recorded one
- wrapper frozen with the committed baseline's sha256; offline controls rerun with the final bytes (parts A, B, B2, C, D)
- record: live-acceptance and build paragraphs updated, the first composition build's pack-boot failure explained; evidence README, superseded index and PR body rewritten

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…he full-scope read of 04e505a (1 P1, 8 P2, 5 P3)

The patch is unchanged (sha256 74c0f449..., patched tree b7c68690...); the acceptance scripts, the wrapper, the protocol, the record and their evidence changed. Pre-deployment: the canary hold is unchanged and waits for the command center's lift.
- P1 wrapper: every identity read is enforced (exit status, sentinels) and compared with the identity accepted at the start, so an unhealthy gateway, another build or a restart between runs voids the run (controls W7-W9)
- P2 raw script 2.2 / native script 2.1: effort observability from reasoning_source (a dropped effort fails the group), the usage row associated by provider, account, endpoint, latency and time to first token (a foreign look-alike is INCONCLUSIVE); controls R10, N10
- P2 guard 4: only EMPTY connections of the 20129 unit are tolerated (it also forwards inference), a failing ss or pgrep fails the check; controls G13-G16
- P2 wrapper: an unreadable journal or start timestamp blocks, the pre-switch control counts only valid samples (W10-W12); the pack-boot reproduction helper sets loopback and an API key and is rerun; the record's tool-call gate statement is corrected
- P3: effort probes printed three times, numeric confidence figures removed, closed-port wording narrowed, calibration numbers corrected
- baselines of the unpatched build rerun with the final scripts; offline controls rerun with the final bytes (each control reproduces the earlier version's defect next to the right answer); guard 4 live trial and watch

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…sage-association probe, corrected counts and wording)

No frozen script byte changed (raw 2.2, native 2.1, identity, guard 4 and the wrapper are byte-identical to the previous head); the changes are evidence and text only.
- checks/usage-association-probe.txt and scripts/probe-usage-association.py.txt: a read-only probe of the live store over 2026-10-05 12:00Z to 2026-10-06 10:56Z behind the usage association's tolerances: 458 call rows, each with exactly one same-model, same-count usage row, and all 458 pairs meet every field (provider, account, endpoint, latency within 100 ms, time to first token within 1 ms; maximum differences 51 ms and 0.5 ms); the docstrings say 457, an earlier unretained count, now stated in the README and the protocol
- the protocol and the README cite the probe; the controls header and the watch header say only what was observed (a worker of another lane was seen at 11:23Z; the unseen owner of one connection is not called idle)
- the PR body's older table rows that described behaviour the table of the full-scope read of 04e505a replaces now say so

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…(guard 5, row-level census, build 5, smoke 5, install 4)

No frozen script byte changed: raw script 2.2, native script 2.1, the identity read-back and the wrapper keep their git blobs (f3712b6, 71215df, afcf63f, edefc1d) and the raw baseline is unchanged (the command center's option (b): no re-baseline). The patch is unchanged.
- P2-1 (the scripts' usage association is exclusive per request only): a recorded residual of the frozen scripts, closed for the canary window by a NEW non-frozen census gate, scripts/window-census.py.txt: own call rows by tag only, a unique perfect matching per connected component between own call rows and usage rows (the scripts' own candidate query and association rule, byte for byte), no foreign call row, no orphan usage row, a clean guard 5 --idle-only receipt at the window's start, agreeing clocks, a zero journal count; INCONCLUSIVE otherwise. checks/census-controls.txt (84 results: replacement case, one row short, foreign call row, two candidates, orphan, unreadable store, exact match; parity with the frozen scripts; matching against a brute force and scipy's maximum_bipartite_matching), checks/census-baseline-real-data.txt (real rows), checks/census-live-trial.txt (a live quiet-window trial)
- P2-2/P2-3: guard 5 parses ss strictly, keys connections by the full normalized tuple, fails closed (checks/guard5-controls.txt, checks/guard5-existing-controls.txt, checks/guard-live-trial.txt)
- P2-4: build script 5 checks git status's exit status and enforces git diff --quiet (controls 13-19, a real offline run: checks/build-v5-results.txt)
- P2-5: smoke script 5 separates an unavailable process-group observation from an empty group (checks/smoke-observation-control.txt)
- P2-6 and the record's journal-size figure: wording and figure corrected in the decision record
- P3: install script 4 (deps-hash failures are UNAVAILABLE), compare_dry_run's wording, build-v5 results wording, README inventory, the log manifest (4 superseded files, private copies rebuilt), protocol chronology and reproduction sentences; the stale 5/8 in the native script's docstring is frozen bytes and is corrected in text only (7 of 8 tool-call turns incomplete in the retained baseline)
- the protocol gains the idle receipt (step 7b), the census (step 8b), the burst-timing rule and the amendments entry; superseded copies of guard 4, build 4, smoke 4, install 3 and the earlier trial are kept

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… (padded call rows, whole-table timestamp format, duplicated usage rows, arm-file hygiene), controls Y1-Y10b

No frozen script byte changed (git blobs f3712b6, 71215df, afcf63f, edefc1d as before). Only the new, non-frozen census (scripts/window-census.py.txt), its controls and the texts that describe it change.
An adversarial fuzz review of the census (read-only, 5,000 random worlds with ground truth and 44 hand-made attacks) found ten problems; each false PASS outside the documented residual and each silent skip is fixed and has a control:
- call rows are read over the same 3 s pad as usage rows (a foreign request that finished just before the window had its usage row in the pad and could stand in for a dropped own one);
- the timestamp format is checked over the whole tables (epoch text, a leading space, another offset or a BLOB no longer escape the string bounds);
- a group of usage rows with identical metadata is a problem (a duplicated usage row standing in for the next identical call's dropped one);
- an arm file must hold one run (a second FROZEN, SUMMARY, journal or header line, a VOID anywhere, a RESULT line the census cannot parse and an identity line without both fields are problems; the identity fields are read in any order);
- NULL columns no longer lose the receipt, a stamp outside 2000-2100 is unparsable (no overflow), clean_for must be finite, an unparsable FROZEN start= is a problem and a store path with a space is read correctly;
- the residual is described at its real width (a foreign usage row the association cannot tell from an own request's: same model, counts, provider, account and endpoint, latency within 100 ms, first-token time within 1 ms, within 3 s).
checks/census-controls.txt: 101 results (Y1-Y10b are the reproductions); the 600-world property test and the census on the real baseline and live-trial rows were rerun with the new text (baseline 26/0/26/0 unchanged, live arm A still PASS).

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…er the full-scope reads r10 (6b734c6) and r11 (41a6716): exact competing-owner check, interval wait, canary-gate contract and frozen request counts, validated stamps, reserved records, numeric plausibility, private-namespace Part E, a narrowed residual claim

No frozen script byte changed (git blobs f3712b6, 71215df, afcf63f, edefc1d as before). The census (scripts/window-census.py.txt, not frozen), its controls, the guard-5 controls and the texts that describe them change.
- P2-1: besides the 3 s pad, the census refuses every call row that is not this run's and could own a usage row an own call row can claim, wherever it lies (controls Y11, Y12a-c);
- P2-2: the store is read only after the declared interval (window end, 3 s usage pad, 2 s settling) has elapsed on the host clock (waits up to 30 s, a further-ahead interval is INCONCLUSIVE; controls W1-W3b in real time);
- P2-3: the canary gate requires the wrapper's canary header and the identity line in every arm and the receipt, all comparisons succeeding; result line scope=canary / scope=trial (controls D1-D6);
- P2-4: the idle receipt's observed interval (start to end) must be 30 s or more and cover the declared clean_for (controls G11-G11g);
- P2-5: Part E of the guard-5 controls ran the guard with its default port, so its read-only /api/usage/history requests reached the live gateway; every guard run now sits in a private network namespace with a stub of that endpoint (E0, E0b); the old controls and record move to superseded/ and the statements that no gateway request was sent are corrected;
- r11: whole-table timestamps validated as calendar-valid stamps (not by shape); reserved records (RESULT with a tab or a leading space, a malformed SUMMARY, an empty FROZEN start=) refused and the canary's frozen request counts per arm (17, 6, 4, 8) required; an invalid script stamp is never rescued by another; numbers that cannot be compared (NaN, a negative value, a time to first token longer than the latency) refused; the trailing boundary closed by the exact check; one read snapshot; one run per guard receipt;
- r11 P2-1 (the documented substitution residual): the census now reads the gateway's own journal, which logs one inbound-request line per request when it arrives whatever happens to its rows, and requires, from 4 s before the window to its end, exactly as many lines as own call rows, each paired with a line of the same path within 3 s (controls J1-J20; on the baseline arms 43 inbound requests against 26 own rows: the 17 dropped requests); the claim is narrowed to what that supports (a foreign request the gateway did not log, a lost own line balanced by a foreign line of the same path within 3 s of it or of a neighbouring own request's line, and an unlogged persistence failure stay outside);
- independent adversarial review of the census before the push: 11 findings (2 P1: non-ASCII digits in a stamp hiding a foreign row, a printed min_rows and a different arm command trusted; 7 P2; 2 P3), all fixed fail-closed with controls F1a-F11 (checks/census-adversarial-reviews.txt);
- a second independent adversarial review, of the journal check: 9 findings (1 P1, 5 P2, 3 P3; three false PASSes in the canary's scope: a foreign request up to 3.1 s before the window, a null message skipped silently, a lost line chained through the pairing), all fixed fail-closed (controls J12a-J20, J13j; checks/census-adversarial-reviews.txt);
- P3: the protocol's chronology and R10c/N10b framing, the README's watches and control-run descriptions, the installed-candidate wording of the dependency graph.
checks/census-negative-controls.txt runs the new controls against the censuses that were read (false PASSes on the first two; the second review's J12a, J12b, J13a-J13h, J16 and J19a on the third); 214 census control results, the 600-world property test and the census on the real rows rerun.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… of 4624137 (2 P1, 5 P2, 9 P3): journal record anchored at the end of the lifecycle with start agreement, serving-process gate, enforced runner exit status, executable-prefix guard, a receipt that never reports an unobserved state as zero, smoke cleanup from the launch, a real-run gate

No frozen script byte changed (git blobs f3712b6, 71215df, afcf63f, edefc1d as before; the patch is unchanged). The census (scripts/window-census.py.txt, not frozen; the complete diff is checks/census-delta-after-r12-read.txt), its controls, the guard, the three native test runners, the smoke and install scripts, the show-log receipt script and the texts that describe them change.
- r12 P1-1 (a substituted usage row still PASSed): 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 and control J12c itself expected the false PASS; the independent record is now anchored at the END of the lifecycle (the stream controller's stream-end line, whose time is where the rows are written, with the disconnect grace as the bounded tail of a drain), a matched usage row must have the clock start of its call row, J12c is INCONCLUSIVE (J22a-J22u, J23a-J23d);
- r12 P1-2 (the serving child can restart under the persistent supervisor with MainPID and its start unchanged): the census establishes the serving process itself (listener, cgroup, start, writer of the request lines, the supervisor's restart strings and the child's startup banners, the holders of the store) and the journal's own limits (J24a-J24n, J25a-J25h);
- r12 P2-1: the width of the residual is stated in estimated-start terms, the arrival's delay as unbounded (J27a-J27c);
- r12 P2-2: drain-prototype (6), handler-e2e (3) and handler-e2e-session-tag (2) enforce each stage's test-runner exit status (checks/runner-exit-status-controls.txt: fails on 4624137, passes here);
- r12 P2-3, P3-9: the show-log receipt reports an unavailable or empty systemctl/journalctl observation as unavailable and exits 2, and applies upstream's predicate to the parsed Environment (checks/show-log-receipt-controls.txt);
- r12 P2-4: the guard (version 5, new sha256) requires the entrypoint and the shim to be regular files, symlinks resolved, readable and executable (K12-K19, E7; the census pins the repaired guard for the canary and accepts the earlier one for a trial: J29a, J29b); the whole G series including G9-G13 is rerun (checks/guard5-existing-controls-poller.txt);
- r12 P2-5: the smoke (6) arms its cleanup at the launch (checks/smoke-initial-ps-control.txt);
- r12 P3: E6 runs in the namespace; r10 and r11 are labelled delta reads everywhere and the lift condition is a FULL-scope read; the control inventory says which controls run the earlier version next to the current one; the build receipt's header names the retained paths; the journal command is printed on failure; the property test's expected-PASS bucket is described as including the documented residual worlds; the install comment names the committed shim; the real-run gate (scripts/real-run-gate.sh.txt) rejects the wrapper's test-only variables without changing its frozen bytes; the figures that earlier texts quoted have a published command and output (scripts/census-calibration.py.txt, checks/census-calibration-measurements.txt).
- a third independent adversarial review of the census before the push (1 P1, 4 P2, 4 P3): a restart of the serving child was invisible (= r12 P1-2), the residual line claimed that no control observes its worlds, reserved words were recognised only after a prefix, two crashes without a receipt (5,000 digits, a NUL), no arrival lead at the range's end, the canary gate did not pin the wrapper's verdict mode and reads, and arrival lines were timed by journald's receive stamp (J28a-J28q);
- 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.
checks/census-negative-controls.txt runs the new controls against the censuses that were read, among them the one that r12 read (superseded/window-census-r13.py.txt); 336 census control results, the 600-world property test and the census on the real rows rerun.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…the command center's GPT read: 1 P1, 2 P2, 1 P3; 5f's FULL read r13: 2 P1, 5 P2, 5 P3): the canary's census accounts for every inbound request line since the serving process's start, a fixture run is never scope=canary, a manual journal scan that checks journalctl, a gate and a receipt that refuse what they cannot establish

No frozen script byte changed (git blobs f3712b6, 71215df, afcf63f, edefc1d as before; the patch is unchanged). The census (scripts/window-census.py.txt, not frozen; the complete diff is checks/census-delta-after-r13-read.txt), its controls, the real-run gate, the show-log receipt script and the texts that describe them change; scripts/journal-save-failures.sh.txt (the manual journal scan) and the two native reproductions of 5f's read (scripts/late-end-reviewer-tests/) are new.
- r13 P1 (command center; 5f r13-P1-1): control J22e recorded PASS for a NON-STREAMING foreign substitution, whose arrival line precedes its duration clock by more than the counted range (the lead is unbounded: 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 now needs its own call row of its path, whatever its lead (a maximum matching: controls X6, J36a-J37g), and the journal must reach the 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; its own startup banners are not restart evidence: J38a-J38i, J44a-J45b). J22e is INCONCLUSIVE.
- 5f r13-P1-2: 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 (5.75 s measured natively at default queues: checks/late-end-native-reproduction.txt, 5f's two node:test reproductions rerun here). The stream-end record is a second record and not a bound (the claims said otherwise and are restated), and a late-ending foreign stream is covered by the arrival matching (J40a-J40f).
- r13 P2 (command center; 5f r13-P2-1): a run on a fixture /proc root (CENSUS_PROC_ROOT) reached scope=canary. It says scope=canary-fixture (or trial-fixture) now, as does a run whose journalctl, ss, systemctl or systemd-analyze is not the system's, and the protocol accepts only scope=canary (J39a-J39d, X7).
- r13 P2 (command center; 5f r13-P2-2): the manual journal scan, a pipeline into grep -c, printed 0 when journalctl failed or read nothing. scripts/journal-save-failures.sh.txt checks journalctl's exit status and stderr, an empty read and the start timestamp, and says JOURNAL-UNAVAILABLE (exit 2: no acceptance, no queueing); 17 cases and real read-only runs on the host (checks/journal-save-failures-controls.txt, checks/journal-save-failures-live-read.txt).
- 5f r13-P2-3: the real-run gate accepted a failed environment listing (a stand-in that exited 42 printed clean); it refuses it now (G9a-G9d; G9a-G9c fail on the gate as it was). 5f r13-P2-4: the show-log receipt accepted a partial journal read (journalctl exit 0 with `some journal files were not opened` on stderr); it prints it as unavailable and exits 2 (d3, d4). 5f r13-P2-5: the decision record, the README and the protocol are restated in terms of estimated starts, the counted ranges, the unbounded arrival lead and the late stream-end line.
- P3: delta reads are no longer called full-scope reads (census-controls.py:10, guard5-controls.py:4, superseded/README.md:33); the protocol's inventory of the controls that run an earlier version (G13-G15 and W7-W12 are paired, G16 alone is current-only) and the record's four drain-prototype controls; a journal timeout keeps its stderr (X8); journal_events names its two clocks; one primary stream-end line per controller is not an invariant (J41a-J41d and the second native reproduction).
- 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`.
checks/census-negative-controls.txt runs the new controls against the censuses that were read, among them the one that the read r13 read (superseded/window-census-r20.py.txt); 386 census control results, WORLDS 600: canary-detect: 110 of 110 as expected, canary-pass: 90 of 90 as expected, trial-detect: 174 of 174 as expected, trial-pass: 226 of 226 as expected, and the census on the real rows rerun.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… P2, 1 P3) and the command center's ruling J757-R14-FIX: the canary's census refuses (and only refuses) an incarnation in which a request left several persisted attempt rows, a call row has no correlation id or shares one, or a path has call rows without a matched arrival line, and takes its coverage from the monotonic clock (the listeners' entries by boot and pid, a Next.js or Ready banner on the journal's monotonic stamp, no banner twice, the realtime minus monotonic offset of its entries, the service manager's monotonic start stamp); the emitted 0.2 s statement is a measurement, not a bound; the runner exit-status control says INVALID RUN when a parser fails

No frozen script byte changed (git blobs f3712b6, 71215df, afcf63f, edefc1d as before; the patch is unchanged). The census (scripts/window-census.py.txt, not frozen; the complete diff from the census that the read r14 read is checks/census-delta-after-r14-read.txt), its controls, the runner exit-status control and the texts that describe them change; every window that PASSes on the census now PASSed on the one that the read r14 read and on the one that the independent review of round 25 read (checks/census-negative-controls.txt, result by result; the reviewer's 251 worlds: checks/census-review5-regression.txt).
- r14 P1-1: an ordinary earlier request with several persisted attempt rows (a failed attempt, then the successful one, one correlation id) supplied a spare call row for a foreign request that left none: 45 arrival lines matched 45 rows, PASS at scope=canary. 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 read only to refuse, whatever the paths; J46a-J46e, J48c).
- r14 P1-2: after a forward step of the wall clock the bounded journal read omitted the true startup and a retained foreign arrival, and a later genuine `[DB] Driver` line satisfied the banner rule. The listeners' entries are also read by boot and pid with no wall-clock lower bound; coverage is a Next.js or Ready banner within 120 s of the process's start (on `/proc`'s clock, converted to the journal's by the kernel's suspended seconds), each banner kind 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 not later than the listener's start + 1 s, and every arrival line of the bounded read also in the pid read (J38j, J47a-J47k, J48a-J48d, X9).
- r14 P2-1: the NOT-EXCLUDED line says that the 0.2 s is a measurement of one host, not a bound; the retained receipts are regenerated and the record's claim is corrected. r14 P3-1: scripts/runner-exit-status-controls.sh.txt requires the 11 stages and 66 cases and says INVALID RUN when a parser fails (its tool-failure wrapper runs a failing awk, sed, grep and wc).
- The four partial priors (r13 P1-1, r13 P1-2, r13 P2-5, the command center's P1) are carried by P1-1, P1-2 and P2-1.
- 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.
- 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).
checks/census-negative-controls.txt runs the new controls against the censuses that were read, among them the one that the read r14 read (superseded/window-census-r24.py.txt) and the one that the review of round 25 read (superseded/window-census-r25.py.txt); 408 census control results, 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, and the census on the real rows and the real incarnation rerun.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… P2, 4 P3) and the command center's ruling J757-R15-FIX: residual item (2) is stated in the census's own words in the record, the README and the protocol, with the command center's disposition; the protocol's retry rule is a fresh complete four-arm acceptance (smaller retries are diagnostic only) and says when a fresh incarnation is needed; the runner exit-status control counts the exit status of every pipeline stage; the stub gateway's unused row_delay_s is removed; the PR description asks for FULL-scope reads; the comparison with the census of round 25 names its exception. The census adds one refusal: the idle receipt's INFO line (the gateway's pending-request counter changing during the idle observation).

No frozen script byte changed (git blobs f3712b6, 71215df, afcf63f, edefc1d as before; the patch is unchanged) and the census's property test is unchanged. What changes: the census (scripts/window-census.py.txt, sha256 4229f076...: 14 lines, one refusal, checks/census-delta-after-r15-read.txt) and its controls (G17a-G17e), the texts that state the residual and the recovery procedure, the runner exit-status control with its tool-failure wrapper, the stub gateway, and the retained receipts that carry dates.
- r15 P2-1: the README and the decision stated residual item (2) as a lost own line balanced by a same-path foreign line within 3 s, per link of a chain; the census also passes a lost foreign arrival whose call row balances another foreign request that left no row, anywhere in the incarnation (control J37e; reproduced by 5f: 44 lines for 44 rows). The census's own sentence (UNTESTED-BOUNDARY-DETAIL) is now quoted verbatim in the README, the decision and the protocol, with the command center's disposition of 2026-10-07: accepted as a stated residual (two independent foreign anomalies in one incarnation and no loss of the canary's own lines), on two conditions: the acceptance record names it verbatim, and a window whose idle receipt shows a foreign arrival is INCONCLUSIVE. The census did the second condition for every check that can fail the idle receipt and for the window (G4, I2, C5, C7, J37c) but read nothing of the guard's INFO line, so the refusal is added: an idle receipt whose INFO line shows that the gateway's pending-request counter changed during the observation is INCONCLUSIVE (G17a, G17c, G17d; an unchanged or unreadable counter is not: G17b, G17e).
- r15 P2-2: the protocol let an INCONCLUSIVE arm be repeated as a smaller invocation with the missing count, which cannot yield an acceptance ((17, 6, 4, 1) is INCONCLUSIVE, exit 2; a concatenated output is refused): a fresh complete four-arm acceptance (a new idle receipt, the four arms, a new census) replaces an arm, smaller retries are diagnostic only, and a fresh gateway incarnation is needed after a defect of the incarnation (a retained rowless arrival, a second database open, a clock step, several attempt rows, a missing or shared correlation id).
- r15 P3-1: scripts/runner-exit-status-controls.sh.txt took the stage count from a wc whose status the arithmetic overwrote, so a wc that printed the right count and exited 42 was accepted. awk, sed, grep, wc, cut, tr, tail, paste, sha256sum and basename now run through one function that records any failed status whatever the tool printed, and the verdict is INVALID RUN; scripts/runner-exit-status-controls-tool-failure.sh.txt runs the control with each of them failing, silently and after printing the right result (20 of 20 refused; the control as read at r15, superseded/runner-exit-status-controls-read-r15.sh.txt, accepts the passthrough wc). This closes r14 P3-1.
- r15 P3-2: the stub gateway's row_delay_s was documented and never used; it is removed (no control set it), the description says what the code does, and checks/stub-gateway-delta-r15.txt compares the two modules (the same abstract syntax tree apart from the removed statement); the receipts of the offline controls name the stub as read (superseded/stub-gateway-read-r15.py.txt).
- r15 P3-3: the PR description asked for delta reads beside the full-scope lift condition; it now says that the lift's first part is a clean FULL-scope read (5f's r15 is one: no P1, six lines closed here) and that the command center asked for a delta check of those six lines.
- r15 P3-4: the claim that every PASS of the census is also a PASS of the census of round 25 contradicted the suspend conversion (a process that started after a kernel suspend: round 25 refused it, R25-2); the refusals-only statement is relative to the census that the read r14 read, and the round-25 comparison holds on the tested corpus with that exception named.
Census controls: 413 results (5f ran 406 of the earlier 408 and skipped J39c and J39e on purpose because they observe the live host; the five new ones are G17a-G17e); 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; every PASS of the census is a PASS of the census that 5f's read r15 read (checks/census-negative-controls.txt, result by result; the new worlds G17a, G17c and G17d are the ones it refuses); the retained receipts are regenerated.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… 1 P2, 1 P3) and the command center's ruling J757-R16-FIX: the census reads the activity-bearing fields of the idle receipt's INFO and sample lines by name, in any order (pending_changed=True on its own, two unequal totals without the flag, a reordered line, an incomplete, repeated, unreadable or contradictory counter, an active connection, a process of another lane and a recent call_logs row make the window INCONCLUSIVE); the runner exit-status control no longer exempts status 141; the disposition of residual item (2) is quoted word for word from the ruling. Refusals only: every PASS of the census is a PASS of the census that the delta check read.

No frozen script byte changed (git blobs f3712b6, 71215df, afcf63f, edefc1d as before; the patch is unchanged) and the census's property test is unchanged. What changes: the census (scripts/window-census.py.txt, sha256 0502cfff...: 72 lines, checks/census-delta-after-r16-read.txt) and its controls (G17f-G17q; G17e now refuses), the runner exit-status control with its tool-failure wrapper (modes passthrough141 and sigpipe), the texts that quote the disposition, and the retained receipts that carry dates.
- r16 P2-1: the census's refusal for the second condition (a window whose idle receipt shows any foreign arrival is INCONCLUSIVE) matched only when pending_total_before, pending_total_after and pending_changed stood consecutively in that order, and an unmatched INFO line added no problem, so INFO pending_changed=True alone, two unequal totals without the flag and the three fields reordered passed on an otherwise clean four-arm fixture. The fields of the INFO line and of every sample line are now read by name, in any order: the pending-request counter must be complete, readable and unchanged, no connection may be active, no process of another lane may run and no call_logs row may be younger than 120 s; a repeated, missing, unreadable or contradictory field is refused. Controls G17f (only the flag), G17g (only the totals), G17h (reordered), G17j (incomplete), G17k (contradictory), G17l and G17o (an active connection on the INFO line and on a sample line), G17n (a repeated field), G17p (a recent row) and G17e (unreadable, now refused) are INCONCLUSIVE; G17i (reordered, unchanged), G17m (no activity field) and G17q (a real-format clean receipt) PASS. The disposition of item (2) in the README, the decision and the protocol is now the ruling's text word for word.
- r16 P3-1: producer() in scripts/runner-exit-status-controls.sh.txt exempted status 141 for every wrapped tool, so a wc or cut that printed the right result and then exited 141, or was killed by a real SIGPIPE, was accepted. The exemption is removed, the control's one pipeline with an early-exiting consumer is written without a pipe, and scripts/runner-exit-status-controls-tool-failure.sh.txt runs each of the ten tools in four modes (silent, passthrough, passthrough141, sigpipe): 40 of 40 refused; the control as read at r16 (superseded/runner-exit-status-controls-read-r16.sh.txt) accepts the wc and cut runs of the two new modes.
Census controls: 425 results (413 at the head of the delta check r16: G17e changed its answer and the twelve G17f-G17q are new); 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; every PASS of the census is a PASS of the census that 5f's delta check r16 read (checks/census-negative-controls.txt, result by result; the worlds it refuses beyond that census are G17e, G17f, G17g, G17h, G17j, G17l, G17n, G17o, G17p); the retained receipts are regenerated.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… 1 P2) and the command center's ruling J757-R17-FIX: the receipt parser of the window census is fail-closed, as one class fix. Every line of the guard receipt is checked first: a line that starts with INFO must be the guard's INFO line exactly and a line that starts with `sample` its sample line exactly (every field once, in the guard's order, each with a value of its own shape, nothing before or after), any other line that carries an activity field is not in the guard's grammar, every activity field is matched on its own, and a second line that carries the pending-request counter is refused. Refusals only: every PASS of the census is a PASS of the censuses that 5f's reads r15, r16 and r17 read.

No frozen script byte changed (git blobs f3712b6, 71215df, afcf63f, edefc1d as before; the patch is unchanged), and the census's property test and the runner exit-status control are unchanged. What changes: the census (scripts/window-census.py.txt, sha256 bf72161c...: 56 lines, checks/census-delta-after-r17-read.txt) and its controls (G17r-G17y and G18a-G18l; G17i and G17m now refuse what r28 read by name), the texts that state the grammar, and the retained receipts that carry dates.
- r17 P2-1 (a): the generic name=value pattern let an empty unrelated field swallow the next assignment (INFO hindsight_processes= pending_changed=True, INFO hindsight_processes= connections_active=1 passed) and an empty activity value counted as absent (INFO pending_changed=, INFO connections_active= passed). Now receipt_grammar_problem (scripts/window-census.py.txt:1177) runs on every line of the receipt before any line leaves the loop of parse_guard (:1258): an INFO line must be exactly GUARD_INFO_LINE (:1172), a sample line exactly GUARD_SAMPLE_LINE (:1174), any other line that carries an activity field is refused, and every activity field is matched on its own (activity_values, :1161). Controls G17r, G17s, G17t, G17u, G17x, G17y and G18a-G18l are INCONCLUSIVE.
- r17 P2-1 (b): the counter was checked line by line, so two complete but contradictory summaries (0 0 False, then 1 1 False) passed. A second line that carries the pending-request counter is refused, equal or not (G17v contradictory, G17w identical); the repeated sample fields are not counted (G17q passes).
Census controls: 445 results (425 at the head of the delta check r17: the 20 new ones are G17r-G17y and G18a-G18l, and G17i and G17m changed their answer); 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; every PASS of the census is a PASS of the censuses that 5f's reads r15, r16 and r17 read (checks/census-negative-controls.txt, result by result; the worlds it refuses beyond the census of r17 are G17i, G17m, G17r-G17y, G18a-G18f, G18h-G18l); the retained receipts are regenerated.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…6b5e929 (1 P1, 1 P2, 2 P3): one push, two changes. (1) The census keeps the IDENTITY line's pending_total, the same counter that the INFO line reads before and after the observation, and reconciles the three readings: an unreadable value (None, empty) or a readable disagreement with either INFO reading is INCONCLUSIVE, equal values (92/92/92) pass; an IDENTITY line that mentions pending_total must be the guard's native IDENTITY line exactly; at canary scope the reconciliation needs the counter on that line (a receipt whose IDENTITY line gives none cannot be reconciled: INCONCLUSIVE). (2) The canary gate needs exactly one INFO line (none or several: INCONCLUSIVE; a trial is not touched). Refusals only: every PASS of the census is a PASS of the censuses that 5f's reads r15, r16, r17 and r18 read.

No frozen script byte changed (git blobs f3712b6, 71215df, afcf63f, edefc1d as before; the patch is unchanged), and the census's property test, the guard and the runner exit-status control are unchanged. What changes: the census (scripts/window-census.py.txt, sha256 90d5ceeb...: 30 lines, checks/census-delta-after-r18-read.txt) and its controls (G19a-G19n; the fixtures' guard writer writes the guard's quiet INFO line by default), the texts that state the rule, and the retained receipts that carry dates.
- r18 P1: IDENTITY pending_total=0 followed by INFO 1 1 False passed at scope=canary, because the census kept only MainPID and ExecMainStartTimestamp from the IDENTITY line. The first IDENTITY line's pending_total is kept (scripts/window-census.py.txt:1270), the line must be the native one when it mentions pending_total (GUARD_IDENTITY_LINE :1175), and parse_guard reconciles the three readings after its loop (:1323). Controls G19a (0 then 1 and 1, canary: INCONCLUSIVE), G19b (92/92/92, canary: PASS), G19c (1 then 0 and 0, trial: INCONCLUSIVE), G19d (3/3/3, trial: PASS), G19e (None), G19f (empty), G19g (not the native line), G19k (the INFO line changes by itself too), G19l (pending_total named twice on the line), G19m (canary, a short IDENTITY line without the counter, :1508: INCONCLUSIVE), G19n (trial, the same line: PASS). The two clean real idle receipts of the live trial (checks/guard-live-trial.txt; a replay of recorded receipts, not a new run) read identity 92 and INFO 92/92 and reconcile with no problem.
- r18 P2: a receipt with no INFO line was accepted in the canary path. The canary gate needs exactly one INFO line (:1506): G19h (canary, no INFO: INCONCLUSIVE), G19i (trial, no INFO: PASS), G19j (canary, two INFO lines: INCONCLUSIVE).
Census controls: 459 results (445 at the head of the final delta check r18: the 14 new ones are G19a-G19n); 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; every PASS of the census is a PASS of the censuses that 5f's reads r15, r16, r17 and r18 read (checks/census-negative-controls.txt, result by result; the worlds it refuses beyond the census of r18 are G19a, G19c, G19e, G19f, G19g, G19h, G19l, G19m); the retained receipts are regenerated.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… of 9db475c (1 P1, canary_ok false): the census also refuses an IDENTITY line that carries an activity field. 5f found both changes of RULING-757-R19 fixed and one break of refusals only inside that diff: the guard's native IDENTITY pattern takes non-space values (unit, ExecMainStartTimestamp, running_prefix, BUILD_SHA, health), so an IDENTITY line such as `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, was returned as accepted before the scan for activity fields and was skipped by the early `continue` for IDENTITY lines: the census that 5f's FINAL delta check r18 read refused such a line, the census of round 30 PASSed it at scope=canary.

ONE condition, as the ruling orders (scripts/window-census.py.txt:1194, receipt_grammar_problem): the IDENTITY line is accepted only when `activity_values(line)` finds nothing as well (pending_total is not an activity field, so the guard's native line has none). Four 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 r18 and on the repaired census, PASS (exit 0) on the census of round 30.

No frozen script byte changed (git blobs f3712b6, 71215df, afcf63f, edefc1d as before; the patch is unchanged), the census's property test, the guard and the runner exit-status control are unchanged, and every other census line is byte for byte as 5f read it (checks/census-delta-after-r19-read.txt is the one-line diff). What changes besides: the controls (G20a-G20d), the texts that state the rule and the retained receipts that carry dates.
Census controls: 463 results (459 at the head 5f read: the 4 new ones are G20a-G20d); 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; every PASS of the census is a PASS of the censuses that 5f's reads r15, r16, r17, r18 and r19 read (checks/census-negative-controls.txt, result by result over the 437 results that carry a verdict; the worlds it refuses beyond the census of r19 are G20a, G20b, G20c, G20d); 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 retained receipts are regenerated.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…: the recorded results only

Window 2 of the canary at the frozen head def9e67 (5f's bounded delta check r20: ACCEPT, canary_ok=true) ran the frozen protocol v2 against 20128 only: the pre-switch control on the unpatched build (race 6 of 6 lost, race_discriminating=True), the required dry run, the guard (clean) and the switch at 2026-10-07T23:41:47Z (20128 MainPID 341 cf6748d04 -> 339027 2a41147b7, identity_ok=True; 20129 untouched), the receipts before and after, the idle receipt (clean), the four arms 23:45:41Z-00:22:40Z (the wrapper exited 0: raw 20 PASS, race 6 PASS, native 4 PASS, native two-request 8 PASS), 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 the journal scans at the end and 30 minutes later (both journal_failed_to_save_call_log=0, exit 0). The switch stays.

This commit adds only the recorded results: the 17 files checks/live-acceptance-canary-*.txt (the four arms, the idle receipt, the census receipt, the wrapper log, the switch record, the receipts before and after, the journal scans, the pre-switch controls of window 2 and of the stood-down window 1), their rows in checks/logs/MANIFEST.txt (the unshortened text is kept in the private artifact directory), the one README row that names them (the README reverse check requires it) and one dated update section of the decision record. No script, no control and no census byte changes; the registry commit follows last.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… to the position after the canary (review thread PRRT_kwDOUg_LrM6pM_AO)

Both still said the drain patch is a candidate that runs nowhere, that its canary is pending and that 20128 runs cf6748d04, after the canary passed on 2026-10-08 and 20128 switched to 2a41147b7 at 2026-10-07T23:41:47Z. Added a dated current-state block to the decision record, marked the 2026-10-05 position as such, and updated the running build ids, the adoption status, the PR 15167 head remark, the dependency-graph remark and alternative (C); the README opening says the canary passed. No script, control, census, patch or recorded-output byte changes.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
… (hot-file protocol: registry last)

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Claude session native-agent-stack-5f: landing at head c9e8c2917027bbee67c6a1922915bfe642ee321e. 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 90f9d32dbb9092b02ed6ca7f9d08e1e4807ad6ab. coordination/merge_tree_landing_check.py (sha256 a11649fcf2e5844c…) exit 0:

main 90f9d32dbb9092b02ed6ca7f9d08e1e4807ad6ab head c9e8c2917027bbee67c6a1922915bfe642ee321e base ffd4b8508ae2494bf5bf7ed9df1932537dbb7ecf merged-tree bae4f7c2a6b3996b2c5dc42b746f66f1772797d1 merge-tree-exit 0
ok   1: clean three-way merge
ok   2: merged-vs-main paths 253, outside PR-owned 0 []
ok   3: main drift 12 paths, overlap with PR-owned inputs (registry excluded) []
ok   4: registry foreign rows equal True, order preserved True, PR-owned rows 252, unowned top-level keys differing []
ok   5: merged files[] sorted by path with no duplicates: True (10816 rows)
LANDABLE
condition 5: merged files[] sorted and unique (tree bae4f7c2a6b3996b2c5dc42b746f66f1772797d1)

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

@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Claude session native-agent-stack-5f: post-merge observation. Landed as 70250efe0c946d4296dc63bd668579a68762dd8d (parent 90f9d32dbb9092b02ed6ca7f9d08e1e4807ad6ab), tree bae4f7c2a6b3996b2c5dc42b746f66f1772797d1. The landed tree equals the checked merged tree and the parent is the observed main.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant