Canvas cuts windows at the sides (production) #267

Closed
opened 2026-10-31 16:14:18 +00:00 by kayg · 23 comments
Owner

Owner report 2026-10-31: desktop terminal windows are clipped near both canvas side gutters. Independent review J3 of fix-canvas-side-clip at 614930d992 against origin/dev 42ab33035. Scope: diff and contracts; camera stops, content dimensions, resize limits, phones, narrow desktop and D309. No fixes or pushes by reviewer.

Owner report 2026-10-31: desktop terminal windows are clipped near both canvas side gutters. Independent review J3 of fix-canvas-side-clip at 614930d9928c314e446366d9c0a5493aa352e3d3 against origin/dev 42ab33035. Scope: diff and contracts; camera stops, content dimensions, resize limits, phones, narrow desktop and D309. No fixes or pushes by reviewer.
Author
Owner

J3 independent review started. Branch fix-canvas-side-clip, head 614930d9928c314e446366d9c0a5493aa352e3d3, base origin/dev 42ab33035. Checks on claude@infraternal-dev-01-compute01 in an isolated detached review worktree, using the nix-devshell flake. Requested real browser specs, canvas unit tests, baseline comparison and final fast gate are in progress.

J3 independent review started. Branch `fix-canvas-side-clip`, head `614930d9928c314e446366d9c0a5493aa352e3d3`, base `origin/dev` `42ab33035`. Checks on `claude@infraternal-dev-01-compute01` in an isolated detached review worktree, using the nix-devshell flake. Requested real browser specs, canvas unit tests, baseline comparison and final fast gate are in progress.
Author
Owner

J3 check update: branch canvas unit tests completed on compute01: 282 pass, 0 fail, 19731 expect() calls, Ran 282 tests across 41 files. [50.78s]. The claimed two pre-existing failures did not reproduce on the head. Base comparison, real specs and the corrected fast gate had started, but new SSH connections now fail with No route to host over both IPv4 and IPv6; recovering results is currently blocked. Initial fast invocation used a nested login shell and failed to find bun; it was corrected to run scripts/verify directly in nix develop and is not treated as a product failure.

J3 check update: branch canvas unit tests completed on compute01: `282 pass`, `0 fail`, `19731 expect() calls`, `Ran 282 tests across 41 files. [50.78s]`. The claimed two pre-existing failures did not reproduce on the head. Base comparison, real specs and the corrected fast gate had started, but new SSH connections now fail with `No route to host` over both IPv4 and IPv6; recovering results is currently blocked. Initial fast invocation used a nested login shell and failed to find bun; it was corrected to run scripts/verify directly in nix develop and is not treated as a product failure.
Author
Owner

J3 code-reading finding — P2: the new regression never exercises capped multi-column camera stops (apps/tracer/real/window-overhang.spec.ts:70; apps/tracer/src/canvas/layout/geometry.test.ts:138).

Evidence: the real spec removes every window but one. After the ceiling, its content is narrower than the viewport, so stopsFor returns at layout/stops.ts:36; the changed branch at line 40 is never reached. Every existing stops unit test omits the new maxW argument. The added geometry unit test checks scalar drawnWidth outputs, but not capped contentSize/stops agreement or saved desktop weights. A defect omitting maxW from lock.ts or leaving raw widths in the multi-column stops would therefore escape the added case.

Add a multi-column case with saved widths above the ceiling, assert content width and each reachable stop, and assert 719/720 px behavior and unchanged serialized weights. This is a coverage finding; no demonstrated P0/P1 regression.

Static contract review: coarse or width<720 disables the ceiling; D309 floor remains coarse-only and cannot be undercut by the ceiling; data-w remains raw; contentSize, stop accumulation and rendered columns share drawnWidth; focus positioning reads drawnWidthOf; maxW is included in relayout equality. No Rust/dependency/gate-source changes.

Separate residual limitation, not yet a confirmed rendered finding: D212 spanning windows cover the sum of separately capped tracks (groups.on-demand.ts:139-157), which can still exceed the viewport. I will test that when compute01 returns; I am not promoting the static example to a regression claim. Owner/orchestrator confirms compute01 is down; remaining checks will be rerun through the new mandatory build-slot helper.

J3 code-reading finding — **P2: the new regression never exercises capped multi-column camera stops** (`apps/tracer/real/window-overhang.spec.ts:70`; `apps/tracer/src/canvas/layout/geometry.test.ts:138`). Evidence: the real spec removes every window but one. After the ceiling, its content is narrower than the viewport, so `stopsFor` returns at `layout/stops.ts:36`; the changed branch at line 40 is never reached. Every existing stops unit test omits the new maxW argument. The added geometry unit test checks scalar drawnWidth outputs, but not capped contentSize/stops agreement or saved desktop weights. A defect omitting maxW from lock.ts or leaving raw widths in the multi-column stops would therefore escape the added case. Add a multi-column case with saved widths above the ceiling, assert content width and each reachable stop, and assert 719/720 px behavior and unchanged serialized weights. This is a coverage finding; no demonstrated P0/P1 regression. Static contract review: coarse or width<720 disables the ceiling; D309 floor remains coarse-only and cannot be undercut by the ceiling; data-w remains raw; contentSize, stop accumulation and rendered columns share drawnWidth; focus positioning reads drawnWidthOf; maxW is included in relayout equality. No Rust/dependency/gate-source changes. Separate residual limitation, not yet a confirmed rendered finding: D212 spanning windows cover the sum of separately capped tracks (`groups.on-demand.ts:139-157`), which can still exceed the viewport. I will test that when compute01 returns; I am not promoting the static example to a regression claim. Owner/orchestrator confirms compute01 is down; remaining checks will be rerun through the new mandatory build-slot helper.
Author
Owner

compute01 returned after the owner restart. Remaining checks restarted via mandatory ~/infraternal-ops/build-slot.

Base 42ab33035 canvas units now independently reproduce the claimed failures:

279 pass
2 fail
11498 expect() calls
Ran 281 tests across 41 files. [6.28s]

Both are oracle-output parsing failures (SyntaxError: JSON Parse error: Unexpected EOF), in model/reducer-property.test.ts:50 and model/review-boundary-r2.test.ts:42. Head rerun has reproduced the first and is still finishing the second; the earlier 282/0 head run shows this is intermittent. No reducer correctness assertion has failed so far.

First browser attempt could not launch Chromium (libnspr4.so missing); preparing the Nix browser package before retrying. This is environment setup evidence, not a product-spec failure. Fast gate is still running.

compute01 returned after the owner restart. Remaining checks restarted via mandatory `~/infraternal-ops/build-slot`. Base `42ab33035` canvas units now independently reproduce the claimed failures: ``` 279 pass 2 fail 11498 expect() calls Ran 281 tests across 41 files. [6.28s] ``` Both are oracle-output parsing failures (`SyntaxError: JSON Parse error: Unexpected EOF`), in `model/reducer-property.test.ts:50` and `model/review-boundary-r2.test.ts:42`. Head rerun has reproduced the first and is still finishing the second; the earlier 282/0 head run shows this is intermittent. No reducer correctness assertion has failed so far. First browser attempt could not launch Chromium (`libnspr4.so` missing); preparing the Nix browser package before retrying. This is environment setup evidence, not a product-spec failure. Fast gate is still running.
Author
Owner

Independent reviewer contract checks on compute01 now pass:

4 pass
0 fail
36 expect() calls
Ran 4 tests across 1 file. [11.00ms]

These external evidence tests verify capped multi-column content and every reachable camera stop at 720/800/1400/1650/2400 px, 719/720 px fine-pointer behavior, coarse strips, unchanged serialized weights and raw data-w under the desktop ceiling, and D309 minimums. Source and logs: ~/.cache/codex-scratch/j3-review/evidence/geometry-review.test.ts and geometry-review.log on compute01.

Remaining validation is queued through mandatory build-slot: clean final fast gate (queued 17:30 UTC VM clock), repaired Nix browser setup (queued 17:39). Four slots remain occupied. Before cleanup, zero-byte rlib/rmeta files from the hard reset caused a non-product Rust missing-crate error; the reviewer stopped that run and removed only its own target/debug cache for a clean rerun. The shared Nix-store repair is owned by the orchestrator. No branch source changes or pushes.

Independent reviewer contract checks on compute01 now pass: ``` 4 pass 0 fail 36 expect() calls Ran 4 tests across 1 file. [11.00ms] ``` These external evidence tests verify capped multi-column content and every reachable camera stop at 720/800/1400/1650/2400 px, 719/720 px fine-pointer behavior, coarse strips, unchanged serialized weights and raw data-w under the desktop ceiling, and D309 minimums. Source and logs: `~/.cache/codex-scratch/j3-review/evidence/geometry-review.test.ts` and `geometry-review.log` on compute01. Remaining validation is queued through mandatory build-slot: clean final fast gate (queued 17:30 UTC VM clock), repaired Nix browser setup (queued 17:39). Four slots remain occupied. Before cleanup, zero-byte rlib/rmeta files from the hard reset caused a non-product Rust missing-crate error; the reviewer stopped that run and removed only its own target/debug cache for a clean rerun. The shared Nix-store repair is owned by the orchestrator. No branch source changes or pushes.
Author
Owner

Static verification completed on compute01, exact caps unchanged:

PT_INTERP: absent; size: 21431472 bytes; cap: 21431472 bytes; delta: +0 bytes
PT_INTERP: absent; size: 19605896 bytes; cap: 19605896 bytes; delta: +0 bytes

Rust gate rows: fmt, VT fmt, compile-out, clippy, SSH helper, real-binary fixture paths, inode fixture, process-per-user shim, cargo-deny, and static builds all PASS. Workspace test row failed only at ctrl_c_in_json_mode_ends_with_an_interrupted_envelope_and_exit_130 (still running after SIGINT). This was caused by the reviewer background launch inheriting ignored SIGINT. Directly rerunning the same compiled test with default signal dispositions gives:

running 1 test
test ctrl_c_in_json_mode_ends_with_an_interrupted_envelope_and_exit_130 ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 16 filtered out; finished in 0.83s

The reviewer has corrected the launcher; a full final rerun with restored signals is queued after the requested real browser specs in one mandatory build-slot run. Browser closure is now installed from Nix (Chrome for Testing 156.0.8078.4); no branch source modifications. The queued browser/final-gate run has not obtained a slot yet.

Static verification completed on compute01, exact caps unchanged: ``` PT_INTERP: absent; size: 21431472 bytes; cap: 21431472 bytes; delta: +0 bytes PT_INTERP: absent; size: 19605896 bytes; cap: 19605896 bytes; delta: +0 bytes ``` Rust gate rows: fmt, VT fmt, compile-out, clippy, SSH helper, real-binary fixture paths, inode fixture, process-per-user shim, cargo-deny, and static builds all PASS. Workspace test row failed only at `ctrl_c_in_json_mode_ends_with_an_interrupted_envelope_and_exit_130` (`still running after SIGINT`). This was caused by the reviewer background launch inheriting ignored SIGINT. Directly rerunning the same compiled test with default signal dispositions gives: ``` running 1 test test ctrl_c_in_json_mode_ends_with_an_interrupted_envelope_and_exit_130 ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 16 filtered out; finished in 0.83s ``` The reviewer has corrected the launcher; a full final rerun with restored signals is queued after the requested real browser specs in one mandatory build-slot run. Browser closure is now installed from Nix (Chrome for Testing 156.0.8078.4); no branch source modifications. The queued browser/final-gate run has not obtained a slot yet.
Author
Owner

P2: new regression spec races Console readiness and fails before its regression assertions (apps/tracer/real/window-overhang.spec.ts:69-71, setup at :29-32, dereference at :44).

Fresh production-server run on compute01 with Nix Chromium 156.0.8078.4:

2 passed (28.8s)
1 failed: real/window-overhang.spec.ts:62
Error: evaluate: TypeError: Cannot read properties of null (reading 'getBoundingClientRect')

The two centre.spec.ts cases passed. Error snapshot explicitly says Console, 0 windows, No hosts yet. The new spec waits for the viewport shell, then measures a non-null-asserted Console window. It also closes the setup context as soon as the viewport exists. Await an actual Console window/session before closing setup or measuring/reloading; the viewport alone is not readiness evidence. The failure occurs at the first default-window fit, before any resize or setting change.

Clean sequential unit runs, after rebuilding the reboot-damaged review cache, now pass on both refs:

head: 282 pass / 0 fail / 19731 expect() calls / 41 files / 28.28s
base: 281 pass / 0 fail / 19723 expect() calls / 41 files / 5.86s

Correction to earlier interpretation: the two post-reboot oracle failures did reproduce on both refs, but do not reproduce with the clean cache; they should not be counted as stable dev failures. The original pre-reboot head run also passed.

The signal-corrected fast gate passed every Rust row except an unchanged replay fixture whose default private path exceeded AF_UNIX length after PIDs reached seven digits (109 bytes). Queued rerun uses supported short private state roots. Also queued: repeat the original overhang spec and a separate evidence copy with explicit window readiness; no branch modifications.

**P2: new regression spec races Console readiness and fails before its regression assertions** (`apps/tracer/real/window-overhang.spec.ts:69-71`, setup at `:29-32`, dereference at `:44`). Fresh production-server run on compute01 with Nix Chromium 156.0.8078.4: ``` 2 passed (28.8s) 1 failed: real/window-overhang.spec.ts:62 Error: evaluate: TypeError: Cannot read properties of null (reading 'getBoundingClientRect') ``` The two centre.spec.ts cases passed. Error snapshot explicitly says `Console, 0 windows`, `No hosts yet`. The new spec waits for the viewport shell, then measures a non-null-asserted Console window. It also closes the setup context as soon as the viewport exists. Await an actual Console window/session before closing setup or measuring/reloading; the viewport alone is not readiness evidence. The failure occurs at the first default-window fit, before any resize or setting change. Clean sequential unit runs, after rebuilding the reboot-damaged review cache, now pass on both refs: ``` head: 282 pass / 0 fail / 19731 expect() calls / 41 files / 28.28s base: 281 pass / 0 fail / 19723 expect() calls / 41 files / 5.86s ``` Correction to earlier interpretation: the two post-reboot oracle failures did reproduce on both refs, but **do not reproduce with the clean cache**; they should not be counted as stable dev failures. The original pre-reboot head run also passed. The signal-corrected fast gate passed every Rust row except an unchanged replay fixture whose default private path exceeded AF_UNIX length after PIDs reached seven digits (`109 bytes`). Queued rerun uses supported short private state roots. Also queued: repeat the original overhang spec and a separate evidence copy with explicit window readiness; no branch modifications.
Author
Owner

The original overhang spec failed twice with the same zero-window/null-dereference error. A temporary review copy, with only explicit Console-window waits at existing viewport waits plus a screenshot, passes all original resizing/setting/reload/pan/narrowing assertions:

1 passed (17.1s)

This isolates the new P2 finding to readiness, and supplies production-build evidence that the geometry fix works. The temporary test was removed; git status --short is empty on both review checkouts and head remains 614930d9928c314e446366d9c0a5493aa352e3d3. Screenshot attached for owner review (1440×900 CSS px after narrowing, DPR 2); no visual-quality verdict by the reviewer.

The last full fast run is now using a short private state root under /home/claude/.cache/j3r, preserving the native trust boundary and same-filesystem hard-link fixtures. Its initial native binary suite passes (103 passed / 0 failed).

The original overhang spec failed twice with the same zero-window/null-dereference error. A temporary review copy, with only explicit Console-window waits at existing viewport waits plus a screenshot, passes all original resizing/setting/reload/pan/narrowing assertions: ``` 1 passed (17.1s) ``` This isolates the new P2 finding to readiness, and supplies production-build evidence that the geometry fix works. The temporary test was removed; `git status --short` is empty on both review checkouts and head remains `614930d9928c314e446366d9c0a5493aa352e3d3`. Screenshot attached for owner review (1440×900 CSS px after narrowing, DPR 2); no visual-quality verdict by the reviewer. The last full fast run is now using a short private state root under `/home/claude/.cache/j3r`, preserving the native trust boundary and same-filesystem hard-link fixtures. Its initial native binary suite passes (103 passed / 0 failed).
Author
Owner

J3 independent review finished. Verdict: MERGE under D206; no P0/P1 findings. Two P2 test repairs should follow forward.

Branch fix-canvas-side-clip, head 614930d9928c314e446366d9c0a5493aa352e3d3, base origin/dev 42ab330358eb.

Findings:

  1. P2 — readiness race: apps/tracer/real/window-overhang.spec.ts:29 and :69. Waiting for .cl-viewport does not establish a Console window. Unchanged new spec failed twice at its first fit assertion (Console, 0 windows; null getBoundingClientRect). Await an actual Console window before closing setup and before measurements/reloads. A temporary copy with those waits passed every original geometry assertion; it was removed after capture.
  2. P2 — missing multi-column stop coverage: apps/tracer/real/window-overhang.spec.ts:70. The lone-column case takes the single centred-stop shortcut, never the modified per-column maxW branch. Add three oversized columns and verify every stop, content size, and persisted weights; also retain the 719/720 px and coarse-strip boundaries. Independent external contract checks passed 4/4 (36 assertions), including these geometry and persistence invariants.

Requested checks on compute01 via nix-devshell and mandatory build-slot:

  • real/centre.spec.ts: desktop and phone cases both passed.
  • New original overhang spec: fails twice on fixture readiness, as above. Readiness-only review copy: 1 passed (17.1s); screenshot attached in the preceding comment.
  • Clean bun test src/canvas: head 282 pass / 0 fail / 19731 expectations; unmodified base 281 pass / 0 fail / 19723 expectations. The claimed two pre-existing failures did not reproduce with a clean cache. Earlier post-reboot failures on both refs disappeared after rebuilding damaged artifacts.
  • scripts/verify fast: exit 0. Signal defaults restored; supported short private fixture roots under /home/claude/.cache/j3r. Final output below is verbatim; complete raw output attached.
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| CLI plugin compile-out    | PASS         |
| clippy                    | PASS         |
| SSH runtime test helper   | PASS         |
| real-binary fixture paths | PASS         |
| test                      | PASS         |
| SSH inode reuse fixture   | PASS         |
| shim process-per-user     | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+

Final TypeScript protocol output, verbatim:

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

Static sizes, verbatim:

PT_INTERP: absent; size: 21431472 bytes; cap: 21431472 bytes; delta: +0 bytes
PT_INTERP: absent; size: 19605896 bytes; cap: 19605896 bytes; delta: +0 bytes

Raw evidence: /home/claude/.cache/codex-scratch/j3-review/evidence/ on compute01; copied to /home/kayg/.cache/codex-scratch/j3-review/evidence/ on the control host. Screenshot: single-column-fixed.png (1440×900 CSS px, DPR 2). All temporary repo test files were removed, both review worktrees are clean, and no review-owned process remains in them. No commits or pushes. Issue left open.

J3 independent review finished. **Verdict: MERGE under D206; no P0/P1 findings. Two P2 test repairs should follow forward.** Branch `fix-canvas-side-clip`, head `614930d9928c314e446366d9c0a5493aa352e3d3`, base `origin/dev` `42ab330358eb`. Findings: 1. **P2 — readiness race**: `apps/tracer/real/window-overhang.spec.ts:29` and `:69`. Waiting for `.cl-viewport` does not establish a Console window. Unchanged new spec failed twice at its first fit assertion (`Console, 0 windows`; null getBoundingClientRect). Await an actual Console window before closing setup and before measurements/reloads. A temporary copy with those waits passed every original geometry assertion; it was removed after capture. 2. **P2 — missing multi-column stop coverage**: `apps/tracer/real/window-overhang.spec.ts:70`. The lone-column case takes the single centred-stop shortcut, never the modified per-column maxW branch. Add three oversized columns and verify every stop, content size, and persisted weights; also retain the 719/720 px and coarse-strip boundaries. Independent external contract checks passed 4/4 (36 assertions), including these geometry and persistence invariants. Requested checks on compute01 via nix-devshell and mandatory build-slot: - `real/centre.spec.ts`: desktop and phone cases both passed. - New original overhang spec: fails twice on fixture readiness, as above. Readiness-only review copy: `1 passed (17.1s)`; screenshot attached in the preceding comment. - Clean `bun test src/canvas`: head `282 pass / 0 fail / 19731 expectations`; unmodified base `281 pass / 0 fail / 19723 expectations`. The claimed two pre-existing failures did not reproduce with a clean cache. Earlier post-reboot failures on both refs disappeared after rebuilding damaged artifacts. - `scripts/verify fast`: **exit 0**. Signal defaults restored; supported short private fixture roots under `/home/claude/.cache/j3r`. Final output below is verbatim; complete raw output attached. ``` +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | CLI plugin compile-out | PASS | | clippy | PASS | | SSH runtime test helper | PASS | | real-binary fixture paths | PASS | | test | PASS | | SSH inode reuse fixture | PASS | | shim process-per-user | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ``` Final TypeScript protocol output, verbatim: ``` 39 pass 0 fail 50325 expect() calls Ran 39 tests across 10 files. [7.64s] ``` Static sizes, verbatim: ``` PT_INTERP: absent; size: 21431472 bytes; cap: 21431472 bytes; delta: +0 bytes PT_INTERP: absent; size: 19605896 bytes; cap: 19605896 bytes; delta: +0 bytes ``` Raw evidence: `/home/claude/.cache/codex-scratch/j3-review/evidence/` on compute01; copied to `/home/kayg/.cache/codex-scratch/j3-review/evidence/` on the control host. Screenshot: `single-column-fixed.png` (1440×900 CSS px, DPR 2). All temporary repo test files were removed, both review worktrees are clean, and no review-owned process remains in them. No commits or pushes. Issue left open.
Author
Owner

J31 starting: fix-canvas-side-clip at 614930d99, rebasing onto origin/dev 57491e918. Repairing Console readiness waits and adding three oversized-column camera-stop coverage; VM gates via build-slot, then lease push.

J31 starting: fix-canvas-side-clip at 614930d99, rebasing onto origin/dev 57491e918. Repairing Console readiness waits and adding three oversized-column camera-stop coverage; VM gates via build-slot, then lease push.
Author
Owner

J31 finding: J3’s readiness-only copy survives in ~/.cache/codex-scratch/j3-review/evidence/j3-overhang-readiness.spec.ts on the control host (the temporary repo copy was removed). Reused its actual Console-window waits at setup and reloads. Added a real three-column scenario: hand drags, oversized saved widths, Wide live/reload, narrower viewport, and forward/backward wheel stops including both endpoints. No product code changes. Compute01 final gate is queued via build-slot; evidence under ~/.cache/codex-scratch/j31/evidence/.

J31 finding: J3’s readiness-only copy survives in ~/.cache/codex-scratch/j3-review/evidence/j3-overhang-readiness.spec.ts on the control host (the temporary repo copy was removed). Reused its actual Console-window waits at setup and reloads. Added a real three-column scenario: hand drags, oversized saved widths, Wide live/reload, narrower viewport, and forward/backward wheel stops including both endpoints. No product code changes. Compute01 final gate is queued via build-slot; evidence under ~/.cache/codex-scratch/j31/evidence/.
Author
Owner

J31 validation status: queued about 16 minutes in compute01 build-slot (all four slots held by other jobs). Runner PID 2513848 remains healthy; no J31 build/test has begun. Host has 76 GB free. Rebased source and both test repairs are ready in ~/Developer/Worktrees/infraternal-side-clip-p2; VM ~/worktrees/j31; runner/evidence ~/.cache/codex-scratch/j31/. No product-code change, no test result claimed yet.

J31 validation status: queued about 16 minutes in compute01 build-slot (all four slots held by other jobs). Runner PID 2513848 remains healthy; no J31 build/test has begun. Host has 76 GB free. Rebased source and both test repairs are ready in ~/Developer/Worktrees/infraternal-side-clip-p2; VM ~/worktrees/j31; runner/evidence ~/.cache/codex-scratch/j31/. No product-code change, no test result claimed yet.
Author
Owner

J31 crash-recovery checkpoint pushed with lease: fix-canvas-side-clip @ bacce9d911 (WIP test commit, not a completion claim), rebased onto 57491e918. Compute01 acquired a slot after ~21 minutes and is compiling the production x86 musl binary in ~/worktrees/j31. Runner log: ~/.cache/codex-scratch/j31/evidence/runner.log. Next: five consecutive overhang runs, centre spec, fast gate; amend WIP to final atomic test commit after evidence, lease push, delete target.

J31 crash-recovery checkpoint pushed with lease: fix-canvas-side-clip @ bacce9d911c8735d67bb4ded8f10537f76f92577 (WIP test commit, not a completion claim), rebased onto 57491e918. Compute01 acquired a slot after ~21 minutes and is compiling the production x86 musl binary in ~/worktrees/j31. Runner log: ~/.cache/codex-scratch/j31/evidence/runner.log. Next: five consecutive overhang runs, centre spec, fast gate; amend WIP to final atomic test commit after evidence, lease push, delete target.
Author
Owner

J31 launcher finding: the initial standalone static build omitted scripts/auth-toolchain (normally called by scripts/verify), so OpenSSL compilation could not find target/auth-tools/zig/zig. No product assertion ran. Corrected the external runner to bootstrap the pinned checksum-verified Zig first and restarted via build-slot (PID 2828070). Initial log retained as runner-missing-bootstrap.log; no repo-source change for this environment correction.

J31 launcher finding: the initial standalone static build omitted scripts/auth-toolchain (normally called by scripts/verify), so OpenSSL compilation could not find target/auth-tools/zig/zig. No product assertion ran. Corrected the external runner to bootstrap the pinned checksum-verified Zig first and restarted via build-slot (PID 2828070). Initial log retained as runner-missing-bootstrap.log; no repo-source change for this environment correction.
Author
Owner

J31 progress checkpoint: corrected runner PID 2828070 is still queued in compute01 build-slot after ~28 minutes (all four slots occupied by active builds). No new source changes since pushed WIP bacce9d911; local worktree clean. Corrected external script ~/.cache/codex-scratch/j31/run.sh now calls scripts/auth-toolchain before static-cargo. Still pending: production browser runs and verify fast. Evidence/logs remain ~/.cache/codex-scratch/j31/evidence/; no completion or passing-test claim.

J31 progress checkpoint: corrected runner PID 2828070 is still queued in compute01 build-slot after ~28 minutes (all four slots occupied by active builds). No new source changes since pushed WIP bacce9d911c8735d67bb4ded8f10537f76f92577; local worktree clean. Corrected external script ~/.cache/codex-scratch/j31/run.sh now calls scripts/auth-toolchain before static-cargo. Still pending: production browser runs and verify fast. Evidence/logs remain ~/.cache/codex-scratch/j31/evidence/; no completion or passing-test claim.
Author
Owner

J31 source-review finding before execution: live Window Sizes changes retain hand-resized pixel widths (views/world.ts fitWidths), while reload reconstructs them from rounded persisted weights (model/document.ts). Corrected the new test to require oversized raw widths after reload/narrowing, and compare canonical saved weights across reload instead of incorrectly requiring identical raw pixel widths. WIP checkpoint amended and lease-pushed to 0582a8cba; no product changes. Corrected runner remains queued.

J31 source-review finding before execution: live Window Sizes changes retain hand-resized pixel widths (views/world.ts fitWidths), while reload reconstructs them from rounded persisted weights (model/document.ts). Corrected the new test to require oversized raw widths after reload/narrowing, and compare canonical saved weights across reload instead of incorrectly requiring identical raw pixel widths. WIP checkpoint amended and lease-pushed to 0582a8cba; no product changes. Corrected runner remains queued.
Author
Owner

J31 source-review correction: clusters.css gives .cl-col 28 px of shadow padding beyond --w; the cap assertion now measures .ui-window boxes, consistently with the overhang assertions, rather than the scroller padding box. Latest WIP checkpoint c0bd59174d is lease-pushed. Runner PID 2828070 is still queued; no production test result yet.

J31 source-review correction: clusters.css gives .cl-col 28 px of shadow padding beyond --w; the cap assertion now measures .ui-window boxes, consistently with the overhang assertions, rather than the scroller padding box. Latest WIP checkpoint c0bd59174de53d1a1910000611315ed9354415c9 is lease-pushed. Runner PID 2828070 is still queued; no production test result yet.
Author
Owner

J31 queue/launcher update: build-slot already applies nice -n10; removed the redundant outer nice -n10 that would otherwise produce nice 20 and slow compilation. Stopped only the still-waiting J31 runner and its sleep child, then restarted through build-slot as PID 3875009. Source checkpoint remains c0bd59174d. The previous queue log is retained as queue-second.log (~80 minutes waiting); production tests and fast gate remain pending. No other job process or slot limit touched.

J31 queue/launcher update: build-slot already applies nice -n10; removed the redundant outer nice -n10 that would otherwise produce nice 20 and slow compilation. Stopped only the still-waiting J31 runner and its sleep child, then restarted through build-slot as PID 3875009. Source checkpoint remains c0bd59174de53d1a1910000611315ed9354415c9. The previous queue log is retained as queue-second.log (~80 minutes waiting); production tests and fast gate remain pending. No other job process or slot limit touched.
Author
Owner

J31 steering applied: clean rebase onto origin/dev 105b1a28d (only tracer files changed in the new base; Rust source identity unchanged). Latest WIP lease-pushed: b9cd1d38f5. Synced new overflow:clip-on-.panes CSS before the pending production tracer build; refreshed its comment to explain the current backdrop-root invariant, and updated the regression module comment to say canvas container. All five overhang runs and centre are still ahead, so every requested browser run will use the new clipping element. Compute01 has a slot and is compiling release Rust; PID 3875009, evidence ~/.cache/codex-scratch/j31/evidence/.

J31 steering applied: clean rebase onto origin/dev 105b1a28d (only tracer files changed in the new base; Rust source identity unchanged). Latest WIP lease-pushed: b9cd1d38f5e76860e6717788d79fac4ed1ef60ad. Synced new overflow:clip-on-.panes CSS before the pending production tracer build; refreshed its comment to explain the current backdrop-root invariant, and updated the regression module comment to say canvas container. All five overhang runs and centre are still ahead, so every requested browser run will use the new clipping element. Compute01 has a slot and is compiling release Rust; PID 3875009, evidence ~/.cache/codex-scratch/j31/evidence/.
Author
Owner

J31 production build and tracer typecheck succeeded on rebased head b9cd1d38f. The first browser invocation failed during config loading, before tests: the external Playwright config was treated as CommonJS and rejected import.meta in the repo evidence helper. Added type:module metadata outside the repo; a lightweight --list invocation now successfully discovers all four requested cases. Restarted the requested browser/gate sequence through build-slot. Build evidence release-build.log; loader failure overhang-config-loader.log. No product assertion has failed, and no product code changed.

J31 production build and tracer typecheck succeeded on rebased head b9cd1d38f. The first browser invocation failed during config loading, before tests: the external Playwright config was treated as CommonJS and rejected import.meta in the repo evidence helper. Added type:module metadata outside the repo; a lightweight --list invocation now successfully discovers all four requested cases. Restarted the requested browser/gate sequence through build-slot. Build evidence release-build.log; loader failure overhang-config-loader.log. No product assertion has failed, and no product code changed.
Author
Owner

J31 browser validation on fix-canvas-side-clip WIP b9cd1d38f5e76860e6717788d79fac4ed1ef60ad, rebased onto 105b1a28d: all requested production browser checks pass on compute01 via build-slot and nix develop.

real/window-overhang.spec.ts, five consecutive invocations, retries disabled:

2 passed (38.5s)
2 passed (40.0s)
2 passed (41.7s)
2 passed (43.8s)
2 passed (40.1s)

real/centre.spec.ts:

2 passed (26.6s)

The new three-column scenario hand-resizes each window, checks live Wide sizing, reloads with all three saved widths above the viewport ceiling, narrows to 1440×900, and traverses wheel stops forward/backward including both endpoints. Each framed window stays within 1 px of both viewport edges. Canonical saved weights survive reload and narrowing unchanged. No demonstrated product bug, so no product implementation change.

Attached production screenshots show each of the three columns at 1440×900 CSS px, DPR 2, after narrowing. These are evidence for owner review, not an author visual-quality verdict. Full five run logs and centre log attached. scripts/verify fast is currently running; final commit/lease push/target cleanup will follow its result. Evidence: ~/.cache/codex-scratch/j31/evidence/ on compute01 and control host.

J31 browser validation on `fix-canvas-side-clip` WIP `b9cd1d38f5e76860e6717788d79fac4ed1ef60ad`, rebased onto `105b1a28d`: **all requested production browser checks pass** on compute01 via build-slot and `nix develop`. `real/window-overhang.spec.ts`, five consecutive invocations, retries disabled: ``` 2 passed (38.5s) 2 passed (40.0s) 2 passed (41.7s) 2 passed (43.8s) 2 passed (40.1s) ``` `real/centre.spec.ts`: ``` 2 passed (26.6s) ``` The new three-column scenario hand-resizes each window, checks live Wide sizing, reloads with all three saved widths above the viewport ceiling, narrows to 1440×900, and traverses wheel stops forward/backward including both endpoints. Each framed window stays within 1 px of both viewport edges. Canonical saved weights survive reload and narrowing unchanged. No demonstrated product bug, so no product implementation change. Attached production screenshots show each of the three columns at 1440×900 CSS px, DPR 2, after narrowing. These are evidence for owner review, not an author visual-quality verdict. Full five run logs and centre log attached. `scripts/verify fast` is currently running; final commit/lease push/target cleanup will follow its result. Evidence: `~/.cache/codex-scratch/j31/evidence/` on compute01 and control host.
Author
Owner

J31 finished. Branch fix-canvas-side-clip, final head b9c55d7c44e3fce7e0aa22c0a801bc843ed7ed70, rebased onto 105b1a28d. Lease push confirmed. One atomic follow-up test/comment commit above the rebased original geometry fix; no new product behavior change.

Completed both P2 repairs: actual Console-window readiness waits (reused J3 evidence copy), plus three hand-resized columns through live Wide sizing, reload and narrower viewport. Every wheel stop and both endpoints frame the intended window within 1 px of both viewport edges; persisted weights remain unchanged. Updated the clipping comment for overflow clipping on .panes.

Production checks on claude@infraternal-dev-01-compute01, through build-slot and nix develop in the job worktree:

  • real/window-overhang.spec.ts: five consecutive invocations, retries disabled, 2 passed each (38.5s, 40.0s, 41.7s, 43.8s, 40.1s); no flakes.
  • real/centre.spec.ts: 2 passed (26.6s), desktop and phone.
  • scripts/verify fast: exit 0. Final summary and size/protocol output below, verbatim; full raw output attached.
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| CLI plugin compile-out    | PASS         |
| clippy                    | PASS         |
| SSH runtime test helper   | PASS         |
| real-binary fixture paths | PASS         |
| test                      | PASS         |
| SSH inode reuse fixture   | PASS         |
| shim process-per-user     | PASS         |
| cargo-deny                | PASS         |
| gate architecture         | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+

PT_INTERP: absent; size: 21431472 bytes; cap: 21431472 bytes; delta: +0 bytes
PT_INTERP: absent; size: 19605896 bytes; cap: 19605896 bytes; delta: +0 bytes

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

Both the final commit and the validated WIP have tree 73515c072508a9265e83dd69a4a4dc3ec70ad999; final amendment changed commit metadata only. Control and VM worktrees are clean, and the remote branch head matches. Temporary dev/test debug symbols were disabled to limit disk use; release settings were unchanged.

Production screenshots of all three columns after narrowing and all browser logs are attached to the browser evidence comment. Evidence is also preserved under /home/kayg/.cache/codex-scratch/j31/evidence/ and /home/claude/.cache/codex-scratch/j31/evidence/.

Cleanup confirmed: zero remaining job test/build/browser processes; /home/claude/worktrees/j31/target deleted (7.9 GiB), private fixture root removed, control target absent. Issue left open. No blockers and no owner decision needed.

J31 finished. Branch `fix-canvas-side-clip`, final head **`b9c55d7c44e3fce7e0aa22c0a801bc843ed7ed70`**, rebased onto `105b1a28d`. Lease push confirmed. One atomic follow-up test/comment commit above the rebased original geometry fix; no new product behavior change. Completed both P2 repairs: actual Console-window readiness waits (reused J3 evidence copy), plus three hand-resized columns through live Wide sizing, reload and narrower viewport. Every wheel stop and both endpoints frame the intended window within 1 px of both viewport edges; persisted weights remain unchanged. Updated the clipping comment for overflow clipping on `.panes`. Production checks on `claude@infraternal-dev-01-compute01`, through build-slot and `nix develop` in the job worktree: - `real/window-overhang.spec.ts`: five consecutive invocations, retries disabled, **2 passed** each (38.5s, 40.0s, 41.7s, 43.8s, 40.1s); no flakes. - `real/centre.spec.ts`: **2 passed (26.6s)**, desktop and phone. - `scripts/verify fast`: **exit 0**. Final summary and size/protocol output below, verbatim; full raw output attached. ``` +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | CLI plugin compile-out | PASS | | clippy | PASS | | SSH runtime test helper | PASS | | real-binary fixture paths | PASS | | test | PASS | | SSH inode reuse fixture | PASS | | shim process-per-user | PASS | | cargo-deny | PASS | | gate architecture | PASS | | static builds | PASS | +---------------------------+--------------+ PT_INTERP: absent; size: 21431472 bytes; cap: 21431472 bytes; delta: +0 bytes PT_INTERP: absent; size: 19605896 bytes; cap: 19605896 bytes; delta: +0 bytes 39 pass 0 fail 50325 expect() calls Ran 39 tests across 10 files. [5.84s] ``` Both the final commit and the validated WIP have tree `73515c072508a9265e83dd69a4a4dc3ec70ad999`; final amendment changed commit metadata only. Control and VM worktrees are clean, and the remote branch head matches. Temporary dev/test debug symbols were disabled to limit disk use; release settings were unchanged. Production screenshots of all three columns after narrowing and all browser logs are attached to [the browser evidence comment](https://git.kayg.org/kayg/infraternal/issues/267#issuecomment-71826). Evidence is also preserved under `/home/kayg/.cache/codex-scratch/j31/evidence/` and `/home/claude/.cache/codex-scratch/j31/evidence/`. Cleanup confirmed: zero remaining job test/build/browser processes; `/home/claude/worktrees/j31/target` deleted (7.9 GiB), private fixture root removed, control target absent. Issue left open. No blockers and no owner decision needed.
Author
Owner

Closed by the orchestrator during the 2026-11-09 night housekeeping (owner order: "close stale prs/issues"). The work has landed on dev, and the latest note here is a finish or merge note (J387 inventory on #436). Reopen if anything is still missing.

Closed by the orchestrator during the 2026-11-09 night housekeeping (owner order: "close stale prs/issues"). The work has landed on dev, and the latest note here is a finish or merge note (J387 inventory on #436). Reopen if anything is still missing.
kayg closed this issue 2026-11-08 19:04: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#267
No description provided.