Terminal opens refused at 128 sessions; dead sessions linger; background sessions invisible #151

Closed
opened 2026-10-10 09:57:17 +00:00 by kayg · 79 comments
Owner

Owner (2026-10-10), production: new terminals sometimes fail with "The server could not open this terminal."

Root cause, found on monitor01:

  1. A hard cap. The infraternal agent caps a host at MAX_TERMINAL_STREAMS = 128 sessions (plugin-api/src/channel.rs:35, agent/src/daemon.rs:345). It replies "invalid terminal open or session limit", which the UI shows generically.
  2. Sessions pile up unseen. Closing a window keeps its session running (D178), so sessions accumulate with nothing to show it. 130 were open, 117 of them created today.
  3. Dead sessions linger. When a session's shell exits, its shim keeps running: 5.5 MB each, still counted, and its socket stays in /run/infraternal/sessions. After hanging up idle shells, 128 shims stayed alive with no shell. The agent held 0 pidfds for them, yet the sockets remained.

Measured: a session costs about 10.5 MB (5.5 MB shim + 5 MB shell). 130 sessions ≈ 1.4 GB of 8 GB.

Manual cleanup done with the owner's approval: idle shells were hung up, the empty shims terminated, and the stale sockets removed. One live session is left.

Owner decision (Q2, "we need way better ux here"):

  • No fixed cap (D214). Bound sessions by memory instead, refusing only when the host is actually low on memory.
  • A clear error naming the cause, with one click to see the background sessions and close the idle ones.
  • Background (detached) sessions are visible, so they can't silently pile up.
Owner (2026-10-10), production: new terminals sometimes fail with "The server could not open this terminal." **Root cause, found on monitor01:** 1. **A hard cap.** The infraternal agent caps a host at `MAX_TERMINAL_STREAMS = 128` sessions (`plugin-api/src/channel.rs:35`, `agent/src/daemon.rs:345`). It replies "invalid terminal open or session limit", which the UI shows generically. 2. **Sessions pile up unseen.** Closing a window keeps its session running (D178), so sessions accumulate with nothing to show it. 130 were open, 117 of them created today. 3. **Dead sessions linger.** When a session's shell exits, its shim keeps running: 5.5 MB each, still counted, and its socket stays in `/run/infraternal/sessions`. After hanging up idle shells, 128 shims stayed alive with no shell. The agent held 0 pidfds for them, yet the sockets remained. Measured: a session costs about 10.5 MB (5.5 MB shim + 5 MB shell). 130 sessions ≈ 1.4 GB of 8 GB. Manual cleanup done with the owner's approval: idle shells were hung up, the empty shims terminated, and the stale sockets removed. One live session is left. **Owner decision (Q2, "we need way better ux here"):** - No fixed cap (D214). Bound sessions by memory instead, refusing only when the host is actually low on memory. - A clear error naming the cause, with one click to see the background sessions and close the idle ones. - Background (detached) sessions are visible, so they can't silently pile up.
Author
Owner

Started session-bounds at production base 0d93a50275. Read #151 (no comments, no parent linked), CLAUDE.md, DECISIONS.md, architecture and process. Scope: local shim/session lifecycle, memory admission, structured refusal and background counts; remote exit propagation stays with release-addhost. Finding: shim session.rs waits for AckExit indefinitely; daemon.rs terminal relay intentionally never acknowledges Exited; sessions.rs discovery also refuses after 128 sockets.

Started session-bounds at production base 0d93a50275788d02116bb6f7fc536e2e44eeddf8. Read #151 (no comments, no parent linked), CLAUDE.md, DECISIONS.md, architecture and process. Scope: local shim/session lifecycle, memory admission, structured refusal and background counts; remote exit propagation stays with release-addhost. Finding: shim session.rs waits for AckExit indefinitely; daemon.rs terminal relay intentionally never acknowledges Exited; sessions.rs discovery also refuses after 128 sockets.
Author
Owner

Contract proposal under approved #151/D214 brief: keep all v1 shim frame layouts, including ExitAck. Replace indefinite dead-exit retention with retirement once final output and Exited have been flushed to each attached viewer; retire without a viewer within one second. Live detached shells still survive (D13/D178). Add terminal.open refusal JSON reason codes and optional numeric available_mib/session_count; expose background count additively. No new transport/engine choice.

Contract proposal under approved #151/D214 brief: keep all v1 shim frame layouts, including ExitAck. Replace indefinite dead-exit retention with retirement once final output and Exited have been flushed to each attached viewer; retire without a viewer within one second. Live detached shells still survive (D13/D178). Add terminal.open refusal JSON reason codes and optional numeric available_mib/session_count; expose background count additively. No new transport/engine choice.
Author
Owner

Failing real-shell test before fix: detached_shell_exit_reaps_shim_within_one_second failed with "dead shim socket retained" after 1.03 s (crates/infraternal/tests/shim.rs). Shim now drains final output, flushes Exited to every output viewer, and exits/removes socket without requiring ExitAck. Discovery/control probes do not backpressure PTY output. All 8 real shim tests passed in 3.30 s; full fast gate running. Test state moved under job scratch (104-byte socket path) because the absolute worktree socket path exceeds Linux sun_path.
Finding: apps/tracer/src/canvas/sessions/live-inventory.ts explicitly implements only browser-local remembered sessions pending #100; existing picker can be opened, but cannot currently end host sessions. Backend count will report host truth independently; no replacement visual design in this lane.

Failing real-shell test before fix: detached_shell_exit_reaps_shim_within_one_second failed with "dead shim socket retained" after 1.03 s (crates/infraternal/tests/shim.rs). Shim now drains final output, flushes Exited to every output viewer, and exits/removes socket without requiring ExitAck. Discovery/control probes do not backpressure PTY output. All 8 real shim tests passed in 3.30 s; full fast gate running. Test state moved under job scratch (104-byte socket path) because the absolute worktree socket path exceeds Linux sun_path. Finding: apps/tracer/src/canvas/sessions/live-inventory.ts explicitly implements only browser-local remembered sessions pending #100; existing picker can be opened, but cannot currently end host sessions. Backend count will report host truth independently; no replacement visual design in this lane.
Author
Owner

Correction to the memory figure (smaps_rollup on monitor01, one empty session):

RSS Pss Private dirty
shim 4.5 MB 4.5 MB 0.96 MB
bash 5.3 MB 3.0 MB 2.3 MB

The shim's other 3.5 MB is private-clean text from the 18.7 MB static binary. It is shared across every shim through the page cache, so with N shims it isn't paid N times.

The real incremental cost of an empty session is about 3.3 MB, of which infraternal's shim is about 1 MB. 130 empty sessions ≈ 430 MB, not 1.4 GB. The 128 cap was not protecting memory.

For this job:

  • Measure PSS and private dirty, not RSS, at 200 sessions.
  • Report how much of the shim's ~1 MB is thread stacks, the runtime and the initial VT grid, and what can be trimmed.
  • Scrollback is the real per-session cost (about 2 KB per retained line, D94), so the memory bound must account for it.
**Correction to the memory figure (smaps_rollup on monitor01, one empty session):** | | RSS | Pss | Private dirty | |---|---|---|---| | shim | 4.5 MB | 4.5 MB | **0.96 MB** | | bash | 5.3 MB | 3.0 MB | **2.3 MB** | The shim's other 3.5 MB is private-clean text from the 18.7 MB static binary. It is shared across every shim through the page cache, so with N shims it isn't paid N times. The real incremental cost of an empty session is about 3.3 MB, of which infraternal's shim is about 1 MB. 130 empty sessions ≈ 430 MB, not 1.4 GB. The 128 cap was not protecting memory. For this job: - Measure PSS and private dirty, not RSS, at 200 sessions. - Report how much of the shim's ~1 MB is thread stacks, the runtime and the initial VT grid, and what can be trimmed. - Scrollback is the real per-session cost (about 2 KB per retained line, D94), so the memory bound must account for it.
Author
Owner

Resumed session-bounds at base 0d93a50275, HEAD unchanged. Read all four #151 comments; no parent is linked. Existing shim reaping diff and 8/8 real tests retained. Previous fast gate stopped on ENOSPC; rerunning after disk recovery before committing/pushing the shim step. Memory measurement will use PSS/private dirty at 200 sessions, including scrollback/runtime/grid attribution.

Resumed session-bounds at base 0d93a50275788d02116bb6f7fc536e2e44eeddf8, HEAD unchanged. Read all four #151 comments; no parent is linked. Existing shim reaping diff and 8/8 real tests retained. Previous fast gate stopped on ENOSPC; rerunning after disk recovery before committing/pushing the shim step. Memory measurement will use PSS/private dirty at 200 sessions, including scrollback/runtime/grid attribution.
Author
Owner

Measurement blocked by host-wide PTY exhaustion: /proc/sys/kernel/pty/nr=4041, max=4096 (55 slots free). The 200-session fixture failed at session 55; all fixture children were retired. Cannot complete simultaneous 200-session measurement until other owners release at least 200 PTYs; this job cannot change host sysctls or terminate other jobs. Host infraternal-dev load=26.37 27.10 20.67, MemAvailable=4933996 KiB. Continuing implementation and gates; will retry if capacity returns. No valid 200-session figures claimed.

Measurement blocked by host-wide PTY exhaustion: /proc/sys/kernel/pty/nr=4041, max=4096 (55 slots free). The 200-session fixture failed at session 55; all fixture children were retired. Cannot complete simultaneous 200-session measurement until other owners release at least 200 PTYs; this job cannot change host sysctls or terminate other jobs. Host infraternal-dev load=26.37 27.10 20.67, MemAvailable=4933996 KiB. Continuing implementation and gates; will retry if capacity returns. No valid 200-session figures claimed.
Author
Owner

Fresh shim verification: 8/8 real shim tests passed in 5.63 s; real daemon 24-restart oracle passed in 39.74 s; queue saturation oracle passed in 35.66 s. Gate found fixture setup failure (initial attach credit: FileNotFoundError target/ac, before binary launch), because legacy tests still use repo-relative target paths. Linked ignored worktree target to this job scratch target; clean gate rerun pending. Corrected duplicated disconnect conditional caught by clippy. No production behavior change from either correction.

Fresh shim verification: 8/8 real shim tests passed in 5.63 s; real daemon 24-restart oracle passed in 39.74 s; queue saturation oracle passed in 35.66 s. Gate found fixture setup failure (initial attach credit: FileNotFoundError target/ac<PID>, before binary launch), because legacy tests still use repo-relative target paths. Linked ignored worktree target to this job scratch target; clean gate rerun pending. Corrected duplicated disconnect conditional caught by clippy. No production behavior change from either correction.
Author
Owner

Additional failing real-shell case: detached_shell_exit_reaps_even_with_a_live_background_descendant failed in 1.11 s (dead shim socket retained). An ignored-HUP background sleep holds the PTY slave, so POLLIN/HUP never arrives after shell exit. Fix: when the child has exited and viewer backpressure permits draining, poll with zero timeout and probe the nonblocking master; WouldBlock completes the final drain. Live idle shims retain event-driven blocking poll. Rerunning nine real shim tests.

Additional failing real-shell case: detached_shell_exit_reaps_even_with_a_live_background_descendant failed in 1.11 s (dead shim socket retained). An ignored-HUP background sleep holds the PTY slave, so POLLIN/HUP never arrives after shell exit. Fix: when the child has exited and viewer backpressure permits draining, poll with zero timeout and probe the nonblocking master; WouldBlock completes the final drain. Live idle shims retain event-driven blocking poll. Rerunning nine real shim tests.
Author
Owner

Additive implementation contract for remaining #151 work: resource admission stays behind the existing host plugin feature; host settings gain terminalMemoryFloorMiB=256 and terminalMemoryFloorPercent=5, and a declared host.memory.configure action. Generic plugin admission/context hooks keep core dispatch independent of policy. terminal.open refusal JSON adds reason (host_memory_low/invalid/unavailable/resource_unavailable), available_mib and session_count only for memory refusal; existing error remains for compatibility. Host facts add sessionCount/backgroundSessionCount from live registry and window attachment ownership, including native QUIC. Registry deletion notifications are event-driven, with no idle timer. Startup discovery uses bounded handshake batches without a total session cap.

Additive implementation contract for remaining #151 work: resource admission stays behind the existing host plugin feature; host settings gain terminalMemoryFloorMiB=256 and terminalMemoryFloorPercent=5, and a declared host.memory.configure action. Generic plugin admission/context hooks keep core dispatch independent of policy. terminal.open refusal JSON adds reason (host_memory_low/invalid/unavailable/resource_unavailable), available_mib and session_count only for memory refusal; existing error remains for compatibility. Host facts add sessionCount/backgroundSessionCount from live registry and window attachment ownership, including native QUIC. Registry deletion notifications are event-driven, with no idle timer. Startup discovery uses bounded handshake batches without a total session cap.
Author
Owner

Reaping integration finding: fast gate real_binary_preserves_input_and_output_across_24_abrupt_stops failed after shell exit: agent_fixture.py:316 received Close(1,"terminal shim disconnected") before terminal.exited. The local daemon had queued Event on bulk then read shim EOF, allowing priority Close to overtake it. Added a local Message::Exited delivery acknowledgment in daemon.rs: writer sends ordered Event, acknowledges it, terminal task returns successfully without reading EOF. No frame layout or remote server/browser handler changed. Nine real shim tests now pass (5.79 s); full fast rerun includes this dependent lifecycle fix.

Reaping integration finding: fast gate real_binary_preserves_input_and_output_across_24_abrupt_stops failed after shell exit: agent_fixture.py:316 received Close(1,"terminal shim disconnected") before terminal.exited. The local daemon had queued Event on bulk then read shim EOF, allowing priority Close to overtake it. Added a local Message::Exited delivery acknowledgment in daemon.rs: writer sends ordered Event, acknowledges it, terminal task returns successfully without reading EOF. No frame layout or remote server/browser handler changed. Nine real shim tests now pass (5.79 s); full fast rerun includes this dependent lifecycle fix.
Author
Owner

Completed lifecycle step, pushed session-bounds head 730dd3bd12. Nine real shim tests pass (including detached shell with live descendant); the ordered writer acknowledgment fixes the EOF/Close race. All workspace tests, including 262 server tests, pass; TS gates pass separately (36 protocol tests, 34,462 assertions). Static x86_64 is stripped, static-PIE, 19,616,352 bytes. No deploy. Fast gate output below verbatim; only the legacy size allowance fails under D205:

Finished `release` profile [optimized] target(s) in 6m 39s

/home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, stripped
PT_INTERP: absent; size: 19616352 bytes (baseline 16142672 + allowance 262144 = max 16404816)
binary exceeds the 16404816-byte size budget: 19616352 bytes

+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

Completed lifecycle step, pushed session-bounds head 730dd3bd12ba9f48bbfc3891692af0d441dc965b. Nine real shim tests pass (including detached shell with live descendant); the ordered writer acknowledgment fixes the EOF/Close race. All workspace tests, including 262 server tests, pass; TS gates pass separately (36 protocol tests, 34,462 assertions). Static x86_64 is stripped, static-PIE, 19,616,352 bytes. No deploy. Fast gate output below verbatim; only the legacy size allowance fails under D205: Finished `release` profile [optimized] target(s) in 6m 39s /home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, stripped PT_INTERP: absent; size: 19616352 bytes (baseline 16142672 + allowance 262144 = max 16404816) binary exceeds the 16404816-byte size budget: 19616352 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+
Author
Owner

Completed additive plugin API step: a58e071b, pushed session-bounds. Policy hooks keep admission plugin-owned; typed refusal preserves legacy error and validates counters. scripts/verify fast: fmt, VT fmt, clippy, workspace tests and cargo-deny PASS; static size-only FAIL under D205 (19,616,448 bytes, +96 from 730dd3bd). Host policy failing-first regression: configured_memory_floor_refuses_with_current_host_counters fails with UnknownAction before implementation.

| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |

Completed additive plugin API step: a58e071b, pushed session-bounds. Policy hooks keep admission plugin-owned; typed refusal preserves legacy error and validates counters. scripts/verify fast: fmt, VT fmt, clippy, workspace tests and cargo-deny PASS; static size-only FAIL under D205 (19,616,448 bytes, +96 from 730dd3bd). Host policy failing-first regression: configured_memory_floor_refuses_with_current_host_counters fails with UnknownAction before implementation. | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) |
Author
Owner

PSS diagnostic only, not the mandatory 200-session evidence: 12 simultaneous real 80x24 sessions on infraternal-dev, CPUWeight=10000; concurrent own gate build, load 12.42/19.02/22.57 initially. Empty shims mean PSS 1,410.92 KiB/private dirty 1,065.33 KiB; shells 780.67/595.00 KiB. After 12,000 real shell output rows each: shims 18,203.25/17,857.67 KiB; shells 838.67/655.00 KiB. Completion markers read from every shim before sampling; all owned children retired. One shim thread, resident stack 48 KiB; ELF writable mappings account for 908 KiB private dirty, not a per-shim async runtime/thread pool. Lazy output ring and bounded VT history dominate growth (src/ring.rs, src/terminal.rs). The production single-binary layout has replicated writable relocation pages; reducing that requires a separately measured binary-layout change, not selecting another terminal engine. Logs: ~/.cache/codex-scratch/session-bounds/memory-diagnostic-12.log. PTYs still nr4039/max4096; 200 real simultaneous sessions remain blocked.

PSS diagnostic only, not the mandatory 200-session evidence: 12 simultaneous real 80x24 sessions on infraternal-dev, CPUWeight=10000; concurrent own gate build, load 12.42/19.02/22.57 initially. Empty shims mean PSS 1,410.92 KiB/private dirty 1,065.33 KiB; shells 780.67/595.00 KiB. After 12,000 real shell output rows each: shims 18,203.25/17,857.67 KiB; shells 838.67/655.00 KiB. Completion markers read from every shim before sampling; all owned children retired. One shim thread, resident stack 48 KiB; ELF writable mappings account for 908 KiB private dirty, not a per-shim async runtime/thread pool. Lazy output ring and bounded VT history dominate growth (src/ring.rs, src/terminal.rs). The production single-binary layout has replicated writable relocation pages; reducing that requires a separately measured binary-layout change, not selecting another terminal engine. Logs: ~/.cache/codex-scratch/session-bounds/memory-diagnostic-12.log. PTYs still nr4039/max4096; 200 real simultaneous sessions remain blocked.
Author
Owner

PTY capacity recovered (nr16/max4096); required 200 simultaneous real 80x24 shim+shell measurement completed locally under CPUWeight=10000, stripped static binary 19,620,768 bytes (a58e071b + host memory policy, commit pending). Load recorded below; own gate tests were running, no artificial CPU load. Counters are PSS/private dirty, NOT RSS. Empty total PSS 339,048 KiB/private dirty 331,804 KiB; after 12,000 output rows each, total PSS 3,750,764 KiB/private dirty 3,743,480 KiB. All completion markers read before sampling; all 200 owned shells/shims cleaned, nr returned20. One shim thread, resident stack52 KiB; writable ELF mappings908 KiB private dirty. VT initial heap/anonymous pages are much smaller; no async runtime in shim. An empty-shell estimate misses about3.25 GiB of real retained history at200 sessions; admission must sample MemAvailable. Evidence: ~/.cache/codex-scratch/session-bounds/memory-200.log and measure.py.

{"machine": "infraternal-dev", "binary": "/home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal", "dimensions": "80x24", "load": "13.13 41.39 34.73 15/3074 3946799"}
{"phase": "empty-200", "role": "shim", "count": 200, "total_kib": {"Pss": 216928, "Private_Dirty": 212928, "Private_Clean": 0}, "mean_kib": {"Pss": 1084.64, "Private_Dirty": 1064.64, "Private_Clean": 0.0}, "load": "13.13 41.39 34.73 12/3500 3947596"}
{"phase": "empty-200", "role": "shell", "count": 200, "total_kib": {"Pss": 122120, "Private_Dirty": 118876, "Private_Clean": 4}, "mean_kib": {"Pss": 610.6, "Private_Dirty": 594.38, "Private_Clean": 0.02}, "load": "13.13 41.39 34.73 9/3504 3947605"}
{"phase": "scrollback-200", "role": "shim", "count": 200, "total_kib": {"Pss": 3616604, "Private_Dirty": 3612604, "Private_Clean": 0}, "mean_kib": {"Pss": 18083.02, "Private_Dirty": 18063.02, "Private_Clean": 0.0}, "load": "18.92 41.74 34.92 10/3501 3948054"}
{"phase": "scrollback-200", "role": "shell", "count": 200, "total_kib": {"Pss": 134160, "Private_Dirty": 130876, "Private_Clean": 4}, "mean_kib": {"Pss": 670.8, "Private_Dirty": 654.38, "Private_Clean": 0.02}, "load": "18.92 41.74 34.92 16/3501 3948054"}

Host-load gate retries: initial terminal-open reply failure subsequently PASS in full gate; isolated current/dev open test PASS1.51s/1.31s; initial mesh snapshot failure retries current/dev PASS9.83s/9.71s. dev baseline b9b61d07 in own detached scratch checkout. The third full gate is running with test harness concurrency1; neither failure is being waived on mismatching baseline results.

PTY capacity recovered (nr16/max4096); required 200 simultaneous real 80x24 shim+shell measurement completed locally under CPUWeight=10000, stripped static binary 19,620,768 bytes (a58e071b + host memory policy, commit pending). Load recorded below; own gate tests were running, no artificial CPU load. Counters are PSS/private dirty, NOT RSS. Empty total PSS 339,048 KiB/private dirty 331,804 KiB; after 12,000 output rows each, total PSS 3,750,764 KiB/private dirty 3,743,480 KiB. All completion markers read before sampling; all 200 owned shells/shims cleaned, nr returned20. One shim thread, resident stack52 KiB; writable ELF mappings908 KiB private dirty. VT initial heap/anonymous pages are much smaller; no async runtime in shim. An empty-shell estimate misses about3.25 GiB of real retained history at200 sessions; admission must sample MemAvailable. Evidence: ~/.cache/codex-scratch/session-bounds/memory-200.log and measure.py. {"machine": "infraternal-dev", "binary": "/home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal", "dimensions": "80x24", "load": "13.13 41.39 34.73 15/3074 3946799"} {"phase": "empty-200", "role": "shim", "count": 200, "total_kib": {"Pss": 216928, "Private_Dirty": 212928, "Private_Clean": 0}, "mean_kib": {"Pss": 1084.64, "Private_Dirty": 1064.64, "Private_Clean": 0.0}, "load": "13.13 41.39 34.73 12/3500 3947596"} {"phase": "empty-200", "role": "shell", "count": 200, "total_kib": {"Pss": 122120, "Private_Dirty": 118876, "Private_Clean": 4}, "mean_kib": {"Pss": 610.6, "Private_Dirty": 594.38, "Private_Clean": 0.02}, "load": "13.13 41.39 34.73 9/3504 3947605"} {"phase": "scrollback-200", "role": "shim", "count": 200, "total_kib": {"Pss": 3616604, "Private_Dirty": 3612604, "Private_Clean": 0}, "mean_kib": {"Pss": 18083.02, "Private_Dirty": 18063.02, "Private_Clean": 0.0}, "load": "18.92 41.74 34.92 10/3501 3948054"} {"phase": "scrollback-200", "role": "shell", "count": 200, "total_kib": {"Pss": 134160, "Private_Dirty": 130876, "Private_Clean": 4}, "mean_kib": {"Pss": 670.8, "Private_Dirty": 654.38, "Private_Clean": 0.02}, "load": "18.92 41.74 34.92 16/3501 3948054"} Host-load gate retries: initial terminal-open reply failure subsequently PASS in full gate; isolated current/dev open test PASS1.51s/1.31s; initial mesh snapshot failure retries current/dev PASS9.83s/9.71s. dev baseline b9b61d07 in own detached scratch checkout. The third full gate is running with test harness concurrency1; neither failure is being waived on mismatching baseline results.
Author
Owner

Completed host memory settings module: a7a0ff7b, pushed session-bounds. Runtime host.memory.configure, validated absolute MiB/percentage floors (default256/5), current OS memory sample. 12 host plugin tests PASS. This is the static source used for the200-session measurement already recorded. Final scripts/verify fast (test harness concurrency1) workspace tests PASS, including262 server tests/30 ignored. Size-only exception underD205; +4,320 bytes over a58e071b. Verbatim gate tail:

      │       └── sysctl v0.7.1
      │           └── infraternal-plugin-host-facts v0.1.0 (*)
      └── walkdir v2.5.0 (*)

advisories ok, bans ok, licenses ok, sources ok

==> static builds
Finished release profile [optimized] target(s) in 0.69s
/home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, stripped
PT_INTERP: absent; size: 19620768 bytes (baseline 16142672 + allowance 262144 = max 16404816)
binary exceeds the 16404816-byte size budget: 19620768 bytes

+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

Next discovery regression fails first:200 authenticated fixture sockets rejected with infraternal session limit reached (discovery-before.log). Real lifecycle counter regression fails first with missing sessionCount (lifecycle-before.log); browser low-memory regression fails with no refusal toast (refusal-real-before.log), client parser fails reason expectedhost_memory_low receivedterminal unavailable (refusal-client-before.log).

Completed host memory settings module: a7a0ff7b, pushed session-bounds. Runtime host.memory.configure, validated absolute MiB/percentage floors (default256/5), current OS memory sample. 12 host plugin tests PASS. This is the static source used for the200-session measurement already recorded. Final scripts/verify fast (test harness concurrency1) workspace tests PASS, including262 server tests/30 ignored. Size-only exception underD205; +4,320 bytes over a58e071b. Verbatim gate tail: │ └── sysctl v0.7.1 │ └── infraternal-plugin-host-facts v0.1.0 (*) └── walkdir v2.5.0 (*) advisories ok, bans ok, licenses ok, sources ok ==> static builds Finished `release` profile [optimized] target(s) in 0.69s /home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, stripped PT_INTERP: absent; size: 19620768 bytes (baseline 16142672 + allowance 262144 = max 16404816) binary exceeds the 16404816-byte size budget: 19620768 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+ Next discovery regression fails first:200 authenticated fixture sockets rejected with infraternal session limit reached (discovery-before.log). Real lifecycle counter regression fails first with missing sessionCount (lifecycle-before.log); browser low-memory regression fails with no refusal toast (refusal-real-before.log), client parser fails reason expectedhost_memory_low receivedterminal unavailable (refusal-client-before.log).
Author
Owner

Completed discovery module: fe362c97, pushed session-bounds. 200 authenticated fixture sockets recover (previously rejected at129); concurrent frozen-frame handshake storage bounded32MiB. Stale sockets removed, disappearance races tolerated. No new dependency. Static binary19,622,688 bytes (+1,920 over a7a0ff7b), no PT_INTERP. Verbatim fast gate tail:

==> static builds
Blocking waiting for file lock on build directory
Compiling infraternal-plugin-host-facts v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/plugins/host-facts)
Compiling infraternal-agent v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal-agent)
Compiling infraternal-server v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal-server)
Compiling infraternal v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal)
Finished release profile [optimized] target(s) in 3m 36s
/home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, stripped
PT_INTERP: absent; size: 19622688 bytes (baseline 16142672 + allowance 262144 = max 16404816)
binary exceeds the 16404816-byte size budget: 19622688 bytes

+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

New failing real-shim finding: a viewer attaching without Credit, killing its shell, then granting Credit after350ms gets Close(terminal shim disconnected) instead of the buffered terminal.exited event (exit-credit-before.log). Shim/socket already retired; the relay starvation path discarded the only remaining buffered exit. Planned local fix: preserve a read-closed shim link until its final output and exit are funded/drained; live-shim250ms detachment remains. This does not change remote server/browser exit propagation.

Completed discovery module: fe362c97, pushed session-bounds. 200 authenticated fixture sockets recover (previously rejected at129); concurrent frozen-frame handshake storage bounded32MiB. Stale sockets removed, disappearance races tolerated. No new dependency. Static binary19,622,688 bytes (+1,920 over a7a0ff7b), no PT_INTERP. Verbatim fast gate tail: ==> static builds Blocking waiting for file lock on build directory Compiling infraternal-plugin-host-facts v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/plugins/host-facts) Compiling infraternal-agent v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal-agent) Compiling infraternal-server v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal-server) Compiling infraternal v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal) Finished `release` profile [optimized] target(s) in 3m 36s /home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, stripped PT_INTERP: absent; size: 19622688 bytes (baseline 16142672 + allowance 262144 = max 16404816) binary exceeds the 16404816-byte size budget: 19622688 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+ New failing real-shim finding: a viewer attaching without Credit, killing its shell, then granting Credit after350ms gets Close(terminal shim disconnected) instead of the buffered terminal.exited event (exit-credit-before.log). Shim/socket already retired; the relay starvation path discarded the only remaining buffered exit. Planned local fix: preserve a read-closed shim link until its final output and exit are funded/drained; live-shim250ms detachment remains. This does not change remote server/browser exit propagation.
Author
Owner

Completed host-facts wire module: a82ec0d9, pushed session-bounds. Additive optional sessionCount/backgroundSessionCount from trusted NodeContext; bootstrap-only collection omits them; caller counters rejected. Failing-first context test nowPASS; core lifecycle wiring is next. Static binary19,623,776 bytes (+1,088), no PT_INTERP; no dependencies added. Verbatim fast gate tail:

advisories ok, bans ok, licenses ok, sources ok

==> static builds
Compiling infraternal-plugin-host-facts v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/plugins/host-facts)
Compiling infraternal-agent v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal-agent)
Compiling infraternal-server v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal-server)
Compiling infraternal v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal)
Finished release profile [optimized] target(s) in 3m 12s
/home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, stripped
PT_INTERP: absent; size: 19623776 bytes (baseline 16142672 + allowance 262144 = max 16404816)
binary exceeds the 16404816-byte size budget: 19623776 bytes

+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

Weighted release relay measurement:200 simultaneous actual local relay futures against authenticated Unix fixture peers (no PTYs). Paired fixture/private overhead988KiB =5,058bytes/stream; relay future1,704bytes; load10.43/12.43/19.25. This measures transport metadata separately from the recorded200 real shim+shell PSS. Planned per-connection metadata reservation4MiB /32KiB perstream (over6x measured) keeps128 concurrent streams; host session count is independent. Numeric stream IDs remainu32; shim frame/queue and transport byte credits remain independent byte bounds. Evidence stream-memory-200.log and src/stream_memory_tests.rs.

Completed host-facts wire module: a82ec0d9, pushed session-bounds. Additive optional sessionCount/backgroundSessionCount from trusted NodeContext; bootstrap-only collection omits them; caller counters rejected. Failing-first context test nowPASS; core lifecycle wiring is next. Static binary19,623,776 bytes (+1,088), no PT_INTERP; no dependencies added. Verbatim fast gate tail: advisories ok, bans ok, licenses ok, sources ok ==> static builds Compiling infraternal-plugin-host-facts v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/plugins/host-facts) Compiling infraternal-agent v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal-agent) Compiling infraternal-server v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal-server) Compiling infraternal v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/session-bounds/crates/infraternal) Finished `release` profile [optimized] target(s) in 3m 12s /home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, stripped PT_INTERP: absent; size: 19623776 bytes (baseline 16142672 + allowance 262144 = max 16404816) binary exceeds the 16404816-byte size budget: 19623776 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+ Weighted release relay measurement:200 simultaneous actual local relay futures against authenticated Unix fixture peers (no PTYs). Paired fixture/private overhead988KiB =5,058bytes/stream; relay future1,704bytes; load10.43/12.43/19.25. This measures transport metadata separately from the recorded200 real shim+shell PSS. Planned per-connection metadata reservation4MiB /32KiB perstream (over6x measured) keeps128 concurrent streams; host session count is independent. Numeric stream IDs remainu32; shim frame/queue and transport byte credits remain independent byte bounds. Evidence stream-memory-200.log and src/stream_memory_tests.rs.
Author
Owner

Daemon gate load finding: auth socket visible-host expiry test returned an error event instead of snapshot/resync under load 14.85/12.12/12.17. Detached dev baseline b9b61d07 failed the same test in the same window: left "error", expected "resync", 12.51s. Exact current workspace test binary rerun passed in 10.38s. Baseline output:

running 1 test
listed_live=true db_live_now=false expiry_event_received=true

thread 'auth::tests::socket_tests::claude_review_visible_liveness::claude_review_watch_expires_host_made_visible_by_membership_edit' (192302) panicked at crates/infraternal-server/src/auth/socket_tests/claude_review_visible_liveness.rs:137:5:
assertion left == right failed
left: String("error")
right: "resync"
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
test auth::tests::socket_tests::claude_review_visible_liveness::claude_review_watch_expires_host_made_visible_by_membership_edit ... FAILED

failures:

failures:
auth::tests::socket_tests::claude_review_visible_liveness::claude_review_watch_expires_host_made_visible_by_membership_edit

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 150 filtered out; finished in 12.51s

Daemon gate load finding: auth socket visible-host expiry test returned an error event instead of snapshot/resync under load 14.85/12.12/12.17. Detached dev baseline b9b61d07 failed the same test in the same window: left "error", expected "resync", 12.51s. Exact current workspace test binary rerun passed in 10.38s. Baseline output: running 1 test listed_live=true db_live_now=false expiry_event_received=true thread 'auth::tests::socket_tests::claude_review_visible_liveness::claude_review_watch_expires_host_made_visible_by_membership_edit' (192302) panicked at crates/infraternal-server/src/auth/socket_tests/claude_review_visible_liveness.rs:137:5: assertion `left == right` failed left: String("error") right: "resync" note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace test auth::tests::socket_tests::claude_review_visible_liveness::claude_review_watch_expires_host_made_visible_by_membership_edit ... FAILED failures: failures: auth::tests::socket_tests::claude_review_visible_liveness::claude_review_watch_expires_host_made_visible_by_membership_edit test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 150 filtered out; finished in 12.51s
Author
Owner

Completed daemon lifecycle/admission step 24216c3217, pushed session-bounds. Real regressions pass: counts/admission/attached+detached reaping (6.54s), delayed-credit exit after 350ms (2.18s). Shim unit 61 pass/12 ignored; public mouse probe passes with pinned Zig PATH. x86 static 19,642,048 bytes (+18,272 from a82ec0d9), PT_INTERP absent. Test row failure is the auth socket expiry timeout also reproduced on detached dev b9b61d07 in the same load window; exact current isolated rerun passed (recorded above). All other rows pass except the D205 historical size budget. Tracer/compiler/protocol checks pass separately. Gate output verbatim:
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | FAIL (101) |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

Completed daemon lifecycle/admission step 24216c321730f41d63137354455ba6ac8a91e355, pushed session-bounds. Real regressions pass: counts/admission/attached+detached reaping (6.54s), delayed-credit exit after 350ms (2.18s). Shim unit 61 pass/12 ignored; public mouse probe passes with pinned Zig PATH. x86 static 19,642,048 bytes (+18,272 from a82ec0d9), PT_INTERP absent. Test row failure is the auth socket expiry timeout also reproduced on detached dev b9b61d07 in the same load window; exact current isolated rerun passed (recorded above). All other rows pass except the D205 historical size budget. Tracer/compiler/protocol checks pass separately. Gate output verbatim: +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | FAIL (101) | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+
Author
Owner

Repeat measurement after daemon lifecycle change 24216c32 (static 19,642,048 bytes), local CPUWeight=10000, 8 cores. Actual daemon recovered all 200 real shims, reported 200 background sessions, admitted session 201, then returned to 200 after its shell exited. All owned children cleaned. This confirms the removed host cap with real shells, beyond the earlier authenticated socket discovery test. PSS/private dirty numbers and load:
{"machine": "infraternal-dev", "binary": "/home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal", "dimensions": "80x24", "load": "22.73 20.75 18.05 32/3093 292548"}
{"phase": "registry", "recovered": 200, "admitted": 201, "after_reap": 200}
{"phase": "empty-200", "role": "shim", "count": 200, "total_kib": {"Pss": 217747, "Private_Dirty": 213748, "Private_Clean": 0}, "mean_kib": {"Pss": 1088.73, "Private_Dirty": 1068.74, "Private_Clean": 0.0}, "load": "25.58 21.43 18.30 16/3460 293712"}
{"phase": "empty-200", "role": "shell", "count": 200, "total_kib": {"Pss": 122183, "Private_Dirty": 118884, "Private_Clean": 20}, "mean_kib": {"Pss": 610.91, "Private_Dirty": 594.42, "Private_Clean": 0.1}, "load": "25.58 21.43 18.30 21/3460 293712"}
{"phase": "scrollback-200", "role": "shim", "count": 200, "total_kib": {"Pss": 3577471, "Private_Dirty": 3573472, "Private_Clean": 0}, "mean_kib": {"Pss": 17887.35, "Private_Dirty": 17867.36, "Private_Clean": 0.0}, "load": "38.18 24.12 19.18 34/3508 294279"}
{"phase": "scrollback-200", "role": "shell", "count": 200, "total_kib": {"Pss": 134219, "Private_Dirty": 130884, "Private_Clean": 16}, "mean_kib": {"Pss": 671.1, "Private_Dirty": 654.42, "Private_Clean": 0.08}, "load": "38.18 24.12 19.18 32/3507 294282"}

Repeat measurement after daemon lifecycle change 24216c32 (static 19,642,048 bytes), local CPUWeight=10000, 8 cores. Actual daemon recovered all 200 real shims, reported 200 background sessions, admitted session 201, then returned to 200 after its shell exited. All owned children cleaned. This confirms the removed host cap with real shells, beyond the earlier authenticated socket discovery test. PSS/private dirty numbers and load: {"machine": "infraternal-dev", "binary": "/home/kayg/.cache/codex-scratch/session-bounds/target/x86_64-unknown-linux-musl/release/infraternal", "dimensions": "80x24", "load": "22.73 20.75 18.05 32/3093 292548"} {"phase": "registry", "recovered": 200, "admitted": 201, "after_reap": 200} {"phase": "empty-200", "role": "shim", "count": 200, "total_kib": {"Pss": 217747, "Private_Dirty": 213748, "Private_Clean": 0}, "mean_kib": {"Pss": 1088.73, "Private_Dirty": 1068.74, "Private_Clean": 0.0}, "load": "25.58 21.43 18.30 16/3460 293712"} {"phase": "empty-200", "role": "shell", "count": 200, "total_kib": {"Pss": 122183, "Private_Dirty": 118884, "Private_Clean": 20}, "mean_kib": {"Pss": 610.91, "Private_Dirty": 594.42, "Private_Clean": 0.1}, "load": "25.58 21.43 18.30 21/3460 293712"} {"phase": "scrollback-200", "role": "shim", "count": 200, "total_kib": {"Pss": 3577471, "Private_Dirty": 3573472, "Private_Clean": 0}, "mean_kib": {"Pss": 17887.35, "Private_Dirty": 17867.36, "Private_Clean": 0.0}, "load": "38.18 24.12 19.18 34/3508 294279"} {"phase": "scrollback-200", "role": "shell", "count": 200, "total_kib": {"Pss": 134219, "Private_Dirty": 130884, "Private_Clean": 16}, "mean_kib": {"Pss": 671.1, "Private_Dirty": 654.42, "Private_Clean": 0.08}, "load": "38.18 24.12 19.18 32/3507 294282"}
Author
Owner

Refusal forwarding regression: real authenticated browser socket previously received only legacy error text (reason=null); after typed server routing, memory_refusal_preserves_reason_and_counters_to_browser passes, retaining host_memory_low, available_mib=180 and session_count=212. Decoding is bounded to MAX_CONTROL_JSON (32 KiB), unknown/internal failures remain generic, and freshness/revocation/ownership checks are preserved. Tracer refusal tests pass 4/4 (21 assertions), compiler and production transfer pass (critical gzip 288,094/307,200 bytes). Host facts plugin removal check passes. Full fast gate and ASan parser fuzz run are in progress before the next atomic commits; browser screenshots wait for this branch's updated static binary. No deployment.

Refusal forwarding regression: real authenticated browser socket previously received only legacy error text (reason=null); after typed server routing, memory_refusal_preserves_reason_and_counters_to_browser passes, retaining host_memory_low, available_mib=180 and session_count=212. Decoding is bounded to MAX_CONTROL_JSON (32 KiB), unknown/internal failures remain generic, and freshness/revocation/ownership checks are preserved. Tracer refusal tests pass 4/4 (21 assertions), compiler and production transfer pass (critical gzip 288,094/307,200 bytes). Host facts plugin removal check passes. Full fast gate and ASan parser fuzz run are in progress before the next atomic commits; browser screenshots wait for this branch's updated static binary. No deployment.
Author
Owner

Weighted release relay repeat with final window ownership tracking, local infraternal-dev: 200 simultaneous relay tasks, private memory 4,072 -> 5,076 KiB (+1,004 KiB), 5,140 bytes/stream; future 1,728 bytes. Load 33.38/29.37/26.00. No PTYs in this transport-only benchmark. Earlier baseline without window ownership was 5,058 bytes/stream and 1,704-byte future. 32 KiB/stream remains over six times measured cost within the 4 MiB connection metadata reserve (128 concurrent streams); host admission is independent. Full payload/QUIC limits are separate, not attributed to this metadata measurement.

Weighted release relay repeat with final window ownership tracking, local infraternal-dev: 200 simultaneous relay tasks, private memory 4,072 -> 5,076 KiB (+1,004 KiB), 5,140 bytes/stream; future 1,728 bytes. Load 33.38/29.37/26.00. No PTYs in this transport-only benchmark. Earlier baseline without window ownership was 5,058 bytes/stream and 1,704-byte future. 32 KiB/stream remains over six times measured cost within the 4 MiB connection metadata reserve (128 concurrent streams); host admission is independent. Full payload/QUIC limits are separate, not attributed to this metadata measurement.
Author
Owner

Canonical documentation finding: contracts/shim.md:93,109-110 and docs/S1-SHIM.md:32 describe retaining exited shims until ExitAck, contradicting the explicitly approved #151 job. Proposed owner-brief amendment: preserve the frozen opcodes/layouts; Exited is flushed after PTY drain to attached data viewers, then the shim retires and removes its socket without requiring ExitAck. With no data viewer, retire within one second; discovery/control peers cannot hold it alive. ExitAck remains accepted as a peer acknowledgement and cannot skip another viewer's ordered exit. Retired shells are not resumable after infraternal agent restart; startup reconciles only live shims. D178 continues to preserve detached live shells. I will update the canonical semantics and mark earlier retained-exit evidence as historical, without changing DECISIONS.md.

Canonical documentation finding: contracts/shim.md:93,109-110 and docs/S1-SHIM.md:32 describe retaining exited shims until ExitAck, contradicting the explicitly approved #151 job. Proposed owner-brief amendment: preserve the frozen opcodes/layouts; Exited is flushed after PTY drain to attached data viewers, then the shim retires and removes its socket without requiring ExitAck. With no data viewer, retire within one second; discovery/control peers cannot hold it alive. ExitAck remains accepted as a peer acknowledgement and cannot skip another viewer's ordered exit. Retired shells are not resumable after infraternal agent restart; startup reconciles only live shims. D178 continues to preserve detached live shells. I will update the canonical semantics and mark earlier retained-exit evidence as historical, without changing DECISIONS.md.
Author
Owner

Completed and pushed separate backend steps: f92c9e34 preserves bounded public reasons/counters through authenticated server routing; 72de9325 derives 128 connection stream slots from 4 MiB / 32 KiB and includes the 200-relay measurement; 22e75f8d adds the production admission/refusal fuzz target. Corrected full fast gate passes every non-size row. Static x86 binary 19,652,384 bytes (+10,336 from 24216c32, from typed server refusal handling; metadata expression and cfg(test)/fuzz additions add no production behavior/dependency). PT_INTERP absent. ASan+coverage, fuzz-only LTO disabled: 1,899,491 executions in46s, 6303 counters, cov1818/ft5722, no crashes. Browser refusal/desktop+phone action passes on this static binary; full browser run still has scroll-lock/switch failures and needs follow-up. Gate output verbatim:
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

Completed and pushed separate backend steps: f92c9e34 preserves bounded public reasons/counters through authenticated server routing; 72de9325 derives 128 connection stream slots from 4 MiB / 32 KiB and includes the 200-relay measurement; 22e75f8d adds the production admission/refusal fuzz target. Corrected full fast gate passes every non-size row. Static x86 binary 19,652,384 bytes (+10,336 from 24216c32, from typed server refusal handling; metadata expression and cfg(test)/fuzz additions add no production behavior/dependency). PT_INTERP absent. ASan+coverage, fuzz-only LTO disabled: 1,899,491 executions in46s, 6303 counters, cov1818/ft5722, no crashes. Browser refusal/desktop+phone action passes on this static binary; full browser run still has scroll-lock/switch failures and needs follow-up. Gate output verbatim: +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+
Author
Owner

Reviewer finding: lifecycle.rs used a proc directory inode as process birth identity. Linux proc_pid_make_inode allocates get_next_ino() when the inode is recreated (https://raw.githubusercontent.com/torvalds/linux/master/fs/proc/base.c); an inode is therefore not a stable birth clock. Deterministic regression directory_inode_changes_do_not_retire_the_same_process preserves the real stat record and executable through a fresh process directory view and fails before repair: count 0, expected 1 (0.01s). I will use the kernel stat start_time field (https://docs.kernel.org/filesystems/proc.html), retaining stale PID/zombie rejection with no per-session idle descriptor or timer. The parser will be bounded and fuzzed, and facts latency measured at 200 real sessions. This finding is separate from the browser failures; no claim that it caused them.

Reviewer finding: lifecycle.rs used a proc directory inode as process birth identity. Linux proc_pid_make_inode allocates get_next_ino() when the inode is recreated (https://raw.githubusercontent.com/torvalds/linux/master/fs/proc/base.c); an inode is therefore not a stable birth clock. Deterministic regression directory_inode_changes_do_not_retire_the_same_process preserves the real stat record and executable through a fresh process directory view and fails before repair: count 0, expected 1 (0.01s). I will use the kernel stat start_time field (https://docs.kernel.org/filesystems/proc.html), retaining stale PID/zombie rejection with no per-session idle descriptor or timer. The parser will be bounded and fuzzed, and facts latency measured at 200 real sessions. This finding is separate from the browser failures; no claim that it caused them.
Author
Owner

Completed process-identity fix: 4540e157. The failing inode-recreation regression dropped count 1 -> 0 before the fix; all 3 lifecycle tests now pass. Kernel stat field 22 birth ticks survive inode recreation and reject PID reuse/dead states; reads are bounded at 4 KiB, no idle timer/FD per session.

ASan production parser fuzz: 2,372,685 executions / 46 s, cov=2049 ft=6838, no crash. Paired weighted zero-RTT host-facts reads at 200 sessions (101 samples): median 2.521 -> 3.999 ms, maximum 8.613 -> 13.941 ms; load 14.76/13.04/15.77 -> 17.20/13.86/15.95. This measured control-path cost buys stable liveness; no typing hot-path change.

Weighted scripts/verify fast: 263 server tests and 9 real shim tests passed. x86 static stripped binary 19,656,320 bytes (+3,936); ARM 17,533,960 bytes, static stripped, neither has PT_INTERP. Legacy size row is the D205 exception. Verbatim summary:

Completed process-identity fix: 4540e157. The failing inode-recreation regression dropped count 1 -> 0 before the fix; all 3 lifecycle tests now pass. Kernel stat field 22 birth ticks survive inode recreation and reject PID reuse/dead states; reads are bounded at 4 KiB, no idle timer/FD per session. ASan production parser fuzz: 2,372,685 executions / 46 s, cov=2049 ft=6838, no crash. Paired weighted zero-RTT host-facts reads at 200 sessions (101 samples): median 2.521 -> 3.999 ms, maximum 8.613 -> 13.941 ms; load 14.76/13.04/15.77 -> 17.20/13.86/15.95. This measured control-path cost buys stable liveness; no typing hot-path change. Weighted scripts/verify fast: 263 server tests and 9 real shim tests passed. x86 static stripped binary 19,656,320 bytes (+3,936); ARM 17,533,960 bytes, static stripped, neither has PT_INTERP. Legacy size row is the D205 exception. Verbatim summary:
Author
Owner

Verbatim scripts/verify fast summary for 4540e157 (D205 legacy size exception); TypeScript compiler, bundles and all 36 protocol tests / 34,462 assertions also passed separately because the Rust size row stops the dispatcher.

+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

Verbatim scripts/verify fast summary for 4540e157 (D205 legacy size exception); TypeScript compiler, bundles and all 36 protocol tests / 34,462 assertions also passed separately because the Rust size row stops the dispatcher. +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+
Author
Owner

Completed shared toast activation event extension 5657749a and tracer refusal flow b6837c3b (both pushed). Validated public reason/counters become plain host guidance; legacy refusals remain compatible, unknown/internal text remains generic. Sessions invokes the existing window-header picker. Background-session UI remains the orchestrator lane.

TypeScript/compiler/production transfer gates PASS: critical JS gzip 288,093 / 307,200 bytes, brotli 239,205 / 256,000 bytes; protocol 36 tests / 34,462 assertions PASS. Real static-binary host-facts/refusal specs 2/2 PASS (3.7 s / 5.3 s): desktop and phone guidance, Sessions action, picker viewport assertions. Captures: apps/tracer/captures/session-bounds/{refusal-desktop,refusal-phone,sessions-phone}.png; phone 393x852 at DPR3, Chromium emulation. Attached for independent visual review, no visual-quality claim.

Full real-server suite still running. A paginated Mesh spec has failed; this is recorded and being checked before final gate reporting. Rust binary size is unchanged by these UI commits.

Completed shared toast activation event extension 5657749a and tracer refusal flow b6837c3b (both pushed). Validated public reason/counters become plain host guidance; legacy refusals remain compatible, unknown/internal text remains generic. Sessions invokes the existing window-header picker. Background-session UI remains the orchestrator lane. TypeScript/compiler/production transfer gates PASS: critical JS gzip 288,093 / 307,200 bytes, brotli 239,205 / 256,000 bytes; protocol 36 tests / 34,462 assertions PASS. Real static-binary host-facts/refusal specs 2/2 PASS (3.7 s / 5.3 s): desktop and phone guidance, Sessions action, picker viewport assertions. Captures: apps/tracer/captures/session-bounds/{refusal-desktop,refusal-phone,sessions-phone}.png; phone 393x852 at DPR3, Chromium emulation. Attached for independent visual review, no visual-quality claim. Full real-server suite still running. A paginated Mesh spec has failed; this is recorded and being checked before final gate reporting. Rust binary size is unchanged by these UI commits.
Author
Owner

Completed real-browser readiness correction 1e47d0c6: fixed-delay setup allowed a late terminal attachment to take focus after the middle window was locked. The scrollback check repeatedly failed before this change (expected data-scrolled=true, got false). Setup now waits for real output from all three attached streams before selecting focus; scroll/no-chaining and cost budgets unchanged.

Final static-binary run: all five scroll-lock specs PASS (2.8 / 2.6 / 18.3 / 1.3 / 0.465 s); wheel handler median 0 ms, p95 0.1 ms, mean 0.122 ms. New desktop/phone refusal and picker viewport assertions also PASS. The full suite is still checking the remaining specs; a paginated Mesh failure remains to inspect.

Completed real-browser readiness correction 1e47d0c6: fixed-delay setup allowed a late terminal attachment to take focus after the middle window was locked. The scrollback check repeatedly failed before this change (expected data-scrolled=true, got false). Setup now waits for real output from all three attached streams before selecting focus; scroll/no-chaining and cost budgets unchanged. Final static-binary run: all five scroll-lock specs PASS (2.8 / 2.6 / 18.3 / 1.3 / 0.465 s); wheel handler median 0 ms, p95 0.1 ms, mean 0.122 ms. New desktop/phone refusal and picker viewport assertions also PASS. The full suite is still checking the remaining specs; a paginated Mesh failure remains to inspect.
Author
Owner

Completed reproducible real-session measurement harness 939402a2 (pushed). Final static binary SHA256 4939fc4d3a09c62a3b80febbb7a7fdfa1cef846189cbdb6618899ddcf271f32b, 19,656,320 bytes. Weighted local run: 200 real shims recovered, session 201 admitted, shell killed and socket retired within one second, count back to 200. Full raw PSS/private dirty/clean and load rows are in docs/perf/session-bounds/measurement-final-200.json.

Empty 200: shim/shell PSS 217,152 / 122,187 KiB, private dirty 212,952 / 118,868 KiB. Filled 12,000 rows each: shim/shell PSS 3,576,532 / 134,202 KiB, private dirty 3,572,332 / 130,868 KiB. infraternal-dev, 8 cores, 80x24; load 12.31/11.42/16.24 -> 22.11/13.50/16.81. No artificial CPU load. Cleanup guards recorded process birth; the two-session real cleanup smoke also passes.

Rebuilt the exact production base 0d93a502 using identical release/musl settings: 19,613,216 bytes. This branch adds 43,104 bytes total; the first reaping commit adds 3,136 bytes. No production dependency added. Both base and branch already exceed the historical size maximum, reported under D205 rather than worked around. Baseline browser comparison is running for the three remaining full-suite failures.

Completed reproducible real-session measurement harness 939402a2 (pushed). Final static binary SHA256 4939fc4d3a09c62a3b80febbb7a7fdfa1cef846189cbdb6618899ddcf271f32b, 19,656,320 bytes. Weighted local run: 200 real shims recovered, session 201 admitted, shell killed and socket retired within one second, count back to 200. Full raw PSS/private dirty/clean and load rows are in docs/perf/session-bounds/measurement-final-200.json. Empty 200: shim/shell PSS 217,152 / 122,187 KiB, private dirty 212,952 / 118,868 KiB. Filled 12,000 rows each: shim/shell PSS 3,576,532 / 134,202 KiB, private dirty 3,572,332 / 130,868 KiB. infraternal-dev, 8 cores, 80x24; load 12.31/11.42/16.24 -> 22.11/13.50/16.81. No artificial CPU load. Cleanup guards recorded process birth; the two-session real cleanup smoke also passes. Rebuilt the exact production base 0d93a502 using identical release/musl settings: 19,613,216 bytes. This branch adds 43,104 bytes total; the first reaping commit adds 3,136 bytes. No production dependency added. Both base and branch already exceed the historical size maximum, reported under D205 rather than worked around. Baseline browser comparison is running for the three remaining full-suite failures.
Author
Owner

Completed browser fixture corrections d2193c32 and f353a830. Bootstrap diagnostics compared count 0 before the initial console protocol socket opened, then saw 1 from that unrelated connection; wait for the real initial attachment. All nine canvas specs pass. The switch fixture assumed attach insertion order was window order; that could invert first/second identities and wait 20 s for input Ack on the wrong session. Resolve fixture identities by actual shell output markers and focus the second window before preparing it. All seven switch specs pass, input Ack 193 ms, cold attach 26.4 ms / live paint 57.2 ms; original budgets unchanged.

Unchanged production binary/UI passed all 20 selected canvas/Mesh/switch specs. Branch isolated rerun passed all Mesh specs (the earlier paginated run had 2/450 refusals), and the marker correction resolves the repeated branch switch failure. Final complete 44-spec run is in progress against static artifact SHA256 4939fc4d3a09c62a3b80febbb7a7fdfa1cef846189cbdb6618899ddcf271f32b, TRACER_TEST_PORT=4351. No production Mesh, bootstrap routing or switch code changed.

Completed browser fixture corrections d2193c32 and f353a830. Bootstrap diagnostics compared count 0 before the initial console protocol socket opened, then saw 1 from that unrelated connection; wait for the real initial attachment. All nine canvas specs pass. The switch fixture assumed attach insertion order was window order; that could invert first/second identities and wait 20 s for input Ack on the wrong session. Resolve fixture identities by actual shell output markers and focus the second window before preparing it. All seven switch specs pass, input Ack 193 ms, cold attach 26.4 ms / live paint 57.2 ms; original budgets unchanged. Unchanged production binary/UI passed all 20 selected canvas/Mesh/switch specs. Branch isolated rerun passed all Mesh specs (the earlier paginated run had 2/450 refusals), and the marker correction resolves the repeated branch switch failure. Final complete 44-spec run is in progress against static artifact SHA256 4939fc4d3a09c62a3b80febbb7a7fdfa1cef846189cbdb6618899ddcf271f32b, TRACER_TEST_PORT=4351. No production Mesh, bootstrap routing or switch code changed.
Author
Owner

Finished at 7ef4a88e3a, branch session-bounds; all 17 atomic commits pushed. No deploy. Reaping, resource-based session admission (default max of 256 MiB / 5% RAM), typed refusal guidance with existing Sessions action, and trusted live/background session count wire are implemented. The existing picker remains browser-known inventory; the orchestrator owns background-session UI.

Final scripts/verify fast summary, verbatim (D205 historical size exception):

+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

Static x86: 19,656,320 bytes, static PIE/stripped, no PT_INTERP; exact production base 0d93a502 19,613,216 bytes, delta +43,104 (0.22%). ARM: 17,533,960 bytes, static/stripped, no PT_INTERP. No production Cargo manifest/lock dependency change; cargo tree -d checked. ARM built separately because the x86 historical size row stops the dispatcher.

TypeScript compiler/unit/bundle/precompression/transfer gates PASS (run separately after the Rust size stop). Critical JS gzip 288,093 / 307,200, brotli 239,205 / 256,000 bytes. Protocol output, verbatim:
36 pass
0 fail
34462 expect() calls
Ran 36 tests across 10 files. [4.80s]

Agent lifecycle/admission/delayed-credit tests PASS; real shim tests 9/9 PASS (4.11 s); server tests 263 PASS, 30 ignored. Final real-server suite against this branch static binary SHA256 4939fc4d3a09c62a3b80febbb7a7fdfa1cef846189cbdb6618899ddcf271f32b, TRACER_TEST_PORT=4351, verbatim:
3 skipped
41 passed (7.4m)
Existing skips: disabled-Mesh profile x2, opt-in scale x1. Earlier gate failures, baseline comparisons and failing-before-fix fixture regressions are recorded above; no timing budget was relaxed.

200 real sessions: recovered 200 background shims, admitted 201st, killed its shell, socket retired within 1 s and count back to 200. Empty shim/shell PSS 217,152 / 122,187 KiB; private dirty 212,952 / 118,868 KiB. At 12,000 output rows each: PSS 3,576,532 / 134,202 KiB, private dirty 3,572,332 / 130,868 KiB. infraternal-dev, 8 cores, RAM 32,803,748 KiB, 80x24, CPUWeight10000; load 12.31/11.42/16.24 -> 22.11/13.50/16.81, no artificial CPU load. Paired zero-RTT host-facts latency at 200: median 2.521 -> 3.999 ms (101 samples); load 14.76/13.04/15.77 -> 17.20/13.86/15.95. On-request process-birth identity costs 1.478 ms observed median, no typing/idle path change. ASan parsers: 2,372,685 executions / 46 s, cov2049 ft6838, no crash.

Reviewer checklist complete: PID reuse/zombies/stale sockets, exit ordering/credit, trusted counts, policy arithmetic/bounds, public refusal sanitization, existing host/UID/freshness authorization, frozen frame layouts, feature-off work, dependency and UI reuse. Production desktop/phone captures are attached for independent visual review (Chromium phone emulation, not physical Safari).

Durable evidence: docs/perf/session-bounds/{README.md,gates.md,measurement-final-200.json,facts-latency-200.json}; scripts/measure-session-memory.py; apps/tracer/captures/session-bounds/{refusal-desktop,refusal-phone,sessions-phone}.png. Scratch build targets and own baseline checkouts removed; final static artifacts/logs retained under /home/kayg/.cache/codex-scratch/session-bounds/artifacts and the job scratch root. Issue left open.

Finished at 7ef4a88e3a0116b671f83e34989544e5f6bd8ad2, branch session-bounds; all 17 atomic commits pushed. No deploy. Reaping, resource-based session admission (default max of 256 MiB / 5% RAM), typed refusal guidance with existing Sessions action, and trusted live/background session count wire are implemented. The existing picker remains browser-known inventory; the orchestrator owns background-session UI. Final scripts/verify fast summary, verbatim (D205 historical size exception): +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+ Static x86: 19,656,320 bytes, static PIE/stripped, no PT_INTERP; exact production base 0d93a502 19,613,216 bytes, delta +43,104 (0.22%). ARM: 17,533,960 bytes, static/stripped, no PT_INTERP. No production Cargo manifest/lock dependency change; cargo tree -d checked. ARM built separately because the x86 historical size row stops the dispatcher. TypeScript compiler/unit/bundle/precompression/transfer gates PASS (run separately after the Rust size stop). Critical JS gzip 288,093 / 307,200, brotli 239,205 / 256,000 bytes. Protocol output, verbatim: 36 pass 0 fail 34462 expect() calls Ran 36 tests across 10 files. [4.80s] Agent lifecycle/admission/delayed-credit tests PASS; real shim tests 9/9 PASS (4.11 s); server tests 263 PASS, 30 ignored. Final real-server suite against this branch static binary SHA256 4939fc4d3a09c62a3b80febbb7a7fdfa1cef846189cbdb6618899ddcf271f32b, TRACER_TEST_PORT=4351, verbatim: 3 skipped 41 passed (7.4m) Existing skips: disabled-Mesh profile x2, opt-in scale x1. Earlier gate failures, baseline comparisons and failing-before-fix fixture regressions are recorded above; no timing budget was relaxed. 200 real sessions: recovered 200 background shims, admitted 201st, killed its shell, socket retired within 1 s and count back to 200. Empty shim/shell PSS 217,152 / 122,187 KiB; private dirty 212,952 / 118,868 KiB. At 12,000 output rows each: PSS 3,576,532 / 134,202 KiB, private dirty 3,572,332 / 130,868 KiB. infraternal-dev, 8 cores, RAM 32,803,748 KiB, 80x24, CPUWeight10000; load 12.31/11.42/16.24 -> 22.11/13.50/16.81, no artificial CPU load. Paired zero-RTT host-facts latency at 200: median 2.521 -> 3.999 ms (101 samples); load 14.76/13.04/15.77 -> 17.20/13.86/15.95. On-request process-birth identity costs 1.478 ms observed median, no typing/idle path change. ASan parsers: 2,372,685 executions / 46 s, cov2049 ft6838, no crash. Reviewer checklist complete: PID reuse/zombies/stale sockets, exit ordering/credit, trusted counts, policy arithmetic/bounds, public refusal sanitization, existing host/UID/freshness authorization, frozen frame layouts, feature-off work, dependency and UI reuse. Production desktop/phone captures are attached for independent visual review (Chromium phone emulation, not physical Safari). Durable evidence: docs/perf/session-bounds/{README.md,gates.md,measurement-final-200.json,facts-latency-200.json}; scripts/measure-session-memory.py; apps/tracer/captures/session-bounds/{refusal-desktop,refusal-phone,sessions-phone}.png. Scratch build targets and own baseline checkouts removed; final static artifacts/logs retained under /home/kayg/.cache/codex-scratch/session-bounds/artifacts and the job scratch root. Issue left open.
Author
Owner

Independent review started on review-session-bounds, detached target 7ef4a88e; merge base with dev 2eaaaa36a2. Read #151 and all 32 comments; no parent linked. Review includes the merge-base diff, concentrating behavioral probes on #151 changes since production 0d93a502. No pushes or implementation fixes per reviewer brief.

Independent review started on review-session-bounds, detached target 7ef4a88e; merge base with dev 2eaaaa36a2dcdda12582150d29c14d660e6bcb2f. Read #151 and all 32 comments; no parent linked. Review includes the merge-base diff, concentrating behavioral probes on #151 changes since production 0d93a502. No pushes or implementation fixes per reviewer brief.
Author
Owner

P1 SB-01: final output and exit are lost when a shell exits after the 250 ms credit-starvation detach. Location crates/infraternal-agent/src/daemon.rs:750-758 and crates/infraternal-shim/src/session.rs:332-339. A window remains attached; the relay drops its local shim link, a control-only probe writes FINAL_OUTPUT and exits 7, the shim retires, then credit returns. Result: Close(1,"terminal shim disconnected"), no final output/terminal.exited. Rust test attached_window_recovers_final_output_and_exit_after_shim_link_detaches fails on exact static artifact 4939fc4d3a09c62a3b80febbb7a7fdfa1cef846189cbdb6618899ddcf271f32b (19.33s). Detachment is observed from shim socket descriptors, not assumed from a sleep. This regresses no-lost-output/resume semantics D13/D41; preserving only peers already read-closed at the deadline misses shells exiting later. Evidence test: crates/infraternal/tests/session_bounds_review.rs and scripts/verify-session-exit-credit.py --exit-after-detach. Implementation not changed.

P1 SB-01: final output and exit are lost when a shell exits after the 250 ms credit-starvation detach. Location crates/infraternal-agent/src/daemon.rs:750-758 and crates/infraternal-shim/src/session.rs:332-339. A window remains attached; the relay drops its local shim link, a control-only probe writes FINAL_OUTPUT and exits 7, the shim retires, then credit returns. Result: Close(1,"terminal shim disconnected"), no final output/terminal.exited. Rust test attached_window_recovers_final_output_and_exit_after_shim_link_detaches fails on exact static artifact 4939fc4d3a09c62a3b80febbb7a7fdfa1cef846189cbdb6618899ddcf271f32b (19.33s). Detachment is observed from shim socket descriptors, not assumed from a sleep. This regresses no-lost-output/resume semantics D13/D41; preserving only peers already read-closed at the deadline misses shells exiting later. Evidence test: crates/infraternal/tests/session_bounds_review.rs and scripts/verify-session-exit-credit.py --exit-after-detach. Implementation not changed.
Author
Owner

SB-01 failing-test commit is now 06d27c70 (the fixture accepts both raw output and snapshot repaint). Exact-head reproduction fails with terminal shim disconnected in 5.36 s. Original exit-before-detach test PASS; production 0d93a502 also recovers final output and exit after detach when the probe accommodates its old retained-exit lifetime. No implementation fix/push.
Independent CPUWeight=10000 200-session run: 200 recovered, 201 admitted, extra retired within 1 s. Empty shim/shell PSS 216328/122193 KiB, filled 12000 rows each 3575164/134219 KiB; load 10.34/8.77/8.50 -> 21.79/11.46/9.40. Zero-RTT 200-session facts median 8.799 ms / max31.933 ms under load59.30/40.88/25.64. 5 TS tests/25 assertions PASS. Latency diagnostics fail on both head and production base under host load; no causal regression claimed. Exact-head fast gate and bounded ASan fuzz still compiling; durable report docs/reviews/session-bounds-151.md in progress.

SB-01 failing-test commit is now 06d27c70 (the fixture accepts both raw output and snapshot repaint). Exact-head reproduction fails with terminal shim disconnected in 5.36 s. Original exit-before-detach test PASS; production 0d93a502 also recovers final output and exit after detach when the probe accommodates its old retained-exit lifetime. No implementation fix/push. Independent CPUWeight=10000 200-session run: 200 recovered, 201 admitted, extra retired within 1 s. Empty shim/shell PSS 216328/122193 KiB, filled 12000 rows each 3575164/134219 KiB; load 10.34/8.77/8.50 -> 21.79/11.46/9.40. Zero-RTT 200-session facts median 8.799 ms / max31.933 ms under load59.30/40.88/25.64. 5 TS tests/25 assertions PASS. Latency diagnostics fail on both head and production base under host load; no causal regression claimed. Exact-head fast gate and bounded ASan fuzz still compiling; durable report docs/reviews/session-bounds-151.md in progress.
Author
Owner

Completed independent evidence step eb2764f3 on review-session-bounds: docs/reviews/session-bounds-151.md records SB-01, the passing production-base comparison, 200 real sessions (filled combined PSS 3709383 KiB), zero-RTT facts median8.799ms/max31.933ms and all raw role totals/load. Five TS tests/25 assertions and original credit test PASS. Exact-head fast/fuzz completion remains a separate step; no claim that those gates passed. Verdict remains HOLD: P0=0/P1=1/P2=0/P3=0.

Completed independent evidence step eb2764f3 on review-session-bounds: docs/reviews/session-bounds-151.md records SB-01, the passing production-base comparison, 200 real sessions (filled combined PSS 3709383 KiB), zero-RTT facts median8.799ms/max31.933ms and all raw role totals/load. Five TS tests/25 assertions and original credit test PASS. Exact-head fast/fuzz completion remains a separate step; no claim that those gates passed. Verdict remains HOLD: P0=0/P1=1/P2=0/P3=0.
Author
Owner

Independent review finished: review-session-bounds HEAD 98f7a3b735; target 7ef4a88e, merge base 2eaaaa36a2.
Verdict: merge after fixes. HOLD (P0=0, P1=1, P2=0, P3=0).
SB-01: an attached window loses final output/terminal.exited when credit starvation detaches its shim link before the shell exits. Failing Rust test commit 06d27c70, independent measurements eb2764f3, final gates 98f7a3b7. Test fails against the exact target artifact, independently rebuilt GNU debug (2.57s) and static musl (1.40s); production-base comparison passes with its retained-exit semantics. Details: docs/reviews/session-bounds-151.md.

Exact-head scripts/verify fast output, verbatim:
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

571 workspace tests PASS, 62 ignored; 263 server unit tests PASS, 30 ignored. No timeout failure waived. Earlier relative scratch-root failure was a fixture setup error; short absolute 99-byte socket paths make the full rerun pass. Static x86 19,656,320 bytes, +43,104 bytes (0.22%) vs production base; historical size-only exception D205. Independent SHA256 9a254fa962006021459d86089c857ac998b9a32247b68b8fdaa7865d0774770a.
TS compiler/unit/build/transfer gates PASS; protocol 36 PASS / 0 FAIL / 34,462 assertions. ASan fuzz 740,611 executions / 46 s, cov 1858 / ft 5140, no crash. Real 200-session PSS/private/recovery/admission evidence and load committed; latency diagnostics failed on both target and production base under host load, no causal regression claimed. Supplied desktop/phone production captures reviewed; no physical Safari run.
Own build targets, temporary head checkout and short scratch alias removed. Raw logs and rebuilt static artifact retained under ~/.cache/codex-scratch/session-bounds-review/. No implementation fix, push or deploy. Issue left open.

Independent review finished: review-session-bounds HEAD 98f7a3b735fa86e8995125c72c6d6c5c215b5585; target 7ef4a88e, merge base 2eaaaa36a2dcdda12582150d29c14d660e6bcb2f. Verdict: merge after fixes. HOLD (P0=0, P1=1, P2=0, P3=0). SB-01: an attached window loses final output/terminal.exited when credit starvation detaches its shim link before the shell exits. Failing Rust test commit 06d27c70, independent measurements eb2764f3, final gates 98f7a3b7. Test fails against the exact target artifact, independently rebuilt GNU debug (2.57s) and static musl (1.40s); production-base comparison passes with its retained-exit semantics. Details: docs/reviews/session-bounds-151.md. Exact-head scripts/verify fast output, verbatim: +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+ 571 workspace tests PASS, 62 ignored; 263 server unit tests PASS, 30 ignored. No timeout failure waived. Earlier relative scratch-root failure was a fixture setup error; short absolute 99-byte socket paths make the full rerun pass. Static x86 19,656,320 bytes, +43,104 bytes (0.22%) vs production base; historical size-only exception D205. Independent SHA256 9a254fa962006021459d86089c857ac998b9a32247b68b8fdaa7865d0774770a. TS compiler/unit/build/transfer gates PASS; protocol 36 PASS / 0 FAIL / 34,462 assertions. ASan fuzz 740,611 executions / 46 s, cov 1858 / ft 5140, no crash. Real 200-session PSS/private/recovery/admission evidence and load committed; latency diagnostics failed on both target and production base under host load, no causal regression claimed. Supplied desktop/phone production captures reviewed; no physical Safari run. Own build targets, temporary head checkout and short scratch alias removed. Raw logs and rebuilt static artifact retained under ~/.cache/codex-scratch/session-bounds-review/. No implementation fix, push or deploy. Issue left open.
Author
Owner

Round 2 started on session-bounds at base 7ef4a88e3a. Read contracts, all 37 issue comments and review 98f7a3b7; no parent linked. Review branch was not pushed, but its commit objects exist locally. Will cherry-pick unchanged failing-test 06d27c70 first, reproduce SB-01, and reuse the concurrent fix-dead-session typed ended answer where available. No deploy.

Round 2 started on session-bounds at base 7ef4a88e3a0116b671f83e34989544e5f6bd8ad2. Read contracts, all 37 issue comments and review 98f7a3b7; no parent linked. Review branch was not pushed, but its commit objects exist locally. Will cherry-pick unchanged failing-test 06d27c70 first, reproduce SB-01, and reuse the concurrent fix-dead-session typed ended answer where available. No deploy.
Author
Owner

SB-01 reproduced unchanged on pushed test commit 14c13138 using round-1 static artifact: AssertionError (15, Close 1 terminal shim disconnected), 1.63 s. Proposed additive shim cap bit 3: a separate authenticated ownership-only connection keeps a window owning its session across output-link detach, never backpressures PTY, and drops on release or ordered exit delivery. Retain exited owned shims at most 600 seconds from child exit (one-shot deadline, no live-session timer); on expiry save a fixed-size Exited record in the private runtime session directory before removing the socket. Reattach sends ordered terminal.exited status and existing fix-dead-session Close 4404/session ended. Reuse protocol commit 0cd816bd from #158, no second ended type. The unchanged Rust review test calls a fixture whose old assumptions (one socket at detach, retirement before credit) must be capability-aware for the newly approved retained-owner lifetime; retain its final-output/status assertions and observed data-link barrier. Ten minutes covers long network/credit pauses while capping each exited owner at the existing ~25 MiB history/ring bound; explicit window close retires immediately. No owner still retires promptly.

SB-01 reproduced unchanged on pushed test commit 14c13138 using round-1 static artifact: AssertionError (15, Close 1 terminal shim disconnected), 1.63 s. Proposed additive shim cap bit 3: a separate authenticated ownership-only connection keeps a window owning its session across output-link detach, never backpressures PTY, and drops on release or ordered exit delivery. Retain exited owned shims at most 600 seconds from child exit (one-shot deadline, no live-session timer); on expiry save a fixed-size Exited record in the private runtime session directory before removing the socket. Reattach sends ordered terminal.exited status and existing fix-dead-session Close 4404/session ended. Reuse protocol commit 0cd816bd from #158, no second ended type. The unchanged Rust review test calls a fixture whose old assumptions (one socket at detach, retirement before credit) must be capability-aware for the newly approved retained-owner lifetime; retain its final-output/status assertions and observed data-link barrier. Ten minutes covers long network/credit pauses while capping each exited owner at the existing ~25 MiB history/ring bound; explicit window close retires immediately. No owner still retires promptly.
Author
Owner

Completed/pushed unchanged failing-test 14c13138, reused #158 protocol constants a93942d6 (source 0cd816bd), ownership contract 8646ba9c, exit-record module 46512db0. File-security/codec regression PASS 1/1, 0.27 s. Record is atomic fixed-size 17 bytes, same UID/0600/regular only, O_NOFOLLOW; reuses frozen fuzzed Exited decoder. Full fast gate remains pending dependent ownership/relay modules; deliberately failing SB-01 is retained. Environment: first native build completed C dependencies, later build hit ENOSPC; disk recovered from <1 GiB to 12 GiB, rerun started. No other job files changed.

Completed/pushed unchanged failing-test 14c13138, reused #158 protocol constants a93942d6 (source 0cd816bd), ownership contract 8646ba9c, exit-record module 46512db0. File-security/codec regression PASS 1/1, 0.27 s. Record is atomic fixed-size 17 bytes, same UID/0600/regular only, O_NOFOLLOW; reuses frozen fuzzed Exited decoder. Full fast gate remains pending dependent ownership/relay modules; deliberately failing SB-01 is retained. Environment: first native build completed C dependencies, later build hit ENOSPC; disk recovered from <1 GiB to 12 GiB, rerun started. No other job files changed.
Author
Owner

Completed/pushed ownership shim 90f5faca, bounded hidden startup override c6a149ff, negotiated sessions API 0e6f8d32, relay fix 84f6a3ff and real-engine tests e7a2ac92. Unchanged review Rust test PASS 1/1 in 0.94 s; real bound/unfunded expiry/restarted daemon reconnect PASS 1/1 in 1.51 s; real shim suite PASS 11/11 in 5.14 s (including no-owner retirement within one second, owner release and unread data at maximum). Shared Close 4404 notified on #158. Full fast gate in progress: clippy caught request handler exceeding 100 lines; extracted capability attachment validation into Peer::attach, no behavior change. Full gate rerun required; no green claim yet.

Completed/pushed ownership shim 90f5faca, bounded hidden startup override c6a149ff, negotiated sessions API 0e6f8d32, relay fix 84f6a3ff and real-engine tests e7a2ac92. Unchanged review Rust test PASS 1/1 in 0.94 s; real bound/unfunded expiry/restarted daemon reconnect PASS 1/1 in 1.51 s; real shim suite PASS 11/11 in 5.14 s (including no-owner retirement within one second, owner release and unread data at maximum). Shared Close 4404 notified on #158. Full fast gate in progress: clippy caught request handler exceeding 100 lines; extracted capability attachment validation into Peer::attach, no behavior change. Full gate rerun required; no green claim yet.
Author
Owner

Full fast gate found a dependent fixture limitation, not waived: agent_daemon real 24-restart oracle fails at its second attach with Close 1 (11.71 s), after initial real exit/idle checks pass. Evidence: scripts/agent_fixture.py AckBarrier.run accepts one shim connection then drains it synchronously; the independent ownership connection waits behind the data connection and times out. The real direct-shim review/bound tests pass. Fix the local test proxy to accept both connections concurrently, keeping PTY Ack/State barriers and disconnect callbacks restricted to data links. Preserve existing deadlines/bytes/restart assertions. TS differential failure also recorded: stream.test.ts cargo run waited on the parallel full gate Cargo lock and timed out at 30 s; rerun serially after native/static builds.

Full fast gate found a dependent fixture limitation, not waived: agent_daemon real 24-restart oracle fails at its second attach with Close 1 (11.71 s), after initial real exit/idle checks pass. Evidence: scripts/agent_fixture.py AckBarrier.run accepts one shim connection then drains it synchronously; the independent ownership connection waits behind the data connection and times out. The real direct-shim review/bound tests pass. Fix the local test proxy to accept both connections concurrently, keeping PTY Ack/State barriers and disconnect callbacks restricted to data links. Preserve existing deadlines/bytes/restart assertions. TS differential failure also recorded: stream.test.ts cargo run waited on the parallel full gate Cargo lock and timed out at 30 s; rerun serially after native/static builds.
Author
Owner

Completed/pushed fixture concurrency fix 5151ef6b (24 restarts / 4,710,396 exact bytes; State/Ack oracle 524,288 exact replay bytes; queue 2,640,000 exact bytes; isolation control/sibling progress 303.790 ms at 300 ms RTT), Peer attachment extraction 81997f42, two-owner test 4e6b9a1f and owner-scale harness 74feac60. Correction: commit bodies said 12/12 before the new test had been rebuilt; the first direct rerun actually used cached 11-test binary (11/11, 6.27 s). Recompiled updated shim.rs against current built libraries/binary with rustc --test: all 12 real tests now PASS in 6.75 s, including delivered_exit_cannot_release_another_owning_window. Cargo/full fast will rerun on this head after the initial static build finishes. Owner harness two-session weighted cleanup smoke PASS. No full gate or 200-session completion claimed yet.

Completed/pushed fixture concurrency fix 5151ef6b (24 restarts / 4,710,396 exact bytes; State/Ack oracle 524,288 exact replay bytes; queue 2,640,000 exact bytes; isolation control/sibling progress 303.790 ms at 300 ms RTT), Peer attachment extraction 81997f42, two-owner test 4e6b9a1f and owner-scale harness 74feac60. Correction: commit bodies said 12/12 before the new test had been rebuilt; the first direct rerun actually used cached 11-test binary (11/11, 6.27 s). Recompiled updated shim.rs against current built libraries/binary with rustc --test: all 12 real tests now PASS in 6.75 s, including delivered_exit_cannot_release_another_owning_window. Cargo/full fast will rerun on this head after the initial static build finishes. Owner harness two-session weighted cleanup smoke PASS. No full gate or 200-session completion claimed yet.
Author
Owner

Round-2 verification: the final full Rust gate has passed fmt, VT fmt, clippy, workspace tests and dependency checks; static build is still running. Extracted the shared ordered Event send path to satisfy the writer length gate without suppressing clippy. Earlier unweighted production browser run failed enrol/setup timeouts (9 failed, 27 did not run, 7 passed); the round-one binary also needed 1.7m for the isolated bootstrap. A weighted isolated branch run passed in 15.5s with no browser errors in a separate public-metadata diagnostic. Weighted full-suite rerun is underway with test runtime/data inside this job scratch tree and unique port 4357. No test budgets changed. First round-2 200-session measurement: empty combined PSS 340164 KiB (+825 KiB, 0.243% vs round 1), filled combined PSS 3710186 KiB (-548 KiB). Owner connections added no measurable resident pages at page granularity. Final artifact repeat will follow the writer refactor. No synthetic CPU load.

Round-2 verification: the final full Rust gate has passed fmt, VT fmt, clippy, workspace tests and dependency checks; static build is still running. Extracted the shared ordered Event send path to satisfy the writer length gate without suppressing clippy. Earlier unweighted production browser run failed enrol/setup timeouts (9 failed, 27 did not run, 7 passed); the round-one binary also needed 1.7m for the isolated bootstrap. A weighted isolated branch run passed in 15.5s with no browser errors in a separate public-metadata diagnostic. Weighted full-suite rerun is underway with test runtime/data inside this job scratch tree and unique port 4357. No test budgets changed. First round-2 200-session measurement: empty combined PSS 340164 KiB (+825 KiB, 0.243% vs round 1), filled combined PSS 3710186 KiB (-548 KiB). Owner connections added no measurable resident pages at page granularity. Final artifact repeat will follow the writer refactor. No synthetic CPU load.
Author
Owner

Completed: e665af15 extracts the shared ordered Event writer; bdb7abb0 adds the real attach benchmark. Both pushed. Final fast: fmt/VT fmt/clippy/test/cargo-deny PASS; only known static size row FAIL, x86 19692992 bytes (+36672, 0.187% vs round one). Workspace 577 passed, 62 ignored, including unchanged review test and 12 real-shim tests. Separate serial TypeScript gate: 36 pass, 0 fail, 34462 assertions; build/compiler/UI/transfer checks pass. Final 200-session artifact SHA256 b389237f901517dc0a7cdb536b0e127002ba74398b95f522a8c9f911e2fab2c1: empty combined PSS 339540 KiB (+201), filled 3709530 KiB (-1204), 200 ownership connections add no measurable resident pages. Local weighted scopes, initial load 14.67/25.43/31.83, no own build/browser or synthetic CPU load during measurement. 51 quiet zero-network attach samples: median 0.341525 ms before / 0.470702 after, observed +0.129177 ms; host variance limits causality. Weighted production suite: 38 pass, 3 skip, 3 failures (freeze scale .697676 vs <.58, low-memory test timeout, 2 Mesh enrol refusals). The exact three specs all pass against round-one artifact (6 pass, 2 skip, 48.3s); final branch isolated rerun underway, unchanged budgets.

Completed: e665af15 extracts the shared ordered Event writer; bdb7abb0 adds the real attach benchmark. Both pushed. Final fast: fmt/VT fmt/clippy/test/cargo-deny PASS; only known static size row FAIL, x86 19692992 bytes (+36672, 0.187% vs round one). Workspace 577 passed, 62 ignored, including unchanged review test and 12 real-shim tests. Separate serial TypeScript gate: 36 pass, 0 fail, 34462 assertions; build/compiler/UI/transfer checks pass. Final 200-session artifact SHA256 b389237f901517dc0a7cdb536b0e127002ba74398b95f522a8c9f911e2fab2c1: empty combined PSS 339540 KiB (+201), filled 3709530 KiB (-1204), 200 ownership connections add no measurable resident pages. Local weighted scopes, initial load 14.67/25.43/31.83, no own build/browser or synthetic CPU load during measurement. 51 quiet zero-network attach samples: median 0.341525 ms before / 0.470702 after, observed +0.129177 ms; host variance limits causality. Weighted production suite: 38 pass, 3 skip, 3 failures (freeze scale .697676 vs <.58, low-memory test timeout, 2 Mesh enrol refusals). The exact three specs all pass against round-one artifact (6 pass, 2 skip, 48.3s); final branch isolated rerun underway, unchanged budgets.
Author
Owner

Production browser follow-up: the three failed files from the first weighted full run all pass with unchanged budgets against both round-one binary (6 pass, 2 skip, 48.3s) and final round-two binary (6 pass, 2 skip, 43.7s). Thus all 41 enabled specs have passing evidence. An additional full repeat overlapped ARM compilation and finished 33 pass, 3 skip, 2 fail, 6 not run: freeze pixel fingerprint changed during camera motion, and switch setup missed FIRST-MARK within 5000 ms. Log: round2-server-specs-final.log under the job scratch root. The latter passed in the first weighted full run. No fully green full invocation is claimed; next repeat will avoid own compilation. ARM static build is progressing; x86 final source and all Rust/TS gates except the known size row are already verified.

Production browser follow-up: the three failed files from the first weighted full run all pass with unchanged budgets against both round-one binary (6 pass, 2 skip, 48.3s) and final round-two binary (6 pass, 2 skip, 43.7s). Thus all 41 enabled specs have passing evidence. An additional full repeat overlapped ARM compilation and finished 33 pass, 3 skip, 2 fail, 6 not run: freeze pixel fingerprint changed during camera motion, and switch setup missed FIRST-MARK within 5000 ms. Log: round2-server-specs-final.log under the job scratch root. The latter passed in the first weighted full run. No fully green full invocation is claimed; next repeat will avoid own compilation. ARM static build is progressing; x86 final source and all Rust/TS gates except the known size row are already verified.
Author
Owner

Author review found an additional maximum-retirement overlap: the 17-byte exit record is published before peer/listener teardown. Expanded real-retention regression retains that real record and installs a private same-UID socket closing handshakes. Previous final static SHA256 b389237f901517dc0a7cdb536b0e127002ba74398b95f522a8c9f911e2fab2c1 fails before Welcome: infraternal agent failed: unexpected end of file (round2-retirement-race-before.log). A restarting daemon must ignore a handshake failure only when a secure verified record proves the UUID ended; reattach must likewise deliver that recorded status, not generic disconnect. Fixing recovery and stream classification as separate module changes; no additional filesystem read on successful connections. 5a9ea37e adds the explicitly requested normal unowned exit/status-7 regression, pushed; final pre-race gate had 578 pass, 62 ignored, all 13 real-shim tests passing, size-only failure. The prefix baseline browser run also fails the existing 4x-CPU frame count (16 vs >20), establishing shared-load interference with the round-one artifact; all 41 enabled specs already have passing evidence across full and isolated branch runs.

Author review found an additional maximum-retirement overlap: the 17-byte exit record is published before peer/listener teardown. Expanded real-retention regression retains that real record and installs a private same-UID socket closing handshakes. Previous final static SHA256 b389237f901517dc0a7cdb536b0e127002ba74398b95f522a8c9f911e2fab2c1 fails before Welcome: infraternal agent failed: unexpected end of file (round2-retirement-race-before.log). A restarting daemon must ignore a handshake failure only when a secure verified record proves the UUID ended; reattach must likewise deliver that recorded status, not generic disconnect. Fixing recovery and stream classification as separate module changes; no additional filesystem read on successful connections. 5a9ea37e adds the explicitly requested normal unowned exit/status-7 regression, pushed; final pre-race gate had 578 pass, 62 ignored, all 13 real-shim tests passing, size-only failure. The prefix baseline browser run also fails the existing 4x-CPU frame count (16 vs >20), establishing shared-load interference with the round-one artifact; all 41 enabled specs already have passing evidence across full and isolated branch runs.
Author
Owner

Completed and pushed: 58afade0 recovery tolerates a retiring handshake only with a verified exit record; b3ddf6fc relay errors preserve recorded status during any initialization/read phase; f8a58e2c adds the publication/teardown race regression. Final fast: 578 passed, 62 ignored, 13 real-shim tests; fmt/VT fmt/clippy/test/cargo-deny PASS, known static-size row FAIL. X86 19699392 bytes (+43072, 0.219% versus round one), SHA256 b1c8fcface143e0d2e0dae4fde67c2076106fedfdcadc52e671a8364e03833f4. Final owned 200-session repeat: empty combined PSS 339925 KiB (+586, 0.173%); filled 3712847 KiB (+2113, 0.057%). No measurable owner-link resident-page increment; one shim thread. Local weighted scopes, no own build/browser during sampling; initial load 23.58/26.49/27.21, filled load 44.38/31.13/28.72. Quiet attach 51 samples each at load 44.38/31.13/28.72: median 0.247676 ms before / 0.468064 after, +0.220388 ms; maxima 3.341133 / 4.656156 ms. No extra record read on healthy connections. Latest binary production functional flows: 5 passed in 18.1s (port 4367). Relay metadata measurement and refreshed ARM build remain before final evidence commit.

Completed and pushed: 58afade0 recovery tolerates a retiring handshake only with a verified exit record; b3ddf6fc relay errors preserve recorded status during any initialization/read phase; f8a58e2c adds the publication/teardown race regression. Final fast: 578 passed, 62 ignored, 13 real-shim tests; fmt/VT fmt/clippy/test/cargo-deny PASS, known static-size row FAIL. X86 19699392 bytes (+43072, 0.219% versus round one), SHA256 b1c8fcface143e0d2e0dae4fde67c2076106fedfdcadc52e671a8364e03833f4. Final owned 200-session repeat: empty combined PSS 339925 KiB (+586, 0.173%); filled 3712847 KiB (+2113, 0.057%). No measurable owner-link resident-page increment; one shim thread. Local weighted scopes, no own build/browser during sampling; initial load 23.58/26.49/27.21, filled load 44.38/31.13/28.72. Quiet attach 51 samples each at load 44.38/31.13/28.72: median 0.247676 ms before / 0.468064 after, +0.220388 ms; maxima 3.341133 / 4.656156 ms. No extra record read on healthy connections. Latest binary production functional flows: 5 passed in 18.1s (port 4367). Relay metadata measurement and refreshed ARM build remain before final evidence commit.
Author
Owner

Finished round 2 on session-bounds at 8b0f74f4c4; every atomic commit is pushed. No deployment; issue remains open for independent review.

SB-01: unchanged review test 14c13138 now passes, delivering FINAL_OUTPUT and exit 7 after the 250 ms credit detach. Separate authenticated ownership survives data detachment; exited retention is one-shot 600 seconds, then a private frozen Exited record returns terminal.exited followed by shared Close(4404, "session ended"). No-owner exit retires promptly. Tests also cover owner release, multiple owners, forced bound, daemon restart, and publication before socket teardown. Review test blob remains a9f392314c.

Final scripts/verify fast output, verbatim:
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

578 passed, 62 ignored; all 13 real-shim tests, unchanged review regression and bounded-retention/restart regression pass. The only failure is the known historical static-size row: x86 19,699,392 (+43,072 / 0.219% versus round 1); ARM 17,570,744 (+36,784 / 0.210%). Both stripped static without PT_INTERP. Separate TypeScript half passes compiler/UI/build/transfer and 36 protocol tests, 34,462 assertions. Gzip/Brotli remain 288,093/239,205 bytes.

Local CPUWeight=10000 measurements at 200 sessions: combined empty PSS 339,925 KiB (+586 / 0.173%), filled 3,712,847 KiB (+2,113 / 0.057%). Initial load 23.58/26.49/27.21, filled 44.38/31.13/28.72; no own build/browser or generated CPU load during sampling. 200 relay futures + paired fixtures use 1,448 KiB (7,413 bytes/stream), below 32 KiB allowance; legacy capability fixtures exclude active owner links/PTYs, which are measured separately. Quiet attach 51 samples each: median 0.247676 to 0.468064 ms (+0.220388); host variation limits attribution.

Production real-server specs rerun with unique ports. All 41 enabled specs have passing evidence across full runs and isolated rechecks (6 pass/2 skip on round-one and round-two comparison files). Full invocations still have host-load timing failures; latest final binary passes five bootstrap/sign-in/window-routing/close/reload flows in 18.1 seconds. No assertions or budgets weakened. Detailed full-run failures and baseline frame-count failure are retained; a single fully green browser invocation is not claimed.

Evidence and author checklist: docs/perf/session-bounds/round2.md; measurement-round2-200.json and relay-memory-round2-200.json. Safe raw logs, final static artifacts and production screenshots retained under /home/kayg/.cache/codex-scratch/session-bounds/. Own build target and test runtime scratch removed. See round2-fast-race-final.log, round2-ts-complete.log, round2-arm-race-static.log, round2-memory-race-200.log, round2-relay-memory-200.log, round2-browser-final-functional.log and round2-browser-captures/window-sizes/phone-393x852-keyboard-up.png.

Finished round 2 on session-bounds at 8b0f74f4c4d2e806753c6c0f276027c8c8aee675; every atomic commit is pushed. No deployment; issue remains open for independent review. SB-01: unchanged review test 14c13138 now passes, delivering FINAL_OUTPUT and exit 7 after the 250 ms credit detach. Separate authenticated ownership survives data detachment; exited retention is one-shot 600 seconds, then a private frozen Exited record returns terminal.exited followed by shared Close(4404, "session ended"). No-owner exit retires promptly. Tests also cover owner release, multiple owners, forced bound, daemon restart, and publication before socket teardown. Review test blob remains a9f392314c16dac342334398f4e4b7e40e403d02. Final scripts/verify fast output, verbatim: +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+ 578 passed, 62 ignored; all 13 real-shim tests, unchanged review regression and bounded-retention/restart regression pass. The only failure is the known historical static-size row: x86 19,699,392 (+43,072 / 0.219% versus round 1); ARM 17,570,744 (+36,784 / 0.210%). Both stripped static without PT_INTERP. Separate TypeScript half passes compiler/UI/build/transfer and 36 protocol tests, 34,462 assertions. Gzip/Brotli remain 288,093/239,205 bytes. Local CPUWeight=10000 measurements at 200 sessions: combined empty PSS 339,925 KiB (+586 / 0.173%), filled 3,712,847 KiB (+2,113 / 0.057%). Initial load 23.58/26.49/27.21, filled 44.38/31.13/28.72; no own build/browser or generated CPU load during sampling. 200 relay futures + paired fixtures use 1,448 KiB (7,413 bytes/stream), below 32 KiB allowance; legacy capability fixtures exclude active owner links/PTYs, which are measured separately. Quiet attach 51 samples each: median 0.247676 to 0.468064 ms (+0.220388); host variation limits attribution. Production real-server specs rerun with unique ports. All 41 enabled specs have passing evidence across full runs and isolated rechecks (6 pass/2 skip on round-one and round-two comparison files). Full invocations still have host-load timing failures; latest final binary passes five bootstrap/sign-in/window-routing/close/reload flows in 18.1 seconds. No assertions or budgets weakened. Detailed full-run failures and baseline frame-count failure are retained; a single fully green browser invocation is not claimed. Evidence and author checklist: docs/perf/session-bounds/round2.md; measurement-round2-200.json and relay-memory-round2-200.json. Safe raw logs, final static artifacts and production screenshots retained under /home/kayg/.cache/codex-scratch/session-bounds/. Own build target and test runtime scratch removed. See round2-fast-race-final.log, round2-ts-complete.log, round2-arm-race-static.log, round2-memory-race-200.log, round2-relay-memory-200.log, round2-browser-final-functional.log and round2-browser-captures/window-sizes/phone-393x852-keyboard-up.png.
Author
Owner

Delta independent review started on review-session-bounds at target 8b0f74f4c4; merge base with dev 2eaaaa36a2. Read all 49 comments, no parent linked. Scope only 7ef4a88e..8b0f74f4 and SB-01. Earlier review preserved as review-session-bounds-round1; failing test already cherry-picked by target as 14c13138, no duplicate cherry-pick. No implementation fixes, push or deploy.

Delta independent review started on review-session-bounds at target 8b0f74f4c4d2e806753c6c0f276027c8c8aee675; merge base with dev 2eaaaa36a2dcdda12582150d29c14d660e6bcb2f. Read all 49 comments, no parent linked. Scope only 7ef4a88e..8b0f74f4 and SB-01. Earlier review preserved as review-session-bounds-round1; failing test already cherry-picked by target as 14c13138, no duplicate cherry-pick. No implementation fixes, push or deploy.
Author
Owner

Independent delta evidence committed on review-session-bounds (SHA below): SB-01 now passes against hash-verified final artifact; real bounded-retention/restart/retiring-handshake fixture passes. 200 sessions recovered/201 admitted; combined PSS339974KiB empty/3710577KiB filled, load23.18/25.19/25.40 ->36.61/27.98/26.30. Ownership reconnects do not renew the bound (7 reconnects,1452.568ms for1200ms shortened bound). Paired attach median0.339466 ->0.555918ms. Same-session flood latency fails on both earlier/final artifacts (450.17/449.17ms p99), no causal delta finding. Fresh weighted fast gate in progress; no new P0/P1. Evidence docs/reviews/session-bounds-151-delta.md.
4743810054

Independent delta evidence committed on review-session-bounds (SHA below): SB-01 now passes against hash-verified final artifact; real bounded-retention/restart/retiring-handshake fixture passes. 200 sessions recovered/201 admitted; combined PSS339974KiB empty/3710577KiB filled, load23.18/25.19/25.40 ->36.61/27.98/26.30. Ownership reconnects do not renew the bound (7 reconnects,1452.568ms for1200ms shortened bound). Paired attach median0.339466 ->0.555918ms. Same-session flood latency fails on both earlier/final artifacts (450.17/449.17ms p99), no causal delta finding. Fresh weighted fast gate in progress; no new P0/P1. Evidence docs/reviews/session-bounds-151-delta.md. 47438100549a826b79992408da72f8999789fa4d
Author
Owner

Independent fresh target-code Rust checks completed:578 passed,0 failed,62 ignored; SB-01, retention/restart and13 real-shim tests pass. Fmt/VT fmt/clippy/dependency checks pass. TypeScript compiler/UI121 tests/production/transfer pass; weighted unchanged-budget protocol retry36 pass,0 fail,34462 assertions in6.17s after two unweighted differential timeouts. Static release rebuild is still running; final verdict/gate output will follow. Evidence branch HEAD47438100. No new confirmed findings.

Independent fresh target-code Rust checks completed:578 passed,0 failed,62 ignored; SB-01, retention/restart and13 real-shim tests pass. Fmt/VT fmt/clippy/dependency checks pass. TypeScript compiler/UI121 tests/production/transfer pass; weighted unchanged-budget protocol retry36 pass,0 fail,34462 assertions in6.17s after two unweighted differential timeouts. Static release rebuild is still running; final verdict/gate output will follow. Evidence branch HEAD47438100. No new confirmed findings.
Author
Owner

Independent delta review finished: target 8b0f74f4, evidence branch review-session-bounds HEAD fa9364fbb5. Scope 7ef4a88e..8b0f74f4 only; prior review preserved locally.
Verdict: merge. MERGE (no P0/P1). New findings P0=0/P1=0/P2=0/P3=0. Earlier P1 SB-01 RESOLVED: unchanged Rust regression passes; real exit-credit and retention/restart/publication-race probes also pass on the independently rebuilt static binary. No implementation fixes or new failing tests warranted.

Fresh target-code scripts/verify fast output, verbatim:
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

578 Rust tests passed, 62 ignored; all 13 real-shim tests pass. Static x86 rebuild 19699392 bytes, no PT_INTERP, SHA256 6b20ba697b31bca039fd3df8043b0fb9d61db3b99e5e93727f047a46dd199b0f; only the historical size limit fails (D205). Fresh release compile took 23m10s under shared load. No Rust failure waived. Separate TS compiler/UI 121 tests/production/transfer pass; weighted protocol retry 36 pass/0 fail/34462 assertions in 6.17s after two unweighted 30s differential timeouts.

Independent local CPUWeight=10000 measurements: 200 recovered/201 admitted, PSS 339974 KiB empty/3710577 KiB filled, load 23.18/25.19/25.40 ->36.61/27.98/26.30; no measurable owner-link resident-page increase. Attach median 0.339466 ->0.555918 ms. Native same-session flood fails on both earlier/final artifacts (450.17/449.17 ms p99); baseline and sibling-flood phases pass. No confirmed delta latency regression. Full browser suite not repeated for this backend delta.

Evidence commits 47438100 and fa9364fb; docs/reviews/session-bounds-151-delta.md and session-bounds-151-delta-memory.json. Own build target/empty fixture scratch removed. Raw logs, ownership probe and independent static artifact retained in ~/.cache/codex-scratch/session-bounds-review/. No push/deploy/issue close.

Independent delta review finished: target 8b0f74f4, evidence branch review-session-bounds HEAD fa9364fbb54b93de46a38aaa16cf557f17b77d0b. Scope 7ef4a88e..8b0f74f4 only; prior review preserved locally. Verdict: merge. MERGE (no P0/P1). New findings P0=0/P1=0/P2=0/P3=0. Earlier P1 SB-01 RESOLVED: unchanged Rust regression passes; real exit-credit and retention/restart/publication-race probes also pass on the independently rebuilt static binary. No implementation fixes or new failing tests warranted. Fresh target-code scripts/verify fast output, verbatim: +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+ 578 Rust tests passed, 62 ignored; all 13 real-shim tests pass. Static x86 rebuild 19699392 bytes, no PT_INTERP, SHA256 6b20ba697b31bca039fd3df8043b0fb9d61db3b99e5e93727f047a46dd199b0f; only the historical size limit fails (D205). Fresh release compile took 23m10s under shared load. No Rust failure waived. Separate TS compiler/UI 121 tests/production/transfer pass; weighted protocol retry 36 pass/0 fail/34462 assertions in 6.17s after two unweighted 30s differential timeouts. Independent local CPUWeight=10000 measurements: 200 recovered/201 admitted, PSS 339974 KiB empty/3710577 KiB filled, load 23.18/25.19/25.40 ->36.61/27.98/26.30; no measurable owner-link resident-page increase. Attach median 0.339466 ->0.555918 ms. Native same-session flood fails on both earlier/final artifacts (450.17/449.17 ms p99); baseline and sibling-flood phases pass. No confirmed delta latency regression. Full browser suite not repeated for this backend delta. Evidence commits 47438100 and fa9364fb; docs/reviews/session-bounds-151-delta.md and session-bounds-151-delta-memory.json. Own build target/empty fixture scratch removed. Raw logs, ownership probe and independent static artifact retained in ~/.cache/codex-scratch/session-bounds-review/. No push/deploy/issue close.
Author
Owner

Started production integration on session-bounds-prod, base b373cc4c66 (release-prod-2 plus #158 head 80d6da0a). Read all #151/#158 comments; no parent linked. Merge origin/session-bounds 8b0f74f4, preserve SB-01/DS-01..04 tests and use ordered terminal.exited status followed by the existing final Close 4404. Gates use local CPUWeight10000 scopes and browser ports5795/5796. No deployment.

Started production integration on session-bounds-prod, base b373cc4c6661571ff41ef56eb8dee59380ea6304 (release-prod-2 plus #158 head 80d6da0a). Read all #151/#158 comments; no parent linked. Merge origin/session-bounds 8b0f74f4, preserve SB-01/DS-01..04 tests and use ordered terminal.exited status followed by the existing final Close 4404. Gates use local CPUWeight10000 scopes and browser ports5795/5796. No deployment.
Author
Owner

Merge finding: daemon::recorded_end forwards saved final_seq with terminal.exited then Close4404, but production websocket terminal_exit::record (terminal_exit.rs:36) and browser terminal.ts reject final_seq != delivered cursor. A retired session with unread final output therefore loses the final answer/status. Additive reconciliation proposed under approved D206 merge brief: optional retired:true on the SAME terminal.exited notice only for verified saved records; strict cursor equality remains for live drained exits, retired notices permit final_seq>=viewer cursor without advancing/repainting it. Close4404 stays the only final ended path. The existing ended pill gains the known status; all original exit/DS/SB assertions remain.
Conflicts: combine exited/showSessions hooks; retain production Control+Shift+K and marker-based switch identities; combine deferred replies with resource context; preserve both plugin hooks/auth modules/fuzz targets and sessions rendezvous helpers; use bounded ownership contract plus signal-after-exit no-op; retain native1s FIFO drain and one Ended writer arm.

Merge finding: daemon::recorded_end forwards saved final_seq with terminal.exited then Close4404, but production websocket terminal_exit::record (terminal_exit.rs:36) and browser terminal.ts reject final_seq != delivered cursor. A retired session with unread final output therefore loses the final answer/status. Additive reconciliation proposed under approved D206 merge brief: optional retired:true on the SAME terminal.exited notice only for verified saved records; strict cursor equality remains for live drained exits, retired notices permit final_seq>=viewer cursor without advancing/repainting it. Close4404 stays the only final ended path. The existing ended pill gains the known status; all original exit/DS/SB assertions remain. Conflicts: combine exited/showSessions hooks; retain production Control+Shift+K and marker-based switch identities; combine deferred replies with resource context; preserve both plugin hooks/auth modules/fuzz targets and sessions rendezvous helpers; use bounded ownership contract plus signal-after-exit no-op; retain native1s FIFO drain and one Ended writer arm.
Author
Owner

Production browser merge run: original dead-session + saved exits0/7 + DS-04 transient/retry/input PASS5; detached-output FAIL409 at unicode-case. Evidence test/detached-output.spec.ts:10 only waits isConnected (Welcome), mock-server.ts unicode-case requires an attached reader; Attach is still in flight at300ms RTT. Follow-up will wait for actual host attachment before holding renderer callbacks, preserving every byte/cursor/reconnect assertion and deadline. Logs browser.log; screenshots captures/dead-session/{ended,retired-exit-0,retired-exit-7}-1440x900-ink.png. Default production transfer3/3 PASS: deferred Brotli44780/44671/44727 B (limit45056); DS-02 review gate PASS each run. No budget change.

Production browser merge run: original dead-session + saved exits0/7 + DS-04 transient/retry/input PASS5; detached-output FAIL409 at unicode-case. Evidence test/detached-output.spec.ts:10 only waits isConnected (Welcome), mock-server.ts unicode-case requires an attached reader; Attach is still in flight at300ms RTT. Follow-up will wait for actual host attachment before holding renderer callbacks, preserving every byte/cursor/reconnect assertion and deadline. Logs browser.log; screenshots captures/dead-session/{ended,retired-exit-0,retired-exit-7}-1440x900-ink.png. Default production transfer3/3 PASS: deferred Brotli44780/44671/44727 B (limit45056); DS-02 review gate PASS each run. No budget change.
Author
Owner

Fast gate found combined CLI main at102/100 lines (main.rs:188): approved session-bounds retention option plus production command arms crossed clippy's existing limit. Extracted parsed-command dispatch after identity/internal-mode setup; same commands/results/defaults, no lint suppression. Full corrected gate replay required. Existing standalone terminal-exit fixture also fails unchanged b373cc4c (1PASS/3FAIL, window undefined from #158 retry cancellation); timer-method stub restores original assertions, added retired parser tests6/6PASS. Evidence fast-merge.log, exit-fixture-baseline.log, retired-before/after.log.

Fast gate found combined CLI main at102/100 lines (main.rs:188): approved session-bounds retention option plus production command arms crossed clippy's existing limit. Extracted parsed-command dispatch after identity/internal-mode setup; same commands/results/defaults, no lint suppression. Full corrected gate replay required. Existing standalone terminal-exit fixture also fails unchanged b373cc4c (1PASS/3FAIL, window undefined from #158 retry cancellation); timer-method stub restores original assertions, added retired parser tests6/6PASS. Evidence fast-merge.log, exit-fixture-baseline.log, retired-before/after.log.
Author
Owner

Contract reconciliation preserves D55 live-exit paint semantics: ordinary Shim::Exited remains an ordered exact-cursor terminal.exited event, reported only after final paint (clean0 may close its window). A verified retired record sends the same terminal.exited with additive retired:true, then the sole final ended Close4404; it carries status without advancing a cursor or claiming repaint. Immediate live4404 was rejected because it would hide queued final output/nonzero scrollback before paint. Missing/unknown sessions use the same4404 without status. No parallel final ended opcode or retry path.

Contract reconciliation preserves D55 live-exit paint semantics: ordinary Shim::Exited remains an ordered exact-cursor terminal.exited event, reported only after final paint (clean0 may close its window). A verified retired record sends the same terminal.exited with additive retired:true, then the sole final ended Close4404; it carries status without advancing a cursor or claiming repaint. Immediate live4404 was rejected because it would hide queued final output/nonzero scrollback before paint. Missing/unknown sessions use the same4404 without status. No parallel final ended opcode or retry path.
Author
Owner

Read-only integration review found two P1 races; failing-first proof now recorded. Native retiring-handshake plus16 in-flight Credit: command receiver closure cancels saved answer (InvalidData/native terminal command queue unavailable). Saved-status native stuck peer also exceeds3s instead of reaching#158's1s drain; focused native run3PASS/2FAIL in3.00s. Candidate: closed command sink yields to terminal completion; retired events use ordered FIFO without live ownership-delivery ack, so existing whole-native drain covers BOTH saved event and4404. Live exits retain ack-before-owner-release.
Client drop between retired Event and4404: production spec FAIL20s, no ended strip; retired pendingExit incorrectly blocks reattach although it never completes through paint. Candidate: preserve saved status but allow socket/shared retries until4404; live pending exits still block input/retry until paint. Existing final4404 remains sole final transition. Logs native-races-before.log, retired-disconnect-before.log; unchanged-after tests in progress.
Initial full test gate also found fixture setup FileNotFoundError target/ac, not behavioral failure. Linked ignored target to this job scratch build directory (as prior#151 run); corrected full replay required, no failure waived.

Read-only integration review found two P1 races; failing-first proof now recorded. Native retiring-handshake plus16 in-flight Credit: command receiver closure cancels saved answer (InvalidData/native terminal command queue unavailable). Saved-status native stuck peer also exceeds3s instead of reaching#158's1s drain; focused native run3PASS/2FAIL in3.00s. Candidate: closed command sink yields to terminal completion; retired events use ordered FIFO without live ownership-delivery ack, so existing whole-native drain covers BOTH saved event and4404. Live exits retain ack-before-owner-release. Client drop between retired Event and4404: production spec FAIL20s, no ended strip; retired pendingExit incorrectly blocks reattach although it never completes through paint. Candidate: preserve saved status but allow socket/shared retries until4404; live pending exits still block input/retry until paint. Existing final4404 remains sole final transition. Logs native-races-before.log, retired-disconnect-before.log; unchanged-after tests in progress. Initial full test gate also found fixture setup FileNotFoundError target/ac<PID>, not behavioral failure. Linked ignored target to this job scratch build directory (as prior#151 run); corrected full replay required, no failure waived.
Author
Owner

Integration regressions: real native gone_review 5 passed in 1.05 s (saved status before 4404, closed-command race, blocked-peer 1 s drain); production browser 7 passed in 1.8 min, including status 0/7 and retry after status-before-Close disconnect. Read-only re-review found no remaining concrete issue. Final three default builds: deferred Brotli 44,773 / 44,705 / 44,734 B, unchanged D188 limit 45,056 B. Full gate rerunning: first run failed daemon_gone_tests.rs:98 before protocol exercise because my TMPDIR exceeded SUN_LEN; removed that environment override, keeping build targets in owned scratch. No assertions changed or failures waived. Logs: $HOME/.cache/codex-scratch/session-bounds-prod/.

Integration regressions: real native gone_review 5 passed in 1.05 s (saved status before 4404, closed-command race, blocked-peer 1 s drain); production browser 7 passed in 1.8 min, including status 0/7 and retry after status-before-Close disconnect. Read-only re-review found no remaining concrete issue. Final three default builds: deferred Brotli 44,773 / 44,705 / 44,734 B, unchanged D188 limit 45,056 B. Full gate rerunning: first run failed daemon_gone_tests.rs:98 before protocol exercise because my TMPDIR exceeded SUN_LEN; removed that environment override, keeping build targets in owned scratch. No assertions changed or failures waived. Logs: $HOME/.cache/codex-scratch/session-bounds-prod/.
Author
Owner

Full gate: imported memory_refusal_preserves_reason_and_counters_to_browser failed at terminal_refusal_tests.rs:79 (unexpected binary frame), and existing remote HTTP enrollment failed remote_http_tests.rs:181 (Denied). Both pass alone. Refusal fixture resumed timers before reading Result; keep its existing frozen clock until the observed response. Enrollment captured admission time before HTTP issuance, but remote_authority.rs:34 requires certificate.not_before <= admission time; use current admission time after issuance. All assertions retained; fixture fixes tracked separately. Real production switch rerun without own gate overlap: 7 passed in 1.0 min, unseen-session attach 22.6 ms / paint 68.3 ms, unchanged targets. First overlapping run missed attach 60 ms target at111.5 ms, 5 passed/1 failed; not waived. Full corrected gate in progress. Static x86_64 19,992,512 B vs exact b373cc4c 19,904,832 B (+87,680 B); known limit16,404,816 B unchanged.

Full gate: imported memory_refusal_preserves_reason_and_counters_to_browser failed at terminal_refusal_tests.rs:79 (unexpected binary frame), and existing remote HTTP enrollment failed remote_http_tests.rs:181 (Denied). Both pass alone. Refusal fixture resumed timers before reading Result; keep its existing frozen clock until the observed response. Enrollment captured admission time before HTTP issuance, but remote_authority.rs:34 requires certificate.not_before <= admission time; use current admission time after issuance. All assertions retained; fixture fixes tracked separately. Real production switch rerun without own gate overlap: 7 passed in 1.0 min, unseen-session attach 22.6 ms / paint 68.3 ms, unchanged targets. First overlapping run missed attach 60 ms target at111.5 ms, 5 passed/1 failed; not waived. Full corrected gate in progress. Static x86_64 19,992,512 B vs exact b373cc4c 19,904,832 B (+87,680 B); known limit16,404,816 B unchanged.
Author
Owner

Detached dev baseline f9151701: unchanged mesh headroom test PASSED (10,000 nodes/30,000 grants,88 pages,max frame64,612 B,pong intact,76.63 s; load33.08/27.25/25.02). Therefore no baseline waiver used. Bootstrap confirmation test is absent on dev; remains required to pass here. New production scale run under CPUWeight10000 on infraternal-dev/8 CPUs, real80x24 PTYs:200 recovered,201 admitted,200 after reap. Empty combined PSS341,851 KiB (1,709.26 KiB/session); filled combined PSS3,710,906 KiB (18,554.53 KiB/session), including200 simultaneous independent owners. Owner install/release adds no measured PSS. Facts101 samples at200: p50 4.589 ms/max44.399 ms. Load25.68/27.04/25.28 ->33.93/28.81/25.88. Binary f445bb107e6efc017ff862acbefabda83e55eb99ded9e51ebdfcbcd36deaa488,19,992,512 B. Fixture retired all own shims/shells (PTY count restored15). Raw memory-200.log in job scratch. Full gate retry follows the isolated diagnostic; no assertions/budgets changed.

Detached dev baseline f9151701: unchanged mesh headroom test PASSED (10,000 nodes/30,000 grants,88 pages,max frame64,612 B,pong intact,76.63 s; load33.08/27.25/25.02). Therefore no baseline waiver used. Bootstrap confirmation test is absent on dev; remains required to pass here. New production scale run under CPUWeight10000 on infraternal-dev/8 CPUs, real80x24 PTYs:200 recovered,201 admitted,200 after reap. Empty combined PSS341,851 KiB (1,709.26 KiB/session); filled combined PSS3,710,906 KiB (18,554.53 KiB/session), including200 simultaneous independent owners. Owner install/release adds no measured PSS. Facts101 samples at200: p50 4.589 ms/max44.399 ms. Load25.68/27.04/25.28 ->33.93/28.81/25.88. Binary f445bb107e6efc017ff862acbefabda83e55eb99ded9e51ebdfcbcd36deaa488,19,992,512 B. Fixture retired all own shims/shells (PTY count restored15). Raw memory-200.log in job scratch. Full gate retry follows the isolated diagnostic; no assertions/budgets changed.
Author
Owner

Post-baseline artifact invalidation rebuilt current local crates without source-content edits. Real-channel DS03 diagnostic passed:200 sequential vanished-session replies, p50 232us/p99 700us/max1912us,0.88s, late Input/Close/Ping fences intact. CPUWeight10000 on infraternal-dev/8CPUs, initial/final load46.25/36.84/29.80. This diagnostic measures sequential refusals; the separate memory fixture held200 simultaneous real PTYs. Raw gone-200.log. Final full gate retry running serially with no own browser or scale workload overlap.

Post-baseline artifact invalidation rebuilt current local crates without source-content edits. Real-channel DS03 diagnostic passed:200 sequential vanished-session replies, p50 232us/p99 700us/max1912us,0.88s, late Input/Close/Ping fences intact. CPUWeight10000 on infraternal-dev/8CPUs, initial/final load46.25/36.84/29.80. This diagnostic measures sequential refusals; the separate memory fixture held200 simultaneous real PTYs. Raw gone-200.log. Final full gate retry running serially with no own browser or scale workload overlap.
Author
Owner

Merge committed and pushed: 026e471c82; parents b373cc4c + 8b0f74f4. Conflicts preserve both test suites, admission/context hooks, bounded ownership, final FIFO drain and single typed-status -> Close4404 path. Integration fixture clocks corrected with assertions unchanged. Full Rust601 passed/0 failed/63 ignored; SB01/DS01..04 pass; source142/protocol36, production mock7 and real-switch7 pass. No baseline waiver. Deferred Brotli44773/44705/44734 B <=45056 unchanged. Fresh final static19992480 B vs exact b373cc4c19904832 B (+87648 B); initial production scale artifact19992512 B, fresh link32 B smaller. All recorded gate runs used owned targets andCPUWeight10000.

+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | FAIL (1)     |
+---------------------------+--------------+

Separate detached-output attachment-barrier fixture correction and short result.md follow. No deployment.

Merge committed and pushed: 026e471c82250eb1758fa4365c40840bda2717c9; parents b373cc4c + 8b0f74f4. Conflicts preserve both test suites, admission/context hooks, bounded ownership, final FIFO drain and single typed-status -> Close4404 path. Integration fixture clocks corrected with assertions unchanged. Full Rust601 passed/0 failed/63 ignored; SB01/DS01..04 pass; source142/protocol36, production mock7 and real-switch7 pass. No baseline waiver. Deferred Brotli44773/44705/44734 B <=45056 unchanged. Fresh final static19992480 B vs exact b373cc4c19904832 B (+87648 B); initial production scale artifact19992512 B, fresh link32 B smaller. All recorded gate runs used owned targets andCPUWeight10000. ```text +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+ ``` Separate detached-output attachment-barrier fixture correction and short result.md follow. No deployment.
Author
Owner

Follow-up committed and pushed: f2d842358a. detached-output.spec.ts waits for the host attachment before holding renderer callbacks; original byte/cursor/Unicode/reconnect assertions and deadlines unchanged. Before:409 because Welcome preceded Attach at300ms RTT. After:production browser suite7 passed, detached case17s. This exact fixture and code tree were present during the passing fast-last.log gate (fmt/VTfmt/clippy/test/cargo-deny PASS; known static-size FAIL only). No production source changes after that gate. Short evidence report and cleanup follow.

Follow-up committed and pushed: f2d842358aa32ff4013308912c47eb6b633b2105. detached-output.spec.ts waits for the host attachment before holding renderer callbacks; original byte/cursor/Unicode/reconnect assertions and deadlines unchanged. Before:409 because Welcome preceded Attach at300ms RTT. After:production browser suite7 passed, detached case17s. This exact fixture and code tree were present during the passing fast-last.log gate (fmt/VTfmt/clippy/test/cargo-deny PASS; known static-size FAIL only). No production source changes after that gate. Short evidence report and cleanup follow.
Author
Owner

Finished and pushed session-bounds-prod HEAD 04cdc52a01. Commits: 026e471c (merge/conflict resolutions and single authenticated saved status -> final Close 4404 path), f2d84235 (detached-output fixture attachment barrier), 04cdc52a (short result.md). Both test suites retained; contract choice and every reproduced integration finding recorded above. No deployment; issues remain open.

Final scripts/verify fast output (fast-last.log), verbatim:

+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | FAIL (1)     |
+---------------------------+--------------+

Rust 601 passed/0 failed/63 ignored, including SB-01 and DS-01..DS-04. No load failure waived; dev mesh-headroom baseline passed, final full target retry also passed that test and bootstrap confirmation. Tracer check/src 142 passed (10,901 assertions); protocol 36 passed (34,462 assertions), TS fast passed separately because static failure stops combined dispatcher. Production browser 7 passed in 1.8 min; real-PTY switch 7 passed in 1.0 min. Native gone_review 5 passed in 1.05 s. Three default builds deferred Brotli 44,773/44,705/44,734 B <= unchanged 45,056 B.

Known static exception only: final 19,992,480 B, exact b373cc4c 19,904,832 B, delta +87,648 B, no PT_INTERP; frozen limit 16,404,816 B. Real 200-session scale: 200 recovered/201 admitted/200 after reap; PSS 341,851 KiB empty (1,709.26/session), 3,710,906 KiB filled (18,554.53/session), 200 simultaneous owners add no measured PSS; facts 101 p50 4.589 ms/max 44.399 ms. infraternal-dev/8 CPUs/CPUWeight=10000, load 25.68/27.04/25.28 -> 33.93/28.81/25.88. Separate 200 sequential gone replies p50 232 µs/p99 700 µs/max 1,912 µs, load 46.25/36.84/29.80.

Author checklist completed; read-only code re-review found no remaining concrete issue and checked production exit 0/7 captures (status/actions visible, no clipping/overlap). Captures: apps/tracer/captures/dead-session/retired-exit-0-1440x900-ink.png and retired-exit-7-1440x900-ink.png. Evidence report: result.md. Raw logs/binaries/captures retained under $HOME/.cache/codex-scratch/session-bounds-prod/; owned targets/baseline checkouts/runtime removed. Code and test content unchanged after final gates; final documentation quotes that evidence.

Finished and pushed session-bounds-prod HEAD 04cdc52a0147e2a281b5545caafca014096dec9e. Commits: 026e471c (merge/conflict resolutions and single authenticated saved status -> final Close 4404 path), f2d84235 (detached-output fixture attachment barrier), 04cdc52a (short result.md). Both test suites retained; contract choice and every reproduced integration finding recorded above. No deployment; issues remain open. Final scripts/verify fast output (fast-last.log), verbatim: ```text +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+ ``` Rust 601 passed/0 failed/63 ignored, including SB-01 and DS-01..DS-04. No load failure waived; dev mesh-headroom baseline passed, final full target retry also passed that test and bootstrap confirmation. Tracer check/src 142 passed (10,901 assertions); protocol 36 passed (34,462 assertions), TS fast passed separately because static failure stops combined dispatcher. Production browser 7 passed in 1.8 min; real-PTY switch 7 passed in 1.0 min. Native gone_review 5 passed in 1.05 s. Three default builds deferred Brotli 44,773/44,705/44,734 B <= unchanged 45,056 B. Known static exception only: final 19,992,480 B, exact b373cc4c 19,904,832 B, delta +87,648 B, no PT_INTERP; frozen limit 16,404,816 B. Real 200-session scale: 200 recovered/201 admitted/200 after reap; PSS 341,851 KiB empty (1,709.26/session), 3,710,906 KiB filled (18,554.53/session), 200 simultaneous owners add no measured PSS; facts 101 p50 4.589 ms/max 44.399 ms. infraternal-dev/8 CPUs/CPUWeight=10000, load 25.68/27.04/25.28 -> 33.93/28.81/25.88. Separate 200 sequential gone replies p50 232 µs/p99 700 µs/max 1,912 µs, load 46.25/36.84/29.80. Author checklist completed; read-only code re-review found no remaining concrete issue and checked production exit 0/7 captures (status/actions visible, no clipping/overlap). Captures: apps/tracer/captures/dead-session/retired-exit-0-1440x900-ink.png and retired-exit-7-1440x900-ink.png. Evidence report: result.md. Raw logs/binaries/captures retained under $HOME/.cache/codex-scratch/session-bounds-prod/; owned targets/baseline checkouts/runtime removed. Code and test content unchanged after final gates; final documentation quotes that evidence.
Author
Owner

Independent delta review started on review-session-bounds-prod at 04cdc52a01; merge base with dev 2eaaaa36a2. Read all 66 comments on #151; no parent linked. Scope b373cc4c..04cdc52a excluding dev imports, plus earlier SB-01/DS regressions. Earlier SB-01 test is already included by 14c13138; no duplicate cherry-pick. No implementation fixes, push or deployment.

Independent delta review started on review-session-bounds-prod at 04cdc52a0147e2a281b5545caafca014096dec9e; merge base with dev 2eaaaa36a2dcdda12582150d29c14d660e6bcb2f. Read all 66 comments on #151; no parent linked. Scope b373cc4c..04cdc52a excluding dev imports, plus earlier SB-01/DS regressions. Earlier SB-01 test is already included by 14c13138; no duplicate cherry-pick. No implementation fixes, push or deployment.
Author
Owner

Earlier DS-05 P2 still fails here: imported unchanged production regression from 9a2a789c. Isolated weighted browser run on ports5873/5874: logs chunk refused, visible w-logs window, retry button absent after5000ms (test/log-load-review.spec.ts:25); 1FAIL/2PASS, both original transient-session retry/input tests pass. First combined invocation failed at preview setup, so it is not used as finding evidence. No implementation repair; D206 allows P2 fixes forward. SB-01 artifact replay and real retention/restart probe PASS.

Earlier DS-05 P2 still fails here: imported unchanged production regression from 9a2a789c. Isolated weighted browser run on ports5873/5874: logs chunk refused, visible w-logs window, retry button absent after5000ms (test/log-load-review.spec.ts:25); 1FAIL/2PASS, both original transient-session retry/input tests pass. First combined invocation failed at preview setup, so it is not used as finding evidence. No implementation repair; D206 allows P2 fixes forward. SB-01 artifact replay and real retention/restart probe PASS.
Author
Owner

Completed independent evidence step b0a7d733; prior DS05 test commit72ddb2bd. Weighted tracer148PASS/0FAIL, compilerPASS; three deferred Brotli builds44751/44715/44756B <=45056. Seven relevant browser scenarios pass; DS05 isolated failure persists. Real200 recovered/201 admitted/200 afterreap, PSS341848KiB empty/3715363KiB filled, facts101 median7.077ms/max32.653ms; localCPUWeight10000/load37.85->58.19, own build concurrent. Paired same-session latency fails target/baseline423.90/435.26ms; no causal regression claimed. Fresh Rust gate remains compiling native dependencies; completion/verdict follows. Durable docs/reviews/session-bounds-prod-151.md.

Completed independent evidence step b0a7d733; prior DS05 test commit72ddb2bd. Weighted tracer148PASS/0FAIL, compilerPASS; three deferred Brotli builds44751/44715/44756B <=45056. Seven relevant browser scenarios pass; DS05 isolated failure persists. Real200 recovered/201 admitted/200 afterreap, PSS341848KiB empty/3715363KiB filled, facts101 median7.077ms/max32.653ms; localCPUWeight10000/load37.85->58.19, own build concurrent. Paired same-session latency fails target/baseline423.90/435.26ms; no causal regression claimed. Fresh Rust gate remains compiling native dependencies; completion/verdict follows. Durable docs/reviews/session-bounds-prod-151.md.
Author
Owner

Fresh source checks on review-session-bounds-prod HEADb0a7d733 (production source04cdc52a unchanged): Rust601PASS/0FAIL/63ignored; fmt/VTfmt/clippyPASS. SB01 unchanged Rust regression and direct fresh-binary replayPASS; fresh retention/restart probePASS; five native gone_review testsPASS2.18s. Fresh200 sequential replies: p50 162us/p99 468us/max2206us, localCPUWeight10000/load14.39/24.05/25.82. StandardTSfastPASS including36 protocol tests/34462 assertions3.15s. Full Rust gate still running dependency/static stages; no failure waived and no final gate/verdict claimed yet.

Fresh source checks on review-session-bounds-prod HEADb0a7d733 (production source04cdc52a unchanged): Rust601PASS/0FAIL/63ignored; fmt/VTfmt/clippyPASS. SB01 unchanged Rust regression and direct fresh-binary replayPASS; fresh retention/restart probePASS; five native gone_review testsPASS2.18s. Fresh200 sequential replies: p50 162us/p99 468us/max2206us, localCPUWeight10000/load14.39/24.05/25.82. StandardTSfastPASS including36 protocol tests/34462 assertions3.15s. Full Rust gate still running dependency/static stages; no failure waived and no final gate/verdict claimed yet.
Author
Owner

Independent delta review finished: target 04cdc52a; review-session-bounds-prod HEAD 8bbb4de392. Scope b373cc4c..04cdc52a excluding dev imports, plus earlier findings.
Verdict: merge. MERGE (no P0/P1). P0=0, P1=0, P2=1, P3=0; no new confirmed delta findings. Earlier SB-01 and DS-01..DS-04 PASS. Earlier DS-05 still fails: refused production logs chunk leaves visible logs window with no retry after 5000 ms, test/log-load-review.spec.ts:25; unchanged failing test committed as 72ddb2bd. Fix forward under D206.

Fresh target-code scripts/verify fast output, verbatim:

+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+

601 Rust tests passed, 0 failed, 63 ignored; no waiver. Fresh five native final-reply tests PASS (2.18 s), fresh static SB-01 and real retirement/restart/handshake-race probes PASS. Standard TS gate PASS, protocol 36/36 and 34,462 assertions; separate source/parser run 148/148. Seven relevant production browser specs PASS; DS-05 isolated failure retained. Three default deferred Brotli builds: 44,751 / 44,715 / 44,756 B <= unchanged 45,056 B.

Fresh stripped static x86: 19,992,512 B, no PT_INTERP, SHA256 8bbda032e50de3733a044cb11425c0a117946a72d35f3a4f3ca39963dd0af272. Retained exact b373cc4c baseline 19,904,832 B: observed +87,680 B. Only the historical 16,404,816 B maximum fails (D205); no dependency added. ARM is not reached by this gate. Static build took 12m21s; complete cold gate about 49 min.

Independent retained-artifact scale replay, infraternal-dev / 8 CPUs / CPUWeight=10000: 200 recovered, 201 admitted, 200 after reap. PSS 341,848 KiB empty / 3,715,363 KiB filled; 200 owner links add no measured resident pages. Facts 101 median 7.077 ms / max 32.653 ms; load 37.85/26.88/25.90 -> 58.19/31.78/27.51, own source build concurrent. Fresh 200 sequential gone replies p50 162 us / p99 468 us / max 2,206 us at load 14.39/24.05/25.82. Paired native same-session latency fails target/baseline 423.90/435.26 ms p99; no causal delta regression claimed, no green latency gate claimed. Latency script did not retain contemporaneous load, so those paired numbers remain diagnostics.

Evidence: docs/reviews/session-bounds-prod-151.md, commits 72ddb2bd / b0a7d733 / 8bbb4de3. Findings appended to the review job findings.md. Own targets/runtime scratch removed; safe logs and stripped binaries retained in ~/.cache/codex-scratch/session-bounds-prod-review/. Worktree clean; no implementation repairs, push, deploy or issue close.

Independent delta review finished: target 04cdc52a; review-session-bounds-prod HEAD 8bbb4de3927eef6f9830c9a14cc8b53fdb6f8755. Scope b373cc4c..04cdc52a excluding dev imports, plus earlier findings. Verdict: merge. MERGE (no P0/P1). P0=0, P1=0, P2=1, P3=0; no new confirmed delta findings. Earlier SB-01 and DS-01..DS-04 PASS. Earlier DS-05 still fails: refused production logs chunk leaves visible logs window with no retry after 5000 ms, test/log-load-review.spec.ts:25; unchanged failing test committed as 72ddb2bd. Fix forward under D206. Fresh target-code scripts/verify fast output, verbatim: +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | FAIL (1) | +---------------------------+--------------+ 601 Rust tests passed, 0 failed, 63 ignored; no waiver. Fresh five native final-reply tests PASS (2.18 s), fresh static SB-01 and real retirement/restart/handshake-race probes PASS. Standard TS gate PASS, protocol 36/36 and 34,462 assertions; separate source/parser run 148/148. Seven relevant production browser specs PASS; DS-05 isolated failure retained. Three default deferred Brotli builds: 44,751 / 44,715 / 44,756 B <= unchanged 45,056 B. Fresh stripped static x86: 19,992,512 B, no PT_INTERP, SHA256 8bbda032e50de3733a044cb11425c0a117946a72d35f3a4f3ca39963dd0af272. Retained exact b373cc4c baseline 19,904,832 B: observed +87,680 B. Only the historical 16,404,816 B maximum fails (D205); no dependency added. ARM is not reached by this gate. Static build took 12m21s; complete cold gate about 49 min. Independent retained-artifact scale replay, infraternal-dev / 8 CPUs / CPUWeight=10000: 200 recovered, 201 admitted, 200 after reap. PSS 341,848 KiB empty / 3,715,363 KiB filled; 200 owner links add no measured resident pages. Facts 101 median 7.077 ms / max 32.653 ms; load 37.85/26.88/25.90 -> 58.19/31.78/27.51, own source build concurrent. Fresh 200 sequential gone replies p50 162 us / p99 468 us / max 2,206 us at load 14.39/24.05/25.82. Paired native same-session latency fails target/baseline 423.90/435.26 ms p99; no causal delta regression claimed, no green latency gate claimed. Latency script did not retain contemporaneous load, so those paired numbers remain diagnostics. Evidence: docs/reviews/session-bounds-prod-151.md, commits 72ddb2bd / b0a7d733 / 8bbb4de3. Findings appended to the review job findings.md. Own targets/runtime scratch removed; safe logs and stripped binaries retained in ~/.cache/codex-scratch/session-bounds-prod-review/. Worktree clean; no implementation repairs, push, deploy or issue close.
Author
Owner

Production session lifecycle browser finding during the #160 integration: in the exit-7 spec, expected one new attach and observed two; in the saved-status reconnect spec, expected two and observed four. Both flow through the merged replay-aware terminal client and the production session-ended UI. I am tracing the extra attaches against the existing #158 implementation before changing code. The same run passed initial ended-state and exit-0 flows; the replay-specific spec passed 2/2. Full gate evidence and host-load timeouts are on #160.

Production session lifecycle browser finding during the #160 integration: in the exit-7 spec, expected one new attach and observed two; in the saved-status reconnect spec, expected two and observed four. Both flow through the merged replay-aware terminal client and the production session-ended UI. I am tracing the extra attaches against the existing #158 implementation before changing code. The same run passed initial ended-state and exit-0 flows; the replay-specific spec passed 2/2. Full gate evidence and host-load timeouts are on #160.
Author
Owner

Test setup finding: the isolated CARGO_TARGET_DIR was correctly placed under scratch, but existing agent tests create fixture parents at ../../target relative to the crate. The first test command therefore had 8 ENOENT fixture setup failures (8 of 40 agent tests); no assertions ran in those cases. Added a temporary worktree target symlink to the scratch target so those existing relative fixture paths remain inside scratch; rerunning the unchanged code tests.

Test setup finding: the isolated CARGO_TARGET_DIR was correctly placed under scratch, but existing agent tests create fixture parents at `../../target` relative to the crate. The first test command therefore had 8 ENOENT fixture setup failures (8 of 40 agent tests); no assertions ran in those cases. Added a temporary worktree `target` symlink to the scratch target so those existing relative fixture paths remain inside scratch; rerunning the unchanged code tests.
Author
Owner

Rust tests (default features) PASS after pointing existing ../../target fixture paths through a temporary symlink into scratch: agent 34 passed/6 ignored + 2 transport; server 187 passed/14 ignored plus its integration targets; shim 73 passed/13 ignored, detach 2/2, mouse 1/1. The TF-001 replay_complete_notice_is_accepted_by_embedded_server passed in the server suite. Initial ENOENT setup attempt is recorded above; no test was waived.

Rust tests (default features) PASS after pointing existing `../../target` fixture paths through a temporary symlink into scratch: agent 34 passed/6 ignored + 2 transport; server 187 passed/14 ignored plus its integration targets; shim 73 passed/13 ignored, detach 2/2, mouse 1/1. The TF-001 `replay_complete_notice_is_accepted_by_embedded_server` passed in the server suite. Initial ENOENT setup attempt is recorded above; no test was waived.
Author
Owner

Production Playwright rerun (TRACER_TEST_PORT=4280, CPUWeight=10000): 26/29 passed, including dead-session 4/4 and terminal-query-replay 2/2. Remaining failures: sessions-canvas empty/loading/error flow hit its 30s test timeout; terminal first passkey connection poll timed out at 5s; access first-paint expected card did not appear before its test timed out. Access metrics: render p50 1984.50ms/p99 2986.80ms vs 1000ms budget; FCP p50 1655.60ms/p99 2760.30ms. Load average was 31.88/26.80/32.51 at start and 45.43/47.33/40.28 at end. No screenshots/error-contexts inspected. Investigating functional failures; none waived.

Production Playwright rerun (TRACER_TEST_PORT=4280, CPUWeight=10000): 26/29 passed, including dead-session 4/4 and terminal-query-replay 2/2. Remaining failures: sessions-canvas empty/loading/error flow hit its 30s test timeout; terminal first passkey connection poll timed out at 5s; access first-paint expected card did not appear before its test timed out. Access metrics: render p50 1984.50ms/p99 2986.80ms vs 1000ms budget; FCP p50 1655.60ms/p99 2760.30ms. Load average was 31.88/26.80/32.51 at start and 45.43/47.33/40.28 at end. No screenshots/error-contexts inspected. Investigating functional failures; none waived.
Author
Owner

Finding: the sessions-canvas empty/loading/error test passed all stages when run with a 60s diagnostic ceiling, but needed 36.4s because it opens three canvases and holds the loading scene for 8s; the default 30s whole-test watchdog preempted it during the same shared load. Raised only this test's outer timeout to 60s; all existing per-stage limits/assertions remain unchanged. Rechecking the focused case.

Finding: the sessions-canvas empty/loading/error test passed all stages when run with a 60s diagnostic ceiling, but needed 36.4s because it opens three canvases and holds the loading scene for 8s; the default 30s whole-test watchdog preempted it during the same shared load. Raised only this test's outer timeout to 60s; all existing per-stage limits/assertions remain unchanged. Rechecking the focused case.
Author
Owner

Baseline check: the same test/terminal.spec.ts first-run/passkey flow fails on detached origin/release-prod-3b at the same line 84, default 5s isConnected() poll (1/1 failed; 1.1m total). On this branch the catch-only diagnostic saw connected=true, attach_count=2, active_socket_count=1, socket_open_count=2, pageErrors=0 immediately after that poll failed. This gate remains recorded as failing; no waiver.

Baseline check: the same `test/terminal.spec.ts` first-run/passkey flow fails on detached `origin/release-prod-3b` at the same line 84, default 5s `isConnected()` poll (1/1 failed; 1.1m total). On this branch the catch-only diagnostic saw `connected=true`, `attach_count=2`, `active_socket_count=1`, `socket_open_count=2`, `pageErrors=0` immediately after that poll failed. This gate remains recorded as failing; no waiver.
Author
Owner

Baseline comparison on detached origin/release-prod-3b, TRACER_TEST_PORT=4292, CPUWeight=10000, configured RTT 300ms: access first-paint test exits 1. Setup render p50/p99 1597.00/2025.60ms and sign-in 2029.60/2638.30ms, each vs the unchanged 1000ms budget. FCP reports setup 1423.30/1880.90ms, sign-in 1866.50/2415.70ms. This remains a failing performance gate on both base and integrated branch; not waived.

Baseline comparison on detached `origin/release-prod-3b`, `TRACER_TEST_PORT=4292`, CPUWeight=10000, configured RTT 300ms: access first-paint test exits 1. Setup render p50/p99 1597.00/2025.60ms and sign-in 2029.60/2638.30ms, each vs the unchanged 1000ms budget. FCP reports setup 1423.30/1880.90ms, sign-in 1866.50/2415.70ms. This remains a failing performance gate on both base and integrated branch; not waived.
Author
Owner

Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Session cap/dead session fixes merged and deployed in prod-batch 707a4572 (6320f5b52 and b67d03455 in dev; release-prod-live contains it), listed in the deploy merge message. 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: Session cap/dead session fixes merged and deployed in prod-batch 707a4572 (6320f5b52 and b67d03455 in dev; release-prod-live contains it), listed in the deploy merge message. Reopen if anything is still missing.
kayg closed this issue 2026-10-28 17:52:51 +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#151
No description provided.