Stale-screen note after reattach (D309) #248

Closed
opened 2026-10-19 15:41:55 +00:00 by kayg · 16 comments
Owner

D309 (owner-approved): after a terminal reattaches, a shell that cannot redraw shows a small "screen may be out of date" note until new output arrives. Branch stale-screen-note, base dev a615c0366. Started by the designer subagent. Note: scripts/fj does not exist in dev; using the fj binary on PATH.

D309 (owner-approved): after a terminal reattaches, a shell that cannot redraw shows a small "screen may be out of date" note until new output arrives. Branch stale-screen-note, base dev a615c0366. Started by the designer subagent. Note: scripts/fj does not exist in dev; using the fj binary on PATH.
Author
Owner

Done. Branch stale-screen-note, head 94933af836 (base dev a615c0366). Detection: replay fence painted, then no output past it within 400 ms + 2 round trips (cap 1.5 s) -> note; any later output clears it. No protocol change. Tracer: bun run check clean; bun test 319 + 94 pass (incl. 6 new stale-screen tests); transfer-budget passes; playwright test/stale-screen.spec.ts 6/6 (1440x900 and 390x844, ink and paper), run twice. JS size: +2819 B identity, +935 B gzip (444938 -> 445873). scripts/verify fast: Rust gate FAIL (101) in 'test' and 'SSH inode reuse fixture' (release latest_tests.rs:41/155 unwrap on None; ssh install.rs:3460 upload exit 127), code this change does not touch; fmt, VT fmt, compile-out, clippy, deny, static builds PASS. Screenshots: ~/.cache/codex-scratch/stale-screen-note/

Done. Branch stale-screen-note, head 94933af83686b6e2ddeda1b70f02477a2f6f926a (base dev a615c0366). Detection: replay fence painted, then no output past it within 400 ms + 2 round trips (cap 1.5 s) -> note; any later output clears it. No protocol change. Tracer: bun run check clean; bun test 319 + 94 pass (incl. 6 new stale-screen tests); transfer-budget passes; playwright test/stale-screen.spec.ts 6/6 (1440x900 and 390x844, ink and paper), run twice. JS size: +2819 B identity, +935 B gzip (444938 -> 445873). scripts/verify fast: Rust gate FAIL (101) in 'test' and 'SSH inode reuse fixture' (release latest_tests.rs:41/155 unwrap on None; ssh install.rs:3460 upload exit 127), code this change does not touch; fmt, VT fmt, compile-out, clippy, deny, static builds PASS. Screenshots: ~/.cache/codex-scratch/stale-screen-note/
Author
Owner

Starting D309 stale-screen-note break-it review on branch review-phone-col-stale-note, based on origin/dev at ae40858df8732c67bfa2553f5e4d40b5b2a01dcf. I read the #248 history and the related #243/#167 context. I will review isolated copies of origin/stale-screen-note and origin/phone-min-col; product branches remain untouched.

Starting D309 stale-screen-note break-it review on branch `review-phone-col-stale-note`, based on `origin/dev` at `ae40858df8732c67bfa2553f5e4d40b5b2a01dcf`. I read the #248 history and the related #243/#167 context. I will review isolated copies of `origin/stale-screen-note` and `origin/phone-min-col`; product branches remain untouched.
Author
Owner

D309 stale-note unit check: existing and review state-machine suites pass (9 passed, 0 failed, 23 assertions; bun test src/stale-screen.test.ts src/stale-screen-review.test.ts). At the exact 400 ms deadline, timer-first ordering calls show then clear ([true,false]); output-first ordering cancels the timer with no show. Browser visibility/accessibility effect is still under review. Review-only test: apps/tracer/src/stale-screen-review.test.ts in the isolated stale-screen-note worktree; no product code changed.

D309 stale-note unit check: existing and review state-machine suites pass (9 passed, 0 failed, 23 assertions; `bun test src/stale-screen.test.ts src/stale-screen-review.test.ts`). At the exact 400 ms deadline, timer-first ordering calls show then clear (`[true,false]`); output-first ordering cancels the timer with no show. Browser visibility/accessibility effect is still under review. Review-only test: `apps/tracer/src/stale-screen-review.test.ts` in the isolated stale-screen-note worktree; no product code changed.
Author
Owner

Committed real-engine review check 9fd1bc40e. After a real server restart with a silent sleep 30 PTY, desktop and phone viewers both showed the note; Ctrl-C output cleared both. Playwright: 1 passed. Unit checks: 9 passed, 23 expectations, including output-before/at-deadline ordering and reconnect storms. Build-host wall times are not performance evidence.

Evidence: browser log, desktop, phone, unit log. Hidden-tab and cursor/pointer review cases are still running.

Committed real-engine review check 9fd1bc40e. After a real server restart with a silent `sleep 30` PTY, desktop and phone viewers both showed the note; Ctrl-C output cleared both. Playwright: 1 passed. Unit checks: 9 passed, 23 expectations, including output-before/at-deadline ordering and reconnect storms. Build-host wall times are not performance evidence. Evidence: [browser log](https://git.kayg.org/attachments/7c136ec8-428d-455f-82f2-ca8a01e93c48), [desktop](https://git.kayg.org/attachments/9a719766-d95f-4ba5-800d-3e1399ac8034), [phone](https://git.kayg.org/attachments/a76087ed-3caa-45cd-9e2e-09fc7794bf02), [unit log](https://git.kayg.org/attachments/b6b29657-2f3a-4c1d-bbd3-3ba48e629606). Hidden-tab and cursor/pointer review cases are still running.
Author
Owner

Supplemental stale-note cases pass against the feature branch: reconnect storm, replay Snapshot without newer output, hidden-tab retry parking/resume, and note pointer pass-through plus top/bottom cursor-row clearance: 4/4. The real PTY check also showed and cleared the note in both viewers. No stale-note defect reproduced so far; final MERGE/HOLD follows the branch-head gate.

Evidence: four-case browser log, hidden-tab note.

Supplemental stale-note cases pass against the feature branch: reconnect storm, replay Snapshot without newer output, hidden-tab retry parking/resume, and note pointer pass-through plus top/bottom cursor-row clearance: 4/4. The real PTY check also showed and cleared the note in both viewers. No stale-note defect reproduced so far; final MERGE/HOLD follows the branch-head gate. Evidence: [four-case browser log](https://git.kayg.org/attachments/17b2b150-e943-4e3e-a0ff-68e8b021056e), [hidden-tab note](https://git.kayg.org/attachments/1b186712-377d-44d2-b711-f7076aaf5bc8).
Author
Owner

Review complete. Reviewed origin/stale-screen-note at 94933af83; the committed real-engine review check is 9fd1bc40e. Review branch review-phone-col-stale-note is pushed at 1c6c8a342f08191a8c07980c3113ebcaa3acdcca.

Verdict: MERGE. I did not reproduce a stale-note defect. State-machine checks passed for output before and exactly at the deadline and for reconnect storms. The supplemental browser cases passed for several viewers, replay Snapshot without newer output, a hidden tab, note visibility below and above the cursor row, and pointer input passing through. In the real PTY replay, desktop and phone viewers both showed the note for a silent resumed session; Ctrl-C produced fresh output and cleared both notes.

Evidence: real browser run, desktop screenshot, phone screenshot, deadline and reconnect checks, four browser cases, hidden-tab screenshot.

Final scripts/verify fast exit status: 0. Gate summary, verbatim:

+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| CLI plugin compile-out    | PASS         |
| clippy                    | PASS         |
| SSH runtime test helper   | PASS         |
| test                      | PASS         |
| SSH inode reuse fixture   | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 37 pass
 0 fail
 34463 expect() calls
Ran 37 tests across 10 files. [3.15s]

The full final-head transcript is attached. The release deployment functional check reported Build deferred: host capacity limit reached; its 15 tests passed and the gate completed with exit status 0.

Review complete. Reviewed `origin/stale-screen-note` at `94933af83`; the committed real-engine review check is `9fd1bc40e`. Review branch `review-phone-col-stale-note` is pushed at `1c6c8a342f08191a8c07980c3113ebcaa3acdcca`. Verdict: **MERGE**. I did not reproduce a stale-note defect. State-machine checks passed for output before and exactly at the deadline and for reconnect storms. The supplemental browser cases passed for several viewers, replay Snapshot without newer output, a hidden tab, note visibility below and above the cursor row, and pointer input passing through. In the real PTY replay, desktop and phone viewers both showed the note for a silent resumed session; Ctrl-C produced fresh output and cleared both notes. Evidence: [real browser run](https://git.kayg.org/attachments/7c136ec8-428d-455f-82f2-ca8a01e93c48), [desktop screenshot](https://git.kayg.org/attachments/9a719766-d95f-4ba5-800d-3e1399ac8034), [phone screenshot](https://git.kayg.org/attachments/a76087ed-3caa-45cd-9e2e-09fc7794bf02), [deadline and reconnect checks](https://git.kayg.org/attachments/b6b29657-2f3a-4c1d-bbd3-3ba48e629606), [four browser cases](https://git.kayg.org/attachments/17b2b150-e943-4e3e-a0ff-68e8b021056e), [hidden-tab screenshot](https://git.kayg.org/attachments/1b186712-377d-44d2-b711-f7076aaf5bc8). Final `scripts/verify fast` exit status: 0. Gate summary, verbatim: ```text +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | CLI plugin compile-out | PASS | | clippy | PASS | | SSH runtime test helper | PASS | | test | PASS | | SSH inode reuse fixture | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ``` ```text 37 pass 0 fail 34463 expect() calls Ran 37 tests across 10 files. [3.15s] ``` The full final-head transcript is [attached](https://git.kayg.org/attachments/73d24217-4091-485e-85b3-157f80f83cc3). The release deployment functional check reported `Build deferred: host capacity limit reached`; its 15 tests passed and the gate completed with exit status 0.
Author
Owner

Release 8 started on release-8, production base 173a9ba14f. Worktree clean. Applying the reviewed D307 production-line merge, then only each requested dev branch’s own non-merge commits with -x. No deploy; monitor01 untouched. Final gates, size table, artifact hashes and perf-VM copied-database staging evidence will follow.

Release 8 started on release-8, production base 173a9ba14f458a8451d31c6e72e86cd73b8911f3. Worktree clean. Applying the reviewed D307 production-line merge, then only each requested dev branch’s own non-merge commits with -x. No deploy; monitor01 untouched. Final gates, size table, artifact hashes and perf-VM copied-database staging evidence will follow.
Author
Owner

Release-8 step pushed: faa7af66e00ff39191f4276fecb9d52c31521515, source 5108da2db607373c7ca364e186f278fe5ca35497 with -x provenance; 3 changed files. Passed: staged whitespace, tracer typecheck, connection/reply unit suites, available synchronized-output/stale unit suites, shell syntax. No deploy. Full fast gate and browser qualification follow on the final combined head.

Release-8 step pushed: `faa7af66e00ff39191f4276fecb9d52c31521515`, source `5108da2db607373c7ca364e186f278fe5ca35497` with -x provenance; 3 changed files. Passed: staged whitespace, tracer typecheck, connection/reply unit suites, available synchronized-output/stale unit suites, shell syntax. No deploy. Full fast gate and browser qualification follow on the final combined head.
Author
Owner

Release-8 step pushed: 8e4f480f6c137a9dbc69def72d354da1108935d2, source 4210d220219b7342937e8f97ccc43e40a8a0d629 with -x provenance; 2 changed files. Passed: staged whitespace, tracer typecheck, connection/reply unit suites, available synchronized-output/stale unit suites. No deploy. Full fast gate and browser qualification follow on the final combined head.

Release-8 step pushed: `8e4f480f6c137a9dbc69def72d354da1108935d2`, source `4210d220219b7342937e8f97ccc43e40a8a0d629` with -x provenance; 2 changed files. Passed: staged whitespace, tracer typecheck, connection/reply unit suites, available synchronized-output/stale unit suites. No deploy. Full fast gate and browser qualification follow on the final combined head.
Author
Owner

Release-8 step pushed: c8aa3672722ad5525184342e50205d5bccc6b20a, source 94933af83686b6e2ddeda1b70f02477a2f6f926a with -x provenance; 3 changed files. Passed: staged whitespace, tracer typecheck, connection/reply unit suites, available synchronized-output/stale unit suites. No deploy. Full fast gate and browser qualification follow on the final combined head.

Release-8 step pushed: `c8aa3672722ad5525184342e50205d5bccc6b20a`, source `94933af83686b6e2ddeda1b70f02477a2f6f926a` with -x provenance; 3 changed files. Passed: staged whitespace, tracer typecheck, connection/reply unit suites, available synchronized-output/stale unit suites. No deploy. Full fast gate and browser qualification follow on the final combined head.
Author
Owner

Release-8 step pushed: 3f8373bd9d71d688ae67db4c754007f53fa60d11, source 9fd1bc40eb1929a306a754b4da473c3579cdae92 with -x provenance; 1 changed files. Passed: staged whitespace, tracer typecheck, connection/reply unit suites, available synchronized-output/stale unit suites. No deploy. Full fast gate and browser qualification follow on the final combined head.

Release-8 step pushed: `3f8373bd9d71d688ae67db4c754007f53fa60d11`, source `9fd1bc40eb1929a306a754b4da473c3579cdae92` with -x provenance; 1 changed files. Passed: staged whitespace, tracer typecheck, connection/reply unit suites, available synchronized-output/stale unit suites. No deploy. Full fast gate and browser qualification follow on the final combined head.
Author
Owner

Stale-note source 5108da2db, 4210d2202, 94933af83 and real review check 9fd1bc40e are committed/pushed on release-8; step head 3f8373bd9d. The output/snapshot integration retains synchronized holds and D307 reply marking; newer output also clears the note. All focused type/unit gates passed.

Both native artifacts remain byte-identical to #206: 21,387,184 / 19,559,112 B; SHA256 bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b / 46812c6bfeffb01e536112d422d1db8809bb136f2504efde1bac8df7ca8ce26f. Step gate and unchanged-binary receipt. Final fast/repro and real-browser staging still pending; no deploy.

Stale-note source 5108da2db, 4210d2202, 94933af83 and real review check 9fd1bc40e are committed/pushed on release-8; step head 3f8373bd9d71d688ae67db4c754007f53fa60d11. The output/snapshot integration retains synchronized holds and D307 reply marking; newer output also clears the note. All focused type/unit gates passed. Both native artifacts remain byte-identical to #206: 21,387,184 / 19,559,112 B; SHA256 bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b / 46812c6bfeffb01e536112d422d1db8809bb136f2504efde1bac8df7ca8ce26f. [Step gate and unchanged-binary receipt](https://git.kayg.org/attachments/4f5031b2-4fba-42c1-a909-03eda8ad37af). Final fast/repro and real-browser staging still pending; no deploy.
Author
Owner

Perf-VM staging passed at 85b0285b73: 11/11 reviewed real-server specs and 5/5 additional real-PTY acceptance checks. Production web and full-server image bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b.

  • Copied v29 database: 50 users, 10,000 seeded nodes plus the fixture's existing node, migration checksums preserved, integrity=ok.
  • 393×852 phone: every column >=349 px; the reviewed floor case measured [349,349,349,349]. Canonical layout revision and weights unchanged by phone use. Copied-database capture retained revision 8.
  • Silent shell: both viewers showed “screen may be out of date”; typing cleared both notes.
  • Full-screen mode 2026: input send 0.9 ms, hold-to-send 10.1 ms, release-to-paint 2.0 ms / one frame.
  • Desktop and phone: one cursor-query reply each, including a query inside a synchronized frame. Three-viewer corpus: 30 query forms, one PTY copy each.
  • Real resume refusal (1008): fresh typing accepted; Discard dropped old typing; Send again sent it once.

Machine: infraternal-perf-test, 4 vCPU, kernel 6.12.111+deb13-amd64; final acceptance load 1.35/0.84/0.40 before, 2.42/1.20/0.54 after; separate lock holds; CPUWeight=10000. No deployment. Bundle and final gates remain in progress.

staging-final-driver.log
real-reviewed.log
staging-capture-driver.log
release8-phone-canvas.png
release8-phone-stale-note.png
release8-desktop-stale-note.png
release8-phone-widths.json
release8-real-sync-echo.json

Perf-VM staging passed at 85b0285b733bac4c94d7540c58d4521d1a3410c4: 11/11 reviewed real-server specs and 5/5 additional real-PTY acceptance checks. Production web and full-server image bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b. - Copied v29 database: 50 users, 10,000 seeded nodes plus the fixture's existing node, migration checksums preserved, integrity=ok. - 393×852 phone: every column >=349 px; the reviewed floor case measured [349,349,349,349]. Canonical layout revision and weights unchanged by phone use. Copied-database capture retained revision 8. - Silent shell: both viewers showed “screen may be out of date”; typing cleared both notes. - Full-screen mode 2026: input send 0.9 ms, hold-to-send 10.1 ms, release-to-paint 2.0 ms / one frame. - Desktop and phone: one cursor-query reply each, including a query inside a synchronized frame. Three-viewer corpus: 30 query forms, one PTY copy each. - Real resume refusal (1008): fresh typing accepted; Discard dropped old typing; Send again sent it once. Machine: infraternal-perf-test, 4 vCPU, kernel 6.12.111+deb13-amd64; final acceptance load 1.35/0.84/0.40 before, 2.42/1.20/0.54 after; separate lock holds; CPUWeight=10000. No deployment. Bundle and final gates remain in progress. [staging-final-driver.log](https://git.kayg.org/attachments/83a6af67-ffda-4186-bb47-988ee59d80d3) [real-reviewed.log](https://git.kayg.org/attachments/9e5ecf9d-385d-4b8a-9ff5-ba83f23f8ef7) [staging-capture-driver.log](https://git.kayg.org/attachments/3fb96db9-42d0-4a46-a33c-95d7695e376c) ![release8-phone-canvas.png](https://git.kayg.org/attachments/99927b8e-294d-4bf1-9e9c-90bcebd232b3) ![release8-phone-stale-note.png](https://git.kayg.org/attachments/866c160e-79ce-4c81-8499-a25641cb0b04) ![release8-desktop-stale-note.png](https://git.kayg.org/attachments/91eb41ef-9187-4b7d-a4fa-49fee9c8429c) [release8-phone-widths.json](https://git.kayg.org/attachments/b7212fa7-b6d0-4342-a1a2-b863f50863df) [release8-real-sync-echo.json](https://git.kayg.org/attachments/6bb66b9b-4331-45f9-b377-cf0b55be839c)
Author
Owner

Release 8 qualification finished. Head 85b0285b733bac4c94d7540c58d4521d1a3410c4 is pushed only to release-8; production base 173a9ba14f458a8451d31c6e72e86cd73b8911f3. No deployment; monitor01 untouched. Issues remain open.

Applied history: D307 merge ed725f9db40aa69031c524950a02c276c340a43d has source parent 3e95f8262c993cd1cc38a81ff585e535dafc1e0a (41 D307 commits). Then 23 own source/review commits were cherry-picked oldest first with -x, followed by the release size documentation. No other dev lineage or dependency was imported. Full D307 history and commit bodies: ledger.

D307 merge -> ed725f9db40aa69031c524950a02c276c340a43d: Merge reviewed D307 terminal replies onto release 7 (#24)
ba8085b7ca1de3a3641f631688d7b09a605fb726 -> 202d6f2f3d45b21d28e04606bdfc9e5ef28287a6: Set true-color capability for PTY shells (#206)
583bafb443a93446a223bed02f0d6d68ce017a7b -> bac2f044ce937c245bfca4e9d41227d79cde252c: Track DEC 2026 synchronized paint holds (#206)
3db72a9f3466a8d8bc9d12101167cffc2d764dee -> 7d510df4ceac26aab4cb62fc5e5f81eba48e64e9: Allow a short root for SSH socket fixtures (#206)
5efb7fe496319367310572c55d637d69a3fd9754 -> e345c5fcf576df4938028042228261d72090ac26: Hold terminal paints for synchronized output (#206)
763c133392b8726d72edbc15aed3e8edc3430b99 -> aca32908f9a5911a78d5384c7e7fa579f77254b7: Test every DEC 2026 chunk split (#206)
b2837b9a711c24b238a0bd1401aafdb5ff5bd9a2 -> cc01421d228172770067931cce45d0c0b971ad4d: Test split synchronized frames in the browser (#206)
278ec65bbc235c160ecdd961f7c362201551245d -> 2976cc1dc8d7622900ec0af5d243c07337a78d99: test tracer: measure synchronized hold after mode entry (#206)
9862541540b0c5f32011bb6a5550f849fdbe3206 -> bf6f6a04fc2aae3d2275394b41ad4a79f6969aa5: Use a borrowed path for the PTY fallback shell
b9c7dc68a8a7ef075008a5b0a29802014d53a0a5 -> 9a8efc6bdc0799fae0f2adadfb89db4d6c3e33ab: Ratchet production PTY size ceilings to both measured artifacts (#206)
291a4348797950efb544da0704b2f14cf6cc1e01 -> c0ea705e276d8b4a68ac318b36494a4f6d84d52a: fix(tracer): paint synchronized output on release frame (#206)
a5aac70f9012b6cb5af0bcac7ad84318263556fd -> a789e6a434049cf606431a824af5bf3a4a24d5c2: test(tracer): cover input during synchronized output hold
452ad8de952c789b2c8c477fe95fee219c610a4a -> c4f978b80a1b13dd1c9602c6da5091299821e95e: test: measure keyboard input during synchronized holds
875cef413987d681fea5dafecade2f33cd0c5247 -> 0bde5622238e774bf43edc34cbb2902f0cc063b4: fix: send terminal input before renderer wake
6c544133cde0cad7d89b61e51831083b3e4645c6 -> 7419591b6548b501e8042bfd9b3ea570eb5005cf: test: wait for paint samples before measuring echo
5108da2db607373c7ca364e186f278fe5ca35497 -> faa7af66e00ff39191f4276fecb9d52c31521515: tracer: decide when a reattached screen may be out of date (D309, #248)
4210d220219b7342937e8f97ccc43e40a8a0d629 -> 8e4f480f6c137a9dbc69def72d354da1108935d2: ui: a quiet terminal note in the half away from the cursor (D309, #248)
94933af83686b6e2ddeda1b70f02477a2f6f926a -> c8aa3672722ad5525184342e50205d5bccc6b20a: tracer: show the stale-screen note after a reattach that stays silent (D309, #248)
9fd1bc40eb1929a306a754b4da473c3579cdae92 -> 3f8373bd9d71d688ae67db4c754007f53fa60d11: Add real stale-note D309 check
6fc234580ef948079dfa9893f0ae1d350e1f2d97 -> 7b2c649b0992e261052971accd2da201957838b0: canvas: draw every column at least a readable width on touch screens, display only (#243, D309)
7ce40989b117042cd363619c4facd51249514411 -> fd1098e984e0726a7f06615b0071edd2400204fe: test: a phone draws floor-weight columns readably and never rewrites the saved layout (#243, D309)
33d58f05d8684db12c4b77d35028858e876ff0e9 -> 5b580f368d2585e03eeea9233ef4de82ecdeb11d: canvas: re-apply the touch column minimum when the pointer kind changes (#243, D309)
ba317e3db75416c4880b503411010dd0f9729d9b -> ab63834fb81764f393999786e01117707561acc0: Add phone D309 regression coverage
1c6c8a342f08191a8c07980c3113ebcaa3acdcca -> 5739cf65cbbfca8af2240d92f27272ecda5b5937: Test pinch zoom against D309 server truth
release documentation -> 85b0285b733bac4c94d7540c58d4521d1a3410c4: Record the measured release-8 production sizes and migration scope (#24)
Stage x86_64 bytes aarch64 bytes
Release 7 21,385,264 19,570,256
D307 21,387,824 19,559,624
Sync and immediate input 21,387,184 19,559,112
Stale-screen note 21,387,184 19,559,112
Phone / final 21,387,184 19,559,112

Final delta against release 7: +1,920 x86_64 / −11,144 aarch64 bytes. The measured x86 increase differs from the expected approximate reduction; it is 18,080 bytes below the +20,000 stopline. Both ceilings equal the measured sizes. Stale-note and phone stages retain byte-identical native images. Same pinned static recipe and compiler as release 7; no Cargo.lock or migration changes.

Artifacts: /home/kayg/.cache/codex-scratch/release-8/artifacts in the release-7 layout, including both full images, bundle (both host and session architectures), production web, web-dist.tar, MANIFEST.txt and checksums. The bundle already carries the ARM host image; a later authorized deploy uses --bin, --bundle, --web. Seven executable images passed production trust and static-link checks. Staged server compared byte-identical to the completed bundle server.

bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b  infraternal-x86_64-musl
46812c6bfeffb01e536112d422d1db8809bb136f2504efde1bac8df7ca8ce26f  infraternal-aarch64-musl
7865016ed5a56d366dc1cc172c129a2d3136fa2179f199feec25cb203fae9a8a  web-dist.tar
d37fba961139bb4b07a511d08b3e0b5abb333a5ceb88aae000e4909dc03527a9  web-SHA256SUMS
e5673ff83c85e0bf56040c6f0946868012399bd6feadd88255e210e952185f1c  bundle/SHA256SUMS
bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b  bundle/infraternal
2e94b4ce12b8c0360297c90585cbd2709397727a5ed5c1141fba7c780fd6fdf6  bundle/infraternal-aarch64-musl
75801bc7ed1bc3668340b8df50eaa45a3772292c8a6038eef0a1ba8999bd4fc6  bundle/infraternal-aarch64-session-musl
f87c2b23144ac48453ea8277052193abef55af8172261973affe50b372c069df  bundle/infraternal-x86_64-musl
7094e3f52dd6eb3d90f052059656e8e50e2addde56565920447a31a5e195a9db  bundle/infraternal-x86_64-session-musl
Gate Result
build-slot scripts/verify fast, final head PASS, no waiver
build-slot python3 scripts/test-static-reproducibility.py PASS, both architectures byte-identical
Reviewed real-server specs, playwright.real.config.ts 11/11
Additional real-PTY acceptance, playwright.real.config.ts 5/5
Requested browser regression specs 35/35
synchronized-output-input repeat-each=20 20/20
Copied release-7 v29 database through SQLx startup PASS
Production trust / static linkage / checksums PASS

Host gates used private fixture state and the short socket-path alias required by the Unix-socket tests; the GNU runner forwards every test and skips no checks. Exact commands and environment are attached.

The existing query/refusal/retained-typing/synchronized-output/stale-screen browser specs depend on /__mock controls. They ran against a separate sealed preview-enabled test build; shipping web stayed preview-disabled. Real-server counterparts additionally covered real 1008 refusal + Discard/Send again, full-screen mode 2026 input/paint, stale replay, cursor queries and persisted phone geometry. Native binary and shipping assets came from this head.

Perf-VM staging (infraternal-perf-test, 4 vCPU, kernel 6.12.111+deb13-amd64, CPUWeight=10000, separate short lock holds):

  • Production-shaped v29 copy retained 29 migration checksums, 50 users, 10,000 seeded nodes, legacy null hostname and existing canvas; integrity=ok; web HTTP=200. No new migration exists to renumber. The enrolled browser copy additionally retained its pre-existing mesh node (10,001 total).
  • Desktop + 393×852 phone: reviewed widths [349,349,349,349]; the copied-database capture also met the >=349 minimum, with revision 8 unchanged by phone use. Direct persisted-layout review covered rotation, pinch, reload, pointer changes and desktop edits.
  • Silent shell: desktop and phone showed “screen may be out of date”; typing cleared both.
  • Full-screen mode 2026: input send 0.9 ms, hold-to-send 10.1 ms, release-to-paint 2.0 ms, one release frame.
  • Twenty repeated held-input runs: send 0.5–0.9 ms, p95 0.8 ms; echo after release 4.6–16.3 ms, p95 13.8 ms; all input sent/accepted while held, all echoes one release frame.
  • Desktop and phone each received one cursor-query reply, including a synchronized query. Three-viewer real PTY corpus: 30 query forms, one PTY copy each; sixteen outstanding requests, expiry and ordinary-input ordering passed.
  • Real resume refusal: fresh typing remained usable; Discard discarded old text; Send again sent it once.
  • Loads and machine details are in each raw receipt. The initial additional-copy assertion counted 10,000 total nodes and failed because the fixture already had one; only that external harness was corrected. Diagnostic. All corrected acceptance checks passed.

Author checklist: review receipt. All owned VM scopes are inactive, ports are closed, private VM job removed, and temporary host Cargo/upload/comparison roots removed. Artifacts and evidence are retained outside the checkout.

Verbatim final Rust gate table (full unmodified gate transcript attached below):

+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| CLI plugin compile-out    | PASS         |
| clippy                    | PASS         |
| SSH runtime test helper   | PASS         |
| test                      | PASS         |
| SSH inode reuse fixture   | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+

Verbatim final protocol gate output:

==> TypeScript protocol tests
bun test v1.4.2 (744846f84)

src/mesh-review-revocation.test.ts:
(pass) review forbidden event cancels pending snapshot publication [2.38ms]
(pass) subscription forbidden ends delivery before a late refresh rejection [1.51ms]
(pass) subscription not found ends delivery before a late refresh rejection [1.14ms]
(pass) subscription invalid input ends delivery before a late refresh rejection [1.14ms]
(pass) subscription mesh unavailable ends delivery before a late refresh rejection [1.12ms]
(pass) synchronous subscription refusal releases the transport exactly once [0.23ms]

src/codec.test.ts:
(pass) wire protocol golden vectors > encodes and decodes each frame exactly as the shared manifest describes [6.66ms]
(pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.27ms]
(pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [0.95ms]
(pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.20ms]
(pass) split mux header preserves trailing Close [0.23ms]
(pass) reply-marked Input uses an additive bounded layout without changing legacy input [0.46ms]
(pass) empty marked input reports the stable invalid-body decoder failure [0.10ms]

src/mesh-review-paged-error.test.ts:
(pass) review earlier snapshot continuation failure cannot replace a newer complete refresh [2.68ms]
(pass) review earlier snapshot continuation cannot overwrite a delivered revision [2.61ms]
(pass) a newer paged event owns publication before an earlier refresh resumes [2.49ms]

src/mesh-review-refresh.test.ts:
(pass) review superseded refresh failure cannot replace authoritative resync [1.38ms]
(pass) superseded failure preserves a newer pending refresh [2.66ms]

src/stream.test.ts:
stream differential: 141 streams, 11988 schedules, zero divergences
(pass) Rust and TypeScript preserve every frame at all boundaries and random multi-splits [2349.94ms]
(pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [6.77ms]

src/mesh.test.ts:
(pass) Mesh actions map to their typed action IDs and JSON inputs [1.76ms]
(pass) Mesh watch coalesces change bursts and never publishes an older revision [3.79ms]
(pass) Mesh watch forwards server errors and stops delivering after unsubscribe [0.19ms]
(pass) Mesh enrollment carries an explicit authenticated host binding [0.24ms]

src/mesh-review-continuation.test.ts:
(pass) review continuation stops after stop [1.46ms]
(pass) review continuation stops after forbidden [1.17ms]
(pass) review continuation stops after superseded [1.14ms]

src/mesh-pagination.test.ts:
(pass) list assembles bounded pages using the same filter [0.19ms]
(pass) a changed revision discards earlier pages before assembling its restart [0.10ms]
(pass) malformed continuation is refused: {"revision":1,"offset":0} [0.23ms]
(pass) malformed continuation is refused: {"revision":2,"offset":1} [0.02ms]
(pass) malformed continuation is refused: {"revision":1,"offset":2}
(pass) watch never publishes a partial page; withdrawn=false [1.29ms]
(pass) watch never publishes a partial page; withdrawn=true [1.15ms]
(pass) a superseding equal-revision resync wins over pending page assembly [1.30ms]

src/mesh-review-resync.test.ts:
(pass) review watch applies same-revision authoritative resync [0.12ms]
(pass) authoritative resync keeps priority over an equal-revision pending list [1.34ms]

src/mesh-vectors.test.ts:
(pass) every shared Mesh action vector passes through the typed client unchanged [0.81ms]
(pass) shared Mesh event vectors drive the typed watch adapter [5.07ms]

 39 pass
 0 fail
 36135 expect() calls
Ran 39 tests across 10 files. [2.42s]

Verbatim reproducibility output:

Preparing worktree (detached HEAD 85b0285b7)
HEAD is now at 85b0285b7 Record the measured release-8 production sizes and migration scope (#24)
commit=85b0285b733bac4c94d7540c58d4521d1a3410c4
main_checkout=/home/kayg/Developer/infraternal/.worktrees/release-8
alternate_checkout=/home/kayg/.cache/codex-scratch/release-8/static-repro-work-gjktbxw6/long-root/with-a-distinct-and-deliberately-long-checkout-location/checkout-b
main_CARGO_HOME=/home/kayg/.cargo
alternate_CARGO_HOME=/home/kayg/.cache/codex-scratch/release-8/static-repro-work-gjktbxw6/cargo-home
main_target=/home/kayg/.cache/codex-scratch/release-8/target
alternate_target=/home/kayg/.cache/codex-scratch/release-8/static-repro-work-gjktbxw6/target
main_RUSTUP_HOME=/home/kayg/.rustup
alternate_RUSTUP_HOME=/home/kayg/.cache/codex-scratch/release-8/static-repro-work-gjktbxw6/rustup-home
SCCACHE_DIR=/home/kayg/.cache/sccache-infraternal
alternate_sccache_mode=forced-recache-through-shared-server
loadavg_start=3.51 2.74 3.45 3/1051 3581349
rust_sccache_remaps_visible=True
native_x86_sccache_remaps_visible=True
native_aarch64_sccache_remaps_visible=True
rust_registry_mappings_follow_cargo_home=True
x86_64-unknown-linux-musl: main_size=21387184 alternate_size=21387184 equal=True
x86_64-unknown-linux-musl: main_sha256=bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b alternate_sha256=bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b
aarch64-unknown-linux-musl: main_size=19559112 alternate_size=19559112 equal=True
aarch64-unknown-linux-musl: main_sha256=46812c6bfeffb01e536112d422d1db8809bb136f2504efde1bac8df7ca8ce26f alternate_sha256=46812c6bfeffb01e536112d422d1db8809bb136f2504efde1bac8df7ca8ce26f
static artifact reproducibility passed; evidence: /home/kayg/.cache/codex-scratch/release-8/evidence/static-repro-3565150

final-verify-fast.log
final-static-reproducibility.log
vm-cleanup-check.log
host-cleanup-check.txt
qualification-commands.txt

perf-driver.log
held-input-20-summary.json
vm-cleanup-check.log
MANIFEST.txt
artifact-SHA256SUMS.txt
artifact-seal.json
applied-first-parent.txt

staging-final-driver.log
real-reviewed.log
staging-capture-driver.log
release8-phone-canvas.png
release8-phone-stale-note.png
release8-desktop-stale-note.png
release8-phone-widths.json
release8-real-sync-echo.json

Release 8 qualification finished. Head `85b0285b733bac4c94d7540c58d4521d1a3410c4` is pushed only to `release-8`; production base `173a9ba14f458a8451d31c6e72e86cd73b8911f3`. No deployment; monitor01 untouched. Issues remain open. Applied history: D307 merge `ed725f9db40aa69031c524950a02c276c340a43d` has source parent `3e95f8262c993cd1cc38a81ff585e535dafc1e0a` (41 D307 commits). Then 23 own source/review commits were cherry-picked oldest first with `-x`, followed by the release size documentation. No other dev lineage or dependency was imported. Full D307 history and commit bodies: [ledger](https://git.kayg.org/attachments/a50798d5-4c45-4a12-9d4c-4246514a2ef5). ```text D307 merge -> ed725f9db40aa69031c524950a02c276c340a43d: Merge reviewed D307 terminal replies onto release 7 (#24) ba8085b7ca1de3a3641f631688d7b09a605fb726 -> 202d6f2f3d45b21d28e04606bdfc9e5ef28287a6: Set true-color capability for PTY shells (#206) 583bafb443a93446a223bed02f0d6d68ce017a7b -> bac2f044ce937c245bfca4e9d41227d79cde252c: Track DEC 2026 synchronized paint holds (#206) 3db72a9f3466a8d8bc9d12101167cffc2d764dee -> 7d510df4ceac26aab4cb62fc5e5f81eba48e64e9: Allow a short root for SSH socket fixtures (#206) 5efb7fe496319367310572c55d637d69a3fd9754 -> e345c5fcf576df4938028042228261d72090ac26: Hold terminal paints for synchronized output (#206) 763c133392b8726d72edbc15aed3e8edc3430b99 -> aca32908f9a5911a78d5384c7e7fa579f77254b7: Test every DEC 2026 chunk split (#206) b2837b9a711c24b238a0bd1401aafdb5ff5bd9a2 -> cc01421d228172770067931cce45d0c0b971ad4d: Test split synchronized frames in the browser (#206) 278ec65bbc235c160ecdd961f7c362201551245d -> 2976cc1dc8d7622900ec0af5d243c07337a78d99: test tracer: measure synchronized hold after mode entry (#206) 9862541540b0c5f32011bb6a5550f849fdbe3206 -> bf6f6a04fc2aae3d2275394b41ad4a79f6969aa5: Use a borrowed path for the PTY fallback shell b9c7dc68a8a7ef075008a5b0a29802014d53a0a5 -> 9a8efc6bdc0799fae0f2adadfb89db4d6c3e33ab: Ratchet production PTY size ceilings to both measured artifacts (#206) 291a4348797950efb544da0704b2f14cf6cc1e01 -> c0ea705e276d8b4a68ac318b36494a4f6d84d52a: fix(tracer): paint synchronized output on release frame (#206) a5aac70f9012b6cb5af0bcac7ad84318263556fd -> a789e6a434049cf606431a824af5bf3a4a24d5c2: test(tracer): cover input during synchronized output hold 452ad8de952c789b2c8c477fe95fee219c610a4a -> c4f978b80a1b13dd1c9602c6da5091299821e95e: test: measure keyboard input during synchronized holds 875cef413987d681fea5dafecade2f33cd0c5247 -> 0bde5622238e774bf43edc34cbb2902f0cc063b4: fix: send terminal input before renderer wake 6c544133cde0cad7d89b61e51831083b3e4645c6 -> 7419591b6548b501e8042bfd9b3ea570eb5005cf: test: wait for paint samples before measuring echo 5108da2db607373c7ca364e186f278fe5ca35497 -> faa7af66e00ff39191f4276fecb9d52c31521515: tracer: decide when a reattached screen may be out of date (D309, #248) 4210d220219b7342937e8f97ccc43e40a8a0d629 -> 8e4f480f6c137a9dbc69def72d354da1108935d2: ui: a quiet terminal note in the half away from the cursor (D309, #248) 94933af83686b6e2ddeda1b70f02477a2f6f926a -> c8aa3672722ad5525184342e50205d5bccc6b20a: tracer: show the stale-screen note after a reattach that stays silent (D309, #248) 9fd1bc40eb1929a306a754b4da473c3579cdae92 -> 3f8373bd9d71d688ae67db4c754007f53fa60d11: Add real stale-note D309 check 6fc234580ef948079dfa9893f0ae1d350e1f2d97 -> 7b2c649b0992e261052971accd2da201957838b0: canvas: draw every column at least a readable width on touch screens, display only (#243, D309) 7ce40989b117042cd363619c4facd51249514411 -> fd1098e984e0726a7f06615b0071edd2400204fe: test: a phone draws floor-weight columns readably and never rewrites the saved layout (#243, D309) 33d58f05d8684db12c4b77d35028858e876ff0e9 -> 5b580f368d2585e03eeea9233ef4de82ecdeb11d: canvas: re-apply the touch column minimum when the pointer kind changes (#243, D309) ba317e3db75416c4880b503411010dd0f9729d9b -> ab63834fb81764f393999786e01117707561acc0: Add phone D309 regression coverage 1c6c8a342f08191a8c07980c3113ebcaa3acdcca -> 5739cf65cbbfca8af2240d92f27272ecda5b5937: Test pinch zoom against D309 server truth release documentation -> 85b0285b733bac4c94d7540c58d4521d1a3410c4: Record the measured release-8 production sizes and migration scope (#24) ``` | Stage | x86_64 bytes | aarch64 bytes | |---|---:|---:| | Release 7 | 21,385,264 | 19,570,256 | | D307 | 21,387,824 | 19,559,624 | | Sync and immediate input | 21,387,184 | 19,559,112 | | Stale-screen note | 21,387,184 | 19,559,112 | | Phone / final | 21,387,184 | 19,559,112 | Final delta against release 7: **+1,920 x86_64 / −11,144 aarch64 bytes**. The measured x86 increase differs from the expected approximate reduction; it is 18,080 bytes below the +20,000 stopline. Both ceilings equal the measured sizes. Stale-note and phone stages retain byte-identical native images. Same pinned static recipe and compiler as release 7; no Cargo.lock or migration changes. Artifacts: `/home/kayg/.cache/codex-scratch/release-8/artifacts` in the release-7 layout, including both full images, bundle (both host and session architectures), production web, web-dist.tar, MANIFEST.txt and checksums. The bundle already carries the ARM host image; a later authorized deploy uses `--bin`, `--bundle`, `--web`. Seven executable images passed production trust and static-link checks. Staged server compared byte-identical to the completed bundle server. ```text bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b infraternal-x86_64-musl 46812c6bfeffb01e536112d422d1db8809bb136f2504efde1bac8df7ca8ce26f infraternal-aarch64-musl 7865016ed5a56d366dc1cc172c129a2d3136fa2179f199feec25cb203fae9a8a web-dist.tar d37fba961139bb4b07a511d08b3e0b5abb333a5ceb88aae000e4909dc03527a9 web-SHA256SUMS e5673ff83c85e0bf56040c6f0946868012399bd6feadd88255e210e952185f1c bundle/SHA256SUMS bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b bundle/infraternal 2e94b4ce12b8c0360297c90585cbd2709397727a5ed5c1141fba7c780fd6fdf6 bundle/infraternal-aarch64-musl 75801bc7ed1bc3668340b8df50eaa45a3772292c8a6038eef0a1ba8999bd4fc6 bundle/infraternal-aarch64-session-musl f87c2b23144ac48453ea8277052193abef55af8172261973affe50b372c069df bundle/infraternal-x86_64-musl 7094e3f52dd6eb3d90f052059656e8e50e2addde56565920447a31a5e195a9db bundle/infraternal-x86_64-session-musl ``` | Gate | Result | |---|---| | build-slot scripts/verify fast, final head | PASS, no waiver | | build-slot python3 scripts/test-static-reproducibility.py | PASS, both architectures byte-identical | | Reviewed real-server specs, playwright.real.config.ts | 11/11 | | Additional real-PTY acceptance, playwright.real.config.ts | 5/5 | | Requested browser regression specs | 35/35 | | synchronized-output-input repeat-each=20 | 20/20 | | Copied release-7 v29 database through SQLx startup | PASS | | Production trust / static linkage / checksums | PASS | Host gates used private fixture state and the short socket-path alias required by the Unix-socket tests; the GNU runner forwards every test and skips no checks. Exact commands and environment are attached. The existing query/refusal/retained-typing/synchronized-output/stale-screen browser specs depend on `/__mock` controls. They ran against a separate sealed preview-enabled test build; shipping web stayed preview-disabled. Real-server counterparts additionally covered real 1008 refusal + Discard/Send again, full-screen mode 2026 input/paint, stale replay, cursor queries and persisted phone geometry. Native binary and shipping assets came from this head. Perf-VM staging (infraternal-perf-test, 4 vCPU, kernel 6.12.111+deb13-amd64, CPUWeight=10000, separate short lock holds): - Production-shaped v29 copy retained 29 migration checksums, 50 users, 10,000 seeded nodes, legacy null hostname and existing canvas; integrity=ok; web HTTP=200. No new migration exists to renumber. The enrolled browser copy additionally retained its pre-existing mesh node (10,001 total). - Desktop + 393×852 phone: reviewed widths `[349,349,349,349]`; the copied-database capture also met the >=349 minimum, with revision 8 unchanged by phone use. Direct persisted-layout review covered rotation, pinch, reload, pointer changes and desktop edits. - Silent shell: desktop and phone showed “screen may be out of date”; typing cleared both. - Full-screen mode 2026: input send 0.9 ms, hold-to-send 10.1 ms, release-to-paint 2.0 ms, one release frame. - Twenty repeated held-input runs: send 0.5–0.9 ms, p95 0.8 ms; echo after release 4.6–16.3 ms, p95 13.8 ms; all input sent/accepted while held, all echoes one release frame. - Desktop and phone each received one cursor-query reply, including a synchronized query. Three-viewer real PTY corpus: 30 query forms, one PTY copy each; sixteen outstanding requests, expiry and ordinary-input ordering passed. - Real resume refusal: fresh typing remained usable; Discard discarded old text; Send again sent it once. - Loads and machine details are in each raw receipt. The initial additional-copy assertion counted 10,000 total nodes and failed because the fixture already had one; only that external harness was corrected. [Diagnostic](https://git.kayg.org/attachments/5a0f5c8a-348f-44a5-922e-3561e3c2aa80). All corrected acceptance checks passed. Author checklist: [review receipt](https://git.kayg.org/attachments/e68a8e19-ee35-4b35-9da7-e8c18e87f6a3). All owned VM scopes are inactive, ports are closed, private VM job removed, and temporary host Cargo/upload/comparison roots removed. Artifacts and evidence are retained outside the checkout. Verbatim final Rust gate table (full unmodified gate transcript attached below): ```text +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | CLI plugin compile-out | PASS | | clippy | PASS | | SSH runtime test helper | PASS | | test | PASS | | SSH inode reuse fixture | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ``` Verbatim final protocol gate output: ```text ==> TypeScript protocol tests bun test v1.4.2 (744846f84) src/mesh-review-revocation.test.ts: (pass) review forbidden event cancels pending snapshot publication [2.38ms] (pass) subscription forbidden ends delivery before a late refresh rejection [1.51ms] (pass) subscription not found ends delivery before a late refresh rejection [1.14ms] (pass) subscription invalid input ends delivery before a late refresh rejection [1.14ms] (pass) subscription mesh unavailable ends delivery before a late refresh rejection [1.12ms] (pass) synchronous subscription refusal releases the transport exactly once [0.23ms] src/codec.test.ts: (pass) wire protocol golden vectors > encodes and decodes each frame exactly as the shared manifest describes [6.66ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.27ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [0.95ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.20ms] (pass) split mux header preserves trailing Close [0.23ms] (pass) reply-marked Input uses an additive bounded layout without changing legacy input [0.46ms] (pass) empty marked input reports the stable invalid-body decoder failure [0.10ms] src/mesh-review-paged-error.test.ts: (pass) review earlier snapshot continuation failure cannot replace a newer complete refresh [2.68ms] (pass) review earlier snapshot continuation cannot overwrite a delivered revision [2.61ms] (pass) a newer paged event owns publication before an earlier refresh resumes [2.49ms] src/mesh-review-refresh.test.ts: (pass) review superseded refresh failure cannot replace authoritative resync [1.38ms] (pass) superseded failure preserves a newer pending refresh [2.66ms] src/stream.test.ts: stream differential: 141 streams, 11988 schedules, zero divergences (pass) Rust and TypeScript preserve every frame at all boundaries and random multi-splits [2349.94ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [6.77ms] src/mesh.test.ts: (pass) Mesh actions map to their typed action IDs and JSON inputs [1.76ms] (pass) Mesh watch coalesces change bursts and never publishes an older revision [3.79ms] (pass) Mesh watch forwards server errors and stops delivering after unsubscribe [0.19ms] (pass) Mesh enrollment carries an explicit authenticated host binding [0.24ms] src/mesh-review-continuation.test.ts: (pass) review continuation stops after stop [1.46ms] (pass) review continuation stops after forbidden [1.17ms] (pass) review continuation stops after superseded [1.14ms] src/mesh-pagination.test.ts: (pass) list assembles bounded pages using the same filter [0.19ms] (pass) a changed revision discards earlier pages before assembling its restart [0.10ms] (pass) malformed continuation is refused: {"revision":1,"offset":0} [0.23ms] (pass) malformed continuation is refused: {"revision":2,"offset":1} [0.02ms] (pass) malformed continuation is refused: {"revision":1,"offset":2} (pass) watch never publishes a partial page; withdrawn=false [1.29ms] (pass) watch never publishes a partial page; withdrawn=true [1.15ms] (pass) a superseding equal-revision resync wins over pending page assembly [1.30ms] src/mesh-review-resync.test.ts: (pass) review watch applies same-revision authoritative resync [0.12ms] (pass) authoritative resync keeps priority over an equal-revision pending list [1.34ms] src/mesh-vectors.test.ts: (pass) every shared Mesh action vector passes through the typed client unchanged [0.81ms] (pass) shared Mesh event vectors drive the typed watch adapter [5.07ms] 39 pass 0 fail 36135 expect() calls Ran 39 tests across 10 files. [2.42s] ``` Verbatim reproducibility output: ```text Preparing worktree (detached HEAD 85b0285b7) HEAD is now at 85b0285b7 Record the measured release-8 production sizes and migration scope (#24) commit=85b0285b733bac4c94d7540c58d4521d1a3410c4 main_checkout=/home/kayg/Developer/infraternal/.worktrees/release-8 alternate_checkout=/home/kayg/.cache/codex-scratch/release-8/static-repro-work-gjktbxw6/long-root/with-a-distinct-and-deliberately-long-checkout-location/checkout-b main_CARGO_HOME=/home/kayg/.cargo alternate_CARGO_HOME=/home/kayg/.cache/codex-scratch/release-8/static-repro-work-gjktbxw6/cargo-home main_target=/home/kayg/.cache/codex-scratch/release-8/target alternate_target=/home/kayg/.cache/codex-scratch/release-8/static-repro-work-gjktbxw6/target main_RUSTUP_HOME=/home/kayg/.rustup alternate_RUSTUP_HOME=/home/kayg/.cache/codex-scratch/release-8/static-repro-work-gjktbxw6/rustup-home SCCACHE_DIR=/home/kayg/.cache/sccache-infraternal alternate_sccache_mode=forced-recache-through-shared-server loadavg_start=3.51 2.74 3.45 3/1051 3581349 rust_sccache_remaps_visible=True native_x86_sccache_remaps_visible=True native_aarch64_sccache_remaps_visible=True rust_registry_mappings_follow_cargo_home=True x86_64-unknown-linux-musl: main_size=21387184 alternate_size=21387184 equal=True x86_64-unknown-linux-musl: main_sha256=bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b alternate_sha256=bc3e7b2fa2bde97d06b548981954a96d68f4a8524fed2b41a7c80d99348de58b aarch64-unknown-linux-musl: main_size=19559112 alternate_size=19559112 equal=True aarch64-unknown-linux-musl: main_sha256=46812c6bfeffb01e536112d422d1db8809bb136f2504efde1bac8df7ca8ce26f alternate_sha256=46812c6bfeffb01e536112d422d1db8809bb136f2504efde1bac8df7ca8ce26f static artifact reproducibility passed; evidence: /home/kayg/.cache/codex-scratch/release-8/evidence/static-repro-3565150 ``` [final-verify-fast.log](https://git.kayg.org/attachments/401a8486-dde3-4543-98f4-c855e768557f) [final-static-reproducibility.log](https://git.kayg.org/attachments/075519a5-c231-47a0-8871-4be151500fc3) [vm-cleanup-check.log](https://git.kayg.org/attachments/aa96d56b-2fcf-4ed6-8131-5d10013ca901) [host-cleanup-check.txt](https://git.kayg.org/attachments/fdad2f38-fe69-4228-8c9c-ebae553221c2) [qualification-commands.txt](https://git.kayg.org/attachments/6759ec18-14c4-4798-a123-14a07de05a61) [perf-driver.log](https://git.kayg.org/attachments/d3e0b845-bb2f-4176-a1fa-0ec2468acd94) [held-input-20-summary.json](https://git.kayg.org/attachments/a6432ec8-5956-4d6f-ab89-48a92bd54100) [vm-cleanup-check.log](https://git.kayg.org/attachments/0cf62414-a1a0-4dbb-8424-50ca5074b652) [MANIFEST.txt](https://git.kayg.org/attachments/9f0cbf75-fdfb-4e4e-8395-f1ccc33853cc) [artifact-SHA256SUMS.txt](https://git.kayg.org/attachments/43e1c788-f86a-4f9b-bf6a-c968419efcd9) [artifact-seal.json](https://git.kayg.org/attachments/eab4b03b-1e69-45e7-a55f-2e2f930451bd) [applied-first-parent.txt](https://git.kayg.org/attachments/63825eec-a7b2-4f53-b110-9d9542f55fba) [staging-final-driver.log](https://git.kayg.org/attachments/83a6af67-ffda-4186-bb47-988ee59d80d3) [real-reviewed.log](https://git.kayg.org/attachments/9e5ecf9d-385d-4b8a-9ff5-ba83f23f8ef7) [staging-capture-driver.log](https://git.kayg.org/attachments/3fb96db9-42d0-4a46-a33c-95d7695e376c) ![release8-phone-canvas.png](https://git.kayg.org/attachments/99927b8e-294d-4bf1-9e9c-90bcebd232b3) ![release8-phone-stale-note.png](https://git.kayg.org/attachments/866c160e-79ce-4c81-8499-a25641cb0b04) ![release8-desktop-stale-note.png](https://git.kayg.org/attachments/91eb41ef-9187-4b7d-a4fa-49fee9c8429c) [release8-phone-widths.json](https://git.kayg.org/attachments/b7212fa7-b6d0-4342-a1a2-b863f50863df) [release8-real-sync-echo.json](https://git.kayg.org/attachments/6bb66b9b-4331-45f9-b377-cf0b55be839c)
Author
Owner

Deployed to production: release 8, 85b0285b7 at 09:32 IST (2026-10-20).

  • Command: deploy-prod.sh 85b0285b7 --bin infraternal-x86_64-musl --bundle bundle --web web (no --arm).
  • Result: DEPLOYED 85b0285b733bac4c94d7540c58d4521d1a3410c4 (backup /var/backups/infraternal/20261020-060227-85b0285b733bac4c94d7540c58d4521d1a3410c4)
  • /healthz 200, new MainPID 140788, active since 04:02:31 UTC.
  • All 5 installed binaries match the release manifest SHA256 (x86 bc3e7b2f…, aarch64 2e94b4ce…, aarch64-session 75801bc7…, x86-musl f87c2b23…, x86-session 7094e3f5…).
  • No migration (schema stays at 0029).
  • Sizes: x86_64 21,387,184 (+1,920 vs release 7), aarch64 19,559,112 (−11,144).
  • release-prod-live → 85b0285b7. Merging back into dev runs as job merge-release8-dev (inputs.rs needs a semantic merge of D307 reply isolation with the per-user pool).

The server restart re-locked the CA: the owner must unlock it.

**Deployed to production: release 8, `85b0285b7`** at 09:32 IST (2026-10-20). - Command: `deploy-prod.sh 85b0285b7 --bin infraternal-x86_64-musl --bundle bundle --web web` (no `--arm`). - Result: `DEPLOYED 85b0285b733bac4c94d7540c58d4521d1a3410c4 (backup /var/backups/infraternal/20261020-060227-85b0285b733bac4c94d7540c58d4521d1a3410c4)` - `/healthz` 200, new MainPID 140788, active since 04:02:31 UTC. - All 5 installed binaries match the release manifest SHA256 (x86 `bc3e7b2f…`, aarch64 `2e94b4ce…`, aarch64-session `75801bc7…`, x86-musl `f87c2b23…`, x86-session `7094e3f5…`). - No migration (schema stays at 0029). - Sizes: x86_64 21,387,184 (+1,920 vs release 7), aarch64 19,559,112 (−11,144). - `release-prod-live` → `85b0285b7`. Merging back into dev runs as job `merge-release8-dev` (inputs.rs needs a semantic merge of D307 reply isolation with the per-user pool). The server restart re-locked the CA: the owner must unlock it.
Author
Owner

Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Stale-screen note merged (c8aa36727 in dev) and deployed in release 8 (85b0285b7, ancestor of dev and prod). Reopen if anything is still missing.

Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Stale-screen note merged (c8aa36727 in dev) and deployed in release 8 (85b0285b7, ancestor of dev and prod). Reopen if anything is still missing.
kayg closed this issue 2026-10-28 17:53:27 +00:00
Sign in to join this conversation.
No labels
launch-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/infraternal#248
No description provided.