Session lifecycle: exited sessions kept 7 days, activity markers, automatic names (D178) #100

Open
opened 2026-10-08 11:54:22 +00:00 by kayg · 157 comments
Owner

Keep exited sessions (final screen plus exit code) until dismissed or 7 days; expose per-session activity (new output since last seen, command finished with status) to the sidebar; automatic session names from the foreground command or working directory, renameable, used as the window name; optional per-host idle limit, off by default. Codex job for the server/shim side; the UI follows after mockup approval.

Keep exited sessions (final screen plus exit code) until dismissed or 7 days; expose per-session activity (new output since last seen, command finished with status) to the sidebar; automatic session names from the foreground command or working directory, renameable, used as the window name; optional per-host idle limit, off by default. Codex job for the server/shim side; the UI follows after mockup approval.
Author
Owner

Backend decided in D183 (main 4f4acff). Codex job launched on branch session-life from dev f27b3fe.

Backend decided in D183 (main 4f4acff). Codex job launched on branch session-life from dev f27b3fe.
Author
Owner

Started session lifecycle on branch session-life, based on dev at f27b3fe7a4dcfb3e268bdee90405bf1f1d8a0ce9. Read #100 and parent #98 comments; D183 is the backend contract.

Started session lifecycle on branch `session-life`, based on `dev` at `f27b3fe7a4dcfb3e268bdee90405bf1f1d8a0ce9`. Read #100 and parent #98 comments; D183 is the backend contract.
Author
Owner

Additive wire proposal before implementation: lifecycle notices use existing Event frame 0x33 with sub_id 0, so the frozen frame layouts and codec hot paths stay unchanged. Add JSON event schemas for terminal.output_changed (session_id, out_seq), terminal.command_finished (session_id, status, finished_at), terminal.session_renamed (session_id, name), and terminal.exited (session_id, status, final_seq, exited_at, cwd, command, base64 final-screen snapshot, base64 last-256-KiB output). The exited event is bounded below the 4-MiB frame maximum; the server persists per-account metadata and the bounded payload in SQLite. Add lifecycle Event golden vectors to the shared Rust/TypeScript corpus. Existing terminal recovery notices remain unchanged.

Additive wire proposal before implementation: lifecycle notices use existing `Event` frame 0x33 with sub_id 0, so the frozen frame layouts and codec hot paths stay unchanged. Add JSON event schemas for `terminal.output_changed` (session_id, out_seq), `terminal.command_finished` (session_id, status, finished_at), `terminal.session_renamed` (session_id, name), and `terminal.exited` (session_id, status, final_seq, exited_at, cwd, command, base64 final-screen snapshot, base64 last-256-KiB output). The exited event is bounded below the 4-MiB frame maximum; the server persists per-account metadata and the bounded payload in SQLite. Add lifecycle Event golden vectors to the shared Rust/TypeScript corpus. Existing terminal recovery notices remain unchanged.
Author
Owner

Completed wire contract and shared-vector step at 8b4089ecdeaf49fc3ea304713d9a49b68883e951. contracts/wire.md now defines bounded D183 lifecycle Event schemas; contracts/vectors/wire/lifecycle-event.bin is consumed by both Rust and TypeScript codec tests. No wire frame layout or hot-path codec changed.

scripts/verify fast ran on infraternal-dev under systemd-run --user --scope -p CPUWeight=10000. Output excerpts verbatim:

METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=303.10 p99_ms=325.52 result=PASS

PT_INTERP: absent; size: 15965376 bytes (baseline 16142672 + allowance 262144 = max 16404816)
PT_INTERP: absent; size: 13426040 bytes (baseline 13555672 + allowance 262144 = max 13817816)

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

 7 pass
 0 fail
 40810 expect() calls
Ran 7 tests across 2 files. [8.25s]
Completed wire contract and shared-vector step at `8b4089ecdeaf49fc3ea304713d9a49b68883e951`. `contracts/wire.md` now defines bounded D183 lifecycle Event schemas; `contracts/vectors/wire/lifecycle-event.bin` is consumed by both Rust and TypeScript codec tests. No wire frame layout or hot-path codec changed. `scripts/verify fast` ran on infraternal-dev under `systemd-run --user --scope -p CPUWeight=10000`. Output excerpts verbatim: ```text METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=303.10 p99_ms=325.52 result=PASS PT_INTERP: absent; size: 15965376 bytes (baseline 16142672 + allowance 262144 = max 16404816) PT_INTERP: absent; size: 13426040 bytes (baseline 13555672 + allowance 262144 = max 13817816) +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail 40810 expect() calls Ran 7 tests across 2 files. [8.25s] ```
Author
Owner

Finding: terminal_sessions already binds each session to user_id and has closed_at/exit_status columns (crates/infraternal-server/migrations/0002_runtime.sql), but rg found no writer for those exit fields; current code only rejects a closed session in crates/infraternal-server/src/websocket.rs. The existing SQLite file is under the server data directory; #34 records the current rootful path as /var/lib/infraternal/infraternal.sqlite. Lifecycle data can therefore remain account-scoped in the owner-selected SQLite store without another engine or path.

Finding: `terminal_sessions` already binds each session to `user_id` and has `closed_at`/`exit_status` columns (`crates/infraternal-server/migrations/0002_runtime.sql`), but `rg` found no writer for those exit fields; current code only rejects a closed session in `crates/infraternal-server/src/websocket.rs`. The existing SQLite file is under the server data directory; #34 records the current rootful path as `/var/lib/infraternal/infraternal.sqlite`. Lifecycle data can therefore remain account-scoped in the owner-selected SQLite store without another engine or path.
Author
Owner

Gate finding after schema commit 27a1888: scripts/verify fast failed only at the existing unaffordable_repaints_park_until_sufficient_credit test in crates/infraternal/tests/vt_credit.rs:22 (credit probe failed: t1-gate-faithful-1). Formatting, Clippy, the Rust gate through unit tests, cargo-deny, and both static builds passed; x86_64 size was 15,965,472 B and aarch64 size was 13,426,136 B, both with no PT_INTERP. This test exercises VT credit timing and no VT code changed in this commit. Rerunning the full gate to check reproducibility.

Gate finding after schema commit `27a1888`: `scripts/verify fast` failed only at the existing `unaffordable_repaints_park_until_sufficient_credit` test in `crates/infraternal/tests/vt_credit.rs:22` (`credit probe failed: t1-gate-faithful-1`). Formatting, Clippy, the Rust gate through unit tests, cargo-deny, and both static builds passed; x86_64 size was 15,965,472 B and aarch64 size was 13,426,136 B, both with no PT_INTERP. This test exercises VT credit timing and no VT code changed in this commit. Rerunning the full gate to check reproducibility.
Author
Owner

Completed SQLite schema step at 27a1888411298dc896d58f64cb0967c427a3fa95: account-scoped lifecycle fields and a checked terminal_exits table now enforce the 1 MiB final-screen and 256 KiB output-tail caps. The post-commit scripts/verify fast rerun passed; it also exercised startup migration tests. A prior full run hit one transient existing VT credit-test failure, recorded above; the rerun passed that test.

Rerun environment: infraternal-dev, systemd-run --user --scope -p CPUWeight=10000, sampled load 32.82 25.70 26.43.

Gate output excerpts verbatim:

METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=318.54 p99_ms=319.28 result=PASS

PT_INTERP: absent; size: 15965472 bytes (baseline 16142672 + allowance 262144 = max 16404816)
PT_INTERP: absent; size: 13426136 bytes (baseline 13555672 + allowance 262144 = max 13817816)

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

 7 pass
 0 fail
 40810 expect() calls
Ran 7 tests across 2 files. [4.42s]
Completed SQLite schema step at `27a1888411298dc896d58f64cb0967c427a3fa95`: account-scoped lifecycle fields and a checked `terminal_exits` table now enforce the 1 MiB final-screen and 256 KiB output-tail caps. The post-commit `scripts/verify fast` rerun passed; it also exercised startup migration tests. A prior full run hit one transient existing VT credit-test failure, recorded above; the rerun passed that test. Rerun environment: infraternal-dev, `systemd-run --user --scope -p CPUWeight=10000`, sampled load `32.82 25.70 26.43`. Gate output excerpts verbatim: ```text METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=318.54 p99_ms=319.28 result=PASS PT_INTERP: absent; size: 15965472 bytes (baseline 16142672 + allowance 262144 = max 16404816) PT_INTERP: absent; size: 13426136 bytes (baseline 13555672 + allowance 262144 = max 13817816) +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail 40810 expect() calls Ran 7 tests across 2 files. [4.42s] ```
Author
Owner

Finding: terminal.exited is currently emitted only on an attached stream (crates/infraternal-agent/src/daemon.rs); there is no server persistence path. The schema bounds each exit to 1 MiB screen + 256 KiB output. I’m bounding retained exits to 128 per account, or 160 MiB at maximum payload size, and adding a dismissal tombstone so duplicate notices cannot restore dismissed data.

Finding: `terminal.exited` is currently emitted only on an attached stream (`crates/infraternal-agent/src/daemon.rs`); there is no server persistence path. The schema bounds each exit to 1 MiB screen + 256 KiB output. I’m bounding retained exits to 128 per account, or 160 MiB at maximum payload size, and adding a dismissal tombstone so duplicate notices cannot restore dismissed data.
Author
Owner

Finding: focused server test compile found four session_id function/local-name collisions and missing sqlx::Row in the new SQLite tests. Evidence: cargo test -p infraternal-server lifecycle::tests --lib reported E0618 and E0599 in src/lifecycle.rs; renamed the parser and imported the row trait. The same target is being rerun through Nix because this shell has no make for vendored OpenSSL.

Finding: focused server test compile found four `session_id` function/local-name collisions and missing `sqlx::Row` in the new SQLite tests. Evidence: `cargo test -p infraternal-server lifecycle::tests --lib` reported E0618 and E0599 in `src/lifecycle.rs`; renamed the parser and imported the row trait. The same target is being rerun through Nix because this shell has no `make` for vendored OpenSSL.
Author
Owner

Contract proposal for the session actions required by #100: add control calls terminal.session.rename (session_id, name), terminal.exit.dismiss (session_id), and terminal.exit.run_again (session_id). Rename pins the session name; dismiss erases payload bytes and retains a bounded tombstone; run-again uses the stored command and working directory. The first two map directly to the new account-owned storage module. Run-again will be wired through a data-only terminal launch request, never a shell command argument.

Contract proposal for the session actions required by #100: add control calls `terminal.session.rename` (`session_id`, `name`), `terminal.exit.dismiss` (`session_id`), and `terminal.exit.run_again` (`session_id`). Rename pins the session name; dismiss erases payload bytes and retains a bounded tombstone; run-again uses the stored command and working directory. The first two map directly to the new account-owned storage module. Run-again will be wired through a data-only terminal launch request, never a shell command argument.
Author
Owner

Finding: the first fast-gate run reached Clippy and rejected the new lifecycle module for an unused test helper, handler length, chunks_exact style, 24-hour Duration construction, and one manual equality assertion. Evidence: scripts/verify fast Clippy diagnostics in src/lifecycle.rs and src/runtime.rs; fixes are applied, and a clean full rerun is pending.

Finding: the first fast-gate run reached Clippy and rejected the new lifecycle module for an unused test helper, handler length, `chunks_exact` style, 24-hour `Duration` construction, and one manual equality assertion. Evidence: `scripts/verify fast` Clippy diagnostics in `src/lifecycle.rs` and `src/runtime.rs`; fixes are applied, and a clean full rerun is pending.
Author
Owner

Finding: first fast-gate attempt failed in the pre-existing vt_credit::unaffordable_repaints_park_until_sufficient_credit probe (credit probe failed: t1-gate-approximate-1) and Clippy stopped before completing. The new OSC parser also failed to compile because this toolchain has no Default implementation for [u8; 128]; I’m replacing the derive with explicit initialization. Host: infraternal-dev; load at gate start: 12.60 / 19.18 / 21.16.

Finding: first fast-gate attempt failed in the pre-existing `vt_credit::unaffordable_repaints_park_until_sufficient_credit` probe (`credit probe failed: t1-gate-approximate-1`) and Clippy stopped before completing. The new OSC parser also failed to compile because this toolchain has no `Default` implementation for `[u8; 128]`; I’m replacing the derive with explicit initialization. Host: infraternal-dev; load at gate start: 12.60 / 19.18 / 21.16.
Author
Owner

Finding: Linux metadata inspection used to walk all of /proc for each active output scan, so the work scaled with unrelated host PID count times active sessions. It now reads the shell's foreground process-group leader directly; startup and exit-time scans are removed, so idle observers sleep on the shim socket. Evidence: crates/infraternal-agent/src/lifecycle.rs and crates/infraternal-agent/src/daemon.rs. Host measurements are pending.

Finding: Linux metadata inspection used to walk all of /proc for each active output scan, so the work scaled with unrelated host PID count times active sessions. It now reads the shell's foreground process-group leader directly; startup and exit-time scans are removed, so idle observers sleep on the shim socket. Evidence: crates/infraternal-agent/src/lifecycle.rs and crates/infraternal-agent/src/daemon.rs. Host measurements are pending.
Author
Owner

Finding: the lifecycle observer cannot always fetch the last 256 KiB from the existing shim ring at exit. Although ReadFrom replays retained bytes, crates/infraternal-shim/src/session.rs routes it to a VT snapshot whenever the terminal requires approximation. Proposal: add capability bit 3 and agent→shim frame ReadRawFrom(seq) to replay retained bytes without VT repaint on the exit path. New agents use it when negotiated and keep a bounded in-memory fallback for older shims. This avoids 256 KiB × 128 active observer buffers (32 MiB) while preserving compatibility. Evidence: contracts/shim.md §4, crates/infraternal-shim/src/session.rs.

Finding: the lifecycle observer cannot always fetch the last 256 KiB from the existing shim ring at exit. Although `ReadFrom` replays retained bytes, crates/infraternal-shim/src/session.rs routes it to a VT snapshot whenever the terminal requires approximation. Proposal: add capability bit 3 and agent→shim frame `ReadRawFrom(seq)` to replay retained bytes without VT repaint on the exit path. New agents use it when negotiated and keep a bounded in-memory fallback for older shims. This avoids 256 KiB × 128 active observer buffers (32 MiB) while preserving compatibility. Evidence: contracts/shim.md §4, crates/infraternal-shim/src/session.rs.
Author
Owner

Finding: the real Bash test showed a login shell (argv0=-bash) ignores --rcfile; it printed no rcfile hook and no test variable from .bashrc. The integration launches Bash as an interactive non-login shell so its required --rcfile wrapper loads .bashrc before adding hooks. zsh keeps login mode through ZDOTDIR wrappers; fish uses vendor_conf.d. Evidence: crates/infraternal-shim/src/shell.rs test installed_shells_load_the_additive_hooks (Bash and zsh present; fish absent).

Finding: the real Bash test showed a login shell (`argv0=-bash`) ignores `--rcfile`; it printed no rcfile hook and no test variable from `.bashrc`. The integration launches Bash as an interactive non-login shell so its required `--rcfile` wrapper loads `.bashrc` before adding hooks. zsh keeps login mode through ZDOTDIR wrappers; fish uses vendor_conf.d. Evidence: crates/infraternal-shim/src/shell.rs test `installed_shells_load_the_additive_hooks` (Bash and zsh present; fish absent).
Author
Owner

Finding: the prior 24-hour cleanup interval could retain exits for nearly eight days. Cleanup now schedules the exact next seven-day deadline (including dismissed tombstones), and stays asleep when there are no retained exits. Added a real-SQLite deadline test for millisecond rounding and dismissal.

Finding: the prior 24-hour cleanup interval could retain exits for nearly eight days. Cleanup now schedules the exact next seven-day deadline (including dismissed tombstones), and stays asleep when there are no retained exits. Added a real-SQLite deadline test for millisecond rounding and dismissal.
Author
Owner

Finding: terminal.session.rename only changed SQLite, so other authenticated sockets received no updated window name. The action now publishes an owned terminal.session_renamed notice after pinning the name; the existing lifecycle fanout delivers it and the persistence subscriber refreshes the stored cwd. The caller still receives the normal action result.

Finding: `terminal.session.rename` only changed SQLite, so other authenticated sockets received no updated window name. The action now publishes an owned `terminal.session_renamed` notice after pinning the name; the existing lifecycle fanout delivers it and the persistence subscriber refreshes the stored cwd. The caller still receives the normal action result.
Author
Owner

Finding: automatic rename events were ignored by SQLite after a user pin but still reached websocket clients with the automatic name. Fanout now substitutes the stored pinned name and preserves the event's cwd, and the SQLite test checks pinned-name resolution.

Finding: automatic rename events were ignored by SQLite after a user pin but still reached websocket clients with the automatic name. Fanout now substitutes the stored pinned name and preserves the event's cwd, and the SQLite test checks pinned-name resolution.
Author
Owner

Finding, reproduced before the fix: the dismissal regression test failed at crates/infraternal-server/src/lifecycle.rs:577 because the dismissed row still held exit status 7 (expected cleared status 0); command and working directory were also retained. Dismissal now clears all rerun and exit payload metadata, while retaining only the non-resurrection tombstone.

Finding, reproduced before the fix: the dismissal regression test failed at `crates/infraternal-server/src/lifecycle.rs:577` because the dismissed row still held exit status 7 (expected cleared status 0); command and working directory were also retained. Dismissal now clears all rerun and exit payload metadata, while retaining only the non-resurrection tombstone.
Author
Owner

Finding, reproduced before the fix: replayed_prompt_marker_is_ready_for_one_shot_command_injection failed because an OSC 133 A prompt was present but prompt_returned() remained false. On observer reconnect, historical output is intentionally replayed without marker side effects, so a run-again command could remain queued forever. The parser now retains prompt readiness across replay and the observer checks it after historical bytes.

Finding, reproduced before the fix: `replayed_prompt_marker_is_ready_for_one_shot_command_injection` failed because an OSC 133 A prompt was present but `prompt_returned()` remained false. On observer reconnect, historical output is intentionally replayed without marker side effects, so a run-again command could remain queued forever. The parser now retains prompt readiness across replay and the observer checks it after historical bytes.
Author
Owner

Raw-tail recovery finding: session::lifecycle_checks::expired_raw_tail_is_refused_without_snapshot_substitution failed before the fix at crates/infraternal-shim/src/session.rs:140: wrapped raw history was converted to a terminal snapshot, producing Error(2, "Ghostty state is not representable by the bounded faithful Snapshot painter") instead of Error(1, "raw output range expired"). Recovery now refuses the byte-exact replay and clears its cursor; terminal-state peers still use snapshot recovery. The targeted test passes (1 passed).

Raw-tail recovery finding: `session::lifecycle_checks::expired_raw_tail_is_refused_without_snapshot_substitution` failed before the fix at `crates/infraternal-shim/src/session.rs:140`: wrapped raw history was converted to a terminal snapshot, producing `Error(2, "Ghostty state is not representable by the bounded faithful Snapshot painter")` instead of `Error(1, "raw output range expired")`. Recovery now refuses the byte-exact replay and clears its cursor; terminal-state peers still use snapshot recovery. The targeted test passes (1 passed).
Author
Owner

Cross-platform check: macos_process.rs type-checks for aarch64-apple-darwin in isolation. The full shim check remains blocked by existing Linux-only APIs in crates/infraternal-shim/src/session.rs (signalfd, PeerCredentials) and pty.rs (getgrouplist, setgroups, ioctl request type); extending the whole shim to macOS is outside this lifecycle change. The server open regression also exposed a stale expectation after adding optional cwd/command; it now expects both null fields and the focused test passes (1 passed).

Cross-platform check: `macos_process.rs` type-checks for `aarch64-apple-darwin` in isolation. The full shim check remains blocked by existing Linux-only APIs in `crates/infraternal-shim/src/session.rs` (`signalfd`, `PeerCredentials`) and `pty.rs` (`getgrouplist`, `setgroups`, ioctl request type); extending the whole shim to macOS is outside this lifecycle change. The server open regression also exposed a stale expectation after adding optional `cwd`/`command`; it now expects both null fields and the focused test passes (1 passed).
Author
Owner

Activity persistence finding: the new exit_cursor_marks_unseen_output_when_the_last_notice_was_dropped test failed before the fix at crates/infraternal-server/src/lifecycle.rs:663: terminal.exited.final_seq=99 left last_output_seq at zero. Exit persistence now advances the account cursor and marks it unseen when last_seen_seq trails the final cursor; the regression passes (1 passed).

Activity persistence finding: the new `exit_cursor_marks_unseen_output_when_the_last_notice_was_dropped` test failed before the fix at `crates/infraternal-server/src/lifecycle.rs:663`: `terminal.exited.final_seq=99` left `last_output_seq` at zero. Exit persistence now advances the account cursor and marks it unseen when `last_seen_seq` trails the final cursor; the regression passes (1 passed).
Author
Owner

Output-path finding: daemon::name_refresh_tests::cached_process_metadata_does_not_refresh_before_the_scan_deadline failed before the fix because cached /proc metadata triggered name reconstruction on every PTY frame. At 10 MB/s and 16 KiB frames this is about 610 reconstructions/s. Name refresh now runs only on the 200 ms process scan or an OSC 7 cwd change; the regression passes (1 passed). Throughput impact still needs the required infraternal-dev benchmark.

Output-path finding: `daemon::name_refresh_tests::cached_process_metadata_does_not_refresh_before_the_scan_deadline` failed before the fix because cached `/proc` metadata triggered name reconstruction on every PTY frame. At 10 MB/s and 16 KiB frames this is about 610 reconstructions/s. Name refresh now runs only on the 200 ms process scan or an OSC 7 cwd change; the regression passes (1 passed). Throughput impact still needs the required `infraternal-dev` benchmark.
Author
Owner

OSC 7 finding: the real Bash PTY test failed with a working directory ending in cwd%test; the hook emitted the raw %, which the parser interpreted as an invalid URI escape. Bash and zsh now percent-escape % and OSC control bytes; fish uses URL escaping. The PTY integration regression passes on installed Bash and zsh (fish is not installed on this host).

OSC 7 finding: the real Bash PTY test failed with a working directory ending in `cwd%test`; the hook emitted the raw `%`, which the parser interpreted as an invalid URI escape. Bash and zsh now percent-escape `%` and OSC control bytes; fish uses URL escaping. The PTY integration regression passes on installed Bash and zsh (fish is not installed on this host).
Author
Owner

Performance gates are blocked on the only authorized host: strict ssh infraternal-dev uptime returned ssh: connect to host infraternal-dev port 22: Connection refused. I did not use another host or the perf VM. I cannot report host load, parser throughput, keystroke latency, idle RSS or wakeups until infraternal-dev is reachable.

Performance gates are blocked on the only authorized host: strict `ssh infraternal-dev uptime` returned `ssh: connect to host infraternal-dev port 22: Connection refused`. I did not use another host or the perf VM. I cannot report host load, parser throughput, keystroke latency, idle RSS or wakeups until infraternal-dev is reachable.
Author
Owner

Finding/fix: scripts/agent_fixture.py assumed Event frames only arrived on terminal stream 1. The lifecycle rename event arrived on control stream 0 (kind 0x33), and an exited stream could close after the next open result. The fixture now records control events, allocates fresh odd streams for new sessions, preserves the writer id across reconnects, and proxies observer and terminal connections concurrently. Evidence: cargo test -p infraternal --test agent_daemon -- --nocapture passed 1/1; real binary passed 24/24 abrupt stops over 4,710,396 payload bytes across four stop positions; idle daemon and shim had 0 scheduled slices over 2.2 s, daemon RSS 12,460 KiB.

Finding/fix: `scripts/agent_fixture.py` assumed Event frames only arrived on terminal stream 1. The lifecycle rename event arrived on control stream 0 (kind 0x33), and an exited stream could close after the next open result. The fixture now records control events, allocates fresh odd streams for new sessions, preserves the writer id across reconnects, and proxies observer and terminal connections concurrently. Evidence: `cargo test -p infraternal --test agent_daemon -- --nocapture` passed 1/1; real binary passed 24/24 abrupt stops over 4,710,396 payload bytes across four stop positions; idle daemon and shim had 0 scheduled slices over 2.2 s, daemon RSS 12,460 KiB.
Author
Owner

Finding: the full fast gate hit terminal command queue full at restart 22/24 when the fixture returned one output credit per 64 KiB while replaying a 468,224-byte payload. The fixture now batches credits in 256 KiB units, preserving the bounded agent queue. Recheck: the real-binary test passed 24/24 abrupt restarts and 4,710,396 payload bytes; output-credit backpressure still uses the same protocol path. The full fast gate is being rerun.

Finding: the full fast gate hit `terminal command queue full` at restart 22/24 when the fixture returned one output credit per 64 KiB while replaying a 468,224-byte payload. The fixture now batches credits in 256 KiB units, preserving the bounded agent queue. Recheck: the real-binary test passed 24/24 abrupt restarts and 4,710,396 payload bytes; output-credit backpressure still uses the same protocol path. The full fast gate is being rerun.
Author
Owner

Finding: scripts/verify fast stopped in its initial three-sample latency proxy self-test. Exact output: latency proxy: configured 300 ms RTT did not arrive: p50=359.80 ms p99=441.19 ms. The shared 8-core host reported load average 28.91 at the observation. No source change was made in response; I will retry when host load settles. The required infraternal-dev benchmark SSH connection is still refused, so task-specific performance gates remain pending.

Finding: `scripts/verify fast` stopped in its initial three-sample latency proxy self-test. Exact output: `latency proxy: configured 300 ms RTT did not arrive: p50=359.80 ms p99=441.19 ms`. The shared 8-core host reported load average 28.91 at the observation. No source change was made in response; I will retry when host load settles. The required infraternal-dev benchmark SSH connection is still refused, so task-specific performance gates remain pending.
Author
Owner

Finding: purge_expired removed only rows from terminal_exits; the same exit status/time plus command/cwd remained in terminal_sessions (crates/infraternal-server/src/lifecycle.rs, purge_expired and apply_notice). This retained exit metadata past D183's seven-day/dismissal bound. I am adding a failing SQLite test before fixing expiry and quota eviction.

Finding: `purge_expired` removed only rows from `terminal_exits`; the same exit status/time plus command/cwd remained in `terminal_sessions` (`crates/infraternal-server/src/lifecycle.rs`, `purge_expired` and `apply_notice`). This retained exit metadata past D183's seven-day/dismissal bound. I am adding a failing SQLite test before fixing expiry and quota eviction.
Author
Owner

Retention assertions are red before the fix: purge_uses_seven_day_millisecond_deadline leaves closed_at=1800000000 after the exit row is purged; the 130-exit quota test leaves both evicted sessions with lifecycle metadata (exit_dismissed count 0 instead of 2). Both reproduce the stale copies in terminal_sessions.

Retention assertions are red before the fix: `purge_uses_seven_day_millisecond_deadline` leaves `closed_at=1800000000` after the exit row is purged; the 130-exit quota test leaves both evicted sessions with lifecycle metadata (`exit_dismissed` count 0 instead of 2). Both reproduce the stale copies in `terminal_sessions`.
Author
Owner

Finding: decode_osc_text stopped once it reached the 4096-byte command cap and returned the prefix; the fallback echo path also stopped appending at the cap without invalidating it. terminal.exit.run_again could therefore execute a different, truncated command. I am adding parser regressions for explicit OSC and fallback capture before changing the cap behavior.

Finding: `decode_osc_text` stopped once it reached the 4096-byte command cap and returned the prefix; the fallback echo path also stopped appending at the cap without invalidating it. `terminal.exit.run_again` could therefore execute a different, truncated command. I am adding parser regressions for explicit OSC and fallback capture before changing the cap behavior.
Author
Owner

Finding: full workspace cargo test reproducibly failed attached_backpressure_and_detached_progress when it reattached with Frame::Attach(0) after the generated Bash prompt's OSC 133 markers. The shell markers make the live VT state require the negotiated approximate Snapshot fallback; production infraternal-agent attachments advertise APPROXIMATE_SNAPSHOT. The focused test passed alone but failed in the full shim test binary. I am updating this direct shim fixture to negotiate the capability it exercises.

Finding: full workspace `cargo test` reproducibly failed `attached_backpressure_and_detached_progress` when it reattached with `Frame::Attach(0)` after the generated Bash prompt's OSC 133 markers. The shell markers make the live VT state require the negotiated approximate Snapshot fallback; production infraternal-agent attachments advertise `APPROXIMATE_SNAPSHOT`. The focused test passed alone but failed in the full shim test binary. I am updating this direct shim fixture to negotiate the capability it exercises.
Author
Owner

Finding: after the shim suite passed 7/7, full scripts/verify fast failed vt_credit::unaffordable_repaints_park_until_sufficient_credit. The approximate/1-byte case recorded 191 lifecycle events and zero repaints; verify-vt-credit.py incorrectly asserted the entire event list must be empty before forwarding. I am narrowing it to snapshot and snapshot_unavailable notices, preserving the repaint assertion.

Finding: after the shim suite passed 7/7, full `scripts/verify fast` failed `vt_credit::unaffordable_repaints_park_until_sufficient_credit`. The approximate/1-byte case recorded 191 lifecycle events and zero repaints; `verify-vt-credit.py` incorrectly asserted the entire event list must be empty before forwarding. I am narrowing it to snapshot and snapshot_unavailable notices, preserving the repaint assertion.
Author
Owner

Finding: Marker::CommandFinished currently calls try_lifecycle_event, which uses mpsc::Sender::try_send; if the bounded writer queue is full, the command status is dropped and no later output/exit recovery reproduces that command event. Output-change notices may remain best-effort because later cursors recover unseen activity. I am adding a queue-saturation regression before making command-finished delivery await capacity.

Finding: `Marker::CommandFinished` currently calls `try_lifecycle_event`, which uses `mpsc::Sender::try_send`; if the bounded writer queue is full, the command status is dropped and no later output/exit recovery reproduces that command event. Output-change notices may remain best-effort because later cursors recover unseen activity. I am adding a queue-saturation regression before making command-finished delivery await capacity.
Author
Owner

Finding: the post-commit full gate reached vt_reconnect and failed legacy reset never recovered (target/review-vt2-fixes/reconnect.stderr.log). That probe intentionally masks APPROXIMATE_SNAPSHOT to exercise an older shim client, but the newly injected shell OSC 133 prompt metadata keeps the VT in a state that requires the approximate repaint path after reset. I will disable shell integration only in this legacy protocol fixture; real shell integration is covered by the shim session tests.

Finding: the post-commit full gate reached `vt_reconnect` and failed `legacy reset never recovered` (`target/review-vt2-fixes/reconnect.stderr.log`). That probe intentionally masks `APPROXIMATE_SNAPSHOT` to exercise an older shim client, but the newly injected shell OSC 133 prompt metadata keeps the VT in a state that requires the approximate repaint path after reset. I will disable shell integration only in this legacy protocol fixture; real shell integration is covered by the shim session tests.
Author
Owner

Step complete at 583fa68: bounded the legacy reconnect probe so it waits for reset input acknowledgement and retries recovery credit every 250 ms. The targeted vt_reconnect passed. scripts/verify fast passed at this HEAD: Rust gates, static builds, Ghostty checks, TypeScript build and protocol tests all green; Rust test totals included server 108/0/9 ignored and shim 64/0/12 ignored. RTT self-test p50=304.98 ms, p99=309.40 ms. Host load was 21.73/27.37/24.83 during the targeted run.

Step complete at 583fa68: bounded the legacy reconnect probe so it waits for reset input acknowledgement and retries recovery credit every 250 ms. The targeted `vt_reconnect` passed. `scripts/verify fast` passed at this HEAD: Rust gates, static builds, Ghostty checks, TypeScript build and protocol tests all green; Rust test totals included server 108/0/9 ignored and shim 64/0/12 ignored. RTT self-test p50=304.98 ms, p99=309.40 ms. Host load was 21.73/27.37/24.83 during the targeted run.
Author
Owner

Finding: a fast-gate run after 4582982 failed only vt_credit case t1-gate-approximate-1. Captured evidence: target/review-vt3-fixes/t1-gate-approximate-1.stderr.log reports detached initial producer must finish at the probe's 5 s deadline; the other completed Rust checks passed. Host load was 27.67/34.28/31.34. I’m rerunning this case under the same user CPU weight to separate host timing from a lifecycle regression.

Finding: a fast-gate run after 4582982 failed only `vt_credit` case `t1-gate-approximate-1`. Captured evidence: `target/review-vt3-fixes/t1-gate-approximate-1.stderr.log` reports `detached initial producer must finish` at the probe's 5 s deadline; the other completed Rust checks passed. Host load was 27.67/34.28/31.34. I’m rerunning this case under the same user CPU weight to separate host timing from a lifecycle regression.
Author
Owner

Finding: Linux /proc command formatting exceeded the documented 4096-byte bound when argv had many short arguments. The new red regression in crates/infraternal-agent/src/lifecycle.rs produced 7047 bytes from 5000 one-byte arguments because separators continued after the payload limit. I’m bounding separators and stopping at a UTF-8 boundary before continuing.

Finding: Linux `/proc` command formatting exceeded the documented 4096-byte bound when argv had many short arguments. The new red regression in `crates/infraternal-agent/src/lifecycle.rs` produced 7047 bytes from 5000 one-byte arguments because separators continued after the payload limit. I’m bounding separators and stopping at a UTF-8 boundary before continuing.
Author
Owner

Finding update: with the probe setup deadline raised to 20 s, both approximate cases passed (producer completion 149 ms and 453 ms). The faithful grant=1 case reached its 1.5 s progress limit with the 2 MiB producer incomplete (target/review-vt3-fixes/t1-gate-faithful-1.stdout.log: 1519.3 ms); host load at the rerun was 31.27/36.23/35.36. I’m keeping the 1.5 s progress assertion intact and will rerun when this host is less contended.

Finding update: with the probe setup deadline raised to 20 s, both approximate cases passed (producer completion 149 ms and 453 ms). The faithful grant=1 case reached its 1.5 s progress limit with the 2 MiB producer incomplete (`target/review-vt3-fixes/t1-gate-faithful-1.stdout.log`: 1519.3 ms); host load at the rerun was 31.27/36.23/35.36. I’m keeping the 1.5 s progress assertion intact and will rerun when this host is less contended.
Author
Owner

Finding: scripts/verify fast failed once in repeated_tiny_credit_pauses_preserve_shell_progress at the assertion that the one-byte grant leaves the repaint count and output cursor unchanged. A direct fixture run and targeted Rust rerun both passed all four floods (12,583,863; 25,167,199; 37,750,535; 50,333,859 output bytes) and three funded 481-byte snapshots; targeted-run load was 16.04/22.95/28.17. I added cursor/repaint values to the assertion for evidence if it recurs.

Finding: `scripts/verify fast` failed once in `repeated_tiny_credit_pauses_preserve_shell_progress` at the assertion that the one-byte grant leaves the repaint count and output cursor unchanged. A direct fixture run and targeted Rust rerun both passed all four floods (12,583,863; 25,167,199; 37,750,535; 50,333,859 output bytes) and three funded 481-byte snapshots; targeted-run load was 16.04/22.95/28.17. I added cursor/repaint values to the assertion for evidence if it recurs.
Author
Owner

Finding: the repeated tiny-credit gate failed with snapshots unchanged (1→1) but output cursor advanced by 800,575 bytes (12,831,384→13,631,959) after the probe's immediate-quiet socket check. This is residual already-credited PTY output arriving after the fixture starts its measurement, not a new repaint. The captured failure is in the scripts/verify fast output from commit 14aaefd; I’m changing the probe to require a stable quiet cursor before measuring one-byte credit.

Finding: the repeated tiny-credit gate failed with snapshots unchanged (1→1) but output cursor advanced by 800,575 bytes (12,831,384→13,631,959) after the probe's immediate-quiet socket check. This is residual already-credited PTY output arriving after the fixture starts its measurement, not a new repaint. The captured failure is in the `scripts/verify fast` output from commit 14aaefd; I’m changing the probe to require a stable quiet cursor before measuring one-byte credit.
Author
Owner

Finding update: scripts/verify fast passed vt_credit cases 1 and approximate-1, then failed t1-gate-approximate-16384 at the unchanged 1.5 s producer-progress assertion. Evidence target/review-vt3-fixes/t1-gate-approximate-16384.stdout.log: 2 MiB producer incomplete at 1507.2 ms; 218 lifecycle notices and zero repaints. Host load at capture was 18.59/25.53/28.03 after a 35.96 one-minute load at gate start. I’m rerunning the isolated case under the same CPU weight.

Finding update: `scripts/verify fast` passed `vt_credit` cases 1 and `approximate-1`, then failed `t1-gate-approximate-16384` at the unchanged 1.5 s producer-progress assertion. Evidence `target/review-vt3-fixes/t1-gate-approximate-16384.stdout.log`: 2 MiB producer incomplete at 1507.2 ms; 218 lifecycle notices and zero repaints. Host load at capture was 18.59/25.53/28.03 after a 35.96 one-minute load at gate start. I’m rerunning the isolated case under the same CPU weight.
Author
Owner

Rerun complete: the full vt_credit test passed in isolation at load 22.09/25.89/28.10. All four cases completed the 2 MiB producer in 274.8–765.3 ms with zero repaints before sufficient credit; the 1.5 s assertion is unchanged. The prior 1507.2 ms failure did not reproduce.

Rerun complete: the full `vt_credit` test passed in isolation at load 22.09/25.89/28.10. All four cases completed the 2 MiB producer in 274.8–765.3 ms with zero repaints before sufficient credit; the 1.5 s assertion is unchanged. The prior 1507.2 ms failure did not reproduce.
Author
Owner

Retention scale measurement: 128 synthetic max-size exits produced a 170,278,912-byte SQLite file (41,572 pages × 4,096 bytes), with 167,772,160 bytes of screen/tail payload and 2,097,152 bytes of duplicated command/cwd metadata. The measured file is about 162.25 MiB; the 160 MiB contract cap counts payload only. Database: $HOME/.cache/codex-scratch/session-life/retention-scale.sqlite.

Retention scale measurement: 128 synthetic max-size exits produced a 170,278,912-byte SQLite file (41,572 pages × 4,096 bytes), with 167,772,160 bytes of screen/tail payload and 2,097,152 bytes of duplicated command/cwd metadata. The measured file is about 162.25 MiB; the 160 MiB contract cap counts payload only. Database: `$HOME/.cache/codex-scratch/session-life/retention-scale.sqlite`.
Author
Owner

Gate attempt after 29bbb76: scripts/verify fast failed only in unaffordable_repaints_park_until_sufficient_credit for t1-gate-faithful-16384. Diagnostic: “producer=2097152 bytes completed=False elapsed_ms=1519.1”; no repaint was sent (repaints=0). Host was infraternal-dev, load average 29.31/36.56/34.14. Format, clippy, restart, queue, agent review, shim, cargo-deny and static x86_64/aarch64 builds passed; retrying the PTY gate under lower contention.

Gate attempt after 29bbb76: `scripts/verify fast` failed only in `unaffordable_repaints_park_until_sufficient_credit` for `t1-gate-faithful-16384`. Diagnostic: “producer=2097152 bytes completed=False elapsed_ms=1519.1”; no repaint was sent (`repaints=0`). Host was `infraternal-dev`, load average 29.31/36.56/34.14. Format, clippy, restart, queue, agent review, shim, cargo-deny and static x86_64/aarch64 builds passed; retrying the PTY gate under lower contention.
Author
Owner

Step complete: additive shim and wire contracts for raw retained output, shell wrappers, rerun metadata and lifecycle controls. Commit 29bbb76.

scripts/verify fast Rust result table (verbatim):
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+

Protocol gate output: 20 pass / 0 fail TypeScript codec/compiler tests; 7 pass / 0 fail wire tests. RTT self-test p50 297.14 ms, p99 318.09 ms. Static binaries: x86_64 16,273,536 bytes; aarch64 13,697,248 bytes.

Step complete: additive shim and wire contracts for raw retained output, shell wrappers, rerun metadata and lifecycle controls. Commit `29bbb76`. `scripts/verify fast` Rust result table (verbatim): +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ Protocol gate output: `20 pass / 0 fail` TypeScript codec/compiler tests; `7 pass / 0 fail` wire tests. RTT self-test p50 297.14 ms, p99 318.09 ms. Static binaries: x86_64 16,273,536 bytes; aarch64 13,697,248 bytes.
Author
Owner

Gate attempt after 14a4a03 reached the real-agent queue fixture but its first terminal.open returned the generic refusal response. Immediate isolated rerun passed: saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok (35.51 s). No code change was needed; retrying the full fast gate to establish the commit result.

Gate attempt after `14a4a03` reached the real-agent queue fixture but its first `terminal.open` returned the generic refusal response. Immediate isolated rerun passed: `saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok` (35.51 s). No code change was needed; retrying the full fast gate to establish the commit result.
Author
Owner

Full fast gate retry after 14a4a03 again stopped only in the existing VT-credit progress assertion, this time t1-gate-faithful-1: producer=2097152 bytes completed=False elapsed_ms=1513.8, with repaints=0 and notices=226. Host infraternal-dev load average was 21.67/21.45/26.20. This is the same 1.5 s host-contention symptom recorded earlier; the focused test is being rerun before the next full attempt.

Full fast gate retry after `14a4a03` again stopped only in the existing VT-credit progress assertion, this time `t1-gate-faithful-1`: `producer=2097152 bytes completed=False elapsed_ms=1513.8`, with `repaints=0` and `notices=226`. Host `infraternal-dev` load average was 21.67/21.45/26.20. This is the same 1.5 s host-contention symptom recorded earlier; the focused test is being rerun before the next full attempt.
Author
Owner

Focused cargo test -p infraternal --test vt_credit retry also failed during t1-gate-approximate-1: the 2,097,152-byte producer did not finish within the fixed 1,500 ms progress assertion (elapsed_ms=1509.4, zero repaints). Host load had risen to 33.04/24.38/26.94. This supports contention in the test window; it does not indicate an early repaint or cursor advance.

Focused `cargo test -p infraternal --test vt_credit` retry also failed during `t1-gate-approximate-1`: the 2,097,152-byte producer did not finish within the fixed 1,500 ms progress assertion (`elapsed_ms=1509.4`, zero repaints). Host load had risen to 33.04/24.38/26.94. This supports contention in the test window; it does not indicate an early repaint or cursor advance.
Author
Owner

Parser performance finding: an exploratory release microbenchmark parsed 10,485,760 ordinary bytes in 1.664498 s (6.01 MiB/s). The host load was 33.93/25.00/27.10 and this run was not yet under the requested CPU-weight scope, so I will repeat it before treating the number as a budget result. Source review found prompt suffix matching repeated for every byte; I am replacing it with state updated only at printable suffix boundaries and adding a deterministic regression check.

Parser performance finding: an exploratory release microbenchmark parsed 10,485,760 ordinary bytes in 1.664498 s (6.01 MiB/s). The host load was 33.93/25.00/27.10 and this run was not yet under the requested CPU-weight scope, so I will repeat it before treating the number as a budget result. Source review found prompt suffix matching repeated for every byte; I am replacing it with state updated only at printable suffix boundaries and adding a deterministic regression check.
Author
Owner

Parser performance fix evidence: the new regression test failed first at 393,216 suffix scans for 65,536 ordinary bytes. Cached prompt recognition now checks suffixes only when a printable space arrives; all 9 infraternal-agent lifecycle parser tests pass. A release microbenchmark under systemd-run --user --scope -p CPUWeight=10000 processed five 10 MiB samples at median 121.22 MiB/s (min 109.08, max 170.41); host infraternal-dev load was 31.85/28.77/28.18. Repeating the test and measuring end-to-end baseline/current output throughput remains pending.

Parser performance fix evidence: the new regression test failed first at 393,216 suffix scans for 65,536 ordinary bytes. Cached prompt recognition now checks suffixes only when a printable space arrives; all 9 `infraternal-agent` lifecycle parser tests pass. A release microbenchmark under `systemd-run --user --scope -p CPUWeight=10000` processed five 10 MiB samples at median 121.22 MiB/s (min 109.08, max 170.41); host `infraternal-dev` load was 31.85/28.77/28.18. Repeating the test and measuring end-to-end baseline/current output throughput remains pending.
Author
Owner

Step complete: cached prompt recognition in the lifecycle OSC parser. Commit e25e07a.

scripts/verify fast Rust result table (verbatim):
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+

Gate details: RTT p50 306.03 ms / p99 316.40 ms; x86_64 static binary 16,273,600 bytes; aarch64 13,697,248 bytes; TypeScript 20 pass and wire 7 pass. The full suite passed at host start load 20.20/34.38/33.45. Parser microbenchmark: five 10 MiB samples, median 121.22 MiB/s (109.08–170.41). Fuzz smoke: 175,068 runs in 6 seconds, coverage 271, no crash, 52 MiB peak RSS; sanitizer disabled because nightly toolchain installation stalled before rustc.

Step complete: cached prompt recognition in the lifecycle OSC parser. Commit `e25e07a`. `scripts/verify fast` Rust result table (verbatim): +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ Gate details: RTT p50 306.03 ms / p99 316.40 ms; x86_64 static binary 16,273,600 bytes; aarch64 13,697,248 bytes; TypeScript 20 pass and wire 7 pass. The full suite passed at host start load 20.20/34.38/33.45. Parser microbenchmark: five 10 MiB samples, median 121.22 MiB/s (109.08–170.41). Fuzz smoke: 175,068 runs in 6 seconds, coverage 271, no crash, 52 MiB peak RSS; sanitizer disabled because nightly toolchain installation stalled before `rustc`.
Author
Owner

Gate attempt after 167b870: all agent review and shim tests passed, including repeated_tiny_credit_pauses_preserve_shell_progress (153.74 s). scripts/verify fast then failed only at t1-gate-approximate-16384: the 2,097,152-byte producer did not finish in the fixed 1,500 ms progress window (elapsed_ms=1502.3, repaints=0, notices=261). Host infraternal-dev load was 32.66/27.52/27.05. This matches the previously recorded load-sensitive setup/progress symptom; a focused retry will follow.

Gate attempt after `167b870`: all agent review and shim tests passed, including `repeated_tiny_credit_pauses_preserve_shell_progress` (153.74 s). `scripts/verify fast` then failed only at `t1-gate-approximate-16384`: the 2,097,152-byte producer did not finish in the fixed 1,500 ms progress window (`elapsed_ms=1502.3`, `repaints=0`, `notices=261`). Host `infraternal-dev` load was 32.66/27.52/27.05. This matches the previously recorded load-sensitive setup/progress symptom; a focused retry will follow.
Author
Owner

Focused VT-credit retry after 167b870 failed the same progress-window assertion at t1-gate-approximate-1: 2,097,152-byte producer incomplete at 1,502.7 ms, with zero repaints and 250 notices. Host load was 30.04/28.26/27.37. No parser/agent protocol assertion failed; I will repeat the full gate once contention drops.

Focused VT-credit retry after `167b870` failed the same progress-window assertion at `t1-gate-approximate-1`: 2,097,152-byte producer incomplete at 1,502.7 ms, with zero repaints and 250 notices. Host load was 30.04/28.26/27.37. No parser/agent protocol assertion failed; I will repeat the full gate once contention drops.
Author
Owner

The full gate at 6845d49 failed attached_backpressure_and_detached_progress (minimum 2165, observed head 1274). Host load was 15.06/20.11/24.18; isolated rerun under CPUWeight=10000 passed (1/1, 0.47 s). Retrying the full gate.

The full gate at 6845d49 failed `attached_backpressure_and_detached_progress` (`minimum 2165`, observed head 1274). Host load was 15.06/20.11/24.18; isolated rerun under CPUWeight=10000 passed (1/1, 0.47 s). Retrying the full gate.
Author
Owner

Server lifecycle persistence, routing, quotas and controls are committed at 6845d4937c. On infraternal-dev, scripts/verify fast passes: server 108 passed/9 ignored; shim 64 passed/12 ignored; agent 26 passed/2 ignored; agent daemon abrupt-stop test 24 cycles in 44.04 s; TypeScript protocol 7 passed/0 failed (40,810 expects); browser-side tests 20 passed/0 failed (376 expects). RTT self-test p50 304.91 ms, p99 313.85 ms. Static binaries: x86_64 16,273,600 B; aarch64 13,697,248 B. Running the separately requested latency and throughput gates now.

Server lifecycle persistence, routing, quotas and controls are committed at 6845d4937cce27914ad820804ad65156ffff1177. On infraternal-dev, `scripts/verify fast` passes: server 108 passed/9 ignored; shim 64 passed/12 ignored; agent 26 passed/2 ignored; agent daemon abrupt-stop test 24 cycles in 44.04 s; TypeScript protocol 7 passed/0 failed (40,810 expects); browser-side tests 20 passed/0 failed (376 expects). RTT self-test p50 304.91 ms, p99 313.85 ms. Static binaries: x86_64 16,273,600 B; aarch64 13,697,248 B. Running the separately requested latency and throughput gates now.
Author
Owner

scripts/verify latency is still running on infraternal-dev. The native phase (scripts/verify-latency.py:63) raised AssertionError: unexpected stream 0 while awaiting the baseline output marker. In the Playwright matrix, tests 32, 34, 41, 43, 44, 46, 50, 52, 54 and 58 have failed so far; 91/106 cases had run at the last checkpoint. Host load reached 37.65/26.03/21.53. The bulk browser output probe measured 50 MB in 21.65 s (2.31 MB/s, prediction off) and 21.49 s (2.33 MB/s, prediction on). Collecting final traces and retrying under lower load.

`scripts/verify latency` is still running on infraternal-dev. The native phase (`scripts/verify-latency.py:63`) raised `AssertionError: unexpected stream 0` while awaiting the baseline output marker. In the Playwright matrix, tests 32, 34, 41, 43, 44, 46, 50, 52, 54 and 58 have failed so far; 91/106 cases had run at the last checkpoint. Host load reached 37.65/26.03/21.53. The bulk browser output probe measured 50 MB in 21.65 s (2.31 MB/s, prediction off) and 21.49 s (2.33 MB/s, prediction on). Collecting final traces and retrying under lower load.
Author
Owner

scripts/verify latency finished on infraternal-dev (exit 1): 67 passed, 26 skipped, 13 failed in 19.1 min; load at finish 22.68/26.85/24.25. The native harness fails on a new but contract-valid lifecycle Event (stream=0, sub_id=0): scripts/verify-latency.py:63 raises unexpected stream 0 because it only tracks terminal streams. I will update this harness to ignore account lifecycle events during PTY timing samples.

Other failures were in the existing tracer browser matrix: 2 mock requests ended with socket hangups; visual/timing assertions failed in motion, onboarding, palette, predictive echo/backspace, theme, terminal latency and first-paint cases under heavy host load. End-to-end measurements: reconnect p99 977.50 ms (900 ms budget); prediction CPU p99 5.00 ms/key (2 ms budget); visible glyph p99 13.70 ms (17 ms budget); returning sign-in p99 4273.30 ms (5000 ms budget); measured RTT 311.70 ms. The renderer bulk-output comparison passed its ±5% gate: 50 MB medians 2.31 MB/s (prediction off) vs 2.33 MB/s (on), +0.76%; cell renderer throughput was 9.68–9.76 MB/s at DPR 2/3.

`scripts/verify latency` finished on infraternal-dev (exit 1): 67 passed, 26 skipped, 13 failed in 19.1 min; load at finish 22.68/26.85/24.25. The native harness fails on a new but contract-valid lifecycle Event (`stream=0`, `sub_id=0`): `scripts/verify-latency.py:63` raises `unexpected stream 0` because it only tracks terminal streams. I will update this harness to ignore account lifecycle events during PTY timing samples. Other failures were in the existing tracer browser matrix: 2 mock requests ended with socket hangups; visual/timing assertions failed in motion, onboarding, palette, predictive echo/backspace, theme, terminal latency and first-paint cases under heavy host load. End-to-end measurements: reconnect p99 977.50 ms (900 ms budget); prediction CPU p99 5.00 ms/key (2 ms budget); visible glyph p99 13.70 ms (17 ms budget); returning sign-in p99 4273.30 ms (5000 ms budget); measured RTT 311.70 ms. The renderer bulk-output comparison passed its ±5% gate: 50 MB medians 2.31 MB/s (prediction off) vs 2.33 MB/s (on), +0.76%; cell renderer throughput was 9.68–9.76 MB/s at DPR 2/3.
Author
Owner

Updated the native latency fixture to skip only D183 account lifecycle Event frames (stream=0, sub_id=0) while measuring PTY streams. Commit e583bd19ac. Red/green fake-frame probe reproduced unexpected stream 0, then passed with the account event followed by a terminal Ack. scripts/verify fast passes after the commit: server 108/108 active tests; shim 64/64 active; agent 26/26 active; TypeScript 20/20 and protocol 7/7; x86_64 binary 16,273,600 B, aarch64 13,697,248 B; RTT self-test p50 307.75 ms / p99 317.17 ms. Full gate log is in the final issue comment.

Updated the native latency fixture to skip only D183 account lifecycle Event frames (`stream=0`, `sub_id=0`) while measuring PTY streams. Commit e583bd19acea3b460d880a58902fda31e802b258. Red/green fake-frame probe reproduced `unexpected stream 0`, then passed with the account event followed by a terminal Ack. `scripts/verify fast` passes after the commit: server 108/108 active tests; shim 64/64 active; agent 26/26 active; TypeScript 20/20 and protocol 7/7; x86_64 binary 16,273,600 B, aarch64 13,697,248 B; RTT self-test p50 307.75 ms / p99 317.17 ms. Full gate log is in the final issue comment.
Author
Owner

The f27b3fe baseline static build in scratch initially failed before producing a binary: OpenSSL's build script reported Command 'make' not found because the direct PATH omitted the cross-build tools. The current static binary was saved separately. Retrying with Nix-provided Zig, GNU make and Perl on infraternal-dev.

The f27b3fe baseline static build in scratch initially failed before producing a binary: OpenSSL's build script reported `Command 'make' not found` because the direct PATH omitted the cross-build tools. The current static binary was saved separately. Retrying with Nix-provided Zig, GNU make and Perl on infraternal-dev.
Author
Owner

The baseline retry with Nix tools passed OpenSSL but stopped at SQLite because baseline .cargo/musl-cc.sh hardcodes baseline-src/target/auth-tools/zig/zig, absent from the scratch archive. I will point only that scratch helper path at the Nix store Zig executable; repository files and the saved current binary remain untouched.

The baseline retry with Nix tools passed OpenSSL but stopped at SQLite because baseline `.cargo/musl-cc.sh` hardcodes `baseline-src/target/auth-tools/zig/zig`, absent from the scratch archive. I will point only that scratch helper path at the Nix store Zig executable; repository files and the saved current binary remain untouched.
Author
Owner

The post-fix native PTY probe (--samples 20, current binary) now reaches its measurements. Baseline echo p99 was 322.30 ms and other-session echo p99 328.01 ms (334 ms budget); same-session flood p99 was 2502.37 ms and failed the 334 ms budget, while other-session flood growth was 16.22 ms (16.67 ms budget). Host load changed 22.35/27.21/27.23 → 22.67/26.73/27.06. Running the same probe on f27b3fe before attributing this result.

The post-fix native PTY probe (`--samples 20`, current binary) now reaches its measurements. Baseline echo p99 was 322.30 ms and other-session echo p99 328.01 ms (334 ms budget); same-session flood p99 was 2502.37 ms and failed the 334 ms budget, while other-session flood growth was 16.22 ms (16.67 ms budget). Host load changed 22.35/27.21/27.23 → 22.67/26.73/27.06. Running the same probe on f27b3fe before attributing this result.
Author
Owner

The same native 20-sample PTY probe on f27b3fe also exceeds the absolute same-session flood budget: baseline same-session echo p99 515.35 ms and PTY echo p99 2254.70 ms (334 ms budget); current was 612.09 ms and 2502.37 ms. Current p50s (338.87/645.43 ms) exceeded baseline p50s (343.86/485.87 ms) for confirmed/PTY echo respectively; current other-session flood growth was 16.22 ms versus baseline -33.14 ms. Load stayed in the 22–27 range in both runs. This points to an additional same-session flood cost worth isolating; the baseline also fails the flood budget, so I am not attributing the absolute failure to this change yet.

The same native 20-sample PTY probe on f27b3fe also exceeds the absolute same-session flood budget: baseline same-session echo p99 515.35 ms and PTY echo p99 2254.70 ms (334 ms budget); current was 612.09 ms and 2502.37 ms. Current p50s (338.87/645.43 ms) exceeded baseline p50s (343.86/485.87 ms) for confirmed/PTY echo respectively; current other-session flood growth was 16.22 ms versus baseline -33.14 ms. Load stayed in the 22–27 range in both runs. This points to an additional same-session flood cost worth isolating; the baseline also fails the flood budget, so I am not attributing the absolute failure to this change yet.
Author
Owner

The existing unbatched output benchmark produced no throughput samples on either static binary: bench-agent-output.py exited on Close stream 1, terminal command queue full; reattach and replay unacknowledged input, in both f27b3fe and current runs (load rose from ~30 to ~34). The message exists in both agent revisions. I am retrying the diagnostic with the benchmark's 64 MiB batched-credit mode to reduce credit-command pressure and will also run the idle/memory gate.

The existing unbatched output benchmark produced no throughput samples on either static binary: `bench-agent-output.py` exited on Close stream 1, `terminal command queue full; reattach and replay unacknowledged input`, in both f27b3fe and current runs (load rose from ~30 to ~34). The message exists in both agent revisions. I am retrying the diagnostic with the benchmark's 64 MiB batched-credit mode to reduce credit-command pressure and will also run the idle/memory gate.
Author
Owner

The batched LF output benchmark (50 MiB x3) produced baseline 3.370/1.328/1.366 MiB/s and current 2.351/1.664/0.708 MiB/s; current host load rose from 25.14 to 32.43. These samples are too contended to attribute a throughput change. Code review found the current observer can attempt a terminal.output_changed event for each 64 KiB of output (up to ~800 notices per 50 MiB) despite an existing 100 ms cadence; a full event queue also leaves the byte threshold due on every following frame. I will coalesce attempts to the 100 ms output-driven cadence, add a unit test for burst coalescing, and rerun the comparisons.

The batched LF output benchmark (50 MiB x3) produced baseline 3.370/1.328/1.366 MiB/s and current 2.351/1.664/0.708 MiB/s; current host load rose from 25.14 to 32.43. These samples are too contended to attribute a throughput change. Code review found the current observer can attempt a `terminal.output_changed` event for each 64 KiB of output (up to ~800 notices per 50 MiB) despite an existing 100 ms cadence; a full event queue also leaves the byte threshold due on every following frame. I will coalesce attempts to the 100 ms output-driven cadence, add a unit test for burst coalescing, and rerun the comparisons.
Author
Owner

Implemented 100 ms output-driven event coalescing with a red/green unit test; commit pending after full gate. The native 20-sample PTY probe on the coalesced binary measured same-session flood p50/p99 674.53/1581.62 ms, versus pre-coalescing current 645.43/2502.37 ms and f27b3fe 485.87/2254.70 ms. The coalesced run was under heavier load (35.92→32.00; prior runs 22.35→22.67 and 24.86→23.34), so this is directional only; the absolute 334 ms same-session budget still fails. Baseline and other-session echo metrics remain near the 300 ms configured RTT. Running the post-change throughput probe next.

Implemented 100 ms output-driven event coalescing with a red/green unit test; commit pending after full gate. The native 20-sample PTY probe on the coalesced binary measured same-session flood p50/p99 674.53/1581.62 ms, versus pre-coalescing current 645.43/2502.37 ms and f27b3fe 485.87/2254.70 ms. The coalesced run was under heavier load (35.92→32.00; prior runs 22.35→22.67 and 24.86→23.34), so this is directional only; the absolute 334 ms same-session budget still fails. Baseline and other-session echo metrics remain near the 300 ms configured RTT. Running the post-change throughput probe next.
Author
Owner

Post-coalescing verify-agent.py measured 0 scheduled agent slices over 2.200 s (0/min), agent RSS 5,096 KiB; with an attached idle shim it measured 0 slices for both agent and shim. All 24 abrupt-stop/restart cases passed (4,710,396 payload bytes). The 1,000-sample input-to-PTY Ack p99 was 369.25 ms versus the 334 ms budget, so the gate stopped before its 50 MiB throughput/RSS phases. Host load was 37.57/38.98/36.25. Recording the load-limited failure; coalesced output probe medians and parser throughput are recorded above.

Post-coalescing `verify-agent.py` measured 0 scheduled agent slices over 2.200 s (0/min), agent RSS 5,096 KiB; with an attached idle shim it measured 0 slices for both agent and shim. All 24 abrupt-stop/restart cases passed (4,710,396 payload bytes). The 1,000-sample input-to-PTY Ack p99 was 369.25 ms versus the 334 ms budget, so the gate stopped before its 50 MiB throughput/RSS phases. Host load was 37.57/38.98/36.25. Recording the load-limited failure; coalesced output probe medians and parser throughput are recorded above.
Author
Owner

Coalesced terminal.output_changed attempts to the existing 100 ms cadence on PTY output; failed queue sends are throttled too, with no idle timer. Commit c62ec63f9f11e4693908ed8e04dcf0db7e8b223d. The new high_volume_output_waits_for_the_notice_interval test failed against the old byte threshold and passed after the change (1/1). Static post-change 50 MiB LF runs were 2.023/1.477/1.168 MiB/s, median 1.477; load was 38.45/39.62/35.53 at start and 26.09/34.54/34.11 at finish. This remains a loaded-host comparison. scripts/verify fast is running after this commit.

Coalesced `terminal.output_changed` attempts to the existing 100 ms cadence on PTY output; failed queue sends are throttled too, with no idle timer. Commit c62ec63f9f11e4693908ed8e04dcf0db7e8b223d. The new `high_volume_output_waits_for_the_notice_interval` test failed against the old byte threshold and passed after the change (1/1). Static post-change 50 MiB LF runs were 2.023/1.477/1.168 MiB/s, median 1.477; load was 38.45/39.62/35.53 at start and 26.09/34.54/34.11 at finish. This remains a loaded-host comparison. `scripts/verify fast` is running after this commit.
Author
Owner

Finding after c62ec63078: scripts/verify fast caught Clippy unchecked_time_subtraction in crates/infraternal-agent/src/daemon.rs:1017 in the new 100 ms notice interval test. The test subtracts 1 ms from a Duration; I’ll express the pre-interval instant without subtraction and rerun the gate.

Finding after c62ec630789318c83e8547c6918f680fcf20ea37: `scripts/verify fast` caught Clippy `unchecked_time_subtraction` in `crates/infraternal-agent/src/daemon.rs:1017` in the new 100 ms notice interval test. The test subtracts 1 ms from a `Duration`; I’ll express the pre-interval instant without subtraction and rerun the gate.
Author
Owner

The first fast-gate run after c62ec63078 exited 1. In addition to the recorded Clippy lint, crates/infraternal/tests/vt_credit.rs failed at line 22 with credit probe failed: t1-gate-approximate-1 (22.69 s). The 276.84 s agent review suite passed; cargo-deny and both static builds passed. At the time, other worktrees also had fast gates active on this shared host, so I’ll recheck the PTY probe after the local lint fix.

The first fast-gate run after c62ec630789318c83e8547c6918f680fcf20ea37 exited 1. In addition to the recorded Clippy lint, `crates/infraternal/tests/vt_credit.rs` failed at line 22 with `credit probe failed: t1-gate-approximate-1` (22.69 s). The 276.84 s agent review suite passed; cargo-deny and both static builds passed. At the time, other worktrees also had fast gates active on this shared host, so I’ll recheck the PTY probe after the local lint fix.
Author
Owner

Step complete: committed 4d6f98c9dd. The notice interval test now samples at half the configured interval and Clippy passes (Finished dev profile in 2.07s); the focused regression test passes (1 passed, 28 filtered). The prior full fast run still needs a clean rerun because vt_credit failed while this shared host was heavily loaded.

Step complete: committed 4d6f98c9dd772346272239960ba3e7852e4a2bbf. The notice interval test now samples at half the configured interval and Clippy passes (`Finished dev profile in 2.07s`); the focused regression test passes (1 passed, 28 filtered). The prior full fast run still needs a clean rerun because `vt_credit` failed while this shared host was heavily loaded.
Author
Owner

Finding on repeated fast runs after c62ec63078 / 4d6f98c9dd: vt_credit failed twice at crates/infraternal/tests/vt_credit.rs:22, case t1-gate-approximate-1 (22.69 s, then 29.07 s). Its stderr at target/review-vt3-fixes/t1-gate-approximate-1.stderr.log is AssertionError: detached initial producer must finish; scripts/verify-vt-credit.py waits 20 s for the synthetic 12 MiB PTY producer's ready marker before reaching the credit assertion. This is a setup timeout, not the test's measured 1.5 s progress assertion. Both runs were on a shared host with load averages above 50; I’ll rerun the probe when contention allows.

Finding on repeated fast runs after c62ec630789318c83e8547c6918f680fcf20ea37 / 4d6f98c9dd772346272239960ba3e7852e4a2bbf: `vt_credit` failed twice at `crates/infraternal/tests/vt_credit.rs:22`, case `t1-gate-approximate-1` (22.69 s, then 29.07 s). Its stderr at `target/review-vt3-fixes/t1-gate-approximate-1.stderr.log` is `AssertionError: detached initial producer must finish`; `scripts/verify-vt-credit.py` waits 20 s for the synthetic 12 MiB PTY producer's `ready` marker before reaching the credit assertion. This is a setup timeout, not the test's measured 1.5 s progress assertion. Both runs were on a shared host with load averages above 50; I’ll rerun the probe when contention allows.
Author
Owner

Load comparison: with load averages 73.85/73.75/65.86 at start (73.65/73.72/66.31 after), the standalone verify-vt-credit.py probe against the f27b3fe baseline binary reached its progress phase but did not finish the synthetic 2 MiB producer within 1.5 s (elapsed_ms=1520.0, done=False). The same probe against current-coalesced did not reach its ready marker within 20 s. This demonstrates the probe's setup/progress limits are failing under this contention; it does not yet establish the current build's relative slowdown, so the result remains unresolved pending a lower-load run.

Load comparison: with load averages 73.85/73.75/65.86 at start (73.65/73.72/66.31 after), the standalone `verify-vt-credit.py` probe against the `f27b3fe` baseline binary reached its progress phase but did not finish the synthetic 2 MiB producer within 1.5 s (`elapsed_ms=1520.0`, `done=False`). The same probe against `current-coalesced` did not reach its `ready` marker within 20 s. This demonstrates the probe's setup/progress limits are failing under this contention; it does not yet establish the current build's relative slowdown, so the result remains unresolved pending a lower-load run.
Author
Owner

Performance finding from the scratch-only 60 s setup probe (the repo's 1.5 s assertion was unchanged): under shared-host load around 70–80, f27b3fe baseline reached the producer marker in 3.51 s and its 2 MiB progress phase passed in 650 ms; current-coalesced reached the marker in 7.85 s, emitted 85 activity notices, then missed the 1.5 s progress assertion (2 MiB producer incomplete at 1,518.8 ms). These single runs are not a controlled benchmark, but the current observer path is a plausible source of material output-path overhead and the failing gate. I’m repeating paired probes before choosing a fix.

Performance finding from the scratch-only 60 s setup probe (the repo's 1.5 s assertion was unchanged): under shared-host load around 70–80, `f27b3fe` baseline reached the producer marker in 3.51 s and its 2 MiB progress phase passed in 650 ms; `current-coalesced` reached the marker in 7.85 s, emitted 85 activity notices, then missed the 1.5 s progress assertion (2 MiB producer incomplete at 1,518.8 ms). These single runs are not a controlled benchmark, but the current observer path is a plausible source of material output-path overhead and the failing gate. I’m repeating paired probes before choosing a fix.
Author
Owner

Third alternating scratch-probe pair: with load 82.15/77.37/73.07 before baseline and 76.13/76.47/72.97 before coalesced, baseline reached ready in 10.71 s and failed the 1.5 s phase at 1,507.6 ms; coalesced reached ready in 9.71 s and failed at 1,517.0 ms. Across three pairs, outcomes vary with contention and show no consistent relative slowdown. The full gate remains red because its fixed 1.5 s PTY probe is not passing at current load; I still need a green full gate on this commit.

Third alternating scratch-probe pair: with load 82.15/77.37/73.07 before baseline and 76.13/76.47/72.97 before coalesced, baseline reached `ready` in 10.71 s and failed the 1.5 s phase at 1,507.6 ms; coalesced reached `ready` in 9.71 s and failed at 1,517.0 ms. Across three pairs, outcomes vary with contention and show no consistent relative slowdown. The full gate remains red because its fixed 1.5 s PTY probe is not passing at current load; I still need a green full gate on this commit.
Author
Owner

Finding on the third fast-gate run after 4d6f98c9dd: agent_review::repeated_tiny_credit_pauses_preserve_shell_progress failed because scripts/verify-agent-snapshot.py did not observe completed-0 within its 90 s deadline (5 passed, 1 failed; suite 97.09 s). Formatting, Clippy, cargo-deny and static builds passed. Load after that run completed was 7.62/11.67/30.86; I could not sample load at the exact assertion. The host is now lighter, so I’m rerunning the full gate.

Finding on the third fast-gate run after 4d6f98c9dd772346272239960ba3e7852e4a2bbf: `agent_review::repeated_tiny_credit_pauses_preserve_shell_progress` failed because `scripts/verify-agent-snapshot.py` did not observe `completed-0` within its 90 s deadline (5 passed, 1 failed; suite 97.09 s). Formatting, Clippy, cargo-deny and static builds passed. Load after that run completed was 7.62/11.67/30.86; I could not sample load at the exact assertion. The host is now lighter, so I’m rerunning the full gate.
Author
Owner

Preliminary low-load throughput comparison on the same 50 MiB LF batched workload (three runs per binary, systemd CPUWeight=10000): current-coalesced was 7.174, 6.692, 4.502 MiB/s (median 6.692); f27b3fe baseline was 3.585, 8.019, 9.452 MiB/s (median 8.019). Load averages stayed around 14.9/12.6–13.1/23.3–23.9 across both blocks. The apparent 16.5% lower current median has high spread and sequential-order bias, so it is not yet a reliable regression measure; I’m running an alternating paired sample before deciding whether the output path needs more work.

Preliminary low-load throughput comparison on the same 50 MiB LF batched workload (three runs per binary, systemd CPUWeight=10000): `current-coalesced` was 7.174, 6.692, 4.502 MiB/s (median 6.692); `f27b3fe` baseline was 3.585, 8.019, 9.452 MiB/s (median 8.019). Load averages stayed around 14.9/12.6–13.1/23.3–23.9 across both blocks. The apparent 16.5% lower current median has high spread and sequential-order bias, so it is not yet a reliable regression measure; I’m running an alternating paired sample before deciding whether the output path needs more work.
Author
Owner

Output throughput step: five alternating paired 50 MiB LF batched runs under CPUWeight=10000. Baseline speeds were 10.175, 9.578, 9.722, 9.057, 8.381 MiB/s (median 9.578); current-coalesced was 9.521, 9.501, 9.692, 8.969, 9.426 MiB/s (median 9.501), a 0.8% median difference. Load averages were 10.91/12.34/22.69 at start and 8.20/11.20/21.54 at finish. The paired sample shows no throughput regression beyond run-to-run noise.

Output throughput step: five alternating paired 50 MiB LF batched runs under `CPUWeight=10000`. Baseline speeds were 10.175, 9.578, 9.722, 9.057, 8.381 MiB/s (median 9.578); `current-coalesced` was 9.521, 9.501, 9.692, 8.969, 9.426 MiB/s (median 9.501), a 0.8% median difference. Load averages were 10.91/12.34/22.69 at start and 8.20/11.20/21.54 at finish. The paired sample shows no throughput regression beyond run-to-run noise.
Author
Owner

Low-load latency rerun on infraternal-dev (8 cores, port 4287; load 7.41/10.88/21.27 at start, 10.00/31.42/27.91 at finish) still exited 1. Native baseline confirmed-echo p99 was 328.44 ms (pass), PTY-echo p99 337.46 ms (3.46 ms over 334); other-session flood echo p99 330.51 ms and growth -6.95 ms (pass). The same-session flood phase stalled in agent_fixture.py:exact for 10:49 with the synthetic yes blocked on PTY output; I interrupted it and its cleanup removed the test processes. Auth-browser passed. Playwright reported 75 passed, 26 skipped, 5 failed: motion tooltip width 169 vs 190; first-key cost 3.4 ms vs <2; theme paint p99 20.1 ms vs <16.67; reconnect p99 1,027.2 ms vs <=900; access render p50/p99 1,477.4/1,866.6 ms at setup and 1,791.2/1,962.3 ms at sign-in vs 1,000. The 50 MB browser throughput delta passed (+0.06%, 2.17 MiB/s median on/off). No UI code changed in this lane; these browser failures remain recorded as gate results.

Low-load latency rerun on infraternal-dev (8 cores, port 4287; load 7.41/10.88/21.27 at start, 10.00/31.42/27.91 at finish) still exited 1. Native baseline confirmed-echo p99 was 328.44 ms (pass), PTY-echo p99 337.46 ms (3.46 ms over 334); other-session flood echo p99 330.51 ms and growth -6.95 ms (pass). The same-session flood phase stalled in `agent_fixture.py:exact` for 10:49 with the synthetic `yes` blocked on PTY output; I interrupted it and its cleanup removed the test processes. Auth-browser passed. Playwright reported 75 passed, 26 skipped, 5 failed: motion tooltip width 169 vs 190; first-key cost 3.4 ms vs <2; theme paint p99 20.1 ms vs <16.67; reconnect p99 1,027.2 ms vs <=900; access render p50/p99 1,477.4/1,866.6 ms at setup and 1,791.2/1,962.3 ms at sign-in vs 1,000. The 50 MB browser throughput delta passed (+0.06%, 2.17 MiB/s median on/off). No UI code changed in this lane; these browser failures remain recorded as gate results.
Author
Owner

Finished on branch session-life, HEAD 4d6f98c9dd772346272239960ba3e7852e4a2bbf. git diff --check f27b3fe..HEAD passed and the worktree is clean. The fast gate passed on this exact commit. Earlier latency results and the final performance measurements are recorded in the preceding comments; scripts/verify latency remains red as documented.

Verbatim scripts/verify fast stdout (exit 0):
METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=302.02 p99_ms=304.16 result=PASS

==> fmt

==> VT native fmt

==> clippy
Finished dev profile [unoptimized + debuginfo] target(s) in 0.54s

==> test
Finished test profile [unoptimized + debuginfo] target(s) in 0.44s
Running unittests src/main.rs (target/debug/deps/infraternal-2c06fb1e08b40f8f)

running 2 tests
test install::tests::dry_run_prints_a_process_surviving_user_unit ... ok
test setup_token_tests::setup_token_command_reads_only_the_expected_socket_response ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

 Running tests/agent_daemon.rs (target/debug/deps/agent_daemon-e5ef77258cbf600a)

running 1 test
test real_binary_preserves_input_and_output_across_24_abrupt_stops ... ok

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

 Running tests/agent_queues.rs (target/debug/deps/agent_queues-57c449079990d909)

running 1 test
test saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok

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

 Running tests/agent_review.rs (target/debug/deps/agent_review-f08a739d87080819)

running 6 tests
test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok
test last_typist_selects_its_own_real_pty_dimensions ... ok
test initial_attach_requires_explicit_credit_before_replay ... ok
test retained_unwritten_input_survives_interleaved_ack_restart ... ok
test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok
test repeated_tiny_credit_pauses_preserve_shell_progress ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.37s

 Running tests/agent_sessions.rs (target/debug/deps/agent_sessions-dac341911fe4ca5b)

running 1 test
test detached_shim_is_discovered_and_replays_from_the_last_observed_offset ... ok

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

 Running tests/idle_canary.rs (target/debug/deps/idle_canary-9930563708e7154e)

running 1 test
test one_hertz_wakeup_is_detected_past_the_legacy_half_second_window ... ok

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

 Running tests/shim.rs (target/debug/deps/shim-282e2bf3b629b4b1)

running 7 tests
test double_fork_survives_parent_death ... ok
test disallowed_signal_only_disconnects_peer ... ok
test replacement_connection_and_malformed_limit ... ok
active
test user_scope_survives_parent_unit_stop ... ok
test real_shell_reconnect_resize_and_retained_exit ... ok
test attached_backpressure_and_detached_progress ... ok
test ring_wrap_snapshot_repaints_real_vim ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.31s

 Running tests/vt_credit.rs (target/debug/deps/vt_credit-bb3623465253747d)

running 1 test
test unaffordable_repaints_park_until_sufficient_credit ... ok

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

 Running tests/vt_reconnect.rs (target/debug/deps/vt_reconnect-d5a72f7c3162f374)

running 1 test
test snapshot_limits_never_close_live_reconnect ... ok

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

 Running unittests src/lib.rs (target/debug/deps/infraternal_agent-396a49ee47a2dca8)

running 29 tests
test daemon::name_refresh_tests::cached_process_metadata_does_not_refresh_before_the_scan_deadline ... ok
test daemon::output_event_tests::high_volume_output_waits_for_the_notice_interval ... ok
test lifecycle::tests::fallback_prompt_ignores_color_sequences ... ok
test daemon::command_finished_delivery_tests::command_completion_waits_for_writer_capacity ... ok
test lifecycle::tests::command_marker_keeps_echoed_input_and_decodes_shell_payload ... ok
test lifecycle::tests::fallback_tracks_echoed_command_until_prompt_returns ... ok
test lifecycle::tests::markers_survive_chunk_boundaries_and_percent_encoded_cwd ... ok
test lifecycle::tests::replayed_prompt_marker_is_ready_for_one_shot_command_injection ... ok
test lifecycle::tests::malformed_and_oversized_sequences_remain_bounded ... ok
test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok
test relay::tests::output_partial_credit_and_dedup ... ok
test lifecycle::tests::process_command_capture_stays_within_its_byte_limit ... ok
test lifecycle::tests::overlong_command_captures_are_not_replayed_as_prefixes ... ok
test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement
test relay::tests::overflowing_ranges_never_mutate_cursors ... ok
test relay::tests::attachment_has_no_implicit_output_or_snapshot_credit ... ok
test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok
test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... ok
test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement
test relay::tests::positive_insufficient_credit_arms_a_one_shot_deadline ... ok
test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok
test sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... ok
test lifecycle::tests::ordinary_output_does_not_rescan_prompt_suffixes_per_byte ... ok
test sessions::tests::sequenced_attach_intersects_caps_and_legacy_attach_stays_zero ... ok
test relay::tests::expired_credit_resumes_retained_bytes_at_the_same_cursor ... ok
test daemon::output_tail_tests::retains_exact_tail_across_wrap_and_oversized_write ... ok
test sessions::tests::borrowed_reader_payload_uses_reusable_cancel_safe_storage ... ok
test sessions::tests::post_listen_chmod_wakes_a_connection_refused_at_bind ... ok
test sessions::tests::cancelled_fragmented_shim_read_retains_header_and_body_progress ... ok

test result: ok. 27 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s

 Running tests/transport.rs (target/debug/deps/transport-ef669c6e5837f1df)

running 2 tests
test oversized_header_and_truncated_frame_are_rejected ... ok
test fragmented_headers_coalesced_frames_and_reusable_transmit ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

 Running unittests src/lib.rs (target/debug/deps/infraternal_mesh-3f967587718407e9)

running 0 tests

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

 Running tests/default_arrow.rs (target/debug/deps/default_arrow-312553ba19630584)

running 1 test
test omitted_arrow_ports_default_to_all_services ... ok

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

 Running tests/properties.rs (target/debug/deps/properties-78f35bbe1b57dcd5)

running 14 tests
test overlaps_are_reported_without_silent_range_changes ... ok
test join_to_same_tag_grants_both_initiation_directions ... ok
test directional_grants_union_and_minimal_updates ... ok
test exhausted_versions_reject_mutations_without_changing_state ... ok
test names_versions_and_backend_status ... ok
test arrow_replacement_is_atomic_and_unrelated_nodes_keep_their_versions ... ok
test checkpoint_after_suffix_change_restores_without_reallocating_addresses ... ok
test private_material_never_enters_debug_or_coordination_serialization ... ok
test server_rotation_has_continuous_keys_for_every_node_during_delivery ... ok
test rotation_waits_for_overlap_and_delivery_and_removal_drops_every_key ... ok
test public_checkpoint_preserves_addresses_rules_versions_and_overlap ... ok
test protocol_port_unions_never_grant_an_unlisted_service ... ok
test addresses_are_unique_stable_and_not_recycled ... ok
test seeded_random_sequences_equal_full_compile_and_deny_without_grants ... ok

test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.16s

 Running tests/rotation_time.rs (target/debug/deps/rotation_time-a58dd287253d611d)

running 1 test
test unrepresentable_rotation_overlap_rejects_before_mutation ... ok

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

 Running unittests src/lib.rs (target/debug/deps/infraternal_plugin_api-4480fd7032f11ca2)

running 0 tests

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

 Running unittests src/lib.rs (target/debug/deps/infraternal_plugin_ssh-22a9a893799c7f17)

running 0 tests

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

 Running unittests src/lib.rs (target/debug/deps/infraternal_protocol-67b9a310ef49abf9)

running 7 tests
test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok
test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok
test tests::oversized_encode_keeps_the_reusable_output_unchanged ... ok
test stream_tests::split_mux_header_preserves_trailing_close ... ok
test stream_tests::all_short_frame_splits_match_direct_decoding ... ok
test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok
test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

 Running unittests src/lib.rs (target/debug/deps/infraternal_server-7b0058424c5209fd)

running 117 tests
test auth::tests::aaguid_projection_rejects_malformed_cbor_corpus ... ok
test auth::tests::account_identity_migration_backfills_legacy_users ... ok
test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok
test auth::http::hostname_tests::authenticated_session_response_includes_system_hostname ... ok
test auth::tests::account_identity_schema_has_unique_usernames_and_display_names ... ok
test auth::tests::aaguid_migration_preserves_legacy_credentials_and_sessions ... ok
test auth::crypto::verifier_tests::recovery_capacity_denial_is_not_a_legacy_credential_signal ... ok
test auth::crypto::verifier_tests::browser_secret_hashing_is_canonical_and_bounded ... ok
test auth::tests::audit_ceremony_browser_binding ... ok
test auth::tests::audit_logout_survives_admission_exhaustion ... ok
test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds
test auth::tests::audit_no_public_credential_listing ... ok
test auth::tests::audit_recovery_after_page_discard_can_resume_at_original_deadline ... ok
test auth::tests::audit_recovery_pending_is_visible_to_signed_in_device ... ok
test auth::tests::audit_recovery_session_expiring_during_verification_keeps_delay ... ok
test auth::tests::provider_labels_cover_the_cited_registry_without_guessing ... ok
test auth::tests::provider_session_latency_at_50_devices ... ignored, local auth session scale measurement; run without concurrent builds
test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok
test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok
test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok
test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok
test auth::tests::enrollment_prf_input_matches_discoverable_login ... ok
test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok
test auth::tests::pending_unlock_expires_without_terminal_authority ... ok
test auth::tests::public_status_and_discoverable_http_login ... ok
test auth::tests::recovery_session_delay_latency_at_capacity ... ignored, release-only recovery measurement at 50 live sessions; run without concurrent compilation
test auth::tests::recovery_audit_commits_once_with_start_cancel_and_complete ... ok
test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok
test auth::tests::recovery_verifier_latency_at_capacity ... ignored, release-only v2 diagnostic at 50 live session rows; record host load separately
test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok
test auth::tests::recovery_http_live_same_account_is_immediate ... ok
test auth::tests::recovery_http_other_expired_pending_and_missing_sessions_wait ... ok
test auth::tests::recovery_live_session_cannot_accelerate_an_active_delayed_request ... ok
test auth::tests::recovery_live_session_revoked_during_verification_cannot_waive_delay ... ok
test auth::tests::recovery_unknown_identity_pays_the_same_database_and_verifier_work ... ok
test auth::tests::recovery_username_identity_is_additive_and_ambiguous_forms_fail ... ok
test auth::tests::redacted_unknown_and_failed_registrations_do_not_claim_a_provider ... ok
test auth::tests::registration_aaguid_survives_none_attestation_and_binds_session_provider ... ok
test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok
test auth::tests::review3_tests::review3_backend_reply_has_a_deadline ... ok
test auth::tests::review3_tests::review3_busy_expiry ... ok
test auth::tests::review3_tests::review3_busy_logout ... ok
test auth::tests::review3_tests::review3_busy_recovery ... ok
test auth::tests::review3_tests::review3_completion_and_cleanup_are_transaction_bound ... ok
test auth::tests::review3_tests::review3_expired_handshake_must_not_welcome ... ok
test auth::tests::review3_tests::review4_slow_open_at_user_capacity ... ignored, release-only connect scale measurement; run without concurrent builds
test auth::tests::review3_tests::review3_identified_privacy_timing_and_binding_replays ... ok
test auth::tests::review3_tests::review3_pending_routes_and_idle_expiry_recovery ... ok
test auth::tests::review3_tests::review3_revoked_handshake_must_not_welcome ... ok
test auth::tests::review3_tests::review3_revoked_resume_must_not_welcome ... ok
test auth::tests::review3_tests::review3_unwrap_cannot_be_skipped ... ok
test auth::tests::review3_tests::review3_waiting_handshake_loses_authority ... ok
test auth::tests::review3_tests::review4_open_reply_and_revocation_preserve_authority ... ok
test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok
test auth::tests::review_old_words_race_rotation ... ok
test auth::tests::reviewer_tests::reviewer_disk_cancel_complete_races ... ok
test auth::tests::reviewer_tests::reviewer_disk_restart_and_concurrent_resume ... ok
test auth::tests::reviewer_tests::reviewer_http_denials_and_recovery_admission ... ok
test auth::tests::reviewer_tests::reviewer_http_expired_capability_cannot_complete_after_writer_wait ... ok
test auth::tests::reviewer_tests::reviewer_http_expired_ceremony_cannot_complete_after_writer_wait ... ok
test auth::tests::reviewer_tests::reviewer_server_clock_rollback_retains_deadline_and_reports_more_than_day ... ok
test auth::tests::setup_check_is_non_consuming_and_closes_after_owner_creation ... ok
test auth::tests::setup_identity_validation_and_uniqueness ... ok
test auth::tests::rotation_tests::recovery_phrase_routes_are_removed_and_words_fail_closed ... ok
test auth::tests::rotation_tests::recovery_rotation_cannot_follow_a_cookie_account_switch ... ok
test auth::tests::setup_start_accepts_username_and_display_name ... ok
test auth::tests::rotation_tests::recovery_rotation_denies_pending_expired_and_stale_sessions ... ok
test auth::tests::rotation_tests::recovery_rotation_requires_session_and_replaces_legacy_envelope ... ok
test auth::tests::rotation_tests::reviewer_concurrent_signed_in_rotations_commit_once ... ok
test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok
test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok
test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok
test auth::tests::socket_tests::authenticated_idle_socket_survives_the_former_read_timeout ... ok
test auth::tests::socket_tests::socket_authority_latency_at_user_capacity ... ignored, release-only measurement without concurrent compilation
test auth::tests::socket_tests::clean_control_close_is_not_an_internal_error ... ok
test embedded::regressions::credited_bulk_output_survives_forwarder_io_pause ... ok
test embedded::regressions::credited_output_queue_at_stream_capacity ... ignored, debug actor memory/scheduling measurement; run without concurrent builds
test embedded::regressions::full_output_queue_must_not_block_shared_actor ... ok
test embedded::regressions::healthy_receiver_survives_ready_native_output_burst ... ok
test embedded::regressions::healthy_streams_progress_at_user_attachment_capacity ... ok
test embedded::regressions::output_and_snapshot_spend_remaining_restart_credit ... ok
test embedded::regressions::real_agent_canonical_uuid_result_is_accepted ... ok
test embedded::regressions::real_agent_open_uses_uid_and_character_dimensions ... ok
test embedded::regressions::reattach_must_restore_output_credit ... ok
test embedded::regressions::recovery_event_then_snapshot_keeps_embedded_connection_live ... ok
test embedded::regressions::recovery_notices_preserve_order_credit_and_session_isolation ... ok
test embedded::regressions::stream_close_must_not_restart_all_sessions ... ok
test embedded::regressions::uncredited_output_or_repaint_is_rejected_before_queueing ... ok
test lifecycle::tests::automatic_rename_updates_cwd_but_respects_a_pinned_name ... ok
test lifecycle::tests::cleanup_deadline_tracks_exit_and_dismissal_without_periodic_polling ... ok
test lifecycle::tests::exit_cursor_marks_unseen_output_when_the_last_notice_was_dropped ... ok
test lifecycle::tests::exit_is_bounded_owned_dismissed_and_not_resurrected ... ok
test lifecycle::tests::foreign_or_oversized_exit_is_rejected ... ok
test lifecycle::tests::output_activity_clears_only_after_the_seen_cursor_catches_up ... ok
test lifecycle::tests::purge_uses_seven_day_millisecond_deadline ... ok
test lifecycle::tests::retained_exit_quota_caps_account_storage_at_128_records ... ok
test runtime::reviewer_admission::reviewer_recovery_source_limit_covers_all_routes_without_forwarding_bypass ... ok
test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok
test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok
test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok
test runtime::tests::router_migrates_private_storage_and_serves_health ... ok
test runtime::tests::setup_socket_cleanup_preserves_symlinks_and_regular_files ... ok
test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok
test runtime::tests::startup_with_owner_unlinks_stale_setup_token_socket ... ok
test web_assets::tests::encodings_and_identity_have_correct_headers_and_sizes ... ok
test web_assets::tests::spa_and_mutable_assets_revalidate_and_missing_brotli_uses_gzip ... ok
test websocket::recovery_notification_bench::recovery_notification_state_at_socket_capacity ... ignored, notification state sizing diagnostic, not allocator-inclusive RSS certification
test websocket::writer_tests::second_device_does_not_inherit_first_device_input_ack ... ok
test websocket::writer_tests::writer_admission_at_user_capacity ... ignored, release-only scale measurement; run without concurrent builds
test websocket::writer_tests::writer_ownership_capacity_unsigned_offsets_and_identity_reuse ... ok
test auth::tests::socket_tests::expired_handshake_releases_user_permits ... ok
test auth::tests::socket_tests::fragmented_wire_frame_has_a_completion_deadline ... ok
test auth::tests::socket_tests::half_open_sockets_obey_user_limit ... ok
test auth::tests::socket_tests::incomplete_rfc_message_still_loses_authority_on_revocation ... ok
test auth::tests::socket_tests::recovery_subscription_updates_every_signed_in_socket ... ok
test auth::tests::socket_tests::revoked_idle_socket_loses_all_authority ... ok
test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok

test result: ok. 108 passed; 0 failed; 9 ignored; 0 measured; 0 filtered out; finished in 154.36s

 Running unittests src/lib.rs (target/debug/deps/infraternal_shim-67ffc9c8d51fcf5c)

running 76 tests
test frame::checks::codec_reuse_measurement ... ignored, release codec and allocation-path measurement
test frame::checks::golden::every_frozen_message ... ok
test frame::checks::tests::golden_and_fragmented ... ok
test ring::checks::tests::wrap_and_exact_offsets ... ok
test frame::checks::tests::invalid_lengths_types_and_utf8 ... ok
test session::inputs::tests::identity_cap_preserves_all_existing_cursors ... ok
test frame::checks::approximate_snapshot_codec_is_bounded_and_canonical ... ok
test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile
test session::measurements::poll_storage_measurement ... ignored, release poll-storage allocation measurement
test session::inputs::tests::partial_writes_credit_only_the_owner_and_replay_trims_per_writer ... ok
test frame::checks::borrowed_and_owned_decoders_agree_at_every_fragment_boundary ... ok
test session::resize_checks::resize_refusal_session_probe ... ignored, isolated session probe invoked by its parent with a controlled shell profile
test session::sequenced_checks::coalesced_ack_never_overwrites_a_partial_output_and_cursors_survive_peer_loss ... ok
test session::sequenced_checks::new_frames_roundtrip_and_refuse_noncanonical_payloads ... ok
test session::sequenced_checks::reusable_encoder_retains_capacity_and_refuses_growth_before_mutation ... ok
test session::sequenced_checks::trim_duplicates_gaps_overflow_and_capacity_are_transactional ... ok
test session::sequenced_checks::writer_selection_has_a_frozen_little_endian_layout ... ok
test shell::tests::shell_hooks_append_after_user_configuration ... ok
test frame::checks::golden::exact_maximum_and_coalesced_frames ... ok
test session::lifecycle_checks::expired_raw_tail_is_refused_without_snapshot_substitution ... ok
test terminal::checks::tests::implicit_hyperlinks_retain_groups_across_rows_and_continuation ... ok
test terminal::checks::tests::fixtures_and_continuations_repaint ... ok
test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok
test terminal::checks::tests::margins_tabs_charsets_and_modes_continue ... ok
test terminal::checks::tests::long_unfinished_hyperlink_and_control_strings_continue ... ok
test terminal::checks::tests::retained_alternate_saved_cursor_and_keyboard_stack_continue ... ok
test terminal::checks::tests::partial_csi_and_utf8_continue ... ok
test terminal::checks::tests::pending_wrap_and_saved_wrap_continue_with_wide_cells ... ok
test terminal::fidelity::fidelity_charset_mapped_wide_space_is_explicitly_rejected ... ok
test terminal::checks::tests::byte_budget_prunes_history_and_resize_remains_repaintable ... ok
test terminal::fidelity::fidelity_diagnostic_fixture ... ignored, diagnostic replay of an explicitly selected fixture file
test terminal::checks::tests::saved_origin_survives_changed_margins ... ok
test terminal::fidelity::fidelity_extended_nightly ... ignored, nightly expanded differential corpus: 20,000 deterministic cases
test session::resize_checks::native_resize_refusal_preserves_peer_and_pty ... ok
test terminal::fidelity::fidelity_cursor ... ok
test terminal::fidelity::fidelity_fresh_c_redraw_default_is_explicitly_rejected ... ok
test terminal::checks::tests::unfinished_sequence_over_frame_limit_fails_without_losing_runtime_state ... ok
test terminal::fidelity::fidelity_inherited_protection_off_mode_is_explicitly_rejected ... ok
test terminal::fidelity::fidelity_edge ... ok
test terminal::fidelity::fidelity_f1_rep ... ok
test terminal::fidelity::fidelity_iso_protection_erase ... ok
test terminal::checks::approximate_repaint_keeps_complete_pending_syntax_or_omits_it_whole ... ok
test terminal::fidelity::fidelity_oracle_observes_archived_cells_with_equal_active_screens ... ok
test terminal::fidelity::fidelity_orphaned_spacer_head ... ok
test terminal::fidelity::fidelity_prompt_resize_requires_explicit_rejection ... ok
test shell::tests::installed_shells_load_the_additive_hooks ... ok
test terminal::fidelity::fidelity_oracle_detects_hidden_state ... ok
test terminal::fidelity::fidelity_iso_protection_does_not_keep_rep_scratch ... ok
test terminal::fidelity::fidelity_saved_modes_future_restore ... ok
test terminal::fidelity::fidelity_rejects_unrepresentable_rep_without_mutating_source ... ok
test terminal::fidelity::fidelity_seeded_nightly ... ignored, nightly differential corpus: 20,000 deterministic cases
test terminal::fidelity::fidelity_saved_cursor_over_changed_edge ... ok
test terminal::checks::approximate_repaint_is_bounded_clips_at_complete_cells_and_preserves_source ... ok
test terminal::fidelity::fidelity_single_shift_survives_rep_seed ... ok
test terminal::fidelity::fidelity_snapshot_history_tail_contains_no_padding_rows ... ok
test terminal::fidelity::fidelity_snapshot_resets_stale_viewer_color_overrides ... ok
test terminal::fidelity::fidelity_semantic_validation_matches_exported_history_extent ... ok
test terminal::fidelity::fidelity_screen_entry_consumes_inherited_shift_before_saving ... ok
test terminal::fidelity::fidelity_variation_tail_attributes ... ok
test terminal::fidelity::fresh_captures::fidelity_fresh_real_program_captures ... ignored, manual fresh capture oracle; set VT_CAPTURE_DIR after real program capture
test terminal::measurements::budgets::snapshot_200x60 ... ignored, performance measurement; run release on the perf host
test terminal::measurements::memory::measured_terminal_rss ... ignored, RSS measurement; run this filter alone in a fresh release process
test terminal::measurements::throughput::measured_parser ... ignored, VT observer and history throughput measurement
test terminal::recovery_measurements::measured_full_ring_reconstruction ... ignored, release reconstruction measurement; old healthy handles permit repeated cleanup
test terminal::resize_recovery::absent_ring_keeps_last_good_size_and_later_output_usable ... ok
test terminal::fidelity::fidelity_spacer_head_attributes ... ok
test terminal::resize_recovery::earlier_geometry_changes_require_approximation_even_with_origin_coverage ... ok
test terminal::resize_recovery::complete_ring_restores_screens_mouse_and_unfinished_syntax ... ok
test terminal_native::allocation::resize_allocation_refusal_retires_native_handle ... ok
test terminal::resize_recovery::ring_gap_requires_clean_approximate_recovery ... ok
test terminal::fidelity::fidelity_variation_wrap_attributes ... ok
test terminal::fidelity::fidelity_mouse_effective_fields_follow_order_independently_of_booleans ... ok
test terminal::fidelity::fidelity_recorded_corpus ... ok
test terminal::fidelity::fidelity_handwritten ... ok
test terminal::fidelity::fidelity_extended_smoke ... ok
test terminal::fidelity::fidelity_seeded_smoke ... ok

test result: ok. 64 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 57.77s

 Running tests/detach.rs (target/debug/deps/detach-c502cd554fb112ce)

running 1 test
test closed_standard_descriptors_become_dev_null ... ok

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

 Running tests/mouse.rs (target/debug/deps/mouse-523bfdef43cc46cb)

running 1 test
test faithful_snapshot_preserves_public_mouse_encoder_reports ... ok

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

Doc-tests infraternal_agent

running 0 tests

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

Doc-tests infraternal_mesh

running 1 test
test crates/infraternal-mesh/src/model.rs - model::LocalPrivateKey (line 20) - compile fail ... ok

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

Doc-tests infraternal_plugin_api

running 0 tests

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

Doc-tests infraternal_plugin_ssh

running 0 tests

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

Doc-tests infraternal_protocol

running 0 tests

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

Doc-tests infraternal_server

running 0 tests

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

Doc-tests infraternal_shim

running 0 tests

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

==> cargo-deny
warning[duplicate]: found 2 duplicate entries for crate 'base64'
┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:24:1
│
24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index
25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index
│ ╰───────────────────────────────────────────────────────────────────┘ lock entries
│
├ base64 v0.21.7
├── base64urlsafedata v0.5.5
│ ├── webauthn-attestation-ca v0.5.5
│ │ └── webauthn-rs-core v0.5.5
│ │ └── webauthn-rs v0.5.5
│ │ └── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── webauthn-rs v0.5.5 ()
│ ├── webauthn-rs-core v0.5.5 (
)
│ └── webauthn-rs-proto v0.5.5
│ └── webauthn-rs-core v0.5.5 ()
├── webauthn-rs-core v0.5.5 (
)
└── webauthn-rs-proto v0.5.5 ()
├ base64 v0.22.1
├── axum v0.8.9
│ └── infraternal-server v0.1.0
│ └── infraternal v0.1.0
├── infraternal-server v0.1.0 (
)
└── sqlx-core v0.8.6
├── sqlx v0.8.6
│ ├── infraternal v0.1.0 ()
│ └── infraternal-server v0.1.0 (
)
├── sqlx-macros v0.8.6
│ └── sqlx v0.8.6 ()
├── sqlx-macros-core v0.8.6
│ └── sqlx-macros v0.8.6 (
)
└── sqlx-sqlite v0.8.6
├── sqlx v0.8.6 ()
└── sqlx-macros-core v0.8.6 (
)

warning[duplicate]: found 3 duplicate entries for crate 'getrandom'
┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:88:1
│
88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index
89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index
90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index
│ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
│
├ getrandom v0.2.17
└── rand_core v0.6.4
├── bip39 v2.2.2
│ └── infraternal-server v0.1.0
│ └── infraternal v0.1.0
├── crypto-common v0.1.7
│ ├── aead v0.5.2
│ │ └── aes-gcm v0.10.3
│ │ └── (dev) infraternal-server v0.1.0 ()
│ ├── cipher v0.4.4
│ │ ├── aes v0.8.4
│ │ │ └── aes-gcm v0.10.3 (
)
│ │ ├── aes-gcm v0.10.3 ()
│ │ └── ctr v0.9.2
│ │ └── aes-gcm v0.10.3 (
)
│ ├── digest v0.10.7
│ │ ├── blake2 v0.10.6
│ │ │ └── argon2 v0.5.3
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── hmac v0.12.1
│ │ │ └── hkdf v0.12.4
│ │ │ └── (dev) infraternal-server v0.1.0 (
)
│ │ ├── sha1 v0.10.7
│ │ │ ├── axum v0.8.9
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ └── tungstenite v0.29.0
│ │ │ └── tokio-tungstenite v0.29.0
│ │ │ ├── axum v0.8.9 (
)
│ │ │ └── (dev) infraternal-server v0.1.0 ()
│ │ └── sha2 v0.10.9
│ │ ├── infraternal-server v0.1.0 (
)
│ │ ├── sqlx-core v0.8.6
│ │ │ ├── sqlx v0.8.6
│ │ │ │ ├── infraternal v0.1.0 ()
│ │ │ │ └── infraternal-server v0.1.0 (
)
│ │ │ ├── sqlx-macros v0.8.6
│ │ │ │ └── sqlx v0.8.6 ()
│ │ │ ├── sqlx-macros-core v0.8.6
│ │ │ │ └── sqlx-macros v0.8.6 (
)
│ │ │ └── sqlx-sqlite v0.8.6
│ │ │ ├── sqlx v0.8.6 ()
│ │ │ └── sqlx-macros-core v0.8.6 (
)
│ │ └── sqlx-macros-core v0.8.6 ()
│ └── universal-hash v0.5.1
│ └── polyval v0.6.2
│ └── ghash v0.5.1
│ └── aes-gcm v0.10.3 (
)
├── password-hash v0.5.0
│ └── argon2 v0.5.3 ()
├── rand v0.8.8
│ └── bip39 v2.2.2 (
)
└── rand_chacha v0.3.1
└── rand v0.8.8 ()
├ getrandom v0.3.4
└── rand_core v0.9.5
├── rand v0.9.5
│ ├── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── tungstenite v0.29.0
│ │ └── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9
│ │ │ └── infraternal-server v0.1.0 (
)
│ │ └── (dev) infraternal-server v0.1.0 ()
│ └── webauthn-rs-core v0.5.5
│ └── webauthn-rs v0.5.5
│ └── infraternal-server v0.1.0 (
)
└── rand_chacha v0.9.0
├── rand v0.9.5 ()
└── webauthn-rs-core v0.5.5 (
)
├ getrandom v0.4.3
├── jobserver v0.1.35
│ └── cc v1.6.0
│ ├── (build) libfuzzer-sys v0.4.13
│ │ └── infraternal-fuzz v0.1.0
│ ├── (build) libsqlite3-sys v0.30.1
│ │ └── sqlx-sqlite v0.8.6
│ │ ├── sqlx v0.8.6
│ │ │ ├── infraternal v0.1.0
│ │ │ └── infraternal-server v0.1.0
│ │ │ └── infraternal v0.1.0 ()
│ │ └── sqlx-macros-core v0.8.6
│ │ └── sqlx-macros v0.8.6
│ │ └── sqlx v0.8.6 (
)
│ ├── openssl-src v300.6.1+3.6.3
│ │ └── (build) openssl-sys v0.9.117
│ │ ├── axum-server v0.8.0
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── openssl v0.10.81
│ │ │ ├── axum-server v0.8.0 (
)
│ │ │ ├── infraternal-server v0.1.0 ()
│ │ │ ├── tokio-openssl v0.6.5
│ │ │ │ └── axum-server v0.8.0 (
)
│ │ │ ├── webauthn-attestation-ca v0.5.5
│ │ │ │ └── webauthn-rs-core v0.5.5
│ │ │ │ └── webauthn-rs v0.5.5
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ └── webauthn-rs-core v0.5.5 (
)
│ │ ├── tokio-openssl v0.6.5 ()
│ │ ├── webauthn-attestation-ca v0.5.5 (
)
│ │ └── webauthn-rs-core v0.5.5 ()
│ └── (build) openssl-sys v0.9.117 (
)
└── uuid v1.27.0
├── infraternal-agent v0.1.0
│ └── infraternal v0.1.0 ()
├── infraternal-server v0.1.0 (
)
├── webauthn-attestation-ca v0.5.5 ()
├── webauthn-rs v0.5.5 (
)
└── webauthn-rs-core v0.5.5 (*)

warning[duplicate]: found 2 duplicate entries for crate 'hashbrown'
┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:94:1
│
94 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index
95 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index
│ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
│
├ hashbrown v0.15.5
├── hashlink v0.10.0
│ └── sqlx-core v0.8.6
│ ├── sqlx v0.8.6
│ │ ├── infraternal v0.1.0
│ │ └── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0 ()
│ ├── sqlx-macros v0.8.6
│ │ └── sqlx v0.8.6 (
)
│ ├── sqlx-macros-core v0.8.6
│ │ └── sqlx-macros v0.8.6 ()
│ └── sqlx-sqlite v0.8.6
│ ├── sqlx v0.8.6 (
)
│ └── sqlx-macros-core v0.8.6 ()
└── sqlx-core v0.8.6 (
)
├ hashbrown v0.17.1
└── indexmap v2.14.2
├── h2 v0.4.19
│ └── hyper v1.11.1
│ ├── axum v0.8.9
│ │ └── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── axum-server v0.8.0
│ │ └── infraternal-server v0.1.0 ()
│ └── hyper-util v0.1.21
│ ├── axum v0.8.9 (
)
│ └── axum-server v0.8.0 ()
└── sqlx-core v0.8.6
├── sqlx v0.8.6
│ ├── infraternal v0.1.0 (
)
│ └── infraternal-server v0.1.0 ()
├── sqlx-macros v0.8.6
│ └── sqlx v0.8.6 (
)
├── sqlx-macros-core v0.8.6
│ └── sqlx-macros v0.8.6 ()
└── sqlx-sqlite v0.8.6
├── sqlx v0.8.6 (
)
└── sqlx-macros-core v0.8.6 (*)

warning[duplicate]: found 2 duplicate entries for crate 'r-efi'
┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:183:1
│
183 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index
184 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index
│ ╰─────────────────────────────────────────────────────────────────┘ lock entries
│
├ r-efi v5.3.0
└── getrandom v0.3.4
└── rand_core v0.9.5
├── rand v0.9.5
│ ├── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── tungstenite v0.29.0
│ │ └── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9
│ │ │ └── infraternal-server v0.1.0 ()
│ │ └── (dev) infraternal-server v0.1.0 (
)
│ └── webauthn-rs-core v0.5.5
│ └── webauthn-rs v0.5.5
│ └── infraternal-server v0.1.0 ()
└── rand_chacha v0.9.0
├── rand v0.9.5 (
)
└── webauthn-rs-core v0.5.5 ()
├ r-efi v6.0.0
└── getrandom v0.4.3
├── jobserver v0.1.35
│ └── cc v1.6.0
│ ├── (build) libfuzzer-sys v0.4.13
│ │ └── infraternal-fuzz v0.1.0
│ ├── (build) libsqlite3-sys v0.30.1
│ │ └── sqlx-sqlite v0.8.6
│ │ ├── sqlx v0.8.6
│ │ │ ├── infraternal v0.1.0
│ │ │ └── infraternal-server v0.1.0
│ │ │ └── infraternal v0.1.0 (
)
│ │ └── sqlx-macros-core v0.8.6
│ │ └── sqlx-macros v0.8.6
│ │ └── sqlx v0.8.6 ()
│ ├── openssl-src v300.6.1+3.6.3
│ │ └── (build) openssl-sys v0.9.117
│ │ ├── axum-server v0.8.0
│ │ │ └── infraternal-server v0.1.0 (
)
│ │ ├── openssl v0.10.81
│ │ │ ├── axum-server v0.8.0 ()
│ │ │ ├── infraternal-server v0.1.0 (
)
│ │ │ ├── tokio-openssl v0.6.5
│ │ │ │ └── axum-server v0.8.0 ()
│ │ │ ├── webauthn-attestation-ca v0.5.5
│ │ │ │ └── webauthn-rs-core v0.5.5
│ │ │ │ └── webauthn-rs v0.5.5
│ │ │ │ └── infraternal-server v0.1.0 (
)
│ │ │ └── webauthn-rs-core v0.5.5 ()
│ │ ├── tokio-openssl v0.6.5 (
)
│ │ ├── webauthn-attestation-ca v0.5.5 ()
│ │ └── webauthn-rs-core v0.5.5 (
)
│ └── (build) openssl-sys v0.9.117 ()
└── uuid v1.27.0
├── infraternal-agent v0.1.0
│ └── infraternal v0.1.0 (
)
├── infraternal-server v0.1.0 ()
├── webauthn-attestation-ca v0.5.5 (
)
├── webauthn-rs v0.5.5 ()
└── webauthn-rs-core v0.5.5 (
)

warning[duplicate]: found 2 duplicate entries for crate 'rand'
┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:185:1
│
185 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index
186 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index
│ ╰────────────────────────────────────────────────────────────────┘ lock entries
│
├ rand v0.8.8
└── bip39 v2.2.2
└── infraternal-server v0.1.0
└── infraternal v0.1.0
├ rand v0.9.5
├── infraternal-server v0.1.0
│ └── infraternal v0.1.0
├── tungstenite v0.29.0
│ └── tokio-tungstenite v0.29.0
│ ├── axum v0.8.9
│ │ └── infraternal-server v0.1.0 ()
│ └── (dev) infraternal-server v0.1.0 (
)
└── webauthn-rs-core v0.5.5
└── webauthn-rs v0.5.5
└── infraternal-server v0.1.0 (*)

warning[duplicate]: found 2 duplicate entries for crate 'rand_chacha'
┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:187:1
│
187 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index
188 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index
│ ╰───────────────────────────────────────────────────────────────────────┘ lock entries
│
├ rand_chacha v0.3.1
└── rand v0.8.8
└── bip39 v2.2.2
└── infraternal-server v0.1.0
└── infraternal v0.1.0
├ rand_chacha v0.9.0
├── rand v0.9.5
│ ├── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── tungstenite v0.29.0
│ │ └── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9
│ │ │ └── infraternal-server v0.1.0 ()
│ │ └── (dev) infraternal-server v0.1.0 (
)
│ └── webauthn-rs-core v0.5.5
│ └── webauthn-rs v0.5.5
│ └── infraternal-server v0.1.0 ()
└── webauthn-rs-core v0.5.5 (
)

warning[duplicate]: found 2 duplicate entries for crate 'rand_core'
┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:189:1
│
189 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index
190 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index
│ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
│
├ rand_core v0.6.4
├── bip39 v2.2.2
│ └── infraternal-server v0.1.0
│ └── infraternal v0.1.0
├── crypto-common v0.1.7
│ ├── aead v0.5.2
│ │ └── aes-gcm v0.10.3
│ │ └── (dev) infraternal-server v0.1.0 ()
│ ├── cipher v0.4.4
│ │ ├── aes v0.8.4
│ │ │ └── aes-gcm v0.10.3 (
)
│ │ ├── aes-gcm v0.10.3 ()
│ │ └── ctr v0.9.2
│ │ └── aes-gcm v0.10.3 (
)
│ ├── digest v0.10.7
│ │ ├── blake2 v0.10.6
│ │ │ └── argon2 v0.5.3
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── hmac v0.12.1
│ │ │ └── hkdf v0.12.4
│ │ │ └── (dev) infraternal-server v0.1.0 (
)
│ │ ├── sha1 v0.10.7
│ │ │ ├── axum v0.8.9
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ └── tungstenite v0.29.0
│ │ │ └── tokio-tungstenite v0.29.0
│ │ │ ├── axum v0.8.9 (
)
│ │ │ └── (dev) infraternal-server v0.1.0 ()
│ │ └── sha2 v0.10.9
│ │ ├── infraternal-server v0.1.0 (
)
│ │ ├── sqlx-core v0.8.6
│ │ │ ├── sqlx v0.8.6
│ │ │ │ ├── infraternal v0.1.0 ()
│ │ │ │ └── infraternal-server v0.1.0 (
)
│ │ │ ├── sqlx-macros v0.8.6
│ │ │ │ └── sqlx v0.8.6 ()
│ │ │ ├── sqlx-macros-core v0.8.6
│ │ │ │ └── sqlx-macros v0.8.6 (
)
│ │ │ └── sqlx-sqlite v0.8.6
│ │ │ ├── sqlx v0.8.6 ()
│ │ │ └── sqlx-macros-core v0.8.6 (
)
│ │ └── sqlx-macros-core v0.8.6 ()
│ └── universal-hash v0.5.1
│ └── polyval v0.6.2
│ └── ghash v0.5.1
│ └── aes-gcm v0.10.3 (
)
├── password-hash v0.5.0
│ └── argon2 v0.5.3 ()
├── rand v0.8.8
│ └── bip39 v2.2.2 (
)
└── rand_chacha v0.3.1
└── rand v0.8.8 ()
├ rand_core v0.9.5
├── rand v0.9.5
│ ├── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── tungstenite v0.29.0
│ │ └── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9
│ │ │ └── infraternal-server v0.1.0 (
)
│ │ └── (dev) infraternal-server v0.1.0 ()
│ └── webauthn-rs-core v0.5.5
│ └── webauthn-rs v0.5.5
│ └── infraternal-server v0.1.0 (
)
└── rand_chacha v0.9.0
├── rand v0.9.5 ()
└── webauthn-rs-core v0.5.5 (
)

warning[duplicate]: found 2 duplicate entries for crate 'syn'
┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:226:1
│
226 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index
227 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index
│ ╰───────────────────────────────────────────────────────────────┘ lock entries
│
├ syn v2.0.119
├── asn1-rs-derive v0.5.1
│ └── asn1-rs v0.6.2
│ ├── der-parser v9.0.0
│ │ ├── webauthn-rs-core v0.5.5
│ │ │ └── webauthn-rs v0.5.5
│ │ │ └── infraternal-server v0.1.0
│ │ │ └── infraternal v0.1.0
│ │ └── x509-parser v0.16.0
│ │ └── webauthn-rs-core v0.5.5 ()
│ ├── oid-registry v0.7.1
│ │ └── x509-parser v0.16.0 (
)
│ └── x509-parser v0.16.0 ()
├── asn1-rs-impl v0.2.0
│ └── asn1-rs v0.6.2 (
)
├── openssl-macros v0.1.1
│ └── openssl v0.10.81
│ ├── axum-server v0.8.0
│ │ └── infraternal-server v0.1.0 ()
│ ├── infraternal-server v0.1.0 (
)
│ ├── tokio-openssl v0.6.5
│ │ └── axum-server v0.8.0 ()
│ ├── webauthn-attestation-ca v0.5.5
│ │ └── webauthn-rs-core v0.5.5 (
)
│ └── webauthn-rs-core v0.5.5 ()
├── sqlx-macros v0.8.6
│ └── sqlx v0.8.6
│ ├── infraternal v0.1.0 (
)
│ └── infraternal-server v0.1.0 ()
├── sqlx-macros-core v0.8.6
│ └── sqlx-macros v0.8.6 (
)
├── synstructure v0.13.2
│ └── asn1-rs-derive v0.5.1 ()
├── thiserror-impl v1.0.69
│ └── thiserror v1.0.69
│ ├── asn1-rs v0.6.2 (
)
│ ├── webauthn-rs-core v0.5.5 ()
│ └── x509-parser v0.16.0 (
)
├── tracing-attributes v0.1.31
│ └── tracing v0.1.44
│ ├── axum v0.8.9
│ │ └── infraternal-server v0.1.0 ()
│ ├── axum-core v0.5.6
│ │ └── axum v0.8.9 (
)
│ ├── h2 v0.4.19
│ │ └── hyper v1.11.1
│ │ ├── axum v0.8.9 ()
│ │ ├── axum-server v0.8.0 (
)
│ │ └── hyper-util v0.1.21
│ │ ├── axum v0.8.9 ()
│ │ └── axum-server v0.8.0 (
)
│ ├── infraternal-server v0.1.0 ()
│ ├── sqlx-core v0.8.6
│ │ ├── sqlx v0.8.6 (
)
│ │ ├── sqlx-macros v0.8.6 ()
│ │ ├── sqlx-macros-core v0.8.6 (
)
│ │ └── sqlx-sqlite v0.8.6
│ │ ├── sqlx v0.8.6 ()
│ │ └── sqlx-macros-core v0.8.6 (
)
│ ├── sqlx-sqlite v0.8.6 ()
│ ├── tower v0.5.3
│ │ ├── axum v0.8.9 (
)
│ │ └── (dev) infraternal-server v0.1.0 ()
│ ├── tracing-subscriber v0.3.23
│ │ └── infraternal-server v0.1.0 (
)
│ ├── webauthn-attestation-ca v0.5.5 ()
│ ├── webauthn-rs v0.5.5 (
)
│ └── webauthn-rs-core v0.5.5 ()
└── zerocopy-derive v0.8.60
└── zerocopy v0.8.60
├── half v2.7.1
│ ├── ciborium-ll v0.2.2
│ │ └── ciborium v0.2.2
│ │ └── criterion v0.7.0
│ │ └── (dev) infraternal-protocol v0.1.0
│ │ ├── infraternal-agent v0.1.0
│ │ │ └── infraternal v0.1.0 (
)
│ │ ├── infraternal-fuzz v0.1.0
│ │ └── infraternal-server v0.1.0 ()
│ └── serde_cbor_2 v0.13.0
│ ├── infraternal-server v0.1.0 (
)
│ └── webauthn-rs-core v0.5.5 ()
└── ppv-lite86 v0.2.21
├── rand_chacha v0.3.1
│ └── rand v0.8.8
│ └── bip39 v2.2.2
│ └── infraternal-server v0.1.0 (
)
└── rand_chacha v0.9.0
├── rand v0.9.5
│ ├── infraternal-server v0.1.0 ()
│ ├── tungstenite v0.29.0
│ │ └── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9 (
)
│ │ └── (dev) infraternal-server v0.1.0 ()
│ └── webauthn-rs-core v0.5.5 (
)
└── webauthn-rs-core v0.5.5 ()
├ syn v3.0.6
├── clap_derive v4.6.7
│ └── clap v4.6.7
│ ├── criterion v0.7.0
│ │ └── (dev) infraternal-protocol v0.1.0
│ │ ├── infraternal-agent v0.1.0
│ │ │ └── infraternal v0.1.0
│ │ ├── infraternal-fuzz v0.1.0
│ │ └── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0 (
)
│ └── infraternal v0.1.0 ()
├── displaydoc v0.2.7
│ ├── asn1-rs v0.6.2
│ │ ├── der-parser v9.0.0
│ │ │ ├── webauthn-rs-core v0.5.5
│ │ │ │ └── webauthn-rs v0.5.5
│ │ │ │ └── infraternal-server v0.1.0 (
)
│ │ │ └── x509-parser v0.16.0
│ │ │ └── webauthn-rs-core v0.5.5 ()
│ │ ├── oid-registry v0.7.1
│ │ │ └── x509-parser v0.16.0 (
)
│ │ └── x509-parser v0.16.0 ()
│ ├── der-parser v9.0.0 (
)
│ ├── icu_collections v2.3.0
│ │ ├── icu_normalizer v2.3.0
│ │ │ └── idna_adapter v1.2.2
│ │ │ └── idna v1.1.0
│ │ │ └── url v2.5.8
│ │ │ ├── infraternal-server v0.1.0 ()
│ │ │ ├── sqlx-core v0.8.6
│ │ │ │ ├── sqlx v0.8.6
│ │ │ │ │ ├── infraternal v0.1.0 (
)
│ │ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ │ ├── sqlx-macros v0.8.6
│ │ │ │ │ └── sqlx v0.8.6 (
)
│ │ │ │ ├── sqlx-macros-core v0.8.6
│ │ │ │ │ └── sqlx-macros v0.8.6 ()
│ │ │ │ └── sqlx-sqlite v0.8.6
│ │ │ │ ├── sqlx v0.8.6 (
)
│ │ │ │ └── sqlx-macros-core v0.8.6 ()
│ │ │ ├── sqlx-macros-core v0.8.6 (
)
│ │ │ ├── sqlx-sqlite v0.8.6 ()
│ │ │ ├── webauthn-rs v0.5.5 (
)
│ │ │ ├── webauthn-rs-core v0.5.5 ()
│ │ │ └── webauthn-rs-proto v0.5.5
│ │ │ └── webauthn-rs-core v0.5.5 (
)
│ │ └── icu_properties v2.3.0
│ │ └── idna_adapter v1.2.2 ()
│ ├── icu_locale_core v2.3.0
│ │ ├── icu_properties v2.3.0 (
)
│ │ └── icu_provider v2.3.1
│ │ ├── icu_normalizer v2.3.0 ()
│ │ └── icu_properties v2.3.0 (
)
│ ├── icu_properties v2.3.0 ()
│ ├── icu_provider v2.3.1 (
)
│ ├── tinystr v0.8.4
│ │ └── icu_locale_core v2.3.0 ()
│ └── zerotrie v0.2.5
│ ├── icu_properties v2.3.0 (
)
│ └── icu_provider v2.3.1 ()
├── futures-macro v0.3.34
│ └── futures-util v0.3.34
│ ├── axum v0.8.9
│ │ └── infraternal-server v0.1.0 (
)
│ ├── futures-executor v0.3.34
│ │ └── sqlx-sqlite v0.8.6 ()
│ ├── infraternal-server v0.1.0 (
)
│ ├── js-sys v0.3.106
│ │ └── web-sys v0.3.106
│ │ └── plotters v0.3.7
│ │ └── criterion v0.7.0 ()
│ ├── sqlx-core v0.8.6 (
)
│ ├── sqlx-sqlite v0.8.6 ()
│ ├── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9 (
)
│ │ └── (dev) infraternal-server v0.1.0 ()
│ ├── tower v0.5.3
│ │ ├── axum v0.8.9 (
)
│ │ └── (dev) infraternal-server v0.1.0 ()
│ └── tower-http v0.6.11
│ └── infraternal-server v0.1.0 (
)
├── serde_derive v1.0.229
│ ├── serde v1.0.229
│ │ ├── base64urlsafedata v0.5.5
│ │ │ ├── webauthn-attestation-ca v0.5.5
│ │ │ │ └── webauthn-rs-core v0.5.5 ()
│ │ │ ├── webauthn-rs v0.5.5 (
)
│ │ │ ├── webauthn-rs-core v0.5.5 ()
│ │ │ └── webauthn-rs-proto v0.5.5 (
)
│ │ ├── bip39 v2.2.2
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── ciborium v0.2.2
│ │ │ └── criterion v0.7.0 (
)
│ │ ├── criterion v0.7.0 ()
│ │ ├── either v1.18.0
│ │ │ ├── axum-server v0.8.0
│ │ │ │ └── infraternal-server v0.1.0 (
)
│ │ │ ├── itertools v0.13.0
│ │ │ │ ├── criterion v0.7.0 ()
│ │ │ │ └── criterion-plot v0.6.0
│ │ │ │ └── criterion v0.7.0 (
)
│ │ │ ├── rayon v1.12.0
│ │ │ │ └── criterion v0.7.0 ()
│ │ │ ├── sqlx-core v0.8.6 (
)
│ │ │ └── sqlx-macros-core v0.8.6 ()
│ │ ├── infraternal-agent v0.1.0 (
)
│ │ ├── infraternal-mesh v0.1.0
│ │ ├── infraternal-server v0.1.0 ()
│ │ ├── serde_cbor_2 v0.13.0
│ │ │ ├── infraternal-server v0.1.0 (
)
│ │ │ └── webauthn-rs-core v0.5.5 ()
│ │ ├── serde_urlencoded v0.7.1
│ │ │ ├── axum v0.8.9 (
)
│ │ │ └── sqlx-sqlite v0.8.6 ()
│ │ ├── sqlx-core v0.8.6 (
)
│ │ ├── sqlx-macros-core v0.8.6 ()
│ │ ├── sqlx-sqlite v0.8.6 (
)
│ │ ├── tinytemplate v1.2.1
│ │ │ └── criterion v0.7.0 ()
│ │ ├── tracing-serde v0.2.0
│ │ │ └── tracing-subscriber v0.3.23
│ │ │ └── infraternal-server v0.1.0 (
)
│ │ ├── tracing-subscriber v0.3.23 ()
│ │ ├── url v2.5.8 (
)
│ │ ├── webauthn-attestation-ca v0.5.5 ()
│ │ ├── webauthn-rs v0.5.5 (
)
│ │ ├── webauthn-rs-core v0.5.5 ()
│ │ └── webauthn-rs-proto v0.5.5 (
)
│ └── url v2.5.8 ()
├── synstructure v0.14.0
│ ├── yoke-derive v0.8.4
│ │ └── yoke v0.8.3
│ │ ├── icu_collections v2.3.0 (
)
│ │ ├── icu_provider v2.3.1 ()
│ │ ├── zerotrie v0.2.5 (
)
│ │ └── zerovec v0.11.8
│ │ ├── icu_collections v2.3.0 ()
│ │ ├── icu_locale_core v2.3.0 (
)
│ │ ├── icu_normalizer v2.3.0 ()
│ │ ├── icu_properties v2.3.0 (
)
│ │ ├── icu_provider v2.3.1 ()
│ │ ├── potential_utf v0.1.6
│ │ │ └── icu_collections v2.3.0 (
)
│ │ └── tinystr v0.8.4 ()
│ └── zerofrom-derive v0.1.8
│ └── zerofrom v0.1.8
│ ├── icu_collections v2.3.0 (
)
│ ├── icu_provider v2.3.1 ()
│ ├── yoke v0.8.3 (
)
│ ├── zerotrie v0.2.5 ()
│ └── zerovec v0.11.8 (
)
├── thiserror-impl v2.0.21
│ └── thiserror v2.0.21
│ ├── infraternal v0.1.0 ()
│ ├── infraternal-mesh v0.1.0 (
)
│ ├── infraternal-server v0.1.0 ()
│ ├── sqlx-core v0.8.6 (
)
│ ├── sqlx-sqlite v0.8.6 ()
│ └── tungstenite v0.29.0
│ └── tokio-tungstenite v0.29.0 (
)
├── tokio-macros v2.7.2
│ └── tokio v1.53.2
│ ├── axum v0.8.9 ()
│ ├── axum-server v0.8.0 (
)
│ ├── fs-err v3.3.2
│ │ └── axum-server v0.8.0 ()
│ ├── h2 v0.4.19
│ │ └── hyper v1.11.1
│ │ ├── axum v0.8.9 (
)
│ │ ├── axum-server v0.8.0 ()
│ │ └── hyper-util v0.1.21
│ │ ├── axum v0.8.9 (
)
│ │ └── axum-server v0.8.0 ()
│ ├── hyper v1.11.1 (
)
│ ├── hyper-util v0.1.21 ()
│ ├── infraternal v0.1.0 (
)
│ ├── infraternal-agent v0.1.0 ()
│ ├── infraternal-server v0.1.0 (
)
│ ├── sqlx-core v0.8.6 ()
│ ├── sqlx-macros-core v0.8.6 (
)
│ ├── tokio-openssl v0.6.5
│ │ └── axum-server v0.8.0 ()
│ ├── tokio-stream v0.1.19
│ │ └── sqlx-core v0.8.6 (
)
│ ├── tokio-tungstenite v0.29.0 ()
│ ├── tokio-util v0.7.19
│ │ ├── h2 v0.4.19 (
)
│ │ └── tower-http v0.6.11 ()
│ ├── tower v0.5.3 (
)
│ └── tower-http v0.6.11 ()
├── wasm-bindgen-macro-support v0.2.129
│ └── wasm-bindgen-macro v0.2.129
│ └── wasm-bindgen v0.2.129
│ ├── js-sys v0.3.106 (
)
│ ├── plotters v0.3.7 ()
│ └── web-sys v0.3.106 (
)
├── yoke-derive v0.8.4 ()
├── zerofrom-derive v0.1.8 (
)
└── zerovec-derive v0.11.6
└── zerovec v0.11.8 (*)

warning[duplicate]: found 2 duplicate entries for crate 'synstructure'
┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:229:1
│
229 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index
230 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index
│ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries
│
├ synstructure v0.13.2
└── asn1-rs-derive v0.5.1
└── asn1-rs v0.6.2
├── der-parser v9.0.0
│ ├── webauthn-rs-core v0.5.5
│ │ └── webauthn-rs v0.5.5
│ │ └── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ └── x509-parser v0.16.0
│ └── webauthn-rs-core v0.5.5 ()
├── oid-registry v0.7.1
│ └── x509-parser v0.16.0 (
)
└── x509-parser v0.16.0 ()
├ synstructure v0.14.0
├── yoke-derive v0.8.4
│ └── yoke v0.8.3
│ ├── icu_collections v2.3.0
│ │ ├── icu_normalizer v2.3.0
│ │ │ └── idna_adapter v1.2.2
│ │ │ └── idna v1.1.0
│ │ │ └── url v2.5.8
│ │ │ ├── infraternal-server v0.1.0
│ │ │ │ └── infraternal v0.1.0
│ │ │ ├── sqlx-core v0.8.6
│ │ │ │ ├── sqlx v0.8.6
│ │ │ │ │ ├── infraternal v0.1.0 (
)
│ │ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ │ ├── sqlx-macros v0.8.6
│ │ │ │ │ └── sqlx v0.8.6 (
)
│ │ │ │ ├── sqlx-macros-core v0.8.6
│ │ │ │ │ └── sqlx-macros v0.8.6 ()
│ │ │ │ └── sqlx-sqlite v0.8.6
│ │ │ │ ├── sqlx v0.8.6 (
)
│ │ │ │ └── sqlx-macros-core v0.8.6 ()
│ │ │ ├── sqlx-macros-core v0.8.6 (
)
│ │ │ ├── sqlx-sqlite v0.8.6 ()
│ │ │ ├── webauthn-rs v0.5.5
│ │ │ │ └── infraternal-server v0.1.0 (
)
│ │ │ ├── webauthn-rs-core v0.5.5
│ │ │ │ └── webauthn-rs v0.5.5 ()
│ │ │ └── webauthn-rs-proto v0.5.5
│ │ │ └── webauthn-rs-core v0.5.5 (
)
│ │ └── icu_properties v2.3.0
│ │ └── idna_adapter v1.2.2 ()
│ ├── icu_provider v2.3.1
│ │ ├── icu_normalizer v2.3.0 (
)
│ │ └── icu_properties v2.3.0 ()
│ ├── zerotrie v0.2.5
│ │ ├── icu_properties v2.3.0 (
)
│ │ └── icu_provider v2.3.1 ()
│ └── zerovec v0.11.8
│ ├── icu_collections v2.3.0 (
)
│ ├── icu_locale_core v2.3.0
│ │ ├── icu_properties v2.3.0 ()
│ │ └── icu_provider v2.3.1 (
)
│ ├── icu_normalizer v2.3.0 ()
│ ├── icu_properties v2.3.0 (
)
│ ├── icu_provider v2.3.1 ()
│ ├── potential_utf v0.1.6
│ │ └── icu_collections v2.3.0 (
)
│ └── tinystr v0.8.4
│ └── icu_locale_core v2.3.0 ()
└── zerofrom-derive v0.1.8
└── zerofrom v0.1.8
├── icu_collections v2.3.0 (
)
├── icu_provider v2.3.1 ()
├── yoke v0.8.3 (
)
├── zerotrie v0.2.5 ()
└── zerovec v0.11.8 (
)

warning[duplicate]: found 2 duplicate entries for crate 'thiserror'
┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:231:1
│
231 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index
232 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index
│ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
│
├ thiserror v1.0.69
├── asn1-rs v0.6.2
│ ├── der-parser v9.0.0
│ │ ├── webauthn-rs-core v0.5.5
│ │ │ └── webauthn-rs v0.5.5
│ │ │ └── infraternal-server v0.1.0
│ │ │ └── infraternal v0.1.0
│ │ └── x509-parser v0.16.0
│ │ └── webauthn-rs-core v0.5.5 ()
│ ├── oid-registry v0.7.1
│ │ └── x509-parser v0.16.0 (
)
│ └── x509-parser v0.16.0 ()
├── webauthn-rs-core v0.5.5 (
)
└── x509-parser v0.16.0 ()
├ thiserror v2.0.21
├── infraternal v0.1.0
├── infraternal-mesh v0.1.0
├── infraternal-server v0.1.0
│ └── infraternal v0.1.0 (
)
├── sqlx-core v0.8.6
│ ├── sqlx v0.8.6
│ │ ├── infraternal v0.1.0 ()
│ │ └── infraternal-server v0.1.0 (
)
│ ├── sqlx-macros v0.8.6
│ │ └── sqlx v0.8.6 ()
│ ├── sqlx-macros-core v0.8.6
│ │ └── sqlx-macros v0.8.6 (
)
│ └── sqlx-sqlite v0.8.6
│ ├── sqlx v0.8.6 ()
│ └── sqlx-macros-core v0.8.6 (
)
├── sqlx-sqlite v0.8.6 ()
└── tungstenite v0.29.0
└── tokio-tungstenite v0.29.0
├── axum v0.8.9
│ └── infraternal-server v0.1.0 (
)
└── (dev) infraternal-server v0.1.0 (*)

warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl'
┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:233:1
│
233 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index
234 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index
│ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries
│
├ thiserror-impl v1.0.69
└── thiserror v1.0.69
├── asn1-rs v0.6.2
│ ├── der-parser v9.0.0
│ │ ├── webauthn-rs-core v0.5.5
│ │ │ └── webauthn-rs v0.5.5
│ │ │ └── infraternal-server v0.1.0
│ │ │ └── infraternal v0.1.0
│ │ └── x509-parser v0.16.0
│ │ └── webauthn-rs-core v0.5.5 ()
│ ├── oid-registry v0.7.1
│ │ └── x509-parser v0.16.0 (
)
│ └── x509-parser v0.16.0 ()
├── webauthn-rs-core v0.5.5 (
)
└── x509-parser v0.16.0 ()
├ thiserror-impl v2.0.21
└── thiserror v2.0.21
├── infraternal v0.1.0
├── infraternal-mesh v0.1.0
├── infraternal-server v0.1.0
│ └── infraternal v0.1.0 (
)
├── sqlx-core v0.8.6
│ ├── sqlx v0.8.6
│ │ ├── infraternal v0.1.0 ()
│ │ └── infraternal-server v0.1.0 (
)
│ ├── sqlx-macros v0.8.6
│ │ └── sqlx v0.8.6 ()
│ ├── sqlx-macros-core v0.8.6
│ │ └── sqlx-macros v0.8.6 (
)
│ └── sqlx-sqlite v0.8.6
│ ├── sqlx v0.8.6 ()
│ └── sqlx-macros-core v0.8.6 (
)
├── sqlx-sqlite v0.8.6 ()
└── tungstenite v0.29.0
└── tokio-tungstenite v0.29.0
├── axum v0.8.9
│ └── infraternal-server v0.1.0 (
)
└── (dev) infraternal-server v0.1.0 (*)

advisories ok, bans ok, licenses ok, sources ok

==> static builds
Finished release profile [optimized] target(s) in 0.50s
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: 16273472 bytes (baseline 16142672 + allowance 262144 = max 16404816)
Finished release profile [optimized] target(s) in 0.54s
target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped
PT_INTERP: absent; size: 13697248 bytes (baseline 13555672 + allowance 262144 = max 13817816)
server subcommand: exit 2, not implemented
agent subcommand: exit 2, not implemented

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

==> Vendored Ghostty artifact checksums
dist/ghostty-web.js: OK
dist/ghostty-vt.wasm: OK
dist/index.d.ts: OK

==> TypeScript protocol compiler

==> Tracer compiler, precompression and bundle transfer budget
bun install v1.4.2 (744846f84)

Checked 38 installs across 69 packages (no changes) [8.00ms]
$ bun x tsc --project tsconfig.json
bun test v1.4.2 (744846f84)

browser-build.test.ts:
(pass) the browser renderer has no unresolved Vite Node-file shim request [26.58ms]

precompress.test.ts:
(pass) text sidecars round-trip deterministically; compressed formats remain identity [37.18ms]

test/recovery-ui.test.ts:
(pass) compiled recovery UI mode off obeys its URL boundary [7.24ms]
(pass) compiled recovery UI mode preview obeys its URL boundary [7.78ms]
(pass) compiled recovery UI mode 1 obeys its URL boundary [2.25ms]

test/recovery-crypto.test.ts:
(pass) HKDF siblings match independent implementation and bind unwrap to domain, account, kind and version [11.10ms]
(pass) 100 repeated wrapping operations generate independent salts and nonces [15.37ms]

test/recovery-wait.test.ts:
(pass) server remaining wait 0s is accepted through the capability policy maximum [2.70ms]
(pass) server remaining wait 86400s is accepted through the capability policy maximum [1.20ms]
(pass) server remaining wait 90000s is accepted through the capability policy maximum [0.72ms]
(pass) server remaining wait 172800s is accepted through the capability policy maximum [0.60ms]
(pass) malformed or excessive remaining wait -1 is denied [3.30ms]
(pass) malformed or excessive remaining wait 0.5 is denied [1.03ms]
(pass) malformed or excessive remaining wait 172801 is denied [0.80ms]
(pass) malformed or excessive remaining wait 9007199254740992 is denied [0.89ms]
(pass) malformed or excessive remaining wait 90000 is denied [0.82ms]

test/recovery-rotation.test.ts:
(pass) signed-in rotation sends only a local envelope and verifier after acknowledgement [5.17ms]
(pass) abandoned word acknowledgement uploads nothing [3.29ms]
(pass) settled acknowledgement cannot upload later (dismissed) [1.89ms]
(pass) settled acknowledgement cannot upload later (no acknowledgement) [3.43ms]

20 pass
0 fail
376 expect() calls
Ran 20 tests across 6 files. [199.00ms]
$ bun run build.ts
built main.js, chunk-662np71y.js, chunk-6nhq7gz1.js, backdrop.worker.js, faulty-terminal.worker.js, chunk-5tj2qqhm.js, chunk-bg6rq3gy.js, chunk-c5rac8af.js, chunk-axbkkqp1.js, chunk-vfj76sc9.js
chunk-662np71y.js: identity=8373 gzip=3573 brotli=3175 bytes
chunk-5tj2qqhm.js: identity=9807 gzip=4014 brotli=3449 bytes
faulty-terminal.worker.js: identity=1084 gzip=559 brotli=478 bytes
backdrop.worker.js: identity=241 gzip=210 brotli=158 bytes
chunk-axbkkqp1.js: identity=90 gzip=90 brotli=78 bytes
chunk-vfj76sc9.js: identity=711965 gzip=206535 brotli=167390 bytes
chunk-bg6rq3gy.js: identity=185 gzip=149 brotli=130 bytes
chunk-6nhq7gz1.js: identity=6464 gzip=3106 brotli=2807 bytes
main.js: identity=87507 gzip=32671 brotli=28434 bytes
chunk-c5rac8af.js: identity=24649 gzip=8391 brotli=7510 bytes
JavaScript transfer: identity=850365 gzip=259298/307200 brotli=213609/256000 bytes
fonts/MapleMonoNF-Italic.latin.woff2: identity=37148 gzip=37148 brotli=37148 bytes
fonts/MapleMonoNF-Medium.latin.woff2: identity=33904 gzip=33904 brotli=33904 bytes
fonts/MapleMonoNF-Regular.latin.woff2: identity=32852 gzip=32852 brotli=32852 bytes
fonts/MapleMonoNF-SemiBold.latin.woff2: identity=34160 gzip=34160 brotli=34160 bytes
fonts/MapleMonoNF-SemiBoldItalic.latin.woff2: identity=38228 gzip=38228 brotli=38228 bytes
fonts/MapleMonoNF-symbols.woff2: identity=223748 gzip=223748 brotli=223748 bytes
Font transfer: critical=32852/36864 latin=176292/184320 symbols=223748/235520 bytes

==> Rust stream oracle (for the differential test)

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

src/codec.test.ts:
(pass) wire protocol golden vectors > encodes and decodes each frame exactly as the shared manifest describes [29.79ms]
(pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.26ms]
(pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [1.09ms]
(pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.28ms]
(pass) split mux header preserves trailing Close [0.52ms]

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

7 pass
0 fail
40810 expect() calls
Ran 7 tests across 2 files. [4.54s]

Finished on branch `session-life`, HEAD `4d6f98c9dd772346272239960ba3e7852e4a2bbf`. `git diff --check f27b3fe..HEAD` passed and the worktree is clean. The fast gate passed on this exact commit. Earlier latency results and the final performance measurements are recorded in the preceding comments; `scripts/verify latency` remains red as documented. Verbatim `scripts/verify fast` stdout (exit 0): METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=302.02 p99_ms=304.16 result=PASS ==> fmt ==> VT native fmt ==> clippy Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.54s ==> test Finished `test` profile [unoptimized + debuginfo] target(s) in 0.44s Running unittests src/main.rs (target/debug/deps/infraternal-2c06fb1e08b40f8f) running 2 tests test install::tests::dry_run_prints_a_process_surviving_user_unit ... ok test setup_token_tests::setup_token_command_reads_only_the_expected_socket_response ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/agent_daemon.rs (target/debug/deps/agent_daemon-e5ef77258cbf600a) running 1 test test real_binary_preserves_input_and_output_across_24_abrupt_stops ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 39.62s Running tests/agent_queues.rs (target/debug/deps/agent_queues-57c449079990d909) running 1 test test saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 34.84s Running tests/agent_review.rs (target/debug/deps/agent_review-f08a739d87080819) running 6 tests test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok test last_typist_selects_its_own_real_pty_dimensions ... ok test initial_attach_requires_explicit_credit_before_replay ... ok test retained_unwritten_input_survives_interleaved_ack_restart ... ok test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok test repeated_tiny_credit_pauses_preserve_shell_progress ... ok test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.37s Running tests/agent_sessions.rs (target/debug/deps/agent_sessions-dac341911fe4ca5b) running 1 test test detached_shim_is_discovered_and_replays_from_the_last_observed_offset ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s Running tests/idle_canary.rs (target/debug/deps/idle_canary-9930563708e7154e) running 1 test test one_hertz_wakeup_is_detected_past_the_legacy_half_second_window ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.14s Running tests/shim.rs (target/debug/deps/shim-282e2bf3b629b4b1) running 7 tests test double_fork_survives_parent_death ... ok test disallowed_signal_only_disconnects_peer ... ok test replacement_connection_and_malformed_limit ... ok active test user_scope_survives_parent_unit_stop ... ok test real_shell_reconnect_resize_and_retained_exit ... ok test attached_backpressure_and_detached_progress ... ok test ring_wrap_snapshot_repaints_real_vim ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.31s Running tests/vt_credit.rs (target/debug/deps/vt_credit-bb3623465253747d) running 1 test test unaffordable_repaints_park_until_sufficient_credit ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 11.66s Running tests/vt_reconnect.rs (target/debug/deps/vt_reconnect-d5a72f7c3162f374) running 1 test test snapshot_limits_never_close_live_reconnect ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 16.39s Running unittests src/lib.rs (target/debug/deps/infraternal_agent-396a49ee47a2dca8) running 29 tests test daemon::name_refresh_tests::cached_process_metadata_does_not_refresh_before_the_scan_deadline ... ok test daemon::output_event_tests::high_volume_output_waits_for_the_notice_interval ... ok test lifecycle::tests::fallback_prompt_ignores_color_sequences ... ok test daemon::command_finished_delivery_tests::command_completion_waits_for_writer_capacity ... ok test lifecycle::tests::command_marker_keeps_echoed_input_and_decodes_shell_payload ... ok test lifecycle::tests::fallback_tracks_echoed_command_until_prompt_returns ... ok test lifecycle::tests::markers_survive_chunk_boundaries_and_percent_encoded_cwd ... ok test lifecycle::tests::replayed_prompt_marker_is_ready_for_one_shot_command_injection ... ok test lifecycle::tests::malformed_and_oversized_sequences_remain_bounded ... ok test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok test relay::tests::output_partial_credit_and_dedup ... ok test lifecycle::tests::process_command_capture_stays_within_its_byte_limit ... ok test lifecycle::tests::overlong_command_captures_are_not_replayed_as_prefixes ... ok test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement test relay::tests::overflowing_ranges_never_mutate_cursors ... ok test relay::tests::attachment_has_no_implicit_output_or_snapshot_credit ... ok test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... ok test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement test relay::tests::positive_insufficient_credit_arms_a_one_shot_deadline ... ok test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok test sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... ok test lifecycle::tests::ordinary_output_does_not_rescan_prompt_suffixes_per_byte ... ok test sessions::tests::sequenced_attach_intersects_caps_and_legacy_attach_stays_zero ... ok test relay::tests::expired_credit_resumes_retained_bytes_at_the_same_cursor ... ok test daemon::output_tail_tests::retains_exact_tail_across_wrap_and_oversized_write ... ok test sessions::tests::borrowed_reader_payload_uses_reusable_cancel_safe_storage ... ok test sessions::tests::post_listen_chmod_wakes_a_connection_refused_at_bind ... ok test sessions::tests::cancelled_fragmented_shim_read_retains_header_and_body_progress ... ok test result: ok. 27 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s Running tests/transport.rs (target/debug/deps/transport-ef669c6e5837f1df) running 2 tests test oversized_header_and_truncated_frame_are_rejected ... ok test fragmented_headers_coalesced_frames_and_reusable_transmit ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (target/debug/deps/infraternal_mesh-3f967587718407e9) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/default_arrow.rs (target/debug/deps/default_arrow-312553ba19630584) running 1 test test omitted_arrow_ports_default_to_all_services ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/properties.rs (target/debug/deps/properties-78f35bbe1b57dcd5) running 14 tests test overlaps_are_reported_without_silent_range_changes ... ok test join_to_same_tag_grants_both_initiation_directions ... ok test directional_grants_union_and_minimal_updates ... ok test exhausted_versions_reject_mutations_without_changing_state ... ok test names_versions_and_backend_status ... ok test arrow_replacement_is_atomic_and_unrelated_nodes_keep_their_versions ... ok test checkpoint_after_suffix_change_restores_without_reallocating_addresses ... ok test private_material_never_enters_debug_or_coordination_serialization ... ok test server_rotation_has_continuous_keys_for_every_node_during_delivery ... ok test rotation_waits_for_overlap_and_delivery_and_removal_drops_every_key ... ok test public_checkpoint_preserves_addresses_rules_versions_and_overlap ... ok test protocol_port_unions_never_grant_an_unlisted_service ... ok test addresses_are_unique_stable_and_not_recycled ... ok test seeded_random_sequences_equal_full_compile_and_deny_without_grants ... ok test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.16s Running tests/rotation_time.rs (target/debug/deps/rotation_time-a58dd287253d611d) running 1 test test unrepresentable_rotation_overlap_rejects_before_mutation ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (target/debug/deps/infraternal_plugin_api-4480fd7032f11ca2) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (target/debug/deps/infraternal_plugin_ssh-22a9a893799c7f17) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (target/debug/deps/infraternal_protocol-67b9a310ef49abf9) running 7 tests test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok test tests::oversized_encode_keeps_the_reusable_output_unchanged ... ok test stream_tests::split_mux_header_preserves_trailing_close ... ok test stream_tests::all_short_frame_splits_match_direct_decoding ... ok test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (target/debug/deps/infraternal_server-7b0058424c5209fd) running 117 tests test auth::tests::aaguid_projection_rejects_malformed_cbor_corpus ... ok test auth::tests::account_identity_migration_backfills_legacy_users ... ok test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok test auth::http::hostname_tests::authenticated_session_response_includes_system_hostname ... ok test auth::tests::account_identity_schema_has_unique_usernames_and_display_names ... ok test auth::tests::aaguid_migration_preserves_legacy_credentials_and_sessions ... ok test auth::crypto::verifier_tests::recovery_capacity_denial_is_not_a_legacy_credential_signal ... ok test auth::crypto::verifier_tests::browser_secret_hashing_is_canonical_and_bounded ... ok test auth::tests::audit_ceremony_browser_binding ... ok test auth::tests::audit_logout_survives_admission_exhaustion ... ok test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds test auth::tests::audit_no_public_credential_listing ... ok test auth::tests::audit_recovery_after_page_discard_can_resume_at_original_deadline ... ok test auth::tests::audit_recovery_pending_is_visible_to_signed_in_device ... ok test auth::tests::audit_recovery_session_expiring_during_verification_keeps_delay ... ok test auth::tests::provider_labels_cover_the_cited_registry_without_guessing ... ok test auth::tests::provider_session_latency_at_50_devices ... ignored, local auth session scale measurement; run without concurrent builds test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok test auth::tests::enrollment_prf_input_matches_discoverable_login ... ok test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok test auth::tests::pending_unlock_expires_without_terminal_authority ... ok test auth::tests::public_status_and_discoverable_http_login ... ok test auth::tests::recovery_session_delay_latency_at_capacity ... ignored, release-only recovery measurement at 50 live sessions; run without concurrent compilation test auth::tests::recovery_audit_commits_once_with_start_cancel_and_complete ... ok test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok test auth::tests::recovery_verifier_latency_at_capacity ... ignored, release-only v2 diagnostic at 50 live session rows; record host load separately test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok test auth::tests::recovery_http_live_same_account_is_immediate ... ok test auth::tests::recovery_http_other_expired_pending_and_missing_sessions_wait ... ok test auth::tests::recovery_live_session_cannot_accelerate_an_active_delayed_request ... ok test auth::tests::recovery_live_session_revoked_during_verification_cannot_waive_delay ... ok test auth::tests::recovery_unknown_identity_pays_the_same_database_and_verifier_work ... ok test auth::tests::recovery_username_identity_is_additive_and_ambiguous_forms_fail ... ok test auth::tests::redacted_unknown_and_failed_registrations_do_not_claim_a_provider ... ok test auth::tests::registration_aaguid_survives_none_attestation_and_binds_session_provider ... ok test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok test auth::tests::review3_tests::review3_backend_reply_has_a_deadline ... ok test auth::tests::review3_tests::review3_busy_expiry ... ok test auth::tests::review3_tests::review3_busy_logout ... ok test auth::tests::review3_tests::review3_busy_recovery ... ok test auth::tests::review3_tests::review3_completion_and_cleanup_are_transaction_bound ... ok test auth::tests::review3_tests::review3_expired_handshake_must_not_welcome ... ok test auth::tests::review3_tests::review4_slow_open_at_user_capacity ... ignored, release-only connect scale measurement; run without concurrent builds test auth::tests::review3_tests::review3_identified_privacy_timing_and_binding_replays ... ok test auth::tests::review3_tests::review3_pending_routes_and_idle_expiry_recovery ... ok test auth::tests::review3_tests::review3_revoked_handshake_must_not_welcome ... ok test auth::tests::review3_tests::review3_revoked_resume_must_not_welcome ... ok test auth::tests::review3_tests::review3_unwrap_cannot_be_skipped ... ok test auth::tests::review3_tests::review3_waiting_handshake_loses_authority ... ok test auth::tests::review3_tests::review4_open_reply_and_revocation_preserve_authority ... ok test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok test auth::tests::review_old_words_race_rotation ... ok test auth::tests::reviewer_tests::reviewer_disk_cancel_complete_races ... ok test auth::tests::reviewer_tests::reviewer_disk_restart_and_concurrent_resume ... ok test auth::tests::reviewer_tests::reviewer_http_denials_and_recovery_admission ... ok test auth::tests::reviewer_tests::reviewer_http_expired_capability_cannot_complete_after_writer_wait ... ok test auth::tests::reviewer_tests::reviewer_http_expired_ceremony_cannot_complete_after_writer_wait ... ok test auth::tests::reviewer_tests::reviewer_server_clock_rollback_retains_deadline_and_reports_more_than_day ... ok test auth::tests::setup_check_is_non_consuming_and_closes_after_owner_creation ... ok test auth::tests::setup_identity_validation_and_uniqueness ... ok test auth::tests::rotation_tests::recovery_phrase_routes_are_removed_and_words_fail_closed ... ok test auth::tests::rotation_tests::recovery_rotation_cannot_follow_a_cookie_account_switch ... ok test auth::tests::setup_start_accepts_username_and_display_name ... ok test auth::tests::rotation_tests::recovery_rotation_denies_pending_expired_and_stale_sessions ... ok test auth::tests::rotation_tests::recovery_rotation_requires_session_and_replaces_legacy_envelope ... ok test auth::tests::rotation_tests::reviewer_concurrent_signed_in_rotations_commit_once ... ok test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok test auth::tests::socket_tests::authenticated_idle_socket_survives_the_former_read_timeout ... ok test auth::tests::socket_tests::socket_authority_latency_at_user_capacity ... ignored, release-only measurement without concurrent compilation test auth::tests::socket_tests::clean_control_close_is_not_an_internal_error ... ok test embedded::regressions::credited_bulk_output_survives_forwarder_io_pause ... ok test embedded::regressions::credited_output_queue_at_stream_capacity ... ignored, debug actor memory/scheduling measurement; run without concurrent builds test embedded::regressions::full_output_queue_must_not_block_shared_actor ... ok test embedded::regressions::healthy_receiver_survives_ready_native_output_burst ... ok test embedded::regressions::healthy_streams_progress_at_user_attachment_capacity ... ok test embedded::regressions::output_and_snapshot_spend_remaining_restart_credit ... ok test embedded::regressions::real_agent_canonical_uuid_result_is_accepted ... ok test embedded::regressions::real_agent_open_uses_uid_and_character_dimensions ... ok test embedded::regressions::reattach_must_restore_output_credit ... ok test embedded::regressions::recovery_event_then_snapshot_keeps_embedded_connection_live ... ok test embedded::regressions::recovery_notices_preserve_order_credit_and_session_isolation ... ok test embedded::regressions::stream_close_must_not_restart_all_sessions ... ok test embedded::regressions::uncredited_output_or_repaint_is_rejected_before_queueing ... ok test lifecycle::tests::automatic_rename_updates_cwd_but_respects_a_pinned_name ... ok test lifecycle::tests::cleanup_deadline_tracks_exit_and_dismissal_without_periodic_polling ... ok test lifecycle::tests::exit_cursor_marks_unseen_output_when_the_last_notice_was_dropped ... ok test lifecycle::tests::exit_is_bounded_owned_dismissed_and_not_resurrected ... ok test lifecycle::tests::foreign_or_oversized_exit_is_rejected ... ok test lifecycle::tests::output_activity_clears_only_after_the_seen_cursor_catches_up ... ok test lifecycle::tests::purge_uses_seven_day_millisecond_deadline ... ok test lifecycle::tests::retained_exit_quota_caps_account_storage_at_128_records ... ok test runtime::reviewer_admission::reviewer_recovery_source_limit_covers_all_routes_without_forwarding_bypass ... ok test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok test runtime::tests::router_migrates_private_storage_and_serves_health ... ok test runtime::tests::setup_socket_cleanup_preserves_symlinks_and_regular_files ... ok test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok test runtime::tests::startup_with_owner_unlinks_stale_setup_token_socket ... ok test web_assets::tests::encodings_and_identity_have_correct_headers_and_sizes ... ok test web_assets::tests::spa_and_mutable_assets_revalidate_and_missing_brotli_uses_gzip ... ok test websocket::recovery_notification_bench::recovery_notification_state_at_socket_capacity ... ignored, notification state sizing diagnostic, not allocator-inclusive RSS certification test websocket::writer_tests::second_device_does_not_inherit_first_device_input_ack ... ok test websocket::writer_tests::writer_admission_at_user_capacity ... ignored, release-only scale measurement; run without concurrent builds test websocket::writer_tests::writer_ownership_capacity_unsigned_offsets_and_identity_reuse ... ok test auth::tests::socket_tests::expired_handshake_releases_user_permits ... ok test auth::tests::socket_tests::fragmented_wire_frame_has_a_completion_deadline ... ok test auth::tests::socket_tests::half_open_sockets_obey_user_limit ... ok test auth::tests::socket_tests::incomplete_rfc_message_still_loses_authority_on_revocation ... ok test auth::tests::socket_tests::recovery_subscription_updates_every_signed_in_socket ... ok test auth::tests::socket_tests::revoked_idle_socket_loses_all_authority ... ok test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test result: ok. 108 passed; 0 failed; 9 ignored; 0 measured; 0 filtered out; finished in 154.36s Running unittests src/lib.rs (target/debug/deps/infraternal_shim-67ffc9c8d51fcf5c) running 76 tests test frame::checks::codec_reuse_measurement ... ignored, release codec and allocation-path measurement test frame::checks::golden::every_frozen_message ... ok test frame::checks::tests::golden_and_fragmented ... ok test ring::checks::tests::wrap_and_exact_offsets ... ok test frame::checks::tests::invalid_lengths_types_and_utf8 ... ok test session::inputs::tests::identity_cap_preserves_all_existing_cursors ... ok test frame::checks::approximate_snapshot_codec_is_bounded_and_canonical ... ok test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile test session::measurements::poll_storage_measurement ... ignored, release poll-storage allocation measurement test session::inputs::tests::partial_writes_credit_only_the_owner_and_replay_trims_per_writer ... ok test frame::checks::borrowed_and_owned_decoders_agree_at_every_fragment_boundary ... ok test session::resize_checks::resize_refusal_session_probe ... ignored, isolated session probe invoked by its parent with a controlled shell profile test session::sequenced_checks::coalesced_ack_never_overwrites_a_partial_output_and_cursors_survive_peer_loss ... ok test session::sequenced_checks::new_frames_roundtrip_and_refuse_noncanonical_payloads ... ok test session::sequenced_checks::reusable_encoder_retains_capacity_and_refuses_growth_before_mutation ... ok test session::sequenced_checks::trim_duplicates_gaps_overflow_and_capacity_are_transactional ... ok test session::sequenced_checks::writer_selection_has_a_frozen_little_endian_layout ... ok test shell::tests::shell_hooks_append_after_user_configuration ... ok test frame::checks::golden::exact_maximum_and_coalesced_frames ... ok test session::lifecycle_checks::expired_raw_tail_is_refused_without_snapshot_substitution ... ok test terminal::checks::tests::implicit_hyperlinks_retain_groups_across_rows_and_continuation ... ok test terminal::checks::tests::fixtures_and_continuations_repaint ... ok test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok test terminal::checks::tests::margins_tabs_charsets_and_modes_continue ... ok test terminal::checks::tests::long_unfinished_hyperlink_and_control_strings_continue ... ok test terminal::checks::tests::retained_alternate_saved_cursor_and_keyboard_stack_continue ... ok test terminal::checks::tests::partial_csi_and_utf8_continue ... ok test terminal::checks::tests::pending_wrap_and_saved_wrap_continue_with_wide_cells ... ok test terminal::fidelity::fidelity_charset_mapped_wide_space_is_explicitly_rejected ... ok test terminal::checks::tests::byte_budget_prunes_history_and_resize_remains_repaintable ... ok test terminal::fidelity::fidelity_diagnostic_fixture ... ignored, diagnostic replay of an explicitly selected fixture file test terminal::checks::tests::saved_origin_survives_changed_margins ... ok test terminal::fidelity::fidelity_extended_nightly ... ignored, nightly expanded differential corpus: 20,000 deterministic cases test session::resize_checks::native_resize_refusal_preserves_peer_and_pty ... ok test terminal::fidelity::fidelity_cursor ... ok test terminal::fidelity::fidelity_fresh_c_redraw_default_is_explicitly_rejected ... ok test terminal::checks::tests::unfinished_sequence_over_frame_limit_fails_without_losing_runtime_state ... ok test terminal::fidelity::fidelity_inherited_protection_off_mode_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_edge ... ok test terminal::fidelity::fidelity_f1_rep ... ok test terminal::fidelity::fidelity_iso_protection_erase ... ok test terminal::checks::approximate_repaint_keeps_complete_pending_syntax_or_omits_it_whole ... ok test terminal::fidelity::fidelity_oracle_observes_archived_cells_with_equal_active_screens ... ok test terminal::fidelity::fidelity_orphaned_spacer_head ... ok test terminal::fidelity::fidelity_prompt_resize_requires_explicit_rejection ... ok test shell::tests::installed_shells_load_the_additive_hooks ... ok test terminal::fidelity::fidelity_oracle_detects_hidden_state ... ok test terminal::fidelity::fidelity_iso_protection_does_not_keep_rep_scratch ... ok test terminal::fidelity::fidelity_saved_modes_future_restore ... ok test terminal::fidelity::fidelity_rejects_unrepresentable_rep_without_mutating_source ... ok test terminal::fidelity::fidelity_seeded_nightly ... ignored, nightly differential corpus: 20,000 deterministic cases test terminal::fidelity::fidelity_saved_cursor_over_changed_edge ... ok test terminal::checks::approximate_repaint_is_bounded_clips_at_complete_cells_and_preserves_source ... ok test terminal::fidelity::fidelity_single_shift_survives_rep_seed ... ok test terminal::fidelity::fidelity_snapshot_history_tail_contains_no_padding_rows ... ok test terminal::fidelity::fidelity_snapshot_resets_stale_viewer_color_overrides ... ok test terminal::fidelity::fidelity_semantic_validation_matches_exported_history_extent ... ok test terminal::fidelity::fidelity_screen_entry_consumes_inherited_shift_before_saving ... ok test terminal::fidelity::fidelity_variation_tail_attributes ... ok test terminal::fidelity::fresh_captures::fidelity_fresh_real_program_captures ... ignored, manual fresh capture oracle; set VT_CAPTURE_DIR after real program capture test terminal::measurements::budgets::snapshot_200x60 ... ignored, performance measurement; run release on the perf host test terminal::measurements::memory::measured_terminal_rss ... ignored, RSS measurement; run this filter alone in a fresh release process test terminal::measurements::throughput::measured_parser ... ignored, VT observer and history throughput measurement test terminal::recovery_measurements::measured_full_ring_reconstruction ... ignored, release reconstruction measurement; old healthy handles permit repeated cleanup test terminal::resize_recovery::absent_ring_keeps_last_good_size_and_later_output_usable ... ok test terminal::fidelity::fidelity_spacer_head_attributes ... ok test terminal::resize_recovery::earlier_geometry_changes_require_approximation_even_with_origin_coverage ... ok test terminal::resize_recovery::complete_ring_restores_screens_mouse_and_unfinished_syntax ... ok test terminal_native::allocation::resize_allocation_refusal_retires_native_handle ... ok test terminal::resize_recovery::ring_gap_requires_clean_approximate_recovery ... ok test terminal::fidelity::fidelity_variation_wrap_attributes ... ok test terminal::fidelity::fidelity_mouse_effective_fields_follow_order_independently_of_booleans ... ok test terminal::fidelity::fidelity_recorded_corpus ... ok test terminal::fidelity::fidelity_handwritten ... ok test terminal::fidelity::fidelity_extended_smoke ... ok test terminal::fidelity::fidelity_seeded_smoke ... ok test result: ok. 64 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 57.77s Running tests/detach.rs (target/debug/deps/detach-c502cd554fb112ce) running 1 test test closed_standard_descriptors_become_dev_null ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.94s Running tests/mouse.rs (target/debug/deps/mouse-523bfdef43cc46cb) running 1 test test faithful_snapshot_preserves_public_mouse_encoder_reports ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s Doc-tests infraternal_agent running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests infraternal_mesh running 1 test test crates/infraternal-mesh/src/model.rs - model::LocalPrivateKey (line 20) - compile fail ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s Doc-tests infraternal_plugin_api running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests infraternal_plugin_ssh running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests infraternal_protocol running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests infraternal_server running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests infraternal_shim running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ==> cargo-deny warning[duplicate]: found 2 duplicate entries for crate 'base64' ┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:24:1 │ 24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────┘ lock entries │ ├ base64 v0.21.7 ├── base64urlsafedata v0.5.5 │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── webauthn-rs v0.5.5 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-proto v0.5.5 │ └── webauthn-rs-core v0.5.5 (*) ├── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-proto v0.5.5 (*) ├ base64 v0.22.1 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── infraternal-server v0.1.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 3 duplicate entries for crate 'getrandom' ┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:88:1 │ 88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ getrandom v0.2.17 └── rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-agent v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) ├── webauthn-attestation-ca v0.5.5 (*) ├── webauthn-rs v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'hashbrown' ┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:94:1 │ 94 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 95 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ hashbrown v0.15.5 ├── hashlink v0.10.0 │ └── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) └── sqlx-core v0.8.6 (*) ├ hashbrown v0.17.1 └── indexmap v2.14.2 ├── h2 v0.4.19 │ └── hyper v1.11.1 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ └── hyper-util v0.1.21 │ ├── axum v0.8.9 (*) │ └── axum-server v0.8.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 2 duplicate entries for crate 'r-efi' ┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:183:1 │ 183 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 184 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────┘ lock entries │ ├ r-efi v5.3.0 └── getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ r-efi v6.0.0 └── getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-agent v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) ├── webauthn-attestation-ca v0.5.5 (*) ├── webauthn-rs v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand' ┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:185:1 │ 185 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index 186 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand v0.9.5 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ └── (dev) infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 └── webauthn-rs v0.5.5 └── infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_chacha' ┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:187:1 │ 187 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 188 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_chacha v0.3.1 └── rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_core' ┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:189:1 │ 189 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 190 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'syn' ┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:226:1 │ 226 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 227 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────┘ lock entries │ ├ syn v2.0.119 ├── asn1-rs-derive v0.5.1 │ └── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── asn1-rs-impl v0.2.0 │ └── asn1-rs v0.6.2 (*) ├── openssl-macros v0.1.1 │ └── openssl v0.10.81 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) ├── synstructure v0.13.2 │ └── asn1-rs-derive v0.5.1 (*) ├── thiserror-impl v1.0.69 │ └── thiserror v1.0.69 │ ├── asn1-rs v0.6.2 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── x509-parser v0.16.0 (*) ├── tracing-attributes v0.1.31 │ └── tracing v0.1.44 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-core v0.5.6 │ │ └── axum v0.8.9 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ ├── sqlx-macros v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tracing-subscriber v0.3.23 │ │ └── infraternal-server v0.1.0 (*) │ ├── webauthn-attestation-ca v0.5.5 (*) │ ├── webauthn-rs v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) └── zerocopy-derive v0.8.60 └── zerocopy v0.8.60 ├── half v2.7.1 │ ├── ciborium-ll v0.2.2 │ │ └── ciborium v0.2.2 │ │ └── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-agent v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 (*) │ └── serde_cbor_2 v0.13.0 │ ├── infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── ppv-lite86 v0.2.21 ├── rand_chacha v0.3.1 │ └── rand v0.8.8 │ └── bip39 v2.2.2 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 (*) │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ syn v3.0.6 ├── clap_derive v4.6.7 │ └── clap v4.6.7 │ ├── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-agent v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ └── infraternal v0.1.0 (*) ├── displaydoc v0.2.7 │ ├── asn1-rs v0.6.2 │ │ ├── der-parser v9.0.0 │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── x509-parser v0.16.0 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── oid-registry v0.7.1 │ │ │ └── x509-parser v0.16.0 (*) │ │ └── x509-parser v0.16.0 (*) │ ├── der-parser v9.0.0 (*) │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── tinystr v0.8.4 │ │ └── icu_locale_core v2.3.0 (*) │ └── zerotrie v0.2.5 │ ├── icu_properties v2.3.0 (*) │ └── icu_provider v2.3.1 (*) ├── futures-macro v0.3.34 │ └── futures-util v0.3.34 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── futures-executor v0.3.34 │ │ └── sqlx-sqlite v0.8.6 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── js-sys v0.3.106 │ │ └── web-sys v0.3.106 │ │ └── plotters v0.3.7 │ │ └── criterion v0.7.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 │ └── infraternal-server v0.1.0 (*) ├── serde_derive v1.0.229 │ ├── serde v1.0.229 │ │ ├── base64urlsafedata v0.5.5 │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 (*) │ │ ├── bip39 v2.2.2 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── ciborium v0.2.2 │ │ │ └── criterion v0.7.0 (*) │ │ ├── criterion v0.7.0 (*) │ │ ├── either v1.18.0 │ │ │ ├── axum-server v0.8.0 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── itertools v0.13.0 │ │ │ │ ├── criterion v0.7.0 (*) │ │ │ │ └── criterion-plot v0.6.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── rayon v1.12.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── sqlx-core v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ ├── infraternal-agent v0.1.0 (*) │ │ ├── infraternal-mesh v0.1.0 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── serde_cbor_2 v0.13.0 │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── serde_urlencoded v0.7.1 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── sqlx-sqlite v0.8.6 (*) │ │ ├── sqlx-core v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ ├── tinytemplate v1.2.1 │ │ │ └── criterion v0.7.0 (*) │ │ ├── tracing-serde v0.2.0 │ │ │ └── tracing-subscriber v0.3.23 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── tracing-subscriber v0.3.23 (*) │ │ ├── url v2.5.8 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ ├── webauthn-rs v0.5.5 (*) │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ └── webauthn-rs-proto v0.5.5 (*) │ └── url v2.5.8 (*) ├── synstructure v0.14.0 │ ├── yoke-derive v0.8.4 │ │ └── yoke v0.8.3 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── zerotrie v0.2.5 (*) │ │ └── zerovec v0.11.8 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_locale_core v2.3.0 (*) │ │ ├── icu_normalizer v2.3.0 (*) │ │ ├── icu_properties v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── potential_utf v0.1.6 │ │ │ └── icu_collections v2.3.0 (*) │ │ └── tinystr v0.8.4 (*) │ └── zerofrom-derive v0.1.8 │ └── zerofrom v0.1.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── yoke v0.8.3 (*) │ ├── zerotrie v0.2.5 (*) │ └── zerovec v0.11.8 (*) ├── thiserror-impl v2.0.21 │ └── thiserror v2.0.21 │ ├── infraternal v0.1.0 (*) │ ├── infraternal-mesh v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ └── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 (*) ├── tokio-macros v2.7.2 │ └── tokio v1.53.2 │ ├── axum v0.8.9 (*) │ ├── axum-server v0.8.0 (*) │ ├── fs-err v3.3.2 │ │ └── axum-server v0.8.0 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── hyper v1.11.1 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-agent v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 (*) │ ├── tower v0.5.3 (*) │ └── tower-http v0.6.11 (*) ├── wasm-bindgen-macro-support v0.2.129 │ └── wasm-bindgen-macro v0.2.129 │ └── wasm-bindgen v0.2.129 │ ├── js-sys v0.3.106 (*) │ ├── plotters v0.3.7 (*) │ └── web-sys v0.3.106 (*) ├── yoke-derive v0.8.4 (*) ├── zerofrom-derive v0.1.8 (*) └── zerovec-derive v0.11.6 └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'synstructure' ┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:229:1 │ 229 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 230 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ synstructure v0.13.2 └── asn1-rs-derive v0.5.1 └── asn1-rs v0.6.2 ├── der-parser v9.0.0 │ ├── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── x509-parser v0.16.0 │ └── webauthn-rs-core v0.5.5 (*) ├── oid-registry v0.7.1 │ └── x509-parser v0.16.0 (*) └── x509-parser v0.16.0 (*) ├ synstructure v0.14.0 ├── yoke-derive v0.8.4 │ └── yoke v0.8.3 │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 │ │ │ │ └── infraternal v0.1.0 │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── zerotrie v0.2.5 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ └── zerovec v0.11.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ ├── icu_normalizer v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── potential_utf v0.1.6 │ │ └── icu_collections v2.3.0 (*) │ └── tinystr v0.8.4 │ └── icu_locale_core v2.3.0 (*) └── zerofrom-derive v0.1.8 └── zerofrom v0.1.8 ├── icu_collections v2.3.0 (*) ├── icu_provider v2.3.1 (*) ├── yoke v0.8.3 (*) ├── zerotrie v0.2.5 (*) └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror' ┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:231:1 │ 231 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 232 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-mesh v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl' ┌─ /home/kayg/Developer/infraternal/.worktrees/session-life/Cargo.lock:233:1 │ 233 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 234 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror-impl v1.0.69 └── thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror-impl v2.0.21 └── thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-mesh v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) advisories ok, bans ok, licenses ok, sources ok ==> static builds Finished `release` profile [optimized] target(s) in 0.50s 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: 16273472 bytes (baseline 16142672 + allowance 262144 = max 16404816) Finished `release` profile [optimized] target(s) in 0.54s target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 13697248 bytes (baseline 13555672 + allowance 262144 = max 13817816) server subcommand: exit 2, not implemented agent subcommand: exit 2, not implemented +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ==> Vendored Ghostty artifact checksums dist/ghostty-web.js: OK dist/ghostty-vt.wasm: OK dist/index.d.ts: OK ==> TypeScript protocol compiler ==> Tracer compiler, precompression and bundle transfer budget bun install v1.4.2 (744846f84) Checked 38 installs across 69 packages (no changes) [8.00ms] $ bun x tsc --project tsconfig.json bun test v1.4.2 (744846f84) browser-build.test.ts: (pass) the browser renderer has no unresolved Vite Node-file shim request [26.58ms] precompress.test.ts: (pass) text sidecars round-trip deterministically; compressed formats remain identity [37.18ms] test/recovery-ui.test.ts: (pass) compiled recovery UI mode off obeys its URL boundary [7.24ms] (pass) compiled recovery UI mode preview obeys its URL boundary [7.78ms] (pass) compiled recovery UI mode 1 obeys its URL boundary [2.25ms] test/recovery-crypto.test.ts: (pass) HKDF siblings match independent implementation and bind unwrap to domain, account, kind and version [11.10ms] (pass) 100 repeated wrapping operations generate independent salts and nonces [15.37ms] test/recovery-wait.test.ts: (pass) server remaining wait 0s is accepted through the capability policy maximum [2.70ms] (pass) server remaining wait 86400s is accepted through the capability policy maximum [1.20ms] (pass) server remaining wait 90000s is accepted through the capability policy maximum [0.72ms] (pass) server remaining wait 172800s is accepted through the capability policy maximum [0.60ms] (pass) malformed or excessive remaining wait -1 is denied [3.30ms] (pass) malformed or excessive remaining wait 0.5 is denied [1.03ms] (pass) malformed or excessive remaining wait 172801 is denied [0.80ms] (pass) malformed or excessive remaining wait 9007199254740992 is denied [0.89ms] (pass) malformed or excessive remaining wait 90000 is denied [0.82ms] test/recovery-rotation.test.ts: (pass) signed-in rotation sends only a local envelope and verifier after acknowledgement [5.17ms] (pass) abandoned word acknowledgement uploads nothing [3.29ms] (pass) settled acknowledgement cannot upload later (dismissed) [1.89ms] (pass) settled acknowledgement cannot upload later (no acknowledgement) [3.43ms] 20 pass 0 fail 376 expect() calls Ran 20 tests across 6 files. [199.00ms] $ bun run build.ts built main.js, chunk-662np71y.js, chunk-6nhq7gz1.js, backdrop.worker.js, faulty-terminal.worker.js, chunk-5tj2qqhm.js, chunk-bg6rq3gy.js, chunk-c5rac8af.js, chunk-axbkkqp1.js, chunk-vfj76sc9.js chunk-662np71y.js: identity=8373 gzip=3573 brotli=3175 bytes chunk-5tj2qqhm.js: identity=9807 gzip=4014 brotli=3449 bytes faulty-terminal.worker.js: identity=1084 gzip=559 brotli=478 bytes backdrop.worker.js: identity=241 gzip=210 brotli=158 bytes chunk-axbkkqp1.js: identity=90 gzip=90 brotli=78 bytes chunk-vfj76sc9.js: identity=711965 gzip=206535 brotli=167390 bytes chunk-bg6rq3gy.js: identity=185 gzip=149 brotli=130 bytes chunk-6nhq7gz1.js: identity=6464 gzip=3106 brotli=2807 bytes main.js: identity=87507 gzip=32671 brotli=28434 bytes chunk-c5rac8af.js: identity=24649 gzip=8391 brotli=7510 bytes JavaScript transfer: identity=850365 gzip=259298/307200 brotli=213609/256000 bytes fonts/MapleMonoNF-Italic.latin.woff2: identity=37148 gzip=37148 brotli=37148 bytes fonts/MapleMonoNF-Medium.latin.woff2: identity=33904 gzip=33904 brotli=33904 bytes fonts/MapleMonoNF-Regular.latin.woff2: identity=32852 gzip=32852 brotli=32852 bytes fonts/MapleMonoNF-SemiBold.latin.woff2: identity=34160 gzip=34160 brotli=34160 bytes fonts/MapleMonoNF-SemiBoldItalic.latin.woff2: identity=38228 gzip=38228 brotli=38228 bytes fonts/MapleMonoNF-symbols.woff2: identity=223748 gzip=223748 brotli=223748 bytes Font transfer: critical=32852/36864 latin=176292/184320 symbols=223748/235520 bytes ==> Rust stream oracle (for the differential test) ==> TypeScript protocol tests bun test v1.4.2 (744846f84) src/codec.test.ts: (pass) wire protocol golden vectors > encodes and decodes each frame exactly as the shared manifest describes [29.79ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.26ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [1.09ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.28ms] (pass) split mux header preserves trailing Close [0.52ms] src/stream.test.ts: stream differential: 141 streams, 13578 schedules, zero divergences (pass) Rust and TypeScript preserve every frame at all boundaries and random multi-splits [4479.00ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [11.52ms] 7 pass 0 fail 40810 expect() calls Ran 7 tests across 2 files. [4.54s]
Author
Owner

Independent verification started on review-session-life at job head 4d6f98c9dd; merge base with dev f27b3fe7a4. Read #100 and parent #98 history and author report. No implementation changes; confirmed gaps will receive committed failing tests.

Independent verification started on review-session-life at job head 4d6f98c9dd772346272239960ba3e7852e4a2bbf; merge base with dev f27b3fe7a4dcfb3e268bdee90405bf1f1d8a0ce9. Read #100 and parent #98 history and author report. No implementation changes; confirmed gaps will receive committed failing tests.
Author
Owner

SL-R3 P1: Bash textless OSC 133 C resets capture to Fallback, appending first command output to stored rerun input. textless_command_marker_does_not_append_command_output fails: expected "printf xyz", got "printf xyzxyz" (crates/infraternal-agent/src/lifecycle.rs::complete_osc). A real Bash PTY also confirms output contamination. Failing test committed on review-session-life; implementation untouched. SL-R1 P2: 4096 invalid UTF-8 echoed bytes expand to 12288 metadata bytes; existing lifecycle_osc fuzz target reproduces its <=4096 assertion with sanitizer enabled. SL-R2 P2: real Bash with PROMPT_COMMAND=true emits no status-1 marker for false (two status-0 markers). Evidence logs under /home/kayg/.cache/codex-scratch/session-life-review/.

SL-R3 P1: Bash textless OSC 133 C resets capture to Fallback, appending first command output to stored rerun input. textless_command_marker_does_not_append_command_output fails: expected "printf xyz", got "printf xyzxyz" (crates/infraternal-agent/src/lifecycle.rs::complete_osc). A real Bash PTY also confirms output contamination. Failing test committed on review-session-life; implementation untouched. SL-R1 P2: 4096 invalid UTF-8 echoed bytes expand to 12288 metadata bytes; existing lifecycle_osc fuzz target reproduces its <=4096 assertion with sanitizer enabled. SL-R2 P2: real Bash with PROMPT_COMMAND=true emits no status-1 marker for false (two status-0 markers). Evidence logs under /home/kayg/.cache/codex-scratch/session-life-review/.
Author
Owner

SL-R4 P1: lifecycle_exit_survives_broadcast_capacity_pressure fails against real SQLite in 0.43s: retained exits 0, expected 1, after 129 queued notices. The final command-status barrier persists, proving the reader completed the burst; the first exit was skipped by start_lifecycle_service on broadcast Lagged. EmbeddedAgent uses capacity 128 and the infraternal agent sends ExitAck after leg-B delivery, before SQLite persistence, so final screen/tail can be permanently lost. Failing test committed on review-session-life. Locations: crates/infraternal-server/src/runtime.rs::start_lifecycle_service and src/embedded.rs lifecycle_events. Evidence: /home/kayg/.cache/codex-scratch/session-life-review/broadcast-red.log.

SL-R4 P1: lifecycle_exit_survives_broadcast_capacity_pressure fails against real SQLite in 0.43s: retained exits 0, expected 1, after 129 queued notices. The final command-status barrier persists, proving the reader completed the burst; the first exit was skipped by start_lifecycle_service on broadcast Lagged. EmbeddedAgent uses capacity 128 and the infraternal agent sends ExitAck after leg-B delivery, before SQLite persistence, so final screen/tail can be permanently lost. Failing test committed on review-session-life. Locations: crates/infraternal-server/src/runtime.rs::start_lifecycle_service and src/embedded.rs lifecycle_events. Evidence: /home/kayg/.cache/codex-scratch/session-life-review/broadcast-red.log.
Author
Owner

SL-R5 P1: Bash input editing independently changes saved rerun commands. With three Readline backspaces replacing abc with xyz, edited_bash_input_is_exact_or_unavailable_for_rerun expects printf xyz or unavailable metadata, but gets "printf abc xyz". This test has no command output, isolating it from SL-R3. A real Bash PTY confirms the erase sequence. Committed failing test on review-session-life; crates/infraternal-agent/src/lifecycle.rs::feed. No implementation changes.

SL-R5 P1: Bash input editing independently changes saved rerun commands. With three Readline backspaces replacing abc with xyz, edited_bash_input_is_exact_or_unavailable_for_rerun expects printf xyz or unavailable metadata, but gets "printf abc xyz". This test has no command output, isolating it from SL-R3. A real Bash PTY confirms the erase sequence. Committed failing test on review-session-life; crates/infraternal-agent/src/lifecycle.rs::feed. No implementation changes.
Author
Owner

Evidence steps committed on review-session-life (implementation unchanged):
44cb8f0f test(agent): expose edited Bash input retained as different command
095643e7 test(server): expose exit loss under lifecycle queue pressure
c0587a51 test(agent): expose command output entering rerun metadata
22a6cc3c test(shim): expose command status replaced by prompt hooks
4d533bbc test(agent): expose expanded fallback command metadata

Confirmed counts: P0=0, P1=3, P2=2, P3=0. Rust parser: oversized UTF-8 replacement 12288 > 4096 bytes; textless marker saved printf xyzxyz; edited input saved printf abc xyz. Real Bash PTY regression failed (1 failed, 1.76s): false reported status 0 with an existing prompt hook. Real SQLite queue regression failed (1 failed, 0.43s): 0 retained exits after 129 notices; barrier persisted. Existing lifecycle_osc target reproduced the <=4096 assertion with sanitizer enabled. Parser release microbenchmark (5 x 10MiB): 166.17, 156.71, 168.31, 127.42, 164.19 MiB/s, median 164.19. Host infraternal-dev x86_64, 8 cores, CPUWeight=10000, surrounding load samples 20.51/21.09/24.70 and 24.56/22.17/23.87. Exact job-head fast gate is running from detached scratch checkout with project artifacts cleaned.

Evidence steps committed on review-session-life (implementation unchanged): 44cb8f0f test(agent): expose edited Bash input retained as different command 095643e7 test(server): expose exit loss under lifecycle queue pressure c0587a51 test(agent): expose command output entering rerun metadata 22a6cc3c test(shim): expose command status replaced by prompt hooks 4d533bbc test(agent): expose expanded fallback command metadata Confirmed counts: P0=0, P1=3, P2=2, P3=0. Rust parser: oversized UTF-8 replacement 12288 > 4096 bytes; textless marker saved printf xyzxyz; edited input saved printf abc xyz. Real Bash PTY regression failed (1 failed, 1.76s): false reported status 0 with an existing prompt hook. Real SQLite queue regression failed (1 failed, 0.43s): 0 retained exits after 129 notices; barrier persisted. Existing lifecycle_osc target reproduced the <=4096 assertion with sanitizer enabled. Parser release microbenchmark (5 x 10MiB): 166.17, 156.71, 168.31, 127.42, 164.19 MiB/s, median 164.19. Host infraternal-dev x86_64, 8 cores, CPUWeight=10000, surrounding load samples 20.51/21.09/24.70 and 24.56/22.17/23.87. Exact job-head fast gate is running from detached scratch checkout with project artifacts cleaned.
Author
Owner

Scale evidence: shipped SQL migrations applied to real SQLite 3.53.3, WAL/NORMAL, 50 accounts x 128 maximum-size exit payloads. One account/128 exits used 168128512 database bytes; 50 accounts/6400 exits used 8398704640 database bytes for 8388608000 payload bytes (maximum screen 1048576 + tail 262144 each). Completed in 77.27s on infraternal-dev, 8 cores, CPUWeight=10000, load 15.09 -> 26.09. This measures schema storage footprint, not server persistence throughput. The job-head fast gate at 4d6f98c9 failed vt_credit t1-gate-faithful-1: producer 2097152 bytes incomplete at 1500.3ms, 65 notices, 0 repaints. Detached dev 459070fe baseline comparison is building in this load window as required by #118; all other gate rows are still running.

Scale evidence: shipped SQL migrations applied to real SQLite 3.53.3, WAL/NORMAL, 50 accounts x 128 maximum-size exit payloads. One account/128 exits used 168128512 database bytes; 50 accounts/6400 exits used 8398704640 database bytes for 8388608000 payload bytes (maximum screen 1048576 + tail 262144 each). Completed in 77.27s on infraternal-dev, 8 cores, CPUWeight=10000, load 15.09 -> 26.09. This measures schema storage footprint, not server persistence throughput. The job-head fast gate at 4d6f98c9 failed vt_credit t1-gate-faithful-1: producer 2097152 bytes incomplete at 1500.3ms, 65 notices, 0 repaints. Detached dev 459070fe baseline comparison is building in this load window as required by #118; all other gate rows are still running.
Author
Owner

Required #118 comparison: detached dev baseline 459070fe3b vt_credit passed 1/1 in 20.84s in the same load window (sampled load 16.44/19.41/21.19 -> 16.83/19.18/21.04). Job head 4d6f98c9 failed faithful grant=1 producer progress at 1500.3ms, 65 notices, no repaints. Therefore I cannot waive that head failure as a reproduced baseline failure. Repeating only the job-head credit test while the other fast-gate rows finish. Full baseline output will accompany the final verdict.

Required #118 comparison: detached dev baseline 459070fe3b75548382e8e19fba86af20439cf607 vt_credit passed 1/1 in 20.84s in the same load window (sampled load 16.44/19.41/21.19 -> 16.83/19.18/21.04). Job head 4d6f98c9 failed faithful grant=1 producer progress at 1500.3ms, 65 notices, no repaints. Therefore I cannot waive that head failure as a reproduced baseline failure. Repeating only the job-head credit test while the other fast-gate rows finish. Full baseline output will accompany the final verdict.
Author
Owner

Maximum-record storage claim independently reproduced: 128 exits with max screen/tail/command/cwd/name and duplicate session metadata occupy exactly 170278912 SQLite database bytes, matching the author. At D170 50-account scale, 6400 exits occupy 8506322944 database bytes for 8388608000 screen/tail payload bytes. Real SQLite 3.53.3, shipped migrations, WAL/NORMAL; infraternal-dev 8 cores, CPUWeight=10000, load 6.99 -> 11.73, 77.36s. Temporary database removed. This verifies storage footprint; no server/daemon RSS or persistence-throughput claim is inferred from this fixture.

Maximum-record storage claim independently reproduced: 128 exits with max screen/tail/command/cwd/name and duplicate session metadata occupy exactly 170278912 SQLite database bytes, matching the author. At D170 50-account scale, 6400 exits occupy 8506322944 database bytes for 8388608000 screen/tail payload bytes. Real SQLite 3.53.3, shipped migrations, WAL/NORMAL; infraternal-dev 8 cores, CPUWeight=10000, load 6.99 -> 11.73, 77.36s. Temporary database removed. This verifies storage footprint; no server/daemon RSS or persistence-throughput claim is inferred from this fixture.
Author
Owner

Started repair round on branch session-life, initial HEAD 4d6f98c9dd772346272239960ba3e7852e4a2bbf; required merge target is local dev at 459070fe3b75548382e8e19fba86af20439cf607. Read all #100 and parent #98 comments plus the continuation notes. I will reproduce the review regressions and gate each atomic fix. No push or deploy.

Started repair round on branch `session-life`, initial HEAD `4d6f98c9dd772346272239960ba3e7852e4a2bbf`; required merge target is local `dev` at `459070fe3b75548382e8e19fba86af20439cf607`. Read all #100 and parent #98 comments plus the continuation notes. I will reproduce the review regressions and gate each atomic fix. No push or deploy.
Author
Owner

Finding while merging required dev 459070fe: the merge has three content conflicts in scripts/agent_fixture.py, scripts/verify-agent-snapshot.py, and scripts/verify-vt-credit.py. The fixture conflicts overlap lifecycle control-stream/dynamic-session handling with dev's #118 credit-observation helpers; both behaviors are exercised by gates. I am combining them before committing the merge.

Finding while merging required dev `459070fe`: the merge has three content conflicts in `scripts/agent_fixture.py`, `scripts/verify-agent-snapshot.py`, and `scripts/verify-vt-credit.py`. The fixture conflicts overlap lifecycle control-stream/dynamic-session handling with dev's #118 credit-observation helpers; both behaviors are exercised by gates. I am combining them before committing the merge.
Author
Owner

Finding: merge scripts/verify fast exited 1 (load 38.40/34.81/31.35 → 34.46/34.09/32.57). initial_attach_requires_explicit_credit_before_replay could not create target/ac2736148 because this run uses the required scratch CARGO_TARGET_DIR; static builds also failed because .cargo/musl-cc.sh expects target/auth-tools/zig/zig. repeated_tiny_credit_pauses_preserve_shell_progress returned (15, "terminal shim disconnected") in scripts/agent_fixture.py::process. I am linking the ignored worktree target path to job scratch and isolating the snapshot probe before retrying.

Finding: merge `scripts/verify fast` exited 1 (load 38.40/34.81/31.35 → 34.46/34.09/32.57). `initial_attach_requires_explicit_credit_before_replay` could not create `target/ac2736148` because this run uses the required scratch CARGO_TARGET_DIR; static builds also failed because `.cargo/musl-cc.sh` expects `target/auth-tools/zig/zig`. `repeated_tiny_credit_pauses_preserve_shell_progress` returned `(15, "terminal shim disconnected")` in `scripts/agent_fixture.py::process`. I am linking the ignored worktree target path to job scratch and isolating the snapshot probe before retrying.
Author
Owner

#118 comparison after the first merge-gate run: the detached dev repeated_tiny_credit_pauses_preserve_shell_progress passed 1/1 in 16.87s (load 30.94 → 20.97); the merged-head focused rerun passed 1/1 in 17.31s (load 20.74 → 20.77). The initial full parallel gate failure is not reproducible in the focused test and is not waived. The worktree target now links to this job's scratch target; the full gate is rerunning.

#118 comparison after the first merge-gate run: the detached dev `repeated_tiny_credit_pauses_preserve_shell_progress` passed 1/1 in 16.87s (load 30.94 → 20.97); the merged-head focused rerun passed 1/1 in 17.31s (load 20.74 → 20.77). The initial full parallel gate failure is not reproducible in the focused test and is not waived. The worktree `target` now links to this job's scratch target; the full gate is rerunning.
Author
Owner

Finding: merged-tree agent_review::repeated_tiny_credit_pauses_preserve_shell_progress failed with (15, "terminal shim disconnected") (5/6 passed; scripts/verify fast test gate returned FAIL (101)). The detached dev baseline at 459070fe failed the same test and error in agent_review (5/6 passed) in the same run window. This is the host-load-sensitive #118 row; all other fast-gate rows passed: fmt, VT native fmt, clippy, cargo-deny and static builds. Logs: $HOME/.cache/codex-scratch/session-life/merge-fast-rerun.log and baseline-agent-review.log. Merged run load: 20.95→9.84; baseline run load: 37.67→37.67.

Finding: merged-tree `agent_review::repeated_tiny_credit_pauses_preserve_shell_progress` failed with `(15, "terminal shim disconnected")` (5/6 passed; `scripts/verify fast` test gate returned `FAIL (101)`). The detached `dev` baseline at 459070fe failed the same test and error in `agent_review` (5/6 passed) in the same run window. This is the host-load-sensitive #118 row; all other fast-gate rows passed: fmt, VT native fmt, clippy, cargo-deny and static builds. Logs: `$HOME/.cache/codex-scratch/session-life/merge-fast-rerun.log` and `baseline-agent-review.log`. Merged run load: 20.95→9.84; baseline run load: 37.67→37.67.
Author
Owner

Correction: the baseline test result in baseline-agent-review.log is valid, but its wrapper tried to assign zsh's reserved status variable after the test exited and omitted the before/after load line. Baseline completion load was 37.67; the start load was not captured. The merged gate's logged load was 20.95→9.84.

Correction: the baseline test result in `baseline-agent-review.log` is valid, but its wrapper tried to assign zsh's reserved `status` variable after the test exited and omitted the before/after load line. Baseline completion load was 37.67; the start load was not captured. The merged gate's logged load was 20.95→9.84.
Author
Owner

Step complete: merged dev 459070fe into session-life as 8a724f6fe9. Conflict resolution keeps lifecycle-aware fixture IDs/control handling and dev's credit accounting, barriers and retirement checks. The merged fast-gate output was | fmt | PASS |, | VT native fmt | PASS |, | clippy | PASS |, | test | FAIL (101) |, | cargo-deny | PASS |, | static builds | PASS |; test output: 5 passed, 1 failed (repeated_tiny_credit_pauses_preserve_shell_progress). Detached dev produced the same single test failure and (15, b'\x01\x00terminal shim disconnected'); see preceding finding/correction for load context. Ready for the regression-test repair sequence.

Step complete: merged dev 459070fe into session-life as 8a724f6fe9af42291019506dbe68c497e234159e. Conflict resolution keeps lifecycle-aware fixture IDs/control handling and dev's credit accounting, barriers and retirement checks. The merged fast-gate output was `| fmt | PASS |`, `| VT native fmt | PASS |`, `| clippy | PASS |`, `| test | FAIL (101) |`, `| cargo-deny | PASS |`, `| static builds | PASS |`; test output: 5 passed, 1 failed (`repeated_tiny_credit_pauses_preserve_shell_progress`). Detached dev produced the same single test failure and `(15, b'\x01\x00terminal shim disconnected')`; see preceding finding/correction for load context. Ready for the regression-test repair sequence.
Author
Owner

Finding 1 (data loss): the cherry-picked lifecycle_exit_survives_broadcast_capacity_pressure test fails before the fix. After an exit plus 127 activity notices and a command-finished barrier, runtime.rs:754 reports exit count left: 0, right: 1. The lifecycle service currently reads a 128-slot broadcast receiver and handles Lagged by continuing, so the exit is discarded with activity. Red-test log: $HOME/.cache/codex-scratch/session-life/exit-red.log.

Finding 1 (data loss): the cherry-picked `lifecycle_exit_survives_broadcast_capacity_pressure` test fails before the fix. After an exit plus 127 activity notices and a command-finished barrier, `runtime.rs:754` reports `exit count left: 0, right: 1`. The lifecycle service currently reads a 128-slot broadcast receiver and handles `Lagged` by continuing, so the exit is discarded with activity. Red-test log: `$HOME/.cache/codex-scratch/session-life/exit-red.log`.
Author
Owner

Finding 1 gated: the real-SQLite regression test and both queue tests pass (see exit-green.log and queue-tests.log). scripts/verify fast passed fmt, VT native fmt, clippy, cargo-deny and both static builds; the test row was 5/6 because repeated_tiny_credit_pauses_preserve_shell_progress returned (15, b'\x01\x00terminal shim disconnected'). Detached dev at 459070fe produced the same 5/6 result and error in agent_review in the same window. This is the allowed #118 row; all other rows passed. Logs: exit-fast.log, exit-baseline-review.log; load: merged gate 29.73→38.01, baseline 37.90→35.47. Static binary sizes: x86_64 16,284,912 / 16,404,816-byte allowance; aarch64 13,711,464 / 13,817,816-byte allowance.

Finding 1 gated: the real-SQLite regression test and both queue tests pass (see `exit-green.log` and `queue-tests.log`). `scripts/verify fast` passed fmt, VT native fmt, clippy, cargo-deny and both static builds; the test row was 5/6 because `repeated_tiny_credit_pauses_preserve_shell_progress` returned `(15, b'\x01\x00terminal shim disconnected')`. Detached dev at 459070fe produced the same 5/6 result and error in `agent_review` in the same window. This is the allowed #118 row; all other rows passed. Logs: `exit-fast.log`, `exit-baseline-review.log`; load: merged gate 29.73→38.01, baseline 37.90→35.47. Static binary sizes: x86_64 16,284,912 / 16,404,816-byte allowance; aarch64 13,711,464 / 13,817,816-byte allowance.
Author
Owner

Correction to the prior #118 comparison: exit-baseline-review-final.log was run with session-life as its working directory, not the detached baseline, so that result is invalid. The correct run used the detached worktree at 459070fe (exit-baseline-true.log) and passed 6/6 at load 27.65→28.45. Therefore the #118 exception does not apply to the merged tree's 5/6 result.

The failure is reproducible in the current scripts/verify-agent-snapshot.py alone: after retiring client stream 1, Binary.attach() allocates stream 3 but carries stream 1's nonzero input cursor. The shim has a per-writer cursor for stream 3 starting at zero and closes it with terminal shim disconnected. Reusing stream 1 in an isolated scratch fixture passes the complete snapshot probe. I will reset input cursors when a fresh stream allocates a fresh writer before continuing the requested fixes.

Correction to the prior #118 comparison: `exit-baseline-review-final.log` was run with `session-life` as its working directory, not the detached baseline, so that result is invalid. The correct run used the detached worktree at 459070fe (`exit-baseline-true.log`) and passed 6/6 at load 27.65→28.45. Therefore the #118 exception does not apply to the merged tree's 5/6 result. The failure is reproducible in the current `scripts/verify-agent-snapshot.py` alone: after retiring client stream 1, `Binary.attach()` allocates stream 3 but carries stream 1's nonzero input cursor. The shim has a per-writer cursor for stream 3 starting at zero and closes it with `terminal shim disconnected`. Reusing stream 1 in an isolated scratch fixture passes the complete snapshot probe. I will reset input cursors when a fresh stream allocates a fresh writer before continuing the requested fixes.
Author
Owner

Merge conflict repair complete: Binary.attach() now clears the per-writer entered and acked cursors only when it allocates a fresh stream. Red evidence was terminal shim disconnected; fixed snapshot-credit probe passed 1/1 in 17.63s. Commit: 181b66968f. scripts/verify fast passed at load 22.83→11.98; all server tests passed. Static sizes: x86_64 16,273,488 bytes (allowance 16,404,816); aarch64 13,697,144 (allowance 13,817,816). TypeScript protocol differential: 141 streams, 13,578 schedules, zero divergences.

Verbatim Rust gate output:

+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
Merge conflict repair complete: `Binary.attach()` now clears the per-writer `entered` and `acked` cursors only when it allocates a fresh stream. Red evidence was `terminal shim disconnected`; fixed snapshot-credit probe passed 1/1 in 17.63s. Commit: 181b66968fc9c7ac4c11e5a1098081e06c9f3796. `scripts/verify fast` passed at load 22.83→11.98; all server tests passed. Static sizes: x86_64 16,273,488 bytes (allowance 16,404,816); aarch64 13,697,144 (allowance 13,817,816). TypeScript protocol differential: 141 streams, 13,578 schedules, zero divergences. Verbatim Rust gate output: ``` +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ```
Author
Owner

Finding 095643e7 confirmed: after 129 activity notices, the SQLite lifecycle row was missing (assertion left 0, right 1). Commit 684aba04 adds a bounded durable queue (128 notices, 12 MiB) with backpressure, plus a 128-session coalescing map for advisory activity; exits are never coalesced. The SQLite regression passed 1/1 and lifecycle queue tests passed 11/11. Fast gate load average: 11.12 16.07 21.41 before, 25.92 22.78 22.62 after. Binary sizes: x86_64 16,293,520 / 16,404,816-byte maximum; aarch64 13,719,992 / 13,817,816-byte maximum.

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

Refs: #100

Finding 095643e7 confirmed: after 129 activity notices, the SQLite lifecycle row was missing (assertion left 0, right 1). Commit 684aba04 adds a bounded durable queue (128 notices, 12 MiB) with backpressure, plus a 128-session coalescing map for advisory activity; exits are never coalesced. The SQLite regression passed 1/1 and lifecycle queue tests passed 11/11. Fast gate load average: 11.12 16.07 21.41 before, 25.92 22.78 22.62 after. Binary sizes: x86_64 16,293,520 / 16,404,816-byte maximum; aarch64 13,719,992 / 13,817,816-byte maximum. +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ Refs: #100
Author
Owner

Finding 22a6cc3c confirmed on a real Bash PTY: bash_command_status_survives_existing_prompt_command fails because false emits no OSC 133 status 1 when .bashrc sets PROMPT_COMMAND=true. The wrapper currently appends its status hook after user prompt commands, so $? has already changed. Fix in progress.

Finding 22a6cc3c confirmed on a real Bash PTY: `bash_command_status_survives_existing_prompt_command` fails because `false` emits no OSC 133 status 1 when `.bashrc` sets `PROMPT_COMMAND=true`. The wrapper currently appends its status hook after user prompt commands, so `$?` has already changed. Fix in progress.
Author
Owner

Follow-up from the first full gate: the existing installed-shell test exposed an empty-PROMPT_COMMAND edge in the new scalar composition (Bash read __infraternal_capture_status__infraternal_precmd as one command). The gate had 64 shim tests pass and this one fail. Added the missing separator; all 3 shell tests now pass, including the new nonzero-status regression. Re-running the full gate.

Follow-up from the first full gate: the existing installed-shell test exposed an empty-PROMPT_COMMAND edge in the new scalar composition (Bash read `__infraternal_capture_status__infraternal_precmd` as one command). The gate had 64 shim tests pass and this one fail. Added the missing separator; all 3 shell tests now pass, including the new nonzero-status regression. Re-running the full gate.
Author
Owner

Commit 702ce3de preserves Bash command status by capturing it before scalar or array PROMPT_COMMAND hooks. The new real-PTY regression failed first, then passed; after fixing the empty-hook separator, all 3 shell tests passed. Full fast gate load average: 16.29 19.40 20.08 before, 19.09 19.72 20.13 after. Binary sizes: x86_64 16,293,520 / 16,404,816-byte maximum; aarch64 13,719,992 / 13,817,816-byte maximum. TypeScript differential: 141 streams, 13,578 schedules, zero divergences.

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

Refs: #100

Commit 702ce3de preserves Bash command status by capturing it before scalar or array PROMPT_COMMAND hooks. The new real-PTY regression failed first, then passed; after fixing the empty-hook separator, all 3 shell tests passed. Full fast gate load average: 16.29 19.40 20.08 before, 19.09 19.72 20.13 after. Binary sizes: x86_64 16,293,520 / 16,404,816-byte maximum; aarch64 13,719,992 / 13,817,816-byte maximum. TypeScript differential: 141 streams, 13,578 schedules, zero divergences. +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ Refs: #100
Author
Owner

Finding c0587a51 confirmed: textless_command_marker_does_not_append_command_output fails with the parser returning printf xyzxyz instead of the entered printf xyz. This reproduces the rerun metadata corruption after Bash's textless OSC 133 start marker.

Finding c0587a51 confirmed: `textless_command_marker_does_not_append_command_output` fails with the parser returning `printf xyzxyz` instead of the entered `printf xyz`. This reproduces the rerun metadata corruption after Bash's textless OSC 133 start marker.
Author
Owner

The first full fast gate for c058 reached all checks but the formatting row required CommandState::Running { fallback_seen } on one line; tests, clippy, cargo-deny, and static builds passed. Applied rustfmt's exact correction and will rerun the gate.

The first full fast gate for c058 reached all checks but the formatting row required `CommandState::Running { fallback_seen }` on one line; tests, clippy, cargo-deny, and static builds passed. Applied rustfmt's exact correction and will rerun the gate.
Author
Owner

Commit 7ce19348 keeps command text captured before a textless OSC 133 C marker and moves to running state afterward. The regression failed first with printf xyzxyz, then passed 1/1. Full fast gate load average: 15.10 22.69 22.48 before, 15.42 17.81 19.75 after. Rust suites: server 112 passed/9 ignored, shim 65 passed/12 ignored, agent 14 passed; TypeScript differential: 141 streams, 13,578 schedules, zero divergences. Binary sizes: x86_64 16,293,520 / 16,404,816-byte maximum; aarch64 13,719,992 / 13,817,816-byte maximum.

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

Refs: #100

Commit 7ce19348 keeps command text captured before a textless OSC 133 C marker and moves to running state afterward. The regression failed first with `printf xyzxyz`, then passed 1/1. Full fast gate load average: 15.10 22.69 22.48 before, 15.42 17.81 19.75 after. Rust suites: server 112 passed/9 ignored, shim 65 passed/12 ignored, agent 14 passed; TypeScript differential: 141 streams, 13,578 schedules, zero divergences. Binary sizes: x86_64 16,293,520 / 16,404,816-byte maximum; aarch64 13,719,992 / 13,817,816-byte maximum. +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ Refs: #100
Author
Owner

Finding 44cb8f0f confirmed: edited_bash_input_is_exact_or_unavailable_for_rerun fails with command metadata printf abc xyz after Readline backspace echoes. The parser currently keeps the erase spaces, so run-again input differs from what was entered.

Finding 44cb8f0f confirmed: `edited_bash_input_is_exact_or_unavailable_for_rerun` fails with command metadata `printf abc xyz` after Readline backspace echoes. The parser currently keeps the erase spaces, so run-again input differs from what was entered.
Author
Owner

The first full fast gate for 44cb reached all checks; formatting alone required the printable-byte condition on one line. Rust tests, clippy, cargo-deny, and static builds passed. Applied rustfmt's exact correction and will rerun the gate.

The first full fast gate for 44cb reached all checks; formatting alone required the printable-byte condition on one line. Rust tests, clippy, cargo-deny, and static builds passed. Applied rustfmt's exact correction and will rerun the gate.
Author
Owner

Commit 47835958 marks fallback command metadata unavailable after backspace or delete while retaining the existing byte cap. The edited-input regression failed first with printf abc xyz; all 11 lifecycle tests then passed. Full fast gate load average: 32.05 26.39 22.49 before, 13.64 15.77 18.55 after. Rust suites: server 112 passed/9 ignored, shim 65 passed/12 ignored, agent 14 passed. TypeScript differential: 141 streams, 13,578 schedules, zero divergences. Binary sizes: x86_64 16,293,584 / 16,404,816-byte maximum; aarch64 13,719,992 / 13,817,816-byte maximum.

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

Refs: #100

Commit 47835958 marks fallback command metadata unavailable after backspace or delete while retaining the existing byte cap. The edited-input regression failed first with `printf abc xyz`; all 11 lifecycle tests then passed. Full fast gate load average: 32.05 26.39 22.49 before, 13.64 15.77 18.55 after. Rust suites: server 112 passed/9 ignored, shim 65 passed/12 ignored, agent 14 passed. TypeScript differential: 141 streams, 13,578 schedules, zero divergences. Binary sizes: x86_64 16,293,584 / 16,404,816-byte maximum; aarch64 13,719,992 / 13,817,816-byte maximum. +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ Refs: #100
Author
Owner

Finding 4d533bbc confirmed: 4,096 invalid PTY bytes produce 12,288 bytes from OscParser::command(), failing fallback_invalid_utf8_stays_inside_command_byte_limit. The raw capture is capped, but lossy UTF-8 conversion expands each invalid byte to a three-byte replacement character.

Finding 4d533bbc confirmed: 4,096 invalid PTY bytes produce 12,288 bytes from `OscParser::command()`, failing `fallback_invalid_utf8_stays_inside_command_byte_limit`. The raw capture is capped, but lossy UTF-8 conversion expands each invalid byte to a three-byte replacement character.
Author
Owner

Commit 29c62c44 returns no command for invalid UTF-8 instead of expanding raw input into replacement characters. The regression failed first at 12,288 bytes for 4,096 input bytes; all 12 lifecycle tests then passed. Full fast gate load average: 12.51 14.45 17.74 before, 28.15 26.77 22.16 after. Rust suites: server 112 passed/9 ignored, shim 65 passed/12 ignored, agent 14 passed. TypeScript differential: 141 streams, 13,578 schedules, zero divergences. Binary sizes: x86_64 16,293,712 / 16,404,816-byte maximum; aarch64 13,720,120 / 13,817,816-byte maximum.

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

Refs: #100

Commit 29c62c44 returns no command for invalid UTF-8 instead of expanding raw input into replacement characters. The regression failed first at 12,288 bytes for 4,096 input bytes; all 12 lifecycle tests then passed. Full fast gate load average: 12.51 14.45 17.74 before, 28.15 26.77 22.16 after. Rust suites: server 112 passed/9 ignored, shim 65 passed/12 ignored, agent 14 passed. TypeScript differential: 141 streams, 13,578 schedules, zero divergences. Binary sizes: x86_64 16,293,712 / 16,404,816-byte maximum; aarch64 13,720,120 / 13,817,816-byte maximum. +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ Refs: #100
Author
Owner

Storage finding: current raw caps allow 1,310,720 bytes per exit (1 MiB screen + 256 KiB tail); 128 maximum-size records measured 170,278,912 B. A real shim 200x60 snapshot sample was 27,535 B. Exploratory zlib level 6 measured 695 B for that screen and 838 B for a repetitive 256 KiB tail; these are sizing samples, not the acceptance benchmark. Proposed additive local shim request will omit scrollback from persisted final screens; storage will compress the screen and retain a bounded output tail. I am measuring codec and SQLite row bounds before implementation. HEAD 29c62c4416.

Storage finding: current raw caps allow 1,310,720 bytes per exit (1 MiB screen + 256 KiB tail); 128 maximum-size records measured 170,278,912 B. A real shim 200x60 snapshot sample was 27,535 B. Exploratory zlib level 6 measured 695 B for that screen and 838 B for a repetitive 256 KiB tail; these are sizing samples, not the acceptance benchmark. Proposed additive local shim request will omit scrollback from persisted final screens; storage will compress the screen and retain a bounded output tail. I am measuring codec and SQLite row bounds before implementation. HEAD 29c62c44169a73a467fe9512cec948f446fa2fc5.
Author
Owner

Codec sizing on infraternal-dev under systemd user scope (CPUWeight=10000, load before/after 21.56): real shim screen plus repetitive 8 KiB tail, 35,727 B total. LZ4 block: 1,023 B, p50 5 us, p99 32 us; DEFLATE fast: 1,007 B, p50 26 us, p99 197 us; Zstandard level 1: 572 B, p50 14 us, p99 119 us. A 35,727 B random sample compressed to 35,873 / 35,779 / 35,737 B respectively. Standalone release executable sizes were 477,104 / 509,448 / 1,048,712 B. I will use LZ4 block storage because it is the fastest and smallest candidate; persisted screens above the 40 KiB bound will be omitted, with the bounded output tail retained. These measurements are a codec spike, not the final SQLite scale measurement.

Codec sizing on infraternal-dev under systemd user scope (CPUWeight=10000, load before/after 21.56): real shim screen plus repetitive 8 KiB tail, 35,727 B total. LZ4 block: 1,023 B, p50 5 us, p99 32 us; DEFLATE fast: 1,007 B, p50 26 us, p99 197 us; Zstandard level 1: 572 B, p50 14 us, p99 119 us. A 35,727 B random sample compressed to 35,873 / 35,779 / 35,737 B respectively. Standalone release executable sizes were 477,104 / 509,448 / 1,048,712 B. I will use LZ4 block storage because it is the fastest and smallest candidate; persisted screens above the 40 KiB bound will be omitted, with the bounded output tail retained. These measurements are a codec spike, not the final SQLite scale measurement.
Author
Owner

Dependency-only fast gate: 110 server tests passed, 2 failed, 9 ignored after 248.96 s. Failures were auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once (server closed the websocket while reading its next frame) and auth::tests::socket_tests::expired_handshake_releases_user_permits (expected HTTP 503 did not arrive). Static builds passed at x86_64 16,293,712 B and aarch64 13,720,120 B. Host load at gate end was 8.82 / 16.32 / 18.52. I am reproducing both failures in isolation before committing the dependency.

Dependency-only fast gate: 110 server tests passed, 2 failed, 9 ignored after 248.96 s. Failures were `auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once` (server closed the websocket while reading its next frame) and `auth::tests::socket_tests::expired_handshake_releases_user_permits` (expected HTTP 503 did not arrive). Static builds passed at x86_64 16,293,712 B and aarch64 13,720,120 B. Host load at gate end was 8.82 / 16.32 / 18.52. I am reproducing both failures in isolation before committing the dependency.
Author
Owner

Isolation results for the first fast-gate failures: server_setup_terminal_echo_and_resume_preserve_offsets_once passed on the current branch (1 passed, 0 failed, 2.17 s). expired_handshake_releases_user_permits passed on detached dev 459070fe (1 passed, 0 failed, 0.86 s) and current branch (1 passed, 0 failed, 0.77 s). Host loads were 18.16/19.83/19.59 and 17.03/19.57/19.51. The initial full-gate failures are not reproduced in isolation; a new full gate is still required. Codec dependency now enables only std and safe block encode/decode features, removing unused frame support.

Isolation results for the first fast-gate failures: `server_setup_terminal_echo_and_resume_preserve_offsets_once` passed on the current branch (1 passed, 0 failed, 2.17 s). `expired_handshake_releases_user_permits` passed on detached dev 459070fe (1 passed, 0 failed, 0.86 s) and current branch (1 passed, 0 failed, 0.77 s). Host loads were 18.16/19.83/19.59 and 17.03/19.57/19.51. The initial full-gate failures are not reproduced in isolation; a new full gate is still required. Codec dependency now enables only std and safe block encode/decode features, removing unused frame support.
Author
Owner

Fail-first storage regression reproduced: a maximum-size high-entropy 1 MiB screen plus 256 KiB tail persisted 1,310,863 bytes for one exit (reserved SQLite row overhead included), exceeding the 65,536-byte budget. Test result: 0 passed, 1 failed. Host load was 51.75/37.53/26.45. The focused run is saved at $HOME/.cache/codex-scratch/session-life/exit-storage-red.log.

Fail-first storage regression reproduced: a maximum-size high-entropy 1 MiB screen plus 256 KiB tail persisted 1,310,863 bytes for one exit (reserved SQLite row overhead included), exceeding the 65,536-byte budget. Test result: 0 passed, 1 failed. Host load was 51.75/37.53/26.45. The focused run is saved at `$HOME/.cache/codex-scratch/session-life/exit-storage-red.log`.
Author
Owner

Contract proposal before code: add capability bit 4 and frame 0x22 SnapshotRequestWithTail(u16) to the frozen local shim protocol. The request caps history rows at 256; exit persistence requests zero rows, while normal reconnect snapshots keep their existing 256-row behavior. New agents fall back to SnapshotRequest when an older shim does not advertise the capability. This is additive and leaves the web wire event unchanged.

Contract proposal before code: add capability bit 4 and frame 0x22 `SnapshotRequestWithTail(u16)` to the frozen local shim protocol. The request caps history rows at 256; exit persistence requests zero rows, while normal reconnect snapshots keep their existing 256-row behavior. New agents fall back to `SnapshotRequest` when an older shim does not advertise the capability. This is additive and leaves the web wire event unchanged.
Author
Owner

Step complete: added the bounded-storage codec dependency. Candidate data and selection are recorded above. Commit 77d46f26; codec tests pass 2/2 (0.32 s). Lifecycle storage tests pass 13/13 with one release-only scale case ignored; incompressible 1 MiB screen is omitted and the stored tail plus metadata is 8,335 B against the 65,536 B cap. Load during the focused run was 41.03/41.82/34.86.

Step complete: added the bounded-storage codec dependency. Candidate data and selection are recorded above. Commit 77d46f26; codec tests pass 2/2 (0.32 s). Lifecycle storage tests pass 13/13 with one release-only scale case ignored; incompressible 1 MiB screen is omitted and the stored tail plus metadata is 8,335 B against the 65,536 B cap. Load during the focused run was 41.03/41.82/34.86.
Author
Owner

Step complete: migration 0015 adds a version column and SQLite guards for 40 KiB screens / 8 KiB tails, while allowing version-zero rows for startup compaction. Commit c31d4ee1. The lifecycle migration/compaction test passes in the 13-test focused lifecycle gate; a second compaction pass is a no-op.

Step complete: migration 0015 adds a version column and SQLite guards for 40 KiB screens / 8 KiB tails, while allowing version-zero rows for startup compaction. Commit c31d4ee1. The lifecycle migration/compaction test passes in the 13-test focused lifecycle gate; a second compaction pass is a no-op.
Author
Owner

Step complete: added the versioned exit payload encoder and its module tests. Commit 74686b94. exit_storage::tests passes 2/2 (0.32 s): compressible 1 MiB screen round-trips; a high-entropy screen is omitted without truncating the block; the newest 8,192 tail bytes are retained.

Step complete: added the versioned exit payload encoder and its module tests. Commit 74686b94. `exit_storage::tests` passes 2/2 (0.32 s): compressible 1 MiB screen round-trips; a high-entropy screen is omitted without truncating the block; the newest 8,192 tail bytes are retained.
Author
Owner

Step complete: server exit writes now use bounded payloads; startup upgrades version-zero rows in batches before requests are served. Commit 6380edf9. Focused lifecycle gate: 13 passed, 0 failed, 1 release-only scale test ignored (17.64 s). High-entropy 1 MiB screen evidence: 8,335 B retained row estimate including metadata/reserve, under 65,536 B. Legacy compaction and second-pass idempotence pass.

Step complete: server exit writes now use bounded payloads; startup upgrades version-zero rows in batches before requests are served. Commit 6380edf9. Focused lifecycle gate: 13 passed, 0 failed, 1 release-only scale test ignored (17.64 s). High-entropy 1 MiB screen evidence: 8,335 B retained row estimate including metadata/reserve, under 65,536 B. Legacy compaction and second-pass idempotence pass.
Author
Owner

Step complete: shim capability bit 4 and SnapshotRequestWithTail (0x22) now select 0–256 scrollback rows; legacy SnapshotRequest and normal reconnect snapshots remain at 256. Commit 8126a4a0. Full shim unit gate passes: 67 passed, 12 ignored, 0 failed, 199.98 s. The capability/range test and zero-history visible-row test pass.

Step complete: shim capability bit 4 and SnapshotRequestWithTail (0x22) now select 0–256 scrollback rows; legacy SnapshotRequest and normal reconnect snapshots remain at 256. Commit 8126a4a0. Full shim unit gate passes: 67 passed, 12 ignored, 0 failed, 199.98 s. The capability/range test and zero-history visible-row test pass.
Author
Owner

Step complete: infraternal agents now retain only the newest 8,192 PTY output bytes and request zero-row final snapshots when capability bit 4 is selected, falling back to the legacy request for older shims. Commit 3fd27ac2. Agent unit gate passes: 30 passed, 2 ignored, 0 failed (0.07 s).

Step complete: infraternal agents now retain only the newest 8,192 PTY output bytes and request zero-row final snapshots when capability bit 4 is selected, falling back to the legacy request for older shims. Commit 3fd27ac2. Agent unit gate passes: 30 passed, 2 ignored, 0 failed (0.07 s).
Author
Owner

Step complete: contracts now specify the per-exit storage bound and additive snapshot-tail capability. Commit 23b5f472. The documented scale envelope is 50 × 128 exits × 64 KiB = 400 MiB maximum row-content budget.

Step complete: contracts now specify the per-exit storage bound and additive snapshot-tail capability. Commit 23b5f472. The documented scale envelope is 50 × 128 exits × 64 KiB = 400 MiB maximum row-content budget.
Author
Owner

Finding: the new regression test failed before the fix. empty_screen_uses_the_omitted_screen_sentinel observed that encode(&[], &[]) stored a nonempty four-byte LZ4 size header (0/1 passed, exit_storage.rs:88). This would make startup compaction populate the screen column of an empty legacy tombstone. Fixing the encoder to preserve the empty omitted-screen sentinel.

Finding: the new regression test failed before the fix. `empty_screen_uses_the_omitted_screen_sentinel` observed that `encode(&[], &[])` stored a nonempty four-byte LZ4 size header (0/1 passed, `exit_storage.rs:88`). This would make startup compaction populate the screen column of an empty legacy tombstone. Fixing the encoder to preserve the empty omitted-screen sentinel.
Author
Owner

Fix complete: empty screens now remain a zero-byte sentinel through compaction. Commit 862410a6. The new test reproduced the four-byte header failure before the change (0/1); afterward all 3 encoder tests pass in 0.05 s, including compressible round-trip, empty sentinel and incompressible fallback.

Fix complete: empty screens now remain a zero-byte sentinel through compaction. Commit 862410a6. The new test reproduced the four-byte header failure before the change (0/1); afterward all 3 encoder tests pass in 0.05 s, including compressible round-trip, empty sentinel and incompressible fallback.
Author
Owner

D170 scale measurement passed on infraternal-dev (8 cores), under the required weighted scope. At 50 accounts × 128 exits: 6,400 rows, 40,869 B stored screen + 8,192 B tail, maximum estimated record 57,381 B / 65,536 B, total row-content estimate 367,238,400 B, SQLite pages 371,486,720 B, insertion 1,303 ms. Load at measurement: 9.47/19.64/25.09. Release scale test passed 1/1.

D170 scale measurement passed on infraternal-dev (8 cores), under the required weighted scope. At 50 accounts × 128 exits: 6,400 rows, 40,869 B stored screen + 8,192 B tail, maximum estimated record 57,381 B / 65,536 B, total row-content estimate 367,238,400 B, SQLite pages 371,486,720 B, insertion 1,303 ms. Load at measurement: 9.47/19.64/25.09. Release scale test passed 1/1.
Author
Owner

Snapshot benchmark observation: first weighted run is inconclusive under shared host load. On infraternal-dev (8 cores; load 8.19/18.86/24.74), normal 200×60 snapshot measured p50 0.737 ms / p99 6.394 ms / 27,535 B and exceeded the existing 2 ms p99 test assertion. No code conclusion from this run; repeat in the quiet window with the dev/current reconnect comparison.

Snapshot benchmark observation: first weighted run is inconclusive under shared host load. On infraternal-dev (8 cores; load 8.19/18.86/24.74), normal 200×60 snapshot measured p50 0.737 ms / p99 6.394 ms / 27,535 B and exceeded the existing 2 ms p99 test assertion. No code conclusion from this run; repeat in the quiet window with the dev/current reconnect comparison.
Author
Owner

Snapshot budget repeat passed on infraternal-dev (8 cores) under the weighted scope. Load was 4.59/11.27/18.28 at start and 4.47/11.13/18.20 at finish. Normal 200×60 + 256-line snapshot: p50 0.662 ms, p99 1.433 ms, 27,535 B. Exit 200×60 + zero scrollback: p50 0.125 ms, p99 0.253 ms, 5,966 B. Both remain below the 2 ms p99 budget (1/1 test passed).

Snapshot budget repeat passed on infraternal-dev (8 cores) under the weighted scope. Load was 4.59/11.27/18.28 at start and 4.47/11.13/18.20 at finish. Normal 200×60 + 256-line snapshot: p50 0.662 ms, p99 1.433 ms, 27,535 B. Exit 200×60 + zero scrollback: p50 0.125 ms, p99 0.253 ms, 5,966 B. Both remain below the 2 ms p99 budget (1/1 test passed).
Author
Owner

Finding: the current release build warns that Terminal::snapshot is unused (crates/infraternal-shim/src/terminal.rs:199). The new session path called snapshot_with_tail(256) directly, leaving the existing default API unused in production. I’ll route normal 256-row snapshots through snapshot() and reserve snapshot_with_tail for nondefault requests; this preserves the 256-row reconnect behavior and clears clippy -D warnings.

Finding: the current release build warns that `Terminal::snapshot` is unused (`crates/infraternal-shim/src/terminal.rs:199`). The new session path called `snapshot_with_tail(256)` directly, leaving the existing default API unused in production. I’ll route normal 256-row snapshots through `snapshot()` and reserve `snapshot_with_tail` for nondefault requests; this preserves the 256-row reconnect behavior and clears `clippy -D warnings`.
Author
Owner

The shim clippy gate caught one follow-up style error in the new default-snapshot branch: semicolon_if_nothing_returned at session.rs:355 after routing the 256-row case through snapshot(). Adding the semicolon, then rerunning the targeted gate.

The shim clippy gate caught one follow-up style error in the new default-snapshot branch: `semicolon_if_nothing_returned` at `session.rs:355` after routing the 256-row case through `snapshot()`. Adding the semicolon, then rerunning the targeted gate.
Author
Owner

Fix complete: the normal 256-row request now uses Terminal::snapshot(), while nondefault row counts use snapshot_with_tail(). Commit 68f1a2f8. Targeted shim clippy passes with -D warnings; capability/range and zero-history visible-row tests pass 1/1 each.

Fix complete: the normal 256-row request now uses `Terminal::snapshot()`, while nondefault row counts use `snapshot_with_tail()`. Commit 68f1a2f8. Targeted shim clippy passes with `-D warnings`; capability/range and zero-history visible-row tests pass 1/1 each.
Author
Owner

Finding from final fast: workspace clippy fails on three new test assertions in exit_storage.rs (lines 91, 92, 102), all assert_is_empty under pedantic -D warnings. Replacing them with explicit empty-array equality assertions, then rerunning the full fast gate.

Finding from final fast: workspace clippy fails on three new test assertions in `exit_storage.rs` (lines 91, 92, 102), all `assert_is_empty` under pedantic `-D warnings`. Replacing them with explicit empty-array equality assertions, then rerunning the full fast gate.
Author
Owner

Fix complete: the three storage tests now use explicit empty-array equality assertions. Commit f67888f3. Server clippy passes with -D warnings (12.67 s), and all 3 encoder tests pass (0.04 s).

Fix complete: the three storage tests now use explicit empty-array equality assertions. Commit f67888f3. Server clippy passes with `-D warnings` (12.67 s), and all 3 encoder tests pass (0.04 s).
Author
Owner

Fast gate step complete at head f67888f3. All Rust gate rows and TypeScript checks pass. Static binaries: x86_64 16,318,128 B (limit 16,404,816); aarch64 13,734,600 B (limit 13,817,816).

Verbatim Rust gate summary:
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+

Verbatim TypeScript protocol summary:
stream differential: 141 streams, 13578 schedules, zero divergences
7 pass
0 fail
40810 expect() calls
Ran 7 tests across 2 files. [2.94s]

Fast gate step complete at head f67888f3. All Rust gate rows and TypeScript checks pass. Static binaries: x86_64 16,318,128 B (limit 16,404,816); aarch64 13,734,600 B (limit 13,817,816). Verbatim Rust gate summary: +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ Verbatim TypeScript protocol summary: stream differential: 141 streams, 13578 schedules, zero divergences 7 pass 0 fail 40810 expect() calls Ran 7 tests across 2 files. [2.94s]
Author
Owner

Latency-run setup finding: the dev profile reached verify-latency.py but its native stage stopped before measurements because the per-job fixture path exceeded AF_UNIX sun_path (110 bytes). The chosen rt-dev root was too long; this is fixture configuration, not a code result. Retrying with the shorter $HOME/.cache/codex-scratch/session-life/rt root; dev/current native measurements will be back to back with load recorded.

Latency-run setup finding: the dev profile reached `verify-latency.py` but its native stage stopped before measurements because the per-job fixture path exceeded AF_UNIX `sun_path` (110 bytes). The chosen `rt-dev` root was too long; this is fixture configuration, not a code result. Retrying with the shorter `$HOME/.cache/codex-scratch/session-life/rt` root; dev/current native measurements will be back to back with load recorded.
Author
Owner

Same-window reconnect check on infraternal-dev under systemd-run --user --scope -p CPUWeight=10000, targeted apps/tracer/test/terminal.spec.ts test (20 reconnect samples), RTT 300 ms, dev then current, no source changes in tracer UI. Dev 459070fe: METRIC name=reconnect_resumed source=tracer-production-build n=20 p50_ms=713.00 p99_ms=962.60 budget_ms=900 result=FAIL. Current f67888f3: METRIC name=reconnect_resumed source=tracer-production-build n=20 p50_ms=730.60 p99_ms=992.40 budget_ms=900 result=FAIL. One-minute load ranged 1.73–3.33; five-minute 3.05–4.24; fifteen-minute 7.09–8.82. Current is 29.80 ms above dev p99 in this pair; both exceed the gate. Logs: $HOME/.cache/codex-scratch/session-life/reconnect-dev.log and reconnect-current.log. Since this test uses the same tracer test double on both revisions and the branch has no tracer UI changes, this single pair does not establish a branch-caused latency change. The full baseline latency script's native stage separately failed before measurement because its state path was 110 bytes; rerunning native comparison with a shorter root is next.

Same-window reconnect check on infraternal-dev under `systemd-run --user --scope -p CPUWeight=10000`, targeted `apps/tracer/test/terminal.spec.ts` test (20 reconnect samples), RTT 300 ms, dev then current, no source changes in tracer UI. Dev `459070fe`: `METRIC name=reconnect_resumed source=tracer-production-build n=20 p50_ms=713.00 p99_ms=962.60 budget_ms=900 result=FAIL`. Current `f67888f3`: `METRIC name=reconnect_resumed source=tracer-production-build n=20 p50_ms=730.60 p99_ms=992.40 budget_ms=900 result=FAIL`. One-minute load ranged 1.73–3.33; five-minute 3.05–4.24; fifteen-minute 7.09–8.82. Current is 29.80 ms above dev p99 in this pair; both exceed the gate. Logs: `$HOME/.cache/codex-scratch/session-life/reconnect-dev.log` and `reconnect-current.log`. Since this test uses the same tracer test double on both revisions and the branch has no tracer UI changes, this single pair does not establish a branch-caused latency change. The full baseline latency script's native stage separately failed before measurement because its state path was 110 bytes; rerunning native comparison with a shorter root is next.
Author
Owner

Finding during native latency comparison: dev 459070fe completed the same-session flood stage with keystroke_pty_echo_flood_same_session p99 564.52 ms (budget 334 ms) and 242.92 ms growth (budget 16.67 ms), after the baseline and other-session stages passed. Current release binary completed baseline/other-session stages at 20 samples (p99 324.89/320.01 ms) but produced no same-session metric within 120 seconds; the fixture was blocked in agent_fixture.py:65 (sock.recv) while the current infraternal process used 76% CPU. The 100-sample current run showed the same stall and was interrupted after 5 minutes. Short state root avoided the earlier AF_UNIX path issue. This is a current-branch performance finding; root cause is under investigation. Logs: native-dev.log, native-current.log, native-current-20.log under $HOME/.cache/codex-scratch/session-life.

Finding during native latency comparison: dev `459070fe` completed the same-session flood stage with `keystroke_pty_echo_flood_same_session` p99 564.52 ms (budget 334 ms) and 242.92 ms growth (budget 16.67 ms), after the baseline and other-session stages passed. Current release binary completed baseline/other-session stages at 20 samples (p99 324.89/320.01 ms) but produced no same-session metric within 120 seconds; the fixture was blocked in `agent_fixture.py:65` (`sock.recv`) while the current `infraternal` process used 76% CPU. The 100-sample current run showed the same stall and was interrupted after 5 minutes. Short state root avoided the earlier AF_UNIX path issue. This is a current-branch performance finding; root cause is under investigation. Logs: `native-dev.log`, `native-current.log`, `native-current-20.log` under `$HOME/.cache/codex-scratch/session-life`.
Author
Owner

Causal probe (diagnostic build only): with shell hooks disabled, suppressing the lifecycle watcher reduced current same-session PTY echo from 940.02 ms to 349.90 ms for one sample; dev was 337.94 ms. Current with the watcher enabled repeated at 910.69 ms and 940.02 ms. Baseline and other-session echoes remained around 280–320 ms. This localizes the flood overhead to the lifecycle observer’s additional output path; it does not isolate the parser from relay work. The diagnostic source edit and binary were restored byte-for-byte; tracked tree is clean. Host load rose above 17 during follow-up builds/tests, so I’m not treating the flood comparison as a final gate result.

Causal probe (diagnostic build only): with shell hooks disabled, suppressing the lifecycle watcher reduced current same-session PTY echo from 940.02 ms to 349.90 ms for one sample; dev was 337.94 ms. Current with the watcher enabled repeated at 910.69 ms and 940.02 ms. Baseline and other-session echoes remained around 280–320 ms. This localizes the flood overhead to the lifecycle observer’s additional output path; it does not isolate the parser from relay work. The diagnostic source edit and binary were restored byte-for-byte; tracked tree is clean. Host load rose above 17 during follow-up builds/tests, so I’m not treating the flood comparison as a final gate result.
Author
Owner

Step complete: added direct memchr dependency for the lifecycle parser fast path, reusing locked 2.8.3 rather than adding a scanner implementation. cargo check -p infraternal-agent --lib passed in 6.01 s. Commit 0cb2b1ed.

Step complete: added direct `memchr` dependency for the lifecycle parser fast path, reusing locked 2.8.3 rather than adding a scanner implementation. `cargo check -p infraternal-agent --lib` passed in 6.01 s. Commit `0cb2b1ed`.
Author
Owner

Step complete: added memchr to the separate fuzz package because its target includes the production parser module directly. cargo check --manifest-path fuzz/Cargo.toml --bin lifecycle_osc passed in 0.78 s under Zig 0.15.2. Commit 2e3ed68e.

Step complete: added `memchr` to the separate fuzz package because its target includes the production parser module directly. `cargo check --manifest-path fuzz/Cargo.toml --bin lifecycle_osc` passed in 0.78 s under Zig 0.15.2. Commit `2e3ed68e`.
Author
Owner

Parser hot-path step complete: 0c4b9410. The regression test first failed at 65,536 per-byte parser visits for 65,536 ordinary output bytes; it now passes with fewer than 1,024 visits and confirms prompt recognition across the next chunk. Agent library tests: 30 passed, 0 failed, 2 ignored. Clippy passed (0.77 s). Lifecycle OSC fuzzing completed 112,961 runs in 6 s, without sanitizer because the configured sanitizer runtime did not link on this toolchain. The fast path only handles chunks without ESC or spaces; all other bytes retain the existing parser path.

Parser hot-path step complete: `0c4b9410`. The regression test first failed at 65,536 per-byte parser visits for 65,536 ordinary output bytes; it now passes with fewer than 1,024 visits and confirms prompt recognition across the next chunk. Agent library tests: 30 passed, 0 failed, 2 ignored. Clippy passed (0.77 s). Lifecycle OSC fuzzing completed 112,961 runs in 6 s, without sanitizer because the configured sanitizer runtime did not link on this toolchain. The fast path only handles chunks without ESC or spaces; all other bytes retain the existing parser path.
Author
Owner

Latency diagnostic finding (not a quiet-window comparison): the 20-sample dev run logged keystroke_pty_echo_flood_same_session p99 513.31 ms (334 ms budget) and same-session flood growth 191.55 ms (16.67 ms budget); baseline p99 was 321.76 ms. Other-session growth passed at -14.14 ms. The run finished with host load 10.20/15.14/11.93 and subsequent load remained above 11; log: $HOME/.cache/codex-scratch/session-life/native-dev-20-diag.log. The optimized current run was previously interrupted when load reached 22.34, before same-session samples. These measurements cannot establish the requested quiet-window delta. I will retry only when this host has a quiet window.

Latency diagnostic finding (not a quiet-window comparison): the 20-sample dev run logged `keystroke_pty_echo_flood_same_session` p99 513.31 ms (334 ms budget) and same-session flood growth 191.55 ms (16.67 ms budget); baseline p99 was 321.76 ms. Other-session growth passed at -14.14 ms. The run finished with host load 10.20/15.14/11.93 and subsequent load remained above 11; log: `$HOME/.cache/codex-scratch/session-life/native-dev-20-diag.log`. The optimized current run was previously interrupted when load reached 22.34, before same-session samples. These measurements cannot establish the requested quiet-window delta. I will retry only when this host has a quiet window.
Author
Owner

Committed change and required fast gate complete at 0c4b9410; systemd scope result was success. Rust result: 54 tests across 12 files passed, 0 failed, 9,930 expect() calls. TypeScript protocol result: 7 passed, 0 failed, 40,810 expect() calls; differential: 141 streams, 13,578 schedules, zero divergences. Static sizes: x86_64 16,319,184 / 16,404,816 B; aarch64 13,736,056 / 13,817,816 B. Host load at gate completion: 24.20/19.11/14.91, so this is gate evidence, not latency evidence.

Fast-gate Rust summary, verbatim:

+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
Committed change and required fast gate complete at `0c4b9410`; systemd scope result was `success`. Rust result: 54 tests across 12 files passed, 0 failed, 9,930 expect() calls. TypeScript protocol result: 7 passed, 0 failed, 40,810 expect() calls; differential: 141 streams, 13,578 schedules, zero divergences. Static sizes: x86_64 16,319,184 / 16,404,816 B; aarch64 13,736,056 / 13,817,816 B. Host load at gate completion: 24.20/19.11/14.91, so this is gate evidence, not latency evidence. Fast-gate Rust summary, verbatim: ``` +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ```
Author
Owner

Current status: code fixes and scripts/verify fast are complete at 0c4b9410. Comparative native flood and access-screen runs remain pending: this host is still occupied (load 24.33/16.24/14.78; 17 active systemd scopes). The earlier optimized native 100-sample run was interrupted at load 22.34 before same-session samples; the loaded dev diagnostic and earlier reconnect pair are recorded above. A quiet infraternal-dev window is needed to finish the performance comparison. I am continuing to monitor for one.

Current status: code fixes and `scripts/verify fast` are complete at `0c4b9410`. Comparative native flood and access-screen runs remain pending: this host is still occupied (load 24.33/16.24/14.78; 17 active systemd scopes). The earlier optimized native 100-sample run was interrupted at load 22.34 before same-session samples; the loaded dev diagnostic and earlier reconnect pair are recorded above. A quiet infraternal-dev window is needed to finish the performance comparison. I am continuing to monitor for one.
Author
Owner

Independent re-verification started on review-session-life at target 0c4b94108f; merge base with dev 459070fe3b. Continuing prior SL-R1 through SL-R5 evidence and repair history on #100; checking fixes, restart/rerun ordering, bounded storage and performance. No implementation changes, push or deploy.

Independent re-verification started on review-session-life at target 0c4b94108f52027797ba017f457b0706d9894344; merge base with dev 459070fe3b75548382e8e19fba86af20439cf607. Continuing prior SL-R1 through SL-R5 evidence and repair history on #100; checking fixes, restart/rerun ordering, bounded storage and performance. No implementation changes, push or deploy.
Author
Owner

SL-R6 P2 confirmed at target 0c4b9410: finish_fallback completes an OSC-integrated command with status -1 if its output ends in user$ and settles 500ms. It clears Running, so subsequent real OSC D;7 is ignored. Failing normal-location test integrated_command_output_does_not_trigger_prompt_fallback committed on review-session-life; assertion actual Some(CommandFinished {status:-1,finished_at:500}), expected None. Standalone harness compiles the actual repository module. No implementation change.

SL-R6 P2 confirmed at target 0c4b9410: finish_fallback completes an OSC-integrated command with status -1 if its output ends in user$ and settles 500ms. It clears Running, so subsequent real OSC D;7 is ignored. Failing normal-location test integrated_command_output_does_not_trigger_prompt_fallback committed on review-session-life; assertion actual Some(CommandFinished {status:-1,finished_at:500}), expected None. Standalone harness compiles the actual repository module. No implementation change.
Author
Owner

SL-R7 P2: D183 additive Bash hooks change the status seen by existing PROMPT_COMMAND. Real PTY test bash_user_prompt_command_observes_original_status fails (0/1, 0.73s): after false the user hook observes 0, because __infraternal_capture_status ends with a successful assignment. The integration status marker is preserved, but the user hook status is not. Committed failing test on review-session-life; no implementation fix.

SL-R7 P2: D183 additive Bash hooks change the status seen by existing PROMPT_COMMAND. Real PTY test bash_user_prompt_command_observes_original_status fails (0/1, 0.73s): after false the user hook observes 0, because __infraternal_capture_status ends with a successful assignment. The integration status marker is preserved, but the user hook status is not. Committed failing test on review-session-life; no implementation fix.
Author
Owner

SL-R8 P1: Bash Ctrl-U editing still saves a different executable command after SL-R5 repair. A real Readline PTY replaces printf abc with printf xyz using CR + six CSI C cursor moves + CSI K erasure. Parser test bash_line_redraw_is_exact_or_unavailable_for_rerun fails: actual printf abc, expected printf xyz or unavailable. The CR changes capture to Running; cursor/erase controls do not invalidate saved input. Failing test committed on review-session-life; real PTY capture and red log under $HOME/.cache/codex-scratch/session-life-review/. No implementation change.

SL-R8 P1: Bash Ctrl-U editing still saves a different executable command after SL-R5 repair. A real Readline PTY replaces printf abc with printf xyz using CR + six CSI C cursor moves + CSI K erasure. Parser test bash_line_redraw_is_exact_or_unavailable_for_rerun fails: actual printf abc, expected printf xyz or unavailable. The CR changes capture to Running; cursor/erase controls do not invalidate saved input. Failing test committed on review-session-life; real PTY capture and red log under $HOME/.cache/codex-scratch/session-life-review/. No implementation change.
Author
Owner

Source-head fast gate setup error: TMPDIR path plus the setup-token fixture suffix exceeded AF_UNIX SUN_LEN in runtime::tests::setup_token_socket_is_private_and_requires_explicit_request; server suite 116 passed/1 failed/10 ignored. This is review harness configuration. Re-run uses shorter owned $HOME/.cache/codex-scratch/slr/t; no source or deadline changes. Prior SL-R1 through SL-R5 regressions pass; parser 12/12 and shell 3/3 independently rerun. ASAN lifecycle fuzz: 310250 executions/31s, no crash. Storage fixture reproduced 6400 rows,57381B maximum record,367238400B row estimate,371486720B SQLite pages; debug insertion5064ms at load41.47 (not a release throughput comparison).

Source-head fast gate setup error: TMPDIR path plus the setup-token fixture suffix exceeded AF_UNIX SUN_LEN in runtime::tests::setup_token_socket_is_private_and_requires_explicit_request; server suite 116 passed/1 failed/10 ignored. This is review harness configuration. Re-run uses shorter owned $HOME/.cache/codex-scratch/slr/t; no source or deadline changes. Prior SL-R1 through SL-R5 regressions pass; parser 12/12 and shell 3/3 independently rerun. ASAN lifecycle fuzz: 310250 executions/31s, no crash. Storage fixture reproduced 6400 rows,57381B maximum record,367238400B row estimate,371486720B SQLite pages; debug insertion5064ms at load41.47 (not a release throughput comparison).
Author
Owner

SL-R9 P1: rerun can wait indefinitely when observer connects after prompt output and ReadFrom legally substitutes SnapshotWithFlags. observe_session ignores the snapshot and does not recover retained raw OSC prompt metadata. Normal Cargo test rerun_recovers_prompt_metadata_after_snapshot_substitution fails (2.01s): actual no input, expected printf restored newline. Real Unix-socket handshake and frozen shim codec; fixture supports a raw prompt replay if requested. Test committed on review-session-life; location tests/unit/lifecycle_resume.rs. No implementation fix.

SL-R9 P1: rerun can wait indefinitely when observer connects after prompt output and ReadFrom legally substitutes SnapshotWithFlags. observe_session ignores the snapshot and does not recover retained raw OSC prompt metadata. Normal Cargo test rerun_recovers_prompt_metadata_after_snapshot_substitution fails (2.01s): actual no input, expected printf restored newline. Real Unix-socket handshake and frozen shim codec; fixture supports a raw prompt replay if requested. Test committed on review-session-life; location tests/unit/lifecycle_resume.rs. No implementation fix.
Author
Owner

Re-verification of earlier SL-R1 through SL-R5: parser12/12 and shell3/3 focused regressions pass; source-head SQLite lifecycle_exit_survives_broadcast_capacity_pressure also passed. Existing storage scale reproduced exact author byte counts:6400 exits,40869B screen,8192B tail,57381B max estimated record,367238400B row estimate,371486720B pages. Debug insertion5064ms at load41.47/32.27/25.65; no release timing claim. ASAN lifecycle_osc fuzz310250 runs/31s, no crash. New failing tests committed separately: SL-R6 ad344bb0,SL-R7 2a2206f9,SL-R8 5a184aec,SL-R9 c5e4551c. Current new counts P0=0,P1=2,P2=2,P3=0. Source-head fast initially failed fixture SUN_LEN due review TMPDIR; the isolated test passes with short scratch alias s9. Full corrected gate follows after initial static builds.

Re-verification of earlier SL-R1 through SL-R5: parser12/12 and shell3/3 focused regressions pass; source-head SQLite lifecycle_exit_survives_broadcast_capacity_pressure also passed. Existing storage scale reproduced exact author byte counts:6400 exits,40869B screen,8192B tail,57381B max estimated record,367238400B row estimate,371486720B pages. Debug insertion5064ms at load41.47/32.27/25.65; no release timing claim. ASAN lifecycle_osc fuzz310250 runs/31s, no crash. New failing tests committed separately: SL-R6 ad344bb0,SL-R7 2a2206f9,SL-R8 5a184aec,SL-R9 c5e4551c. Current new counts P0=0,P1=2,P2=2,P3=0. Source-head fast initially failed fixture SUN_LEN due review TMPDIR; the isolated test passes with short scratch alias s9. Full corrected gate follows after initial static builds.
Author
Owner

SL-R9 concrete trigger verified: startup output wraps the ring between Hello and ReadFrom, so the ready prompt arrives only in the snapshot. Refined normal Cargo regression still fails (2.00s, no initial input). Production musl shim with a 64B ring independently returned head201, ReadFrom response0x1c (flagged snapshot183B), and raw replay retained OSC133 A in64B. Test commit amended to model default-ring wrap explicitly; no implementation change. Raw logs under session-life-review/snapshot-readiness-red.log and real-prompt-recovery.log.

SL-R9 concrete trigger verified: startup output wraps the ring between Hello and ReadFrom, so the ready prompt arrives only in the snapshot. Refined normal Cargo regression still fails (2.00s, no initial input). Production musl shim with a 64B ring independently returned head201, ReadFrom response0x1c (flagged snapshot183B), and raw replay retained OSC133 A in64B. Test commit amended to model default-ring wrap explicitly; no implementation change. Raw logs under session-life-review/snapshot-readiness-red.log and real-prompt-recovery.log.
Author
Owner

Target 0c4b94108f: independent scripts/verify fast exited 0. Full output verbatim, part 1/3. Short owned scratch alias s9 fixes fixture SUN_LEN; no source changes or baseline exemption.

Full gate output
Running as unit: run-p1830319-i22798264.scope; invocation ID: 7bdc1880b44540d29cdb4960674d2894
METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=324.54 p99_ms=329.34 result=PASS

==> fmt

==> VT native fmt

==> clippy
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.62s

==> test
    Finished `test` profile [unoptimized + debuginfo] target(s) in 0.55s
     Running unittests src/main.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal-a8c25747c2fe4103)

running 2 tests
test install::tests::dry_run_prints_a_process_surviving_user_unit ... ok
test setup_token_tests::setup_token_command_reads_only_the_expected_socket_response ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests/agent_daemon.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/agent_daemon-0c166168fb13cc9b)

running 1 test
test real_binary_preserves_input_and_output_across_24_abrupt_stops ... ok

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

     Running tests/agent_queues.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/agent_queues-5c31cca83ab6db62)

running 1 test
test saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok

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

     Running tests/agent_review.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/agent_review-0079b84c94523df2)

running 6 tests
test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok
test last_typist_selects_its_own_real_pty_dimensions ... ok
test initial_attach_requires_explicit_credit_before_replay ... ok
test retained_unwritten_input_survives_interleaved_ack_restart ... ok
test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok
test repeated_tiny_credit_pauses_preserve_shell_progress ... ok

test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 18.96s

     Running tests/agent_sessions.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/agent_sessions-37f9e89cf0a419a4)

running 1 test
test detached_shim_is_discovered_and_replays_from_the_last_observed_offset ... ok

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

     Running tests/idle_canary.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/idle_canary-513e29e37ff51329)

running 1 test
test one_hertz_wakeup_is_detected_past_the_legacy_half_second_window ... ok

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

     Running tests/shim.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/shim-82d1692b94e0eef7)

running 7 tests
test disallowed_signal_only_disconnects_peer ... ok
test double_fork_survives_parent_death ... ok
test replacement_connection_and_malformed_limit ... ok
test real_shell_reconnect_resize_and_retained_exit ... ok
test attached_backpressure_and_detached_progress ... ok
active
test user_scope_survives_parent_unit_stop ... ok
test ring_wrap_snapshot_repaints_real_vim ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.61s

     Running tests/vt_credit.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/vt_credit-56d67e4d7851308d)

running 1 test
test unaffordable_repaints_park_until_sufficient_credit ... ok

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

     Running tests/vt_reconnect.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/vt_reconnect-977d9de9c59a4fa4)

running 1 test
test snapshot_limits_never_close_live_reconnect ... ok

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

     Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_agent-71eb75715c20cdcd)

running 32 tests
test daemon::name_refresh_tests::cached_process_metadata_does_not_refresh_before_the_scan_deadline ... ok
test daemon::output_event_tests::high_volume_output_waits_for_the_notice_interval ... ok
test lifecycle::tests::malformed_and_oversized_sequences_remain_bounded ... ok
test lifecycle::tests::fallback_tracks_echoed_command_until_prompt_returns ... ok
test lifecycle::tests::markers_survive_chunk_boundaries_and_percent_encoded_cwd ... ok
test lifecycle::tests::command_marker_keeps_echoed_input_and_decodes_shell_payload ... ok
test lifecycle::tests::fallback_invalid_utf8_stays_inside_command_byte_limit ... ok
test lifecycle::tests::edited_bash_input_is_exact_or_unavailable_for_rerun ... ok
test lifecycle::tests::fallback_prompt_ignores_color_sequences ... ok
test lifecycle::tests::replayed_prompt_marker_is_ready_for_one_shot_command_injection ... ok
test lifecycle::tests::ordinary_running_output_skips_the_per_byte_parser ... ok
test lifecycle::tests::overlong_command_captures_are_not_replayed_as_prefixes ... ok
test daemon::output_tail_tests::retains_exact_tail_across_wrap_and_oversized_write ... ok
test relay::tests::expired_credit_resumes_retained_bytes_at_the_same_cursor ... ok
test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok
test relay::tests::output_partial_credit_and_dedup ... ok
test lifecycle::tests::textless_command_marker_does_not_append_command_output ... ok
test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement
test relay::tests::overflowing_ranges_never_mutate_cursors ... ok
test relay::tests::positive_insufficient_credit_arms_a_one_shot_deadline ... ok
test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok
test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... ok
test relay::tests::attachment_has_no_implicit_output_or_snapshot_credit ... ok
test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement
test sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... ok
test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok
test lifecycle::tests::process_command_capture_stays_within_its_byte_limit ... ok
test sessions::tests::sequenced_attach_intersects_caps_and_legacy_attach_stays_zero ... ok
test sessions::tests::post_listen_chmod_wakes_a_connection_refused_at_bind ... ok
test daemon::command_finished_delivery_tests::command_completion_waits_for_writer_capacity ... ok
test sessions::tests::borrowed_reader_payload_uses_reusable_cancel_safe_storage ... ok
test sessions::tests::cancelled_fragmented_shim_read_retains_header_and_body_progress ... ok

test result: ok. 30 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.04s

     Running tests/transport.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/transport-f53c958688d52af5)

running 2 tests
test oversized_header_and_truncated_frame_are_rejected ... ok
test fragmented_headers_coalesced_frames_and_reusable_transmit ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_mesh-3f967587718407e9)

running 0 tests

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

     Running tests/default_arrow.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/default_arrow-312553ba19630584)

running 1 test
test omitted_arrow_ports_default_to_all_services ... ok

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

     Running tests/properties.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/properties-78f35bbe1b57dcd5)

running 14 tests
test exhausted_versions_reject_mutations_without_changing_state ... ok
test join_to_same_tag_grants_both_initiation_directions ... ok
test arrow_replacement_is_atomic_and_unrelated_nodes_keep_their_versions ... ok
test private_material_never_enters_debug_or_coordination_serialization ... ok
test public_checkpoint_preserves_addresses_rules_versions_and_overlap ... ok
test rotation_waits_for_overlap_and_delivery_and_removal_drops_every_key ... ok
test names_versions_and_backend_status ... ok
test directional_grants_union_and_minimal_updates ... ok
test checkpoint_after_suffix_change_restores_without_reallocating_addresses ... ok
test server_rotation_has_continuous_keys_for_every_node_during_delivery ... ok
test overlaps_are_reported_without_silent_range_changes ... ok
test protocol_port_unions_never_grant_an_unlisted_service ... ok
test addresses_are_unique_stable_and_not_recycled ... ok
test seeded_random_sequences_equal_full_compile_and_deny_without_grants ... ok

test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.44s

     Running tests/rotation_time.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/rotation_time-a58dd287253d611d)

running 1 test
test unrepresentable_rotation_overlap_rejects_before_mutation ... ok

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

     Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_plugin_api-4480fd7032f11ca2)

running 0 tests

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

     Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_plugin_ssh-22a9a893799c7f17)

running 0 tests

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

     Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_protocol-67b9a310ef49abf9)

running 7 tests
test tests::oversized_encode_keeps_the_reusable_output_unchanged ... ok
test stream_tests::split_mux_header_preserves_trailing_close ... ok
test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok
test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok
test stream_tests::all_short_frame_splits_match_direct_decoding ... ok
test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok
test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_server-5ac931ac9cd5dc5f)

running 127 tests
test auth::tests::account_identity_migration_backfills_legacy_users ... ok
test auth::http::hostname_tests::authenticated_session_response_includes_system_hostname ... ok
test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok
test auth::tests::account_identity_schema_has_unique_usernames_and_display_names ... ok
test auth::tests::aaguid_migration_preserves_legacy_credentials_and_sessions ... ok
test auth::tests::aaguid_projection_rejects_malformed_cbor_corpus ... ok
test auth::crypto::verifier_tests::recovery_capacity_denial_is_not_a_legacy_credential_signal ... ok
test auth::crypto::verifier_tests::browser_secret_hashing_is_canonical_and_bounded ... ok
test auth::tests::audit_ceremony_browser_binding ... ok
test auth::tests::audit_no_public_credential_listing ... ok
test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds
test auth::tests::audit_logout_survives_admission_exhaustion ... ok
test auth::tests::audit_recovery_after_page_discard_can_resume_at_original_deadline ... ok
test auth::tests::audit_recovery_pending_is_visible_to_signed_in_device ... ok
test auth::tests::audit_recovery_session_expiring_during_verification_keeps_delay ... ok
test auth::tests::provider_labels_cover_the_cited_registry_without_guessing ... ok
test auth::tests::provider_session_latency_at_50_devices ... ignored, local auth session scale measurement; run without concurrent builds
test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok
test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok
test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok
test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok
test auth::tests::enrollment_prf_input_matches_discoverable_login ... ok
test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok
test auth::tests::pending_unlock_expires_without_terminal_authority ... ok
test auth::tests::public_status_and_discoverable_http_login ... ok
test auth::tests::recovery_session_delay_latency_at_capacity ... ignored, release-only recovery measurement at 50 live sessions; run without concurrent compilation
test auth::tests::recovery_audit_commits_once_with_start_cancel_and_complete ... ok
test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok
test auth::tests::recovery_verifier_latency_at_capacity ... ignored, release-only v2 diagnostic at 50 live session rows; record host load separately
test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok
test auth::tests::recovery_http_live_same_account_is_immediate ... ok
test auth::tests::recovery_http_other_expired_pending_and_missing_sessions_wait ... ok
test auth::tests::recovery_live_session_cannot_accelerate_an_active_delayed_request ... ok
test auth::tests::recovery_live_session_revoked_during_verification_cannot_waive_delay ... ok
test auth::tests::recovery_unknown_identity_pays_the_same_database_and_verifier_work ... ok
test auth::tests::recovery_username_identity_is_additive_and_ambiguous_forms_fail ... ok
test auth::tests::redacted_unknown_and_failed_registrations_do_not_claim_a_provider ... ok
test auth::tests::registration_aaguid_survives_none_attestation_and_binds_session_provider ... ok
test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok
test auth::tests::review3_tests::review3_backend_reply_has_a_deadline ... ok
test auth::tests::review3_tests::review3_busy_expiry ... ok
test auth::tests::review3_tests::review3_busy_logout ... ok
test auth::tests::review3_tests::review3_busy_recovery ... ok
test auth::tests::review3_tests::review3_completion_and_cleanup_are_transaction_bound ... ok
test auth::tests::review3_tests::review3_expired_handshake_must_not_welcome ... ok
test auth::tests::review3_tests::review4_slow_open_at_user_capacity ... ignored, release-only connect scale measurement; run without concurrent builds
test auth::tests::review3_tests::review3_identified_privacy_timing_and_binding_replays ... ok
test auth::tests::review3_tests::review3_pending_routes_and_idle_expiry_recovery ... ok
test auth::tests::review3_tests::review3_revoked_handshake_must_not_welcome ... ok
test auth::tests::review3_tests::review3_revoked_resume_must_not_welcome ... ok
test auth::tests::review3_tests::review3_unwrap_cannot_be_skipped ... ok
test auth::tests::review3_tests::review3_waiting_handshake_loses_authority ... ok
test auth::tests::review3_tests::review4_open_reply_and_revocation_preserve_authority ... ok
test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok
test auth::tests::review_old_words_race_rotation ... ok
test auth::tests::reviewer_tests::reviewer_disk_cancel_complete_races ... ok
test auth::tests::reviewer_tests::reviewer_disk_restart_and_concurrent_resume ... ok
test auth::tests::reviewer_tests::reviewer_http_denials_and_recovery_admission ... ok
test auth::tests::reviewer_tests::reviewer_http_expired_capability_cannot_complete_after_writer_wait ... ok
test auth::tests::reviewer_tests::reviewer_http_expired_ceremony_cannot_complete_after_writer_wait ... ok
test auth::tests::reviewer_tests::reviewer_server_clock_rollback_retains_deadline_and_reports_more_than_day ... ok
test auth::tests::rotation_tests::recovery_phrase_routes_are_removed_and_words_fail_closed ... ok
test auth::tests::setup_identity_validation_and_uniqueness ... ok
test auth::tests::setup_check_is_non_consuming_and_closes_after_owner_creation ... ok
test auth::tests::rotation_tests::recovery_rotation_cannot_follow_a_cookie_account_switch ... ok
test auth::tests::setup_start_accepts_username_and_display_name ... ok
test auth::tests::rotation_tests::recovery_rotation_denies_pending_expired_and_stale_sessions ... ok
test auth::tests::rotation_tests::recovery_rotation_requires_session_and_replaces_legacy_envelope ... ok
test auth::tests::rotation_tests::reviewer_concurrent_signed_in_rotations_commit_once ... ok
test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok
test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok
test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok
test auth::tests::socket_tests::authenticated_idle_socket_survives_the_former_read_timeout ... ok
test auth::tests::socket_tests::socket_authority_latency_at_user_capacity ... ignored, release-only measurement without concurrent compilation
test auth::tests::socket_tests::clean_control_close_is_not_an_internal_error ... ok
test embedded::regressions::credited_bulk_output_survives_forwarder_io_pause ... ok
test embedded::regressions::credited_output_queue_at_stream_capacity ... ignored, debug actor memory/scheduling measurement; run without concurrent builds
test embedded::regressions::full_output_queue_must_not_block_shared_actor ... ok
test embedded::regressions::healthy_receiver_survives_ready_native_output_burst ... ok
test auth::tests::socket_tests::expired_handshake_releases_user_permits ... ok
test embedded::regressions::output_and_snapshot_spend_remaining_restart_credit ... ok
test embedded::regressions::real_agent_canonical_uuid_result_is_accepted ... ok
test embedded::regressions::real_agent_open_uses_uid_and_character_dimensions ... ok
test embedded::regressions::reattach_must_restore_output_credit ... ok
test embedded::regressions::recovery_event_then_snapshot_keeps_embedded_connection_live ... ok
test embedded::regressions::recovery_notices_preserve_order_credit_and_session_isolation ... ok
test embedded::regressions::stream_close_must_not_restart_all_sessions ... ok
test embedded::regressions::uncredited_output_or_repaint_is_rejected_before_queueing ... ok
test exit_storage::tests::empty_screen_uses_the_omitted_screen_sentinel ... ok
test exit_storage::tests::omits_a_screen_that_cannot_fit_without_truncating_the_compressed_block ... ok
test exit_storage::tests::retains_a_compressed_screen_and_only_the_newest_output_tail ... ok
test lifecycle::tests::automatic_rename_updates_cwd_but_respects_a_pinned_name ... ok
test lifecycle::tests::cleanup_deadline_tracks_exit_and_dismissal_without_periodic_polling ... ok
test lifecycle::tests::durable_byte_budget_backpressures_large_exit_notices ... ok
test lifecycle::tests::durable_notices_backpressure_without_dropping_exits ... ok
test lifecycle::tests::exit_cursor_marks_unseen_output_when_the_last_notice_was_dropped ... ok
test lifecycle::tests::exit_is_bounded_owned_dismissed_and_not_resurrected ... ok
test auth::tests::socket_tests::fragmented_wire_frame_has_a_completion_deadline ... ok
test lifecycle::tests::legacy_exit_rows_are_compacted_before_use_and_migration_is_resumable ... ok
test lifecycle::tests::maximum_exit_rows_fit_the_50_account_128_exit_scale ... ignored, release-only 50-account retained-exit storage measurement
test embedded::regressions::healthy_streams_progress_at_user_attachment_capacity ... ok
test lifecycle::tests::output_activity_clears_only_after_the_seen_cursor_catches_up ... ok
test lifecycle::tests::output_activity_is_coalesced_and_bounded_by_session ... ok
test lifecycle::tests::purge_uses_seven_day_millisecond_deadline ... ok
test lifecycle::tests::maximum_exit_storage_stays_below_64_kib_with_incompressible_screen ... ok
test runtime::reviewer_admission::reviewer_recovery_source_limit_covers_all_routes_without_forwarding_bypass ... ok
test lifecycle::tests::foreign_or_oversized_exit_is_rejected ... ok
test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok
test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok
test runtime::tests::lifecycle_exit_survives_broadcast_capacity_pressure ... ok
test lifecycle::tests::retained_exit_quota_caps_account_storage_at_128_records ... ok
test runtime::tests::setup_socket_cleanup_preserves_symlinks_and_regular_files ... ok
test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok
test runtime::tests::router_migrates_private_storage_and_serves_health ... ok
test web_assets::tests::encodings_and_identity_have_correct_headers_and_sizes ... ok
test web_assets::tests::spa_and_mutable_assets_revalidate_and_missing_brotli_uses_gzip ... ok
test websocket::recovery_notification_bench::recovery_notification_state_at_socket_capacity ... ignored, notification state sizing diagnostic, not allocator-inclusive RSS certification
test runtime::tests::startup_with_owner_unlinks_stale_setup_token_socket ... ok
test websocket::writer_tests::second_device_does_not_inherit_first_device_input_ack ... ok
test websocket::writer_tests::writer_admission_at_user_capacity ... ignored, release-only scale measurement; run without concurrent builds
test websocket::writer_tests::writer_ownership_capacity_unsigned_offsets_and_identity_reuse ... ok
test auth::tests::socket_tests::half_open_sockets_obey_user_limit ... ok
test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok
test auth::tests::socket_tests::incomplete_rfc_message_still_loses_authority_on_revocation ... ok
test auth::tests::socket_tests::recovery_subscription_updates_every_signed_in_socket ... ok
test auth::tests::socket_tests::revoked_idle_socket_loses_all_authority ... ok
test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok

test result: ok. 117 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 123.82s

     Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_shim-67ffc9c8d51fcf5c)

running 79 tests
test frame::checks::codec_reuse_measurement ... ignored, release codec and allocation-path measurement
test frame::checks::tests::golden_and_fragmented ... ok
test ring::checks::tests::wrap_and_exact_offsets ... ok
test session::inputs::tests::partial_writes_credit_only_the_owner_and_replay_trims_per_writer ... ok
test session::inputs::tests::identity_cap_preserves_all_existing_cursors ... ok
test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile
test session::measurements::poll_storage_measurement ... ignored, release poll-storage allocation measurement
test frame::checks::borrowed_and_owned_decoders_agree_at_every_fragment_boundary ... ok
test frame::checks::approximate_snapshot_codec_is_bounded_and_canonical ... ok
test frame::checks::tests::invalid_lengths_types_and_utf8 ... ok
test frame::checks::golden::every_frozen_message ... ok
test session::lifecycle_checks::expired_raw_tail_is_refused_without_snapshot_substitution ... ok
test session::resize_checks::resize_refusal_session_probe ... ignored, isolated session probe invoked by its parent with a controlled shell profile
test session::sequenced_checks::coalesced_ack_never_overwrites_a_partial_output_and_cursors_survive_peer_loss ... ok
test session::sequenced_checks::new_frames_roundtrip_and_refuse_noncanonical_payloads ... ok
test session::lifecycle_checks::snapshot_tail_request_requires_capability_and_respects_the_row_bound ... ok
test shell::tests::shell_hooks_append_after_user_configuration ... ok
test frame::checks::golden::exact_maximum_and_coalesced_frames ... ok
test session::sequenced_checks::trim_duplicates_gaps_overflow_and_capacity_are_transactional ... ok
test session::sequenced_checks::writer_selection_has_a_frozen_little_endian_layout ... ok
test session::sequenced_checks::reusable_encoder_retains_capacity_and_refuses_growth_before_mutation ... ok
test terminal::checks::tests::fixtures_and_continuations_repaint ... ok
test terminal::checks::tests::implicit_hyperlinks_retain_groups_across_rows_and_continuation ... ok
test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok
test session::resize_checks::native_resize_refusal_preserves_peer_and_pty ... ok
test terminal::checks::tests::margins_tabs_charsets_and_modes_continue ... ok
test terminal::checks::tests::partial_csi_and_utf8_continue ... ok
test terminal::checks::tests::long_unfinished_hyperlink_and_control_strings_continue ... ok
test terminal::checks::tests::pending_wrap_and_saved_wrap_continue_with_wide_cells ... ok
test terminal::checks::tests::saved_origin_survives_changed_margins ... ok
test terminal::checks::tests::retained_alternate_saved_cursor_and_keyboard_stack_continue ... ok
test terminal::checks::tests::zero_history_snapshot_keeps_the_visible_rows ... ok
test terminal::fidelity::fidelity_charset_mapped_wide_space_is_explicitly_rejected ... ok
test terminal::checks::tests::byte_budget_prunes_history_and_resize_remains_repaintable ... ok
test terminal::checks::approximate_repaint_keeps_complete_pending_syntax_or_omits_it_whole ... ok
test terminal::fidelity::fidelity_diagnostic_fixture ... ignored, diagnostic replay of an explicitly selected fixture file
test terminal::fidelity::fidelity_extended_nightly ... ignored, nightly expanded differential corpus: 20,000 deterministic cases
test shell::tests::bash_command_status_survives_existing_prompt_command ... ok
test terminal::fidelity::fidelity_fresh_c_redraw_default_is_explicitly_rejected ... ok
test terminal::fidelity::fidelity_cursor ... ok
test terminal::checks::tests::unfinished_sequence_over_frame_limit_fails_without_losing_runtime_state ... ok
test terminal::fidelity::fidelity_inherited_protection_off_mode_is_explicitly_rejected ... ok
test terminal::fidelity::fidelity_edge ... ok
test terminal::fidelity::fidelity_iso_protection_erase ... ok
test terminal::fidelity::fidelity_f1_rep ... ok
test terminal::fidelity::fidelity_oracle_observes_archived_cells_with_equal_active_screens ... ok
test terminal::fidelity::fidelity_oracle_detects_hidden_state ... ok
test terminal::fidelity::fidelity_orphaned_spacer_head ... ok
test terminal::fidelity::fidelity_prompt_resize_requires_explicit_rejection ... ok
test terminal::fidelity::fidelity_iso_protection_does_not_keep_rep_scratch ... ok
test terminal::fidelity::fidelity_rejects_unrepresentable_rep_without_mutating_source ... ok
test terminal::fidelity::fidelity_saved_modes_future_restore ... ok
test shell::tests::installed_shells_load_the_additive_hooks ... ok
test terminal::fidelity::fidelity_seeded_nightly ... ignored, nightly differential corpus: 20,000 deterministic cases
test terminal::fidelity::fidelity_saved_cursor_over_changed_edge ... ok
test terminal::fidelity::fidelity_semantic_validation_matches_exported_history_extent ... ok
test terminal::checks::approximate_repaint_is_bounded_clips_at_complete_cells_and_preserves_source ... ok
test terminal::fidelity::fidelity_snapshot_history_tail_contains_no_padding_rows ... ok
test terminal::fidelity::fidelity_snapshot_resets_stale_viewer_color_overrides ... ok
test terminal::fidelity::fidelity_single_shift_survives_rep_seed ... ok
test terminal::fidelity::fidelity_screen_entry_consumes_inherited_shift_before_saving ... ok
test terminal::fidelity::fidelity_variation_tail_attributes ... ok
test terminal::fidelity::fresh_captures::fidelity_fresh_real_program_captures ... ignored, manual fresh capture oracle; set VT_CAPTURE_DIR after real program capture
test terminal::measurements::budgets::snapshot_200x60 ... ignored, performance measurement; run release on the perf host
test terminal::measurements::memory::measured_terminal_rss ... ignored, RSS measurement; run this filter alone in a fresh release process
test terminal::measurements::throughput::measured_parser ... ignored, VT observer and history throughput measurement
test terminal::recovery_measurements::measured_full_ring_reconstruction ... ignored, release reconstruction measurement; old healthy handles permit repeated cleanup
test terminal::resize_recovery::absent_ring_keeps_last_good_size_and_later_output_usable ... ok
test terminal::fidelity::fidelity_spacer_head_attributes ... ok
test terminal::resize_recovery::complete_ring_restores_screens_mouse_and_unfinished_syntax ... ok
test terminal::resize_recovery::ring_gap_requires_clean_approximate_recovery ... ok
test terminal::resize_recovery::earlier_geometry_changes_require_approximation_even_with_origin_coverage ... ok
test terminal_native::allocation::resize_allocation_refusal_retires_native_handle ... ok
test terminal::fidelity::fidelity_variation_wrap_attributes ... ok
test terminal::fidelity::fidelity_mouse_effective_fields_follow_order_independently_of_booleans ... ok
test terminal::fidelity::fidelity_recorded_corpus ... ok
test terminal::fidelity::fidelity_handwritten ... ok
test terminal::fidelity::fidelity_extended_smoke ... ok
test terminal::fidelity::fidelity_seeded_smoke ... ok

test result: ok. 67 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 54.07s

     Running tests/detach.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/detach-c502cd554fb112ce)

running 1 test
test closed_standard_descriptors_become_dev_null ... ok

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

     Running tests/mouse.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/mouse-523bfdef43cc46cb)

running 1 test
test faithful_snapshot_preserves_public_mouse_encoder_reports ... ok

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

   Doc-tests infraternal_agent

running 0 tests

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

   Doc-tests infraternal_mesh

running 1 test
test crates/infraternal-mesh/src/model.rs - model::LocalPrivateKey (line 20) - compile fail ... ok

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

   Doc-tests infraternal_plugin_api

running 0 tests

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

   Doc-tests infraternal_plugin_ssh

running 0 tests

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

   Doc-tests infraternal_protocol

running 0 tests

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

   Doc-tests infraternal_server

running 0 tests

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

   Doc-tests infraternal_shim

running 0 tests

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


==> cargo-deny
warning[duplicate]: found 2 duplicate entries for crate 'base64'
   ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:24:1
   │  
24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index
25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index
   │ ╰───────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ base64 v0.21.7
     ├── base64urlsafedata v0.5.5
     │   ├── webauthn-attestation-ca v0.5.5
     │   │   └── webauthn-rs-core v0.5.5
     │   │       └── webauthn-rs v0.5.5
     │   │           └── infraternal-server v0.1.0
     │   │               └── infraternal v0.1.0
     │   ├── webauthn-rs v0.5.5 (*)
     │   ├── webauthn-rs-core v0.5.5 (*)
     │   └── webauthn-rs-proto v0.5.5
     │       └── webauthn-rs-core v0.5.5 (*)
     ├── webauthn-rs-core v0.5.5 (*)
     └── webauthn-rs-proto v0.5.5 (*)
   ├ base64 v0.22.1
     ├── axum v0.8.9
     │   └── infraternal-server v0.1.0
     │       └── infraternal v0.1.0
     ├── infraternal-server v0.1.0 (*)
     └── sqlx-core v0.8.6
         ├── sqlx v0.8.6
         │   ├── infraternal v0.1.0 (*)
         │   └── infraternal-server v0.1.0 (*)
         ├── sqlx-macros v0.8.6
         │   └── sqlx v0.8.6 (*)
         ├── sqlx-macros-core v0.8.6
         │   └── sqlx-macros v0.8.6 (*)
         └── sqlx-sqlite v0.8.6
             ├── sqlx v0.8.6 (*)
             └── sqlx-macros-core v0.8.6 (*)

warning[duplicate]: found 3 duplicate entries for crate 'getrandom'
   ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:88:1
   │  
88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index
89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index
90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index
   │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ getrandom v0.2.17
     └── rand_core v0.6.4
         ├── bip39 v2.2.2
         │   └── infraternal-server v0.1.0
         │       └── infraternal v0.1.0
         ├── crypto-common v0.1.7
         │   ├── aead v0.5.2
         │   │   └── aes-gcm v0.10.3
         │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   ├── cipher v0.4.4
         │   │   ├── aes v0.8.4
         │   │   │   └── aes-gcm v0.10.3 (*)
         │   │   ├── aes-gcm v0.10.3 (*)
         │   │   └── ctr v0.9.2
         │   │       └── aes-gcm v0.10.3 (*)
         │   ├── digest v0.10.7
         │   │   ├── blake2 v0.10.6
         │   │   │   └── argon2 v0.5.3
         │   │   │       └── infraternal-server v0.1.0 (*)
         │   │   ├── hmac v0.12.1

Target 0c4b94108f52027797ba017f457b0706d9894344: independent scripts/verify fast exited 0. Full output verbatim, part 1/3. Short owned scratch alias s9 fixes fixture SUN_LEN; no source changes or baseline exemption. <details><summary>Full gate output</summary> ```text Running as unit: run-p1830319-i22798264.scope; invocation ID: 7bdc1880b44540d29cdb4960674d2894 METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=324.54 p99_ms=329.34 result=PASS ==> fmt ==> VT native fmt ==> clippy Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.62s ==> test Finished `test` profile [unoptimized + debuginfo] target(s) in 0.55s Running unittests src/main.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal-a8c25747c2fe4103) running 2 tests test install::tests::dry_run_prints_a_process_surviving_user_unit ... ok test setup_token_tests::setup_token_command_reads_only_the_expected_socket_response ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running tests/agent_daemon.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/agent_daemon-0c166168fb13cc9b) running 1 test test real_binary_preserves_input_and_output_across_24_abrupt_stops ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 40.91s Running tests/agent_queues.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/agent_queues-5c31cca83ab6db62) running 1 test test saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 36.08s Running tests/agent_review.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/agent_review-0079b84c94523df2) running 6 tests test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok test last_typist_selects_its_own_real_pty_dimensions ... ok test initial_attach_requires_explicit_credit_before_replay ... ok test retained_unwritten_input_survives_interleaved_ack_restart ... ok test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok test repeated_tiny_credit_pauses_preserve_shell_progress ... ok test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 18.96s Running tests/agent_sessions.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/agent_sessions-37f9e89cf0a419a4) running 1 test test detached_shim_is_discovered_and_replays_from_the_last_observed_offset ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s Running tests/idle_canary.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/idle_canary-513e29e37ff51329) running 1 test test one_hertz_wakeup_is_detected_past_the_legacy_half_second_window ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.17s Running tests/shim.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/shim-82d1692b94e0eef7) running 7 tests test disallowed_signal_only_disconnects_peer ... ok test double_fork_survives_parent_death ... ok test replacement_connection_and_malformed_limit ... ok test real_shell_reconnect_resize_and_retained_exit ... ok test attached_backpressure_and_detached_progress ... ok active test user_scope_survives_parent_unit_stop ... ok test ring_wrap_snapshot_repaints_real_vim ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.61s Running tests/vt_credit.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/vt_credit-56d67e4d7851308d) running 1 test test unaffordable_repaints_park_until_sufficient_credit ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 21.59s Running tests/vt_reconnect.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/vt_reconnect-977d9de9c59a4fa4) running 1 test test snapshot_limits_never_close_live_reconnect ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 16.53s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_agent-71eb75715c20cdcd) running 32 tests test daemon::name_refresh_tests::cached_process_metadata_does_not_refresh_before_the_scan_deadline ... ok test daemon::output_event_tests::high_volume_output_waits_for_the_notice_interval ... ok test lifecycle::tests::malformed_and_oversized_sequences_remain_bounded ... ok test lifecycle::tests::fallback_tracks_echoed_command_until_prompt_returns ... ok test lifecycle::tests::markers_survive_chunk_boundaries_and_percent_encoded_cwd ... ok test lifecycle::tests::command_marker_keeps_echoed_input_and_decodes_shell_payload ... ok test lifecycle::tests::fallback_invalid_utf8_stays_inside_command_byte_limit ... ok test lifecycle::tests::edited_bash_input_is_exact_or_unavailable_for_rerun ... ok test lifecycle::tests::fallback_prompt_ignores_color_sequences ... ok test lifecycle::tests::replayed_prompt_marker_is_ready_for_one_shot_command_injection ... ok test lifecycle::tests::ordinary_running_output_skips_the_per_byte_parser ... ok test lifecycle::tests::overlong_command_captures_are_not_replayed_as_prefixes ... ok test daemon::output_tail_tests::retains_exact_tail_across_wrap_and_oversized_write ... ok test relay::tests::expired_credit_resumes_retained_bytes_at_the_same_cursor ... ok test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok test relay::tests::output_partial_credit_and_dedup ... ok test lifecycle::tests::textless_command_marker_does_not_append_command_output ... ok test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement test relay::tests::overflowing_ranges_never_mutate_cursors ... ok test relay::tests::positive_insufficient_credit_arms_a_one_shot_deadline ... ok test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... ok test relay::tests::attachment_has_no_implicit_output_or_snapshot_credit ... ok test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement test sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... ok test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok test lifecycle::tests::process_command_capture_stays_within_its_byte_limit ... ok test sessions::tests::sequenced_attach_intersects_caps_and_legacy_attach_stays_zero ... ok test sessions::tests::post_listen_chmod_wakes_a_connection_refused_at_bind ... ok test daemon::command_finished_delivery_tests::command_completion_waits_for_writer_capacity ... ok test sessions::tests::borrowed_reader_payload_uses_reusable_cancel_safe_storage ... ok test sessions::tests::cancelled_fragmented_shim_read_retains_header_and_body_progress ... ok test result: ok. 30 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.04s Running tests/transport.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/transport-f53c958688d52af5) running 2 tests test oversized_header_and_truncated_frame_are_rejected ... ok test fragmented_headers_coalesced_frames_and_reusable_transmit ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_mesh-3f967587718407e9) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/default_arrow.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/default_arrow-312553ba19630584) running 1 test test omitted_arrow_ports_default_to_all_services ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/properties.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/properties-78f35bbe1b57dcd5) running 14 tests test exhausted_versions_reject_mutations_without_changing_state ... ok test join_to_same_tag_grants_both_initiation_directions ... ok test arrow_replacement_is_atomic_and_unrelated_nodes_keep_their_versions ... ok test private_material_never_enters_debug_or_coordination_serialization ... ok test public_checkpoint_preserves_addresses_rules_versions_and_overlap ... ok test rotation_waits_for_overlap_and_delivery_and_removal_drops_every_key ... ok test names_versions_and_backend_status ... ok test directional_grants_union_and_minimal_updates ... ok test checkpoint_after_suffix_change_restores_without_reallocating_addresses ... ok test server_rotation_has_continuous_keys_for_every_node_during_delivery ... ok test overlaps_are_reported_without_silent_range_changes ... ok test protocol_port_unions_never_grant_an_unlisted_service ... ok test addresses_are_unique_stable_and_not_recycled ... ok test seeded_random_sequences_equal_full_compile_and_deny_without_grants ... ok test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.44s Running tests/rotation_time.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/rotation_time-a58dd287253d611d) running 1 test test unrepresentable_rotation_overlap_rejects_before_mutation ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_plugin_api-4480fd7032f11ca2) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_plugin_ssh-22a9a893799c7f17) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_protocol-67b9a310ef49abf9) running 7 tests test tests::oversized_encode_keeps_the_reusable_output_unchanged ... ok test stream_tests::split_mux_header_preserves_trailing_close ... ok test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok test stream_tests::all_short_frame_splits_match_direct_decoding ... ok test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_server-5ac931ac9cd5dc5f) running 127 tests test auth::tests::account_identity_migration_backfills_legacy_users ... ok test auth::http::hostname_tests::authenticated_session_response_includes_system_hostname ... ok test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok test auth::tests::account_identity_schema_has_unique_usernames_and_display_names ... ok test auth::tests::aaguid_migration_preserves_legacy_credentials_and_sessions ... ok test auth::tests::aaguid_projection_rejects_malformed_cbor_corpus ... ok test auth::crypto::verifier_tests::recovery_capacity_denial_is_not_a_legacy_credential_signal ... ok test auth::crypto::verifier_tests::browser_secret_hashing_is_canonical_and_bounded ... ok test auth::tests::audit_ceremony_browser_binding ... ok test auth::tests::audit_no_public_credential_listing ... ok test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds test auth::tests::audit_logout_survives_admission_exhaustion ... ok test auth::tests::audit_recovery_after_page_discard_can_resume_at_original_deadline ... ok test auth::tests::audit_recovery_pending_is_visible_to_signed_in_device ... ok test auth::tests::audit_recovery_session_expiring_during_verification_keeps_delay ... ok test auth::tests::provider_labels_cover_the_cited_registry_without_guessing ... ok test auth::tests::provider_session_latency_at_50_devices ... ignored, local auth session scale measurement; run without concurrent builds test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok test auth::tests::enrollment_prf_input_matches_discoverable_login ... ok test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok test auth::tests::pending_unlock_expires_without_terminal_authority ... ok test auth::tests::public_status_and_discoverable_http_login ... ok test auth::tests::recovery_session_delay_latency_at_capacity ... ignored, release-only recovery measurement at 50 live sessions; run without concurrent compilation test auth::tests::recovery_audit_commits_once_with_start_cancel_and_complete ... ok test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok test auth::tests::recovery_verifier_latency_at_capacity ... ignored, release-only v2 diagnostic at 50 live session rows; record host load separately test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok test auth::tests::recovery_http_live_same_account_is_immediate ... ok test auth::tests::recovery_http_other_expired_pending_and_missing_sessions_wait ... ok test auth::tests::recovery_live_session_cannot_accelerate_an_active_delayed_request ... ok test auth::tests::recovery_live_session_revoked_during_verification_cannot_waive_delay ... ok test auth::tests::recovery_unknown_identity_pays_the_same_database_and_verifier_work ... ok test auth::tests::recovery_username_identity_is_additive_and_ambiguous_forms_fail ... ok test auth::tests::redacted_unknown_and_failed_registrations_do_not_claim_a_provider ... ok test auth::tests::registration_aaguid_survives_none_attestation_and_binds_session_provider ... ok test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok test auth::tests::review3_tests::review3_backend_reply_has_a_deadline ... ok test auth::tests::review3_tests::review3_busy_expiry ... ok test auth::tests::review3_tests::review3_busy_logout ... ok test auth::tests::review3_tests::review3_busy_recovery ... ok test auth::tests::review3_tests::review3_completion_and_cleanup_are_transaction_bound ... ok test auth::tests::review3_tests::review3_expired_handshake_must_not_welcome ... ok test auth::tests::review3_tests::review4_slow_open_at_user_capacity ... ignored, release-only connect scale measurement; run without concurrent builds test auth::tests::review3_tests::review3_identified_privacy_timing_and_binding_replays ... ok test auth::tests::review3_tests::review3_pending_routes_and_idle_expiry_recovery ... ok test auth::tests::review3_tests::review3_revoked_handshake_must_not_welcome ... ok test auth::tests::review3_tests::review3_revoked_resume_must_not_welcome ... ok test auth::tests::review3_tests::review3_unwrap_cannot_be_skipped ... ok test auth::tests::review3_tests::review3_waiting_handshake_loses_authority ... ok test auth::tests::review3_tests::review4_open_reply_and_revocation_preserve_authority ... ok test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok test auth::tests::review_old_words_race_rotation ... ok test auth::tests::reviewer_tests::reviewer_disk_cancel_complete_races ... ok test auth::tests::reviewer_tests::reviewer_disk_restart_and_concurrent_resume ... ok test auth::tests::reviewer_tests::reviewer_http_denials_and_recovery_admission ... ok test auth::tests::reviewer_tests::reviewer_http_expired_capability_cannot_complete_after_writer_wait ... ok test auth::tests::reviewer_tests::reviewer_http_expired_ceremony_cannot_complete_after_writer_wait ... ok test auth::tests::reviewer_tests::reviewer_server_clock_rollback_retains_deadline_and_reports_more_than_day ... ok test auth::tests::rotation_tests::recovery_phrase_routes_are_removed_and_words_fail_closed ... ok test auth::tests::setup_identity_validation_and_uniqueness ... ok test auth::tests::setup_check_is_non_consuming_and_closes_after_owner_creation ... ok test auth::tests::rotation_tests::recovery_rotation_cannot_follow_a_cookie_account_switch ... ok test auth::tests::setup_start_accepts_username_and_display_name ... ok test auth::tests::rotation_tests::recovery_rotation_denies_pending_expired_and_stale_sessions ... ok test auth::tests::rotation_tests::recovery_rotation_requires_session_and_replaces_legacy_envelope ... ok test auth::tests::rotation_tests::reviewer_concurrent_signed_in_rotations_commit_once ... ok test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok test auth::tests::socket_tests::authenticated_idle_socket_survives_the_former_read_timeout ... ok test auth::tests::socket_tests::socket_authority_latency_at_user_capacity ... ignored, release-only measurement without concurrent compilation test auth::tests::socket_tests::clean_control_close_is_not_an_internal_error ... ok test embedded::regressions::credited_bulk_output_survives_forwarder_io_pause ... ok test embedded::regressions::credited_output_queue_at_stream_capacity ... ignored, debug actor memory/scheduling measurement; run without concurrent builds test embedded::regressions::full_output_queue_must_not_block_shared_actor ... ok test embedded::regressions::healthy_receiver_survives_ready_native_output_burst ... ok test auth::tests::socket_tests::expired_handshake_releases_user_permits ... ok test embedded::regressions::output_and_snapshot_spend_remaining_restart_credit ... ok test embedded::regressions::real_agent_canonical_uuid_result_is_accepted ... ok test embedded::regressions::real_agent_open_uses_uid_and_character_dimensions ... ok test embedded::regressions::reattach_must_restore_output_credit ... ok test embedded::regressions::recovery_event_then_snapshot_keeps_embedded_connection_live ... ok test embedded::regressions::recovery_notices_preserve_order_credit_and_session_isolation ... ok test embedded::regressions::stream_close_must_not_restart_all_sessions ... ok test embedded::regressions::uncredited_output_or_repaint_is_rejected_before_queueing ... ok test exit_storage::tests::empty_screen_uses_the_omitted_screen_sentinel ... ok test exit_storage::tests::omits_a_screen_that_cannot_fit_without_truncating_the_compressed_block ... ok test exit_storage::tests::retains_a_compressed_screen_and_only_the_newest_output_tail ... ok test lifecycle::tests::automatic_rename_updates_cwd_but_respects_a_pinned_name ... ok test lifecycle::tests::cleanup_deadline_tracks_exit_and_dismissal_without_periodic_polling ... ok test lifecycle::tests::durable_byte_budget_backpressures_large_exit_notices ... ok test lifecycle::tests::durable_notices_backpressure_without_dropping_exits ... ok test lifecycle::tests::exit_cursor_marks_unseen_output_when_the_last_notice_was_dropped ... ok test lifecycle::tests::exit_is_bounded_owned_dismissed_and_not_resurrected ... ok test auth::tests::socket_tests::fragmented_wire_frame_has_a_completion_deadline ... ok test lifecycle::tests::legacy_exit_rows_are_compacted_before_use_and_migration_is_resumable ... ok test lifecycle::tests::maximum_exit_rows_fit_the_50_account_128_exit_scale ... ignored, release-only 50-account retained-exit storage measurement test embedded::regressions::healthy_streams_progress_at_user_attachment_capacity ... ok test lifecycle::tests::output_activity_clears_only_after_the_seen_cursor_catches_up ... ok test lifecycle::tests::output_activity_is_coalesced_and_bounded_by_session ... ok test lifecycle::tests::purge_uses_seven_day_millisecond_deadline ... ok test lifecycle::tests::maximum_exit_storage_stays_below_64_kib_with_incompressible_screen ... ok test runtime::reviewer_admission::reviewer_recovery_source_limit_covers_all_routes_without_forwarding_bypass ... ok test lifecycle::tests::foreign_or_oversized_exit_is_rejected ... ok test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok test runtime::tests::lifecycle_exit_survives_broadcast_capacity_pressure ... ok test lifecycle::tests::retained_exit_quota_caps_account_storage_at_128_records ... ok test runtime::tests::setup_socket_cleanup_preserves_symlinks_and_regular_files ... ok test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok test runtime::tests::router_migrates_private_storage_and_serves_health ... ok test web_assets::tests::encodings_and_identity_have_correct_headers_and_sizes ... ok test web_assets::tests::spa_and_mutable_assets_revalidate_and_missing_brotli_uses_gzip ... ok test websocket::recovery_notification_bench::recovery_notification_state_at_socket_capacity ... ignored, notification state sizing diagnostic, not allocator-inclusive RSS certification test runtime::tests::startup_with_owner_unlinks_stale_setup_token_socket ... ok test websocket::writer_tests::second_device_does_not_inherit_first_device_input_ack ... ok test websocket::writer_tests::writer_admission_at_user_capacity ... ignored, release-only scale measurement; run without concurrent builds test websocket::writer_tests::writer_ownership_capacity_unsigned_offsets_and_identity_reuse ... ok test auth::tests::socket_tests::half_open_sockets_obey_user_limit ... ok test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok test auth::tests::socket_tests::incomplete_rfc_message_still_loses_authority_on_revocation ... ok test auth::tests::socket_tests::recovery_subscription_updates_every_signed_in_socket ... ok test auth::tests::socket_tests::revoked_idle_socket_loses_all_authority ... ok test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test result: ok. 117 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 123.82s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/infraternal_shim-67ffc9c8d51fcf5c) running 79 tests test frame::checks::codec_reuse_measurement ... ignored, release codec and allocation-path measurement test frame::checks::tests::golden_and_fragmented ... ok test ring::checks::tests::wrap_and_exact_offsets ... ok test session::inputs::tests::partial_writes_credit_only_the_owner_and_replay_trims_per_writer ... ok test session::inputs::tests::identity_cap_preserves_all_existing_cursors ... ok test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile test session::measurements::poll_storage_measurement ... ignored, release poll-storage allocation measurement test frame::checks::borrowed_and_owned_decoders_agree_at_every_fragment_boundary ... ok test frame::checks::approximate_snapshot_codec_is_bounded_and_canonical ... ok test frame::checks::tests::invalid_lengths_types_and_utf8 ... ok test frame::checks::golden::every_frozen_message ... ok test session::lifecycle_checks::expired_raw_tail_is_refused_without_snapshot_substitution ... ok test session::resize_checks::resize_refusal_session_probe ... ignored, isolated session probe invoked by its parent with a controlled shell profile test session::sequenced_checks::coalesced_ack_never_overwrites_a_partial_output_and_cursors_survive_peer_loss ... ok test session::sequenced_checks::new_frames_roundtrip_and_refuse_noncanonical_payloads ... ok test session::lifecycle_checks::snapshot_tail_request_requires_capability_and_respects_the_row_bound ... ok test shell::tests::shell_hooks_append_after_user_configuration ... ok test frame::checks::golden::exact_maximum_and_coalesced_frames ... ok test session::sequenced_checks::trim_duplicates_gaps_overflow_and_capacity_are_transactional ... ok test session::sequenced_checks::writer_selection_has_a_frozen_little_endian_layout ... ok test session::sequenced_checks::reusable_encoder_retains_capacity_and_refuses_growth_before_mutation ... ok test terminal::checks::tests::fixtures_and_continuations_repaint ... ok test terminal::checks::tests::implicit_hyperlinks_retain_groups_across_rows_and_continuation ... ok test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok test session::resize_checks::native_resize_refusal_preserves_peer_and_pty ... ok test terminal::checks::tests::margins_tabs_charsets_and_modes_continue ... ok test terminal::checks::tests::partial_csi_and_utf8_continue ... ok test terminal::checks::tests::long_unfinished_hyperlink_and_control_strings_continue ... ok test terminal::checks::tests::pending_wrap_and_saved_wrap_continue_with_wide_cells ... ok test terminal::checks::tests::saved_origin_survives_changed_margins ... ok test terminal::checks::tests::retained_alternate_saved_cursor_and_keyboard_stack_continue ... ok test terminal::checks::tests::zero_history_snapshot_keeps_the_visible_rows ... ok test terminal::fidelity::fidelity_charset_mapped_wide_space_is_explicitly_rejected ... ok test terminal::checks::tests::byte_budget_prunes_history_and_resize_remains_repaintable ... ok test terminal::checks::approximate_repaint_keeps_complete_pending_syntax_or_omits_it_whole ... ok test terminal::fidelity::fidelity_diagnostic_fixture ... ignored, diagnostic replay of an explicitly selected fixture file test terminal::fidelity::fidelity_extended_nightly ... ignored, nightly expanded differential corpus: 20,000 deterministic cases test shell::tests::bash_command_status_survives_existing_prompt_command ... ok test terminal::fidelity::fidelity_fresh_c_redraw_default_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_cursor ... ok test terminal::checks::tests::unfinished_sequence_over_frame_limit_fails_without_losing_runtime_state ... ok test terminal::fidelity::fidelity_inherited_protection_off_mode_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_edge ... ok test terminal::fidelity::fidelity_iso_protection_erase ... ok test terminal::fidelity::fidelity_f1_rep ... ok test terminal::fidelity::fidelity_oracle_observes_archived_cells_with_equal_active_screens ... ok test terminal::fidelity::fidelity_oracle_detects_hidden_state ... ok test terminal::fidelity::fidelity_orphaned_spacer_head ... ok test terminal::fidelity::fidelity_prompt_resize_requires_explicit_rejection ... ok test terminal::fidelity::fidelity_iso_protection_does_not_keep_rep_scratch ... ok test terminal::fidelity::fidelity_rejects_unrepresentable_rep_without_mutating_source ... ok test terminal::fidelity::fidelity_saved_modes_future_restore ... ok test shell::tests::installed_shells_load_the_additive_hooks ... ok test terminal::fidelity::fidelity_seeded_nightly ... ignored, nightly differential corpus: 20,000 deterministic cases test terminal::fidelity::fidelity_saved_cursor_over_changed_edge ... ok test terminal::fidelity::fidelity_semantic_validation_matches_exported_history_extent ... ok test terminal::checks::approximate_repaint_is_bounded_clips_at_complete_cells_and_preserves_source ... ok test terminal::fidelity::fidelity_snapshot_history_tail_contains_no_padding_rows ... ok test terminal::fidelity::fidelity_snapshot_resets_stale_viewer_color_overrides ... ok test terminal::fidelity::fidelity_single_shift_survives_rep_seed ... ok test terminal::fidelity::fidelity_screen_entry_consumes_inherited_shift_before_saving ... ok test terminal::fidelity::fidelity_variation_tail_attributes ... ok test terminal::fidelity::fresh_captures::fidelity_fresh_real_program_captures ... ignored, manual fresh capture oracle; set VT_CAPTURE_DIR after real program capture test terminal::measurements::budgets::snapshot_200x60 ... ignored, performance measurement; run release on the perf host test terminal::measurements::memory::measured_terminal_rss ... ignored, RSS measurement; run this filter alone in a fresh release process test terminal::measurements::throughput::measured_parser ... ignored, VT observer and history throughput measurement test terminal::recovery_measurements::measured_full_ring_reconstruction ... ignored, release reconstruction measurement; old healthy handles permit repeated cleanup test terminal::resize_recovery::absent_ring_keeps_last_good_size_and_later_output_usable ... ok test terminal::fidelity::fidelity_spacer_head_attributes ... ok test terminal::resize_recovery::complete_ring_restores_screens_mouse_and_unfinished_syntax ... ok test terminal::resize_recovery::ring_gap_requires_clean_approximate_recovery ... ok test terminal::resize_recovery::earlier_geometry_changes_require_approximation_even_with_origin_coverage ... ok test terminal_native::allocation::resize_allocation_refusal_retires_native_handle ... ok test terminal::fidelity::fidelity_variation_wrap_attributes ... ok test terminal::fidelity::fidelity_mouse_effective_fields_follow_order_independently_of_booleans ... ok test terminal::fidelity::fidelity_recorded_corpus ... ok test terminal::fidelity::fidelity_handwritten ... ok test terminal::fidelity::fidelity_extended_smoke ... ok test terminal::fidelity::fidelity_seeded_smoke ... ok test result: ok. 67 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 54.07s Running tests/detach.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/detach-c502cd554fb112ce) running 1 test test closed_standard_descriptors_become_dev_null ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 14.11s Running tests/mouse.rs (/home/kayg/.cache/codex-scratch/session-life-review/target/debug/deps/mouse-523bfdef43cc46cb) running 1 test test faithful_snapshot_preserves_public_mouse_encoder_reports ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.54s Doc-tests infraternal_agent running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests infraternal_mesh running 1 test test crates/infraternal-mesh/src/model.rs - model::LocalPrivateKey (line 20) - compile fail ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s Doc-tests infraternal_plugin_api running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests infraternal_plugin_ssh running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests infraternal_protocol running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests infraternal_server running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests infraternal_shim running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ==> cargo-deny warning[duplicate]: found 2 duplicate entries for crate 'base64' ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:24:1 │ 24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────┘ lock entries │ ├ base64 v0.21.7 ├── base64urlsafedata v0.5.5 │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── webauthn-rs v0.5.5 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-proto v0.5.5 │ └── webauthn-rs-core v0.5.5 (*) ├── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-proto v0.5.5 (*) ├ base64 v0.22.1 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── infraternal-server v0.1.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 3 duplicate entries for crate 'getrandom' ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:88:1 │ 88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ getrandom v0.2.17 └── rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 ``` </details>
Author
Owner

Target 0c4b94108f: independent scripts/verify fast exited 0. Full output verbatim, part 2/3. Short owned scratch alias s9 fixes fixture SUN_LEN; no source changes or baseline exemption.

Full gate output
         │   │   │   └── hkdf v0.12.4
         │   │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   │   ├── sha1 v0.10.7
         │   │   │   ├── axum v0.8.9
         │   │   │   │   └── infraternal-server v0.1.0 (*)
         │   │   │   └── tungstenite v0.29.0
         │   │   │       └── tokio-tungstenite v0.29.0
         │   │   │           ├── axum v0.8.9 (*)
         │   │   │           └── (dev) infraternal-server v0.1.0 (*)
         │   │   └── sha2 v0.10.9
         │   │       ├── infraternal-server v0.1.0 (*)
         │   │       ├── sqlx-core v0.8.6
         │   │       │   ├── sqlx v0.8.6
         │   │       │   │   ├── infraternal v0.1.0 (*)
         │   │       │   │   └── infraternal-server v0.1.0 (*)
         │   │       │   ├── sqlx-macros v0.8.6
         │   │       │   │   └── sqlx v0.8.6 (*)
         │   │       │   ├── sqlx-macros-core v0.8.6
         │   │       │   │   └── sqlx-macros v0.8.6 (*)
         │   │       │   └── sqlx-sqlite v0.8.6
         │   │       │       ├── sqlx v0.8.6 (*)
         │   │       │       └── sqlx-macros-core v0.8.6 (*)
         │   │       └── sqlx-macros-core v0.8.6 (*)
         │   └── universal-hash v0.5.1
         │       └── polyval v0.6.2
         │           └── ghash v0.5.1
         │               └── aes-gcm v0.10.3 (*)
         ├── password-hash v0.5.0
         │   └── argon2 v0.5.3 (*)
         ├── rand v0.8.8
         │   └── bip39 v2.2.2 (*)
         └── rand_chacha v0.3.1
             └── rand v0.8.8 (*)
   ├ getrandom v0.3.4
     └── rand_core v0.9.5
         ├── rand v0.9.5
         │   ├── infraternal-server v0.1.0
         │   │   └── infraternal v0.1.0
         │   ├── tungstenite v0.29.0
         │   │   └── tokio-tungstenite v0.29.0
         │   │       ├── axum v0.8.9
         │   │       │   └── infraternal-server v0.1.0 (*)
         │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   └── webauthn-rs-core v0.5.5
         │       └── webauthn-rs v0.5.5
         │           └── infraternal-server v0.1.0 (*)
         └── rand_chacha v0.9.0
             ├── rand v0.9.5 (*)
             └── webauthn-rs-core v0.5.5 (*)
   ├ getrandom v0.4.3
     ├── jobserver v0.1.35
     │   └── cc v1.6.0
     │       ├── (build) libfuzzer-sys v0.4.13
     │       │   └── infraternal-fuzz v0.1.0
     │       ├── (build) libsqlite3-sys v0.30.1
     │       │   └── sqlx-sqlite v0.8.6
     │       │       ├── sqlx v0.8.6
     │       │       │   ├── infraternal v0.1.0
     │       │       │   └── infraternal-server v0.1.0
     │       │       │       └── infraternal v0.1.0 (*)
     │       │       └── sqlx-macros-core v0.8.6
     │       │           └── sqlx-macros v0.8.6
     │       │               └── sqlx v0.8.6 (*)
     │       ├── openssl-src v300.6.1+3.6.3
     │       │   └── (build) openssl-sys v0.9.117
     │       │       ├── axum-server v0.8.0
     │       │       │   └── infraternal-server v0.1.0 (*)
     │       │       ├── openssl v0.10.81
     │       │       │   ├── axum-server v0.8.0 (*)
     │       │       │   ├── infraternal-server v0.1.0 (*)
     │       │       │   ├── tokio-openssl v0.6.5
     │       │       │   │   └── axum-server v0.8.0 (*)
     │       │       │   ├── webauthn-attestation-ca v0.5.5
     │       │       │   │   └── webauthn-rs-core v0.5.5
     │       │       │   │       └── webauthn-rs v0.5.5
     │       │       │   │           └── infraternal-server v0.1.0 (*)
     │       │       │   └── webauthn-rs-core v0.5.5 (*)
     │       │       ├── tokio-openssl v0.6.5 (*)
     │       │       ├── webauthn-attestation-ca v0.5.5 (*)
     │       │       └── webauthn-rs-core v0.5.5 (*)
     │       └── (build) openssl-sys v0.9.117 (*)
     └── uuid v1.27.0
         ├── infraternal-agent v0.1.0
         │   └── infraternal v0.1.0 (*)
         ├── infraternal-server v0.1.0 (*)
         ├── webauthn-attestation-ca v0.5.5 (*)
         ├── webauthn-rs v0.5.5 (*)
         └── webauthn-rs-core v0.5.5 (*)

warning[duplicate]: found 2 duplicate entries for crate 'hashbrown'
   ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:94:1
   │  
94 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index
95 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index
   │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ hashbrown v0.15.5
     ├── hashlink v0.10.0
     │   └── sqlx-core v0.8.6
     │       ├── sqlx v0.8.6
     │       │   ├── infraternal v0.1.0
     │       │   └── infraternal-server v0.1.0
     │       │       └── infraternal v0.1.0 (*)
     │       ├── sqlx-macros v0.8.6
     │       │   └── sqlx v0.8.6 (*)
     │       ├── sqlx-macros-core v0.8.6
     │       │   └── sqlx-macros v0.8.6 (*)
     │       └── sqlx-sqlite v0.8.6
     │           ├── sqlx v0.8.6 (*)
     │           └── sqlx-macros-core v0.8.6 (*)
     └── sqlx-core v0.8.6 (*)
   ├ hashbrown v0.17.1
     └── indexmap v2.14.2
         ├── h2 v0.4.19
         │   └── hyper v1.11.1
         │       ├── axum v0.8.9
         │       │   └── infraternal-server v0.1.0
         │       │       └── infraternal v0.1.0
         │       ├── axum-server v0.8.0
         │       │   └── infraternal-server v0.1.0 (*)
         │       └── hyper-util v0.1.21
         │           ├── axum v0.8.9 (*)
         │           └── axum-server v0.8.0 (*)
         └── sqlx-core v0.8.6
             ├── sqlx v0.8.6
             │   ├── infraternal v0.1.0 (*)
             │   └── infraternal-server v0.1.0 (*)
             ├── sqlx-macros v0.8.6
             │   └── sqlx v0.8.6 (*)
             ├── sqlx-macros-core v0.8.6
             │   └── sqlx-macros v0.8.6 (*)
             └── sqlx-sqlite v0.8.6
                 ├── sqlx v0.8.6 (*)
                 └── sqlx-macros-core v0.8.6 (*)

warning[duplicate]: found 2 duplicate entries for crate 'r-efi'
    ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:184:1
    │  
184 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index
185 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ r-efi v5.3.0
      └── getrandom v0.3.4
          └── rand_core v0.9.5
              ├── rand v0.9.5
              │   ├── infraternal-server v0.1.0
              │   │   └── infraternal v0.1.0
              │   ├── tungstenite v0.29.0
              │   │   └── tokio-tungstenite v0.29.0
              │   │       ├── axum v0.8.9
              │   │       │   └── infraternal-server v0.1.0 (*)
              │   │       └── (dev) infraternal-server v0.1.0 (*)
              │   └── webauthn-rs-core v0.5.5
              │       └── webauthn-rs v0.5.5
              │           └── infraternal-server v0.1.0 (*)
              └── rand_chacha v0.9.0
                  ├── rand v0.9.5 (*)
                  └── webauthn-rs-core v0.5.5 (*)
    ├ r-efi v6.0.0
      └── getrandom v0.4.3
          ├── jobserver v0.1.35
          │   └── cc v1.6.0
          │       ├── (build) libfuzzer-sys v0.4.13
          │       │   └── infraternal-fuzz v0.1.0
          │       ├── (build) libsqlite3-sys v0.30.1
          │       │   └── sqlx-sqlite v0.8.6
          │       │       ├── sqlx v0.8.6
          │       │       │   ├── infraternal v0.1.0
          │       │       │   └── infraternal-server v0.1.0
          │       │       │       └── infraternal v0.1.0 (*)
          │       │       └── sqlx-macros-core v0.8.6
          │       │           └── sqlx-macros v0.8.6
          │       │               └── sqlx v0.8.6 (*)
          │       ├── openssl-src v300.6.1+3.6.3
          │       │   └── (build) openssl-sys v0.9.117
          │       │       ├── axum-server v0.8.0
          │       │       │   └── infraternal-server v0.1.0 (*)
          │       │       ├── openssl v0.10.81
          │       │       │   ├── axum-server v0.8.0 (*)
          │       │       │   ├── infraternal-server v0.1.0 (*)
          │       │       │   ├── tokio-openssl v0.6.5
          │       │       │   │   └── axum-server v0.8.0 (*)
          │       │       │   ├── webauthn-attestation-ca v0.5.5
          │       │       │   │   └── webauthn-rs-core v0.5.5
          │       │       │   │       └── webauthn-rs v0.5.5
          │       │       │   │           └── infraternal-server v0.1.0 (*)
          │       │       │   └── webauthn-rs-core v0.5.5 (*)
          │       │       ├── tokio-openssl v0.6.5 (*)
          │       │       ├── webauthn-attestation-ca v0.5.5 (*)
          │       │       └── webauthn-rs-core v0.5.5 (*)
          │       └── (build) openssl-sys v0.9.117 (*)
          └── uuid v1.27.0
              ├── infraternal-agent v0.1.0
              │   └── infraternal v0.1.0 (*)
              ├── infraternal-server v0.1.0 (*)
              ├── webauthn-attestation-ca v0.5.5 (*)
              ├── webauthn-rs v0.5.5 (*)
              └── webauthn-rs-core v0.5.5 (*)

warning[duplicate]: found 2 duplicate entries for crate 'rand'
    ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:186:1
    │  
186 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index
187 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand v0.8.8
      └── bip39 v2.2.2
          └── infraternal-server v0.1.0
              └── infraternal v0.1.0
    ├ rand v0.9.5
      ├── infraternal-server v0.1.0
      │   └── infraternal v0.1.0
      ├── tungstenite v0.29.0
      │   └── tokio-tungstenite v0.29.0
      │       ├── axum v0.8.9
      │       │   └── infraternal-server v0.1.0 (*)
      │       └── (dev) infraternal-server v0.1.0 (*)
      └── webauthn-rs-core v0.5.5
          └── webauthn-rs v0.5.5
              └── infraternal-server v0.1.0 (*)

warning[duplicate]: found 2 duplicate entries for crate 'rand_chacha'
    ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:188:1
    │  
188 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index
189 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand_chacha v0.3.1
      └── rand v0.8.8
          └── bip39 v2.2.2
              └── infraternal-server v0.1.0
                  └── infraternal v0.1.0
    ├ rand_chacha v0.9.0
      ├── rand v0.9.5
      │   ├── infraternal-server v0.1.0
      │   │   └── infraternal v0.1.0
      │   ├── tungstenite v0.29.0
      │   │   └── tokio-tungstenite v0.29.0
      │   │       ├── axum v0.8.9
      │   │       │   └── infraternal-server v0.1.0 (*)
      │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   └── webauthn-rs-core v0.5.5
      │       └── webauthn-rs v0.5.5
      │           └── infraternal-server v0.1.0 (*)
      └── webauthn-rs-core v0.5.5 (*)

warning[duplicate]: found 2 duplicate entries for crate 'rand_core'
    ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:190:1
    │  
190 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index
191 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand_core v0.6.4
      ├── bip39 v2.2.2
      │   └── infraternal-server v0.1.0
      │       └── infraternal v0.1.0
      ├── crypto-common v0.1.7
      │   ├── aead v0.5.2
      │   │   └── aes-gcm v0.10.3
      │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   ├── cipher v0.4.4
      │   │   ├── aes v0.8.4
      │   │   │   └── aes-gcm v0.10.3 (*)
      │   │   ├── aes-gcm v0.10.3 (*)
      │   │   └── ctr v0.9.2
      │   │       └── aes-gcm v0.10.3 (*)
      │   ├── digest v0.10.7
      │   │   ├── blake2 v0.10.6
      │   │   │   └── argon2 v0.5.3
      │   │   │       └── infraternal-server v0.1.0 (*)
      │   │   ├── hmac v0.12.1
      │   │   │   └── hkdf v0.12.4
      │   │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   │   ├── sha1 v0.10.7
      │   │   │   ├── axum v0.8.9
      │   │   │   │   └── infraternal-server v0.1.0 (*)
      │   │   │   └── tungstenite v0.29.0
      │   │   │       └── tokio-tungstenite v0.29.0
      │   │   │           ├── axum v0.8.9 (*)
      │   │   │           └── (dev) infraternal-server v0.1.0 (*)
      │   │   └── sha2 v0.10.9
      │   │       ├── infraternal-server v0.1.0 (*)
      │   │       ├── sqlx-core v0.8.6
      │   │       │   ├── sqlx v0.8.6
      │   │       │   │   ├── infraternal v0.1.0 (*)
      │   │       │   │   └── infraternal-server v0.1.0 (*)
      │   │       │   ├── sqlx-macros v0.8.6
      │   │       │   │   └── sqlx v0.8.6 (*)
      │   │       │   ├── sqlx-macros-core v0.8.6
      │   │       │   │   └── sqlx-macros v0.8.6 (*)
      │   │       │   └── sqlx-sqlite v0.8.6
      │   │       │       ├── sqlx v0.8.6 (*)
      │   │       │       └── sqlx-macros-core v0.8.6 (*)
      │   │       └── sqlx-macros-core v0.8.6 (*)
      │   └── universal-hash v0.5.1
      │       └── polyval v0.6.2
      │           └── ghash v0.5.1
      │               └── aes-gcm v0.10.3 (*)
      ├── password-hash v0.5.0
      │   └── argon2 v0.5.3 (*)
      ├── rand v0.8.8
      │   └── bip39 v2.2.2 (*)
      └── rand_chacha v0.3.1
          └── rand v0.8.8 (*)
    ├ rand_core v0.9.5
      ├── rand v0.9.5
      │   ├── infraternal-server v0.1.0
      │   │   └── infraternal v0.1.0
      │   ├── tungstenite v0.29.0
      │   │   └── tokio-tungstenite v0.29.0
      │   │       ├── axum v0.8.9
      │   │       │   └── infraternal-server v0.1.0 (*)
      │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   └── webauthn-rs-core v0.5.5
      │       └── webauthn-rs v0.5.5
      │           └── infraternal-server v0.1.0 (*)
      └── rand_chacha v0.9.0
          ├── rand v0.9.5 (*)
          └── webauthn-rs-core v0.5.5 (*)

warning[duplicate]: found 2 duplicate entries for crate 'syn'
    ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:227:1
    │  
227 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index
228 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ syn v2.0.119
      ├── asn1-rs-derive v0.5.1
      │   └── asn1-rs v0.6.2
      │       ├── der-parser v9.0.0
      │       │   ├── webauthn-rs-core v0.5.5
      │       │   │   └── webauthn-rs v0.5.5
      │       │   │       └── infraternal-server v0.1.0
      │       │   │           └── infraternal v0.1.0
      │       │   └── x509-parser v0.16.0
      │       │       └── webauthn-rs-core v0.5.5 (*)
      │       ├── oid-registry v0.7.1
      │       │   └── x509-parser v0.16.0 (*)
      │       └── x509-parser v0.16.0 (*)
      ├── asn1-rs-impl v0.2.0
      │   └── asn1-rs v0.6.2 (*)
      ├── openssl-macros v0.1.1
      │   └── openssl v0.10.81
      │       ├── axum-server v0.8.0
      │       │   └── infraternal-server v0.1.0 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── tokio-openssl v0.6.5
      │       │   └── axum-server v0.8.0 (*)
      │       ├── webauthn-attestation-ca v0.5.5
      │       │   └── webauthn-rs-core v0.5.5 (*)
      │       └── webauthn-rs-core v0.5.5 (*)
      ├── sqlx-macros v0.8.6
      │   └── sqlx v0.8.6
      │       ├── infraternal v0.1.0 (*)
      │       └── infraternal-server v0.1.0 (*)
      ├── sqlx-macros-core v0.8.6
      │   └── sqlx-macros v0.8.6 (*)
      ├── synstructure v0.13.2
      │   └── asn1-rs-derive v0.5.1 (*)
      ├── thiserror-impl v1.0.69
      │   └── thiserror v1.0.69
      │       ├── asn1-rs v0.6.2 (*)
      │       ├── webauthn-rs-core v0.5.5 (*)
      │       └── x509-parser v0.16.0 (*)
      ├── tracing-attributes v0.1.31
      │   └── tracing v0.1.44
      │       ├── axum v0.8.9
      │       │   └── infraternal-server v0.1.0 (*)
      │       ├── axum-core v0.5.6
      │       │   └── axum v0.8.9 (*)
      │       ├── h2 v0.4.19
      │       │   └── hyper v1.11.1
      │       │       ├── axum v0.8.9 (*)
      │       │       ├── axum-server v0.8.0 (*)
      │       │       └── hyper-util v0.1.21
      │       │           ├── axum v0.8.9 (*)
      │       │           └── axum-server v0.8.0 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6
      │       │   ├── sqlx v0.8.6 (*)
      │       │   ├── sqlx-macros v0.8.6 (*)
      │       │   ├── sqlx-macros-core v0.8.6 (*)
      │       │   └── sqlx-sqlite v0.8.6
      │       │       ├── sqlx v0.8.6 (*)
      │       │       └── sqlx-macros-core v0.8.6 (*)
      │       ├── sqlx-sqlite v0.8.6 (*)
      │       ├── tower v0.5.3
      │       │   ├── axum v0.8.9 (*)
      │       │   └── (dev) infraternal-server v0.1.0 (*)
      │       ├── tracing-subscriber v0.3.23
      │       │   └── infraternal-server v0.1.0 (*)
      │       ├── webauthn-attestation-ca v0.5.5 (*)
      │       ├── webauthn-rs v0.5.5 (*)
      │       └── webauthn-rs-core v0.5.5 (*)
      └── zerocopy-derive v0.8.60
          └── zerocopy v0.8.60
              ├── half v2.7.1
              │   ├── ciborium-ll v0.2.2
              │   │   └── ciborium v0.2.2
              │   │       └── criterion v0.7.0
              │   │           └── (dev) infraternal-protocol v0.1.0
              │   │               ├── infraternal-agent v0.1.0
              │   │               │   └── infraternal v0.1.0 (*)
              │   │               ├── infraternal-fuzz v0.1.0
              │   │               └── infraternal-server v0.1.0 (*)
              │   └── serde_cbor_2 v0.13.0
              │       ├── infraternal-server v0.1.0 (*)
              │       └── webauthn-rs-core v0.5.5 (*)
              └── ppv-lite86 v0.2.21
                  ├── rand_chacha v0.3.1
                  │   └── rand v0.8.8
                  │       └── bip39 v2.2.2
                  │           └── infraternal-server v0.1.0 (*)
                  └── rand_chacha v0.9.0
                      ├── rand v0.9.5
                      │   ├── infraternal-server v0.1.0 (*)
                      │   ├── tungstenite v0.29.0
                      │   │   └── tokio-tungstenite v0.29.0
                      │   │       ├── axum v0.8.9 (*)
                      │   │       └── (dev) infraternal-server v0.1.0 (*)
                      │   └── webauthn-rs-core v0.5.5 (*)
                      └── webauthn-rs-core v0.5.5 (*)
    ├ syn v3.0.6
      ├── clap_derive v4.6.7
      │   └── clap v4.6.7
      │       ├── criterion v0.7.0
      │       │   └── (dev) infraternal-protocol v0.1.0
      │       │       ├── infraternal-agent v0.1.0
      │       │       │   └── infraternal v0.1.0
      │       │       ├── infraternal-fuzz v0.1.0
      │       │       └── infraternal-server v0.1.0
      │       │           └── infraternal v0.1.0 (*)
      │       └── infraternal v0.1.0 (*)
      ├── displaydoc v0.2.7
      │   ├── asn1-rs v0.6.2
      │   │   ├── der-parser v9.0.0
      │   │   │   ├── webauthn-rs-core v0.5.5
      │   │   │   │   └── webauthn-rs v0.5.5
      │   │   │   │       └── infraternal-server v0.1.0 (*)
      │   │   │   └── x509-parser v0.16.0
      │   │   │       └── webauthn-rs-core v0.5.5 (*)
      │   │   ├── oid-registry v0.7.1
      │   │   │   └── x509-parser v0.16.0 (*)
      │   │   └── x509-parser v0.16.0 (*)
      │   ├── der-parser v9.0.0 (*)
      │   ├── icu_collections v2.3.0
      │   │   ├── icu_normalizer v2.3.0
      │   │   │   └── idna_adapter v1.2.2
      │   │   │       └── idna v1.1.0
      │   │   │           └── url v2.5.8
      │   │   │               ├── infraternal-server v0.1.0 (*)
      │   │   │               ├── sqlx-core v0.8.6
      │   │   │               │   ├── sqlx v0.8.6
      │   │   │               │   │   ├── infraternal v0.1.0 (*)
      │   │   │               │   │   └── infraternal-server v0.1.0 (*)
      │   │   │               │   ├── sqlx-macros v0.8.6
      │   │   │               │   │   └── sqlx v0.8.6 (*)
      │   │   │               │   ├── sqlx-macros-core v0.8.6
      │   │   │               │   │   └── sqlx-macros v0.8.6 (*)
      │   │   │               │   └── sqlx-sqlite v0.8.6
      │   │   │               │       ├── sqlx v0.8.6 (*)
      │   │   │               │       └── sqlx-macros-core v0.8.6 (*)
      │   │   │               ├── sqlx-macros-core v0.8.6 (*)
      │   │   │               ├── sqlx-sqlite v0.8.6 (*)
      │   │   │               ├── webauthn-rs v0.5.5 (*)
      │   │   │               ├── webauthn-rs-core v0.5.5 (*)
      │   │   │               └── webauthn-rs-proto v0.5.5
      │   │   │                   └── webauthn-rs-core v0.5.5 (*)
      │   │   └── icu_properties v2.3.0
      │   │       └── idna_adapter v1.2.2 (*)
      │   ├── icu_locale_core v2.3.0
      │   │   ├── icu_properties v2.3.0 (*)
      │   │   └── icu_provider v2.3.1
      │   │       ├── icu_normalizer v2.3.0 (*)
      │   │       └── icu_properties v2.3.0 (*)
      │   ├── icu_properties v2.3.0 (*)
      │   ├── icu_provider v2.3.1 (*)
      │   ├── tinystr v0.8.4
      │   │   └── icu_locale_core v2.3.0 (*)
      │   └── zerotrie v0.2.5
      │       ├── icu_properties v2.3.0 (*)
      │       └── icu_provider v2.3.1 (*)
      ├── futures-macro v0.3.34
      │   └── futures-util v0.3.34
      │       ├── axum v0.8.9
      │       │   └── infraternal-server v0.1.0 (*)
      │       ├── futures-executor v0.3.34
      │       │   └── sqlx-sqlite v0.8.6 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── js-sys v0.3.106
      │       │   └── web-sys v0.3.106
      │       │       └── plotters v0.3.7
      │       │           └── criterion v0.7.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       ├── sqlx-sqlite v0.8.6 (*)
      │       ├── tokio-tungstenite v0.29.0
      │       │   ├── axum v0.8.9 (*)
      │       │   └── (dev) infraternal-server v0.1.0 (*)
      │       ├── tower v0.5.3
      │       │   ├── axum v0.8.9 (*)
      │       │   └── (dev) infraternal-server v0.1.0 (*)
      │       └── tower-http v0.6.11
      │           └── infraternal-server v0.1.0 (*)
      ├── serde_derive v1.0.229
      │   ├── serde v1.0.229
      │   │   ├── base64urlsafedata v0.5.5
      │   │   │   ├── webauthn-attestation-ca v0.5.5
      │   │   │   │   └── webauthn-rs-core v0.5.5 (*)
      │   │   │   ├── webauthn-rs v0.5.5 (*)
      │   │   │   ├── webauthn-rs-core v0.5.5 (*)
      │   │   │   └── webauthn-rs-proto v0.5.5 (*)
      │   │   ├── bip39 v2.2.2
      │   │   │   └── infraternal-server v0.1.0 (*)
      │   │   ├── ciborium v0.2.2
      │   │   │   └── criterion v0.7.0 (*)
      │   │   ├── criterion v0.7.0 (*)
      │   │   ├── either v1.18.0
      │   │   │   ├── axum-server v0.8.0
      │   │   │   │   └── infraternal-server v0.1.0 (*)
      │   │   │   ├── itertools v0.13.0
      │   │   │   │   ├── criterion v0.7.0 (*)
      │   │   │   │   └── criterion-plot v0.6.0
      │   │   │   │       └── criterion v0.7.0 (*)
      │   │   │   ├── rayon v1.12.0
      │   │   │   │   └── criterion v0.7.0 (*)
      │   │   │   ├── sqlx-core v0.8.6 (*)
      │   │   │   └── sqlx-macros-core v0.8.6 (*)
      │   │   ├── infraternal-agent v0.1.0 (*)
      │   │   ├── infraternal-mesh v0.1.0
      │   │   ├── infraternal-server v0.1.0 (*)
      │   │   ├── serde_cbor_2 v0.13.0
      │   │   │   ├── infraternal-server v0.1.0 (*)
      │   │   │   └── webauthn-rs-core v0.5.5 (*)
      │   │   ├── serde_urlencoded v0.7.1
      │   │   │   ├── axum v0.8.9 (*)
      │   │   │   └── sqlx-sqlite v0.8.6 (*)
      │   │   ├── sqlx-core v0.8.6 (*)
      │   │   ├── sqlx-macros-core v0.8.6 (*)
      │   │   ├── sqlx-sqlite v0.8.6 (*)
      │   │   ├── tinytemplate v1.2.1
      │   │   │   └── criterion v0.7.0 (*)
      │   │   ├── tracing-serde v0.2.0
      │   │   │   └── tracing-subscriber v0.3.23
      │   │   │       └── infraternal-server v0.1.0 (*)
      │   │   ├── tracing-subscriber v0.3.23 (*)
      │   │   ├── url v2.5.8 (*)
      │   │   ├── webauthn-attestation-ca v0.5.5 (*)
      │   │   ├── webauthn-rs v0.5.5 (*)
      │   │   ├── webauthn-rs-core v0.5.5 (*)
      │   │   └── webauthn-rs-proto v0.5.5 (*)
      │   └── url v2.5.8 (*)
      ├── synstructure v0.14.0
      │   ├── yoke-derive v0.8.4
      │   │   └── yoke v0.8.3
      │   │       ├── icu_collections v2.3.0 (*)
      │   │       ├── icu_provider v2.3.1 (*)
      │   │       ├── zerotrie v0.2.5 (*)
      │   │       └── zerovec v0.11.8
      │   │           ├── icu_collections v2.3.0 (*)
      │   │           ├── icu_locale_core v2.3.0 (*)
      │   │           ├── icu_normalizer v2.3.0 (*)
      │   │           ├── icu_properties v2.3.0 (*)
      │   │           ├── icu_provider v2.3.1 (*)
      │   │           ├── potential_utf v0.1.6
      │   │           │   └── icu_collections v2.3.0 (*)
      │   │           └── tinystr v0.8.4 (*)
      │   └── zerofrom-derive v0.1.8
      │       └── zerofrom v0.1.8
      │           ├── icu_collections v2.3.0 (*)
      │           ├── icu_provider v2.3.1 (*)
      │           ├── yoke v0.8.3 (*)
      │           ├── zerotrie v0.2.5 (*)
      │           └── zerovec v0.11.8 (*)
      ├── thiserror-impl v2.0.21
      │   └── thiserror v2.0.21
      │       ├── infraternal v0.1.0 (*)
      │       ├── infraternal-mesh v0.1.0 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       ├── sqlx-sqlite v0.8.6 (*)
      │       └── tungstenite v0.29.0
      │           └── tokio-tungstenite v0.29.0 (*)
      ├── tokio-macros v2.7.2
      │   └── tokio v1.53.2
      │       ├── axum v0.8.9 (*)
      │       ├── axum-server v0.8.0 (*)
      │       ├── fs-err v3.3.2
      │       │   └── axum-server v0.8.0 (*)
      │       ├── h2 v0.4.19
      │       │   └── hyper v1.11.1
      │       │       ├── axum v0.8.9 (*)
      │       │       ├── axum-server v0.8.0 (*)
      │       │       └── hyper-util v0.1.21
      │       │           ├── axum v0.8.9 (*)
      │       │           └── axum-server v0.8.0 (*)
      │       ├── hyper v1.11.1 (*)
      │       ├── hyper-util v0.1.21 (*)
      │       ├── infraternal v0.1.0 (*)
      │       ├── infraternal-agent v0.1.0 (*)
      │       ├── (dev) infraternal-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       ├── sqlx-macros-core v0.8.6 (*)
      │       ├── tokio-openssl v0.6.5
      │       │   └── axum-server v0.8.0 (*)
      │       ├── tokio-stream v0.1.19
      │       │   └── sqlx-core v0.8.6 (*)
      │       ├── tokio-tungstenite v0.29.0 (*)
      │       ├── tokio-util v0.7.19
      │       │   ├── h2 v0.4.19 (*)
      │       │   └── tower-http v0.6.11 (*)
      │       ├── tower v0.5.3 (*)
      │       └── tower-http v0.6.11 (*)
      ├── wasm-bindgen-macro-support v0.2.129
      │   └── wasm-bindgen-macro v0.2.129
      │       └── wasm-bindgen v0.2.129
      │           ├── js-sys v0.3.106 (*)
      │           ├── plotters v0.3.7 (*)
      │           └── web-sys v0.3.106 (*)
      ├── yoke-derive v0.8.4 (*)
      ├── zerofrom-derive v0.1.8 (*)
      └── zerovec-derive v0.11.6
          └── zerovec v0.11.8 (*)

warning[duplicate]: found 2 duplicate entries for crate 'synstructure'
    ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:230:1
    │  
230 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index
231 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ synstructure v0.13.2
      └── asn1-rs-derive v0.5.1
          └── asn1-rs v0.6.2
              ├── der-parser v9.0.0
              │   ├── webauthn-rs-core v0.5.5
              │   │   └── webauthn-rs v0.5.5
              │   │       └── infraternal-server v0.1.0
              │   │           └── infraternal v0.1.0
              │   └── x509-parser v0.16.0
              │       └── webauthn-rs-core v0.5.5 (*)
              ├── oid-registry v0.7.1
              │   └── x509-parser v0.16.0 (*)
              └── x509-parser v0.16.0 (*)
    ├ synstructure v0.14.0
      ├── yoke-derive v0.8.4

Target 0c4b94108f52027797ba017f457b0706d9894344: independent scripts/verify fast exited 0. Full output verbatim, part 2/3. Short owned scratch alias s9 fixes fixture SUN_LEN; no source changes or baseline exemption. <details><summary>Full gate output</summary> ```text │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-agent v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) ├── webauthn-attestation-ca v0.5.5 (*) ├── webauthn-rs v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'hashbrown' ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:94:1 │ 94 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 95 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ hashbrown v0.15.5 ├── hashlink v0.10.0 │ └── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) └── sqlx-core v0.8.6 (*) ├ hashbrown v0.17.1 └── indexmap v2.14.2 ├── h2 v0.4.19 │ └── hyper v1.11.1 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ └── hyper-util v0.1.21 │ ├── axum v0.8.9 (*) │ └── axum-server v0.8.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 2 duplicate entries for crate 'r-efi' ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:184:1 │ 184 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 185 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────┘ lock entries │ ├ r-efi v5.3.0 └── getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ r-efi v6.0.0 └── getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-agent v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) ├── webauthn-attestation-ca v0.5.5 (*) ├── webauthn-rs v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand' ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:186:1 │ 186 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index 187 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand v0.9.5 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ └── (dev) infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 └── webauthn-rs v0.5.5 └── infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_chacha' ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:188:1 │ 188 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 189 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_chacha v0.3.1 └── rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_core' ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:190:1 │ 190 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 191 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'syn' ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:227:1 │ 227 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 228 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────┘ lock entries │ ├ syn v2.0.119 ├── asn1-rs-derive v0.5.1 │ └── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── asn1-rs-impl v0.2.0 │ └── asn1-rs v0.6.2 (*) ├── openssl-macros v0.1.1 │ └── openssl v0.10.81 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) ├── synstructure v0.13.2 │ └── asn1-rs-derive v0.5.1 (*) ├── thiserror-impl v1.0.69 │ └── thiserror v1.0.69 │ ├── asn1-rs v0.6.2 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── x509-parser v0.16.0 (*) ├── tracing-attributes v0.1.31 │ └── tracing v0.1.44 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-core v0.5.6 │ │ └── axum v0.8.9 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ ├── sqlx-macros v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tracing-subscriber v0.3.23 │ │ └── infraternal-server v0.1.0 (*) │ ├── webauthn-attestation-ca v0.5.5 (*) │ ├── webauthn-rs v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) └── zerocopy-derive v0.8.60 └── zerocopy v0.8.60 ├── half v2.7.1 │ ├── ciborium-ll v0.2.2 │ │ └── ciborium v0.2.2 │ │ └── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-agent v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 (*) │ └── serde_cbor_2 v0.13.0 │ ├── infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── ppv-lite86 v0.2.21 ├── rand_chacha v0.3.1 │ └── rand v0.8.8 │ └── bip39 v2.2.2 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 (*) │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ syn v3.0.6 ├── clap_derive v4.6.7 │ └── clap v4.6.7 │ ├── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-agent v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ └── infraternal v0.1.0 (*) ├── displaydoc v0.2.7 │ ├── asn1-rs v0.6.2 │ │ ├── der-parser v9.0.0 │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── x509-parser v0.16.0 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── oid-registry v0.7.1 │ │ │ └── x509-parser v0.16.0 (*) │ │ └── x509-parser v0.16.0 (*) │ ├── der-parser v9.0.0 (*) │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── tinystr v0.8.4 │ │ └── icu_locale_core v2.3.0 (*) │ └── zerotrie v0.2.5 │ ├── icu_properties v2.3.0 (*) │ └── icu_provider v2.3.1 (*) ├── futures-macro v0.3.34 │ └── futures-util v0.3.34 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── futures-executor v0.3.34 │ │ └── sqlx-sqlite v0.8.6 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── js-sys v0.3.106 │ │ └── web-sys v0.3.106 │ │ └── plotters v0.3.7 │ │ └── criterion v0.7.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 │ └── infraternal-server v0.1.0 (*) ├── serde_derive v1.0.229 │ ├── serde v1.0.229 │ │ ├── base64urlsafedata v0.5.5 │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 (*) │ │ ├── bip39 v2.2.2 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── ciborium v0.2.2 │ │ │ └── criterion v0.7.0 (*) │ │ ├── criterion v0.7.0 (*) │ │ ├── either v1.18.0 │ │ │ ├── axum-server v0.8.0 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── itertools v0.13.0 │ │ │ │ ├── criterion v0.7.0 (*) │ │ │ │ └── criterion-plot v0.6.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── rayon v1.12.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── sqlx-core v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ ├── infraternal-agent v0.1.0 (*) │ │ ├── infraternal-mesh v0.1.0 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── serde_cbor_2 v0.13.0 │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── serde_urlencoded v0.7.1 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── sqlx-sqlite v0.8.6 (*) │ │ ├── sqlx-core v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ ├── tinytemplate v1.2.1 │ │ │ └── criterion v0.7.0 (*) │ │ ├── tracing-serde v0.2.0 │ │ │ └── tracing-subscriber v0.3.23 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── tracing-subscriber v0.3.23 (*) │ │ ├── url v2.5.8 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ ├── webauthn-rs v0.5.5 (*) │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ └── webauthn-rs-proto v0.5.5 (*) │ └── url v2.5.8 (*) ├── synstructure v0.14.0 │ ├── yoke-derive v0.8.4 │ │ └── yoke v0.8.3 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── zerotrie v0.2.5 (*) │ │ └── zerovec v0.11.8 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_locale_core v2.3.0 (*) │ │ ├── icu_normalizer v2.3.0 (*) │ │ ├── icu_properties v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── potential_utf v0.1.6 │ │ │ └── icu_collections v2.3.0 (*) │ │ └── tinystr v0.8.4 (*) │ └── zerofrom-derive v0.1.8 │ └── zerofrom v0.1.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── yoke v0.8.3 (*) │ ├── zerotrie v0.2.5 (*) │ └── zerovec v0.11.8 (*) ├── thiserror-impl v2.0.21 │ └── thiserror v2.0.21 │ ├── infraternal v0.1.0 (*) │ ├── infraternal-mesh v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ └── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 (*) ├── tokio-macros v2.7.2 │ └── tokio v1.53.2 │ ├── axum v0.8.9 (*) │ ├── axum-server v0.8.0 (*) │ ├── fs-err v3.3.2 │ │ └── axum-server v0.8.0 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── hyper v1.11.1 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-agent v0.1.0 (*) │ ├── (dev) infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 (*) │ ├── tower v0.5.3 (*) │ └── tower-http v0.6.11 (*) ├── wasm-bindgen-macro-support v0.2.129 │ └── wasm-bindgen-macro v0.2.129 │ └── wasm-bindgen v0.2.129 │ ├── js-sys v0.3.106 (*) │ ├── plotters v0.3.7 (*) │ └── web-sys v0.3.106 (*) ├── yoke-derive v0.8.4 (*) ├── zerofrom-derive v0.1.8 (*) └── zerovec-derive v0.11.6 └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'synstructure' ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:230:1 │ 230 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 231 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ synstructure v0.13.2 └── asn1-rs-derive v0.5.1 └── asn1-rs v0.6.2 ├── der-parser v9.0.0 │ ├── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── x509-parser v0.16.0 │ └── webauthn-rs-core v0.5.5 (*) ├── oid-registry v0.7.1 │ └── x509-parser v0.16.0 (*) └── x509-parser v0.16.0 (*) ├ synstructure v0.14.0 ├── yoke-derive v0.8.4 ``` </details>
Author
Owner

Target 0c4b94108f: independent scripts/verify fast exited 0. Full output verbatim, part 3/3. Short owned scratch alias s9 fixes fixture SUN_LEN; no source changes or baseline exemption.

Full gate output
      │   └── yoke v0.8.3
      │       ├── icu_collections v2.3.0
      │       │   ├── icu_normalizer v2.3.0
      │       │   │   └── idna_adapter v1.2.2
      │       │   │       └── idna v1.1.0
      │       │   │           └── url v2.5.8
      │       │   │               ├── infraternal-server v0.1.0
      │       │   │               │   └── infraternal v0.1.0
      │       │   │               ├── sqlx-core v0.8.6
      │       │   │               │   ├── sqlx v0.8.6
      │       │   │               │   │   ├── infraternal v0.1.0 (*)
      │       │   │               │   │   └── infraternal-server v0.1.0 (*)
      │       │   │               │   ├── sqlx-macros v0.8.6
      │       │   │               │   │   └── sqlx v0.8.6 (*)
      │       │   │               │   ├── sqlx-macros-core v0.8.6
      │       │   │               │   │   └── sqlx-macros v0.8.6 (*)
      │       │   │               │   └── sqlx-sqlite v0.8.6
      │       │   │               │       ├── sqlx v0.8.6 (*)
      │       │   │               │       └── sqlx-macros-core v0.8.6 (*)
      │       │   │               ├── sqlx-macros-core v0.8.6 (*)
      │       │   │               ├── sqlx-sqlite v0.8.6 (*)
      │       │   │               ├── webauthn-rs v0.5.5
      │       │   │               │   └── infraternal-server v0.1.0 (*)
      │       │   │               ├── webauthn-rs-core v0.5.5
      │       │   │               │   └── webauthn-rs v0.5.5 (*)
      │       │   │               └── webauthn-rs-proto v0.5.5
      │       │   │                   └── webauthn-rs-core v0.5.5 (*)
      │       │   └── icu_properties v2.3.0
      │       │       └── idna_adapter v1.2.2 (*)
      │       ├── icu_provider v2.3.1
      │       │   ├── icu_normalizer v2.3.0 (*)
      │       │   └── icu_properties v2.3.0 (*)
      │       ├── zerotrie v0.2.5
      │       │   ├── icu_properties v2.3.0 (*)
      │       │   └── icu_provider v2.3.1 (*)
      │       └── zerovec v0.11.8
      │           ├── icu_collections v2.3.0 (*)
      │           ├── icu_locale_core v2.3.0
      │           │   ├── icu_properties v2.3.0 (*)
      │           │   └── icu_provider v2.3.1 (*)
      │           ├── icu_normalizer v2.3.0 (*)
      │           ├── icu_properties v2.3.0 (*)
      │           ├── icu_provider v2.3.1 (*)
      │           ├── potential_utf v0.1.6
      │           │   └── icu_collections v2.3.0 (*)
      │           └── tinystr v0.8.4
      │               └── icu_locale_core v2.3.0 (*)
      └── zerofrom-derive v0.1.8
          └── zerofrom v0.1.8
              ├── icu_collections v2.3.0 (*)
              ├── icu_provider v2.3.1 (*)
              ├── yoke v0.8.3 (*)
              ├── zerotrie v0.2.5 (*)
              └── zerovec v0.11.8 (*)

warning[duplicate]: found 2 duplicate entries for crate 'thiserror'
    ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:232:1
    │  
232 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index
233 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index
    │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ thiserror v1.0.69
      ├── asn1-rs v0.6.2
      │   ├── der-parser v9.0.0
      │   │   ├── webauthn-rs-core v0.5.5
      │   │   │   └── webauthn-rs v0.5.5
      │   │   │       └── infraternal-server v0.1.0
      │   │   │           └── infraternal v0.1.0
      │   │   └── x509-parser v0.16.0
      │   │       └── webauthn-rs-core v0.5.5 (*)
      │   ├── oid-registry v0.7.1
      │   │   └── x509-parser v0.16.0 (*)
      │   └── x509-parser v0.16.0 (*)
      ├── webauthn-rs-core v0.5.5 (*)
      └── x509-parser v0.16.0 (*)
    ├ thiserror v2.0.21
      ├── infraternal v0.1.0
      ├── infraternal-mesh v0.1.0
      ├── infraternal-server v0.1.0
      │   └── infraternal v0.1.0 (*)
      ├── sqlx-core v0.8.6
      │   ├── sqlx v0.8.6
      │   │   ├── infraternal v0.1.0 (*)
      │   │   └── infraternal-server v0.1.0 (*)
      │   ├── sqlx-macros v0.8.6
      │   │   └── sqlx v0.8.6 (*)
      │   ├── sqlx-macros-core v0.8.6
      │   │   └── sqlx-macros v0.8.6 (*)
      │   └── sqlx-sqlite v0.8.6
      │       ├── sqlx v0.8.6 (*)
      │       └── sqlx-macros-core v0.8.6 (*)
      ├── sqlx-sqlite v0.8.6 (*)
      └── tungstenite v0.29.0
          └── tokio-tungstenite v0.29.0
              ├── axum v0.8.9
              │   └── infraternal-server v0.1.0 (*)
              └── (dev) infraternal-server v0.1.0 (*)

warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl'
    ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:234:1
    │  
234 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index
235 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ thiserror-impl v1.0.69
      └── thiserror v1.0.69
          ├── asn1-rs v0.6.2
          │   ├── der-parser v9.0.0
          │   │   ├── webauthn-rs-core v0.5.5
          │   │   │   └── webauthn-rs v0.5.5
          │   │   │       └── infraternal-server v0.1.0
          │   │   │           └── infraternal v0.1.0
          │   │   └── x509-parser v0.16.0
          │   │       └── webauthn-rs-core v0.5.5 (*)
          │   ├── oid-registry v0.7.1
          │   │   └── x509-parser v0.16.0 (*)
          │   └── x509-parser v0.16.0 (*)
          ├── webauthn-rs-core v0.5.5 (*)
          └── x509-parser v0.16.0 (*)
    ├ thiserror-impl v2.0.21
      └── thiserror v2.0.21
          ├── infraternal v0.1.0
          ├── infraternal-mesh v0.1.0
          ├── infraternal-server v0.1.0
          │   └── infraternal v0.1.0 (*)
          ├── sqlx-core v0.8.6
          │   ├── sqlx v0.8.6
          │   │   ├── infraternal v0.1.0 (*)
          │   │   └── infraternal-server v0.1.0 (*)
          │   ├── sqlx-macros v0.8.6
          │   │   └── sqlx v0.8.6 (*)
          │   ├── sqlx-macros-core v0.8.6
          │   │   └── sqlx-macros v0.8.6 (*)
          │   └── sqlx-sqlite v0.8.6
          │       ├── sqlx v0.8.6 (*)
          │       └── sqlx-macros-core v0.8.6 (*)
          ├── sqlx-sqlite v0.8.6 (*)
          └── tungstenite v0.29.0
              └── tokio-tungstenite v0.29.0
                  ├── axum v0.8.9
                  │   └── infraternal-server v0.1.0 (*)
                  └── (dev) infraternal-server v0.1.0 (*)

advisories ok, bans ok, licenses ok, sources ok

==> static builds
    Blocking waiting for file lock on build directory
    Finished `release` profile [optimized] target(s) in 8m 23s
/home/kayg/.cache/codex-scratch/session-life-review/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: 16319184 bytes (baseline 16142672 + allowance 262144 = max 16404816)
    Finished `release` profile [optimized] target(s) in 0.43s
/home/kayg/.cache/codex-scratch/session-life-review/target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped
PT_INTERP: absent; size: 13736056 bytes (baseline 13555672 + allowance 262144 = max 13817816)
server subcommand: exit 2, not implemented
agent subcommand: exit 2, not implemented

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

==> Vendored Ghostty artifact checksums
dist/ghostty-web.js: OK
dist/ghostty-vt.wasm: OK
dist/index.d.ts: OK

==> TypeScript protocol compiler
Saved lockfile

==> Tracer compiler, precompression and bundle transfer budget
bun install v1.4.2 (744846f84)

+ @types/bun@1.3.8
+ @types/node@22.19.0
+ @types/ws@8.5.10
+ playwright@1.61.1
+ typescript@5.9.3
+ ws@8.18.3
+ @scure/bip39@2.2.0
+ geist@1.7.2

38 packages installed [384.00ms]
$ bun x tsc --project tsconfig.json
bun test v1.4.2 (744846f84)

browser-build.test.ts:
(pass) the browser renderer has no unresolved Vite Node-file shim request [88.73ms]

chunk-classes.test.ts:
(pass) the first screen is critical, the canvas product module and what only it uses are deferred [1.80ms]
(pass) a chunk that both sides use stays critical [0.35ms]
(pass) code only an action loads is on demand, even when the lazy canvas is what loads it [9.85ms]

precompress.test.ts:
(pass) text sidecars round-trip deterministically; compressed formats remain identity [32.85ms]

test/recovery-ui.test.ts:
(pass) compiled recovery UI mode off obeys its URL boundary [3.02ms]
(pass) compiled recovery UI mode preview obeys its URL boundary [8.18ms]
(pass) compiled recovery UI mode 1 obeys its URL boundary [2.13ms]

test/recovery-crypto.test.ts:
(pass) HKDF siblings match independent implementation and bind unwrap to domain, account, kind and version [22.14ms]
(pass) 100 repeated wrapping operations generate independent salts and nonces [15.18ms]

test/recovery-wait.test.ts:
(pass) server remaining wait 0s is accepted through the capability policy maximum [2.64ms]
(pass) server remaining wait 86400s is accepted through the capability policy maximum [4.66ms]
(pass) server remaining wait 90000s is accepted through the capability policy maximum [2.05ms]
(pass) server remaining wait 172800s is accepted through the capability policy maximum [1.44ms]
(pass) malformed or excessive remaining wait -1 is denied [1.81ms]
(pass) malformed or excessive remaining wait 0.5 is denied [1.81ms]
(pass) malformed or excessive remaining wait 172801 is denied [2.47ms]
(pass) malformed or excessive remaining wait 9007199254740992 is denied [2.14ms]
(pass) malformed or excessive remaining wait 90000 is denied [1.21ms]

test/recovery-rotation.test.ts:
(pass) signed-in rotation sends only a local envelope and verifier after acknowledgement [14.23ms]
(pass) abandoned word acknowledgement uploads nothing [1.97ms]
(pass) settled acknowledgement cannot upload later (dismissed) [2.94ms]
(pass) settled acknowledgement cannot upload later (no acknowledgement) [3.06ms]

src/canvas/mesh/protocol.test.ts:
(pass) the server's own list becomes nodes, tags and grants, by name [1.07ms]
(pass) without `access` (today's server) the person may view and may not edit [0.40ms]
(pass) fields the server does not send are absent, never invented [0.30ms]
(pass) anything that is not a list is refused, whole [8.04ms]
(pass) a node's own tag list and the tag table agree even when a server sends only one [0.24ms]
(pass) the subscription's events: a pushed list, a revision that invalidates, and the end of the subscription [0.26ms]
(pass) answers carry the new revision, and a create the new arrow's id [0.08ms]
(pass) endpoints go out as the server writes them: a node by id, a tag by name [0.09ms]

src/canvas/mesh/layout.test.ts:
(pass) a small mesh keeps the approved arrangement: tags down the left, hosts two to a row [0.89ms]
(pass) the layout is deterministic and does not depend on input order [7.72ms]
(pass) no two cards overlap, and every card lies inside the graph [4.70ms]
(pass) the sheet is wider than tall, roughly 16:10 [1.26ms]
(pass) a pinned node stays where it was put and the others do not move [2.01ms]
(pass) a pin beyond the sheet grows the graph [0.26ms]
(pass) a host's other tags do not move it; a tag nobody carries still has its node [0.16ms]
(pass) 1,000 nodes lay out in a few milliseconds [11.02ms]

src/canvas/layout/stops.test.ts:
(pass) a view that fits the viewport has one stop, centred [0.25ms]
(pass) a wide view has one stop per column and the last stop ends at the right edge [0.16ms]
(pass) a view taller than the viewport is scaled down so it fits [0.03ms]
(pass) nearestStop picks the stop whose centre is closest [0.14ms]
(pass) a big graph opens fitted whole, in one stop, and its canvas is free [0.11ms]
(pass) a small graph keeps one stop per node column [0.06ms]
(pass) on a narrow screen a big graph does not shrink past where its names can be read: it starts at the top left [0.07ms]

src/canvas/layout/geometry.test.ts:
(pass) a dropped view pushes the one it lands on along the axis of least overlap, never itself [0.39ms]
(pass) a chain of neighbours is pushed in turn [0.11ms]
(pass) snapping rounds to whole cells [0.03ms]
(pass) reach follows grants through tags and keeps the relay [0.16ms]

src/canvas/model/document.test.ts:
(pass) a document holds references and layout, never content [0.54ms]
(pass) a document survives JSON and rebuilds the same columns [0.87ms]
(pass) a target that no longer exists is dropped, and an emptied column with it [0.12ms]
(pass) parseDocument rejects anything that is not a document of this format [0.17ms]

 54 pass
 0 fail
 9930 expect() calls
Ran 54 tests across 12 files. [431.00ms]
$ bun run build.ts
built chunk-gx6xft92.js, chunk-dr39h44e.js, main.js, chunk-seya9ywb.js, chunk-m9dns2pt.js, chunk-0x3e8s40.js, chunk-083ra37w.js, chunk-sgf4x5cq.js, chunk-1hfqw9kz.js, chunk-0hvyg8fa.js, chunk-f11g9gvg.js, chunk-4swb8545.js, chunk-34zmh4nf.js, chunk-4n18t4rx.js, chunk-axbkkqp1.js, chunk-avv0f0yw.js, backdrop.worker.js, faulty-terminal.worker.js, chunk-qbngyph5.js, chunk-tjva3s06.js, chunk-7sa7c6yn.js, chunk-y667rdh9.js, chunk-cmc3x3e5.js
critical chunk-cmc3x3e5.js: identity=39 gzip=39 brotli=39 bytes
deferred chunk-sgf4x5cq.js: identity=113297 gzip=39085 brotli=34038 bytes
onDemand chunk-34zmh4nf.js: identity=538 gzip=352 brotli=314 bytes
critical chunk-dr39h44e.js: identity=20008 gzip=6350 brotli=5669 bytes
onDemand chunk-0hvyg8fa.js: identity=5749 gzip=2762 brotli=2497 bytes
critical faulty-terminal.worker.js: identity=1086 gzip=561 brotli=488 bytes
critical backdrop.worker.js: identity=243 gzip=212 brotli=166 bytes
critical chunk-avv0f0yw.js: identity=700225 gzip=203174 brotli=164578 bytes
critical chunk-7sa7c6yn.js: identity=57186 gzip=18696 brotli=16748 bytes
critical chunk-qbngyph5.js: identity=9809 gzip=4014 brotli=3451 bytes
critical chunk-axbkkqp1.js: identity=90 gzip=90 brotli=78 bytes
onDemand chunk-4swb8545.js: identity=5370 gzip=2179 brotli=1901 bytes
critical chunk-0x3e8s40.js: identity=8547 gzip=3644 brotli=3215 bytes
onDemand chunk-4n18t4rx.js: identity=14856 gzip=5470 brotli=4900 bytes
onDemand chunk-f11g9gvg.js: identity=20879 gzip=8494 brotli=7659 bytes
deferred chunk-gx6xft92.js: identity=28519 gzip=11482 brotli=10010 bytes
critical chunk-1hfqw9kz.js: identity=49 gzip=49 brotli=49 bytes
critical chunk-tjva3s06.js: identity=199 gzip=159 brotli=131 bytes
critical chunk-y667rdh9.js: identity=39 gzip=39 brotli=39 bytes
critical chunk-m9dns2pt.js: identity=6483 gzip=3113 brotli=2829 bytes
critical main.js: identity=104138 gzip=37862 brotli=32837 bytes
critical chunk-083ra37w.js: identity=1805 gzip=806 brotli=691 bytes
critical chunk-seya9ywb.js: identity=8377 gzip=3576 brotli=3180 bytes
JavaScript transfer, critical: identity=918323 gzip=282384/307200 brotli=234188/256000 bytes
JavaScript transfer, deferred: identity=141816 gzip=50567/51200 brotli=44048/45056 bytes
JavaScript transfer, onDemand: identity=47392 gzip=19257/20480 brotli=17271/18432 bytes
JavaScript transfer, onDemand largest chunk chunk-f11g9gvg.js: gzip=8494/20480 brotli=7659/18432 bytes (class total gzip=19257 brotli=17271, not limited)
fonts/monaspace-neon/italic.latin.woff2: identity=44324 gzip=44324 brotli=44324 bytes
fonts/monaspace-neon/roman.latin.woff2: identity=40016 gzip=40016 brotli=40016 bytes
fonts/jetbrains-mono/italic.latin.woff2: identity=36316 gzip=36316 brotli=36316 bytes
fonts/jetbrains-mono/roman.latin.woff2: identity=34068 gzip=34068 brotli=34068 bytes
fonts/source-code-pro/italic.latin.woff2: identity=23612 gzip=23612 brotli=23612 bytes
fonts/source-code-pro/roman.latin.woff2: identity=22872 gzip=22872 brotli=22872 bytes
fonts/geist-mono/italic.latin.woff2: identity=21380 gzip=21380 brotli=21380 bytes
fonts/geist-mono/roman.latin.woff2: identity=19984 gzip=19984 brotli=19981 bytes
fonts/ibm-plex-mono/italic.latin.woff2: identity=22296 gzip=22296 brotli=22296 bytes
fonts/ibm-plex-mono/roman.latin.woff2: identity=19048 gzip=19048 brotli=19047 bytes
fonts/cascadia-code/italic.latin.woff2: identity=44404 gzip=44404 brotli=44404 bytes
fonts/cascadia-code/roman.latin.woff2: identity=40604 gzip=40604 brotli=40604 bytes
fonts/maple-mono-nf/italic.latin.woff2: identity=53444 gzip=53444 brotli=53444 bytes
fonts/maple-mono-nf/roman.latin.woff2: identity=46432 gzip=46432 brotli=46432 bytes
fonts/nerd-symbols.woff2: identity=223748 gzip=223748 brotli=223748 bytes
fonts/fira-code/roman.latin.woff2: identity=36756 gzip=36756 brotli=36756 bytes
fonts/commit-mono/italic-400.latin.woff2: identity=18716 gzip=18716 brotli=18716 bytes
fonts/commit-mono/italic-700.latin.woff2: identity=18352 gzip=18352 brotli=18352 bytes
fonts/commit-mono/roman-400.latin.woff2: identity=17484 gzip=17484 brotli=17484 bytes
fonts/commit-mono/roman-700.latin.woff2: identity=17260 gzip=17260 brotli=17260 bytes
Font transfer: monaspace-neon=84340/88064 jetbrains-mono=70384/75776 source-code-pro=46484/49152 geist-mono=41364/45056 ibm-plex-mono=41344/45056 cascadia-code=85008/88064 maple-mono-nf=99876/106496 (critical 46432/51200) symbols=223748/235520 fira-code=36756/40960 commit-mono=71812/75776 bytes

==> Rust stream oracle (for the differential test)

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

src/codec.test.ts:
(pass) wire protocol golden vectors > encodes and decodes each frame exactly as the shared manifest describes [21.69ms]
(pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.29ms]
(pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [1.06ms]
(pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.25ms]
(pass) split mux header preserves trailing Close [4.81ms]

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

 7 pass
 0 fail
 40810 expect() calls
Ran 7 tests across 2 files. [5.17s]

Target 0c4b94108f52027797ba017f457b0706d9894344: independent scripts/verify fast exited 0. Full output verbatim, part 3/3. Short owned scratch alias s9 fixes fixture SUN_LEN; no source changes or baseline exemption. <details><summary>Full gate output</summary> ```text │ └── yoke v0.8.3 │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 │ │ │ │ └── infraternal v0.1.0 │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── zerotrie v0.2.5 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ └── zerovec v0.11.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ ├── icu_normalizer v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── potential_utf v0.1.6 │ │ └── icu_collections v2.3.0 (*) │ └── tinystr v0.8.4 │ └── icu_locale_core v2.3.0 (*) └── zerofrom-derive v0.1.8 └── zerofrom v0.1.8 ├── icu_collections v2.3.0 (*) ├── icu_provider v2.3.1 (*) ├── yoke v0.8.3 (*) ├── zerotrie v0.2.5 (*) └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror' ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:232:1 │ 232 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 233 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-mesh v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl' ┌─ /home/kayg/.cache/codex-scratch/session-life-review/source/Cargo.lock:234:1 │ 234 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 235 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror-impl v1.0.69 └── thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror-impl v2.0.21 └── thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-mesh v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) advisories ok, bans ok, licenses ok, sources ok ==> static builds Blocking waiting for file lock on build directory Finished `release` profile [optimized] target(s) in 8m 23s /home/kayg/.cache/codex-scratch/session-life-review/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: 16319184 bytes (baseline 16142672 + allowance 262144 = max 16404816) Finished `release` profile [optimized] target(s) in 0.43s /home/kayg/.cache/codex-scratch/session-life-review/target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 13736056 bytes (baseline 13555672 + allowance 262144 = max 13817816) server subcommand: exit 2, not implemented agent subcommand: exit 2, not implemented +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ==> Vendored Ghostty artifact checksums dist/ghostty-web.js: OK dist/ghostty-vt.wasm: OK dist/index.d.ts: OK ==> TypeScript protocol compiler Saved lockfile ==> Tracer compiler, precompression and bundle transfer budget bun install v1.4.2 (744846f84) + @types/bun@1.3.8 + @types/node@22.19.0 + @types/ws@8.5.10 + playwright@1.61.1 + typescript@5.9.3 + ws@8.18.3 + @scure/bip39@2.2.0 + geist@1.7.2 38 packages installed [384.00ms] $ bun x tsc --project tsconfig.json bun test v1.4.2 (744846f84) browser-build.test.ts: (pass) the browser renderer has no unresolved Vite Node-file shim request [88.73ms] chunk-classes.test.ts: (pass) the first screen is critical, the canvas product module and what only it uses are deferred [1.80ms] (pass) a chunk that both sides use stays critical [0.35ms] (pass) code only an action loads is on demand, even when the lazy canvas is what loads it [9.85ms] precompress.test.ts: (pass) text sidecars round-trip deterministically; compressed formats remain identity [32.85ms] test/recovery-ui.test.ts: (pass) compiled recovery UI mode off obeys its URL boundary [3.02ms] (pass) compiled recovery UI mode preview obeys its URL boundary [8.18ms] (pass) compiled recovery UI mode 1 obeys its URL boundary [2.13ms] test/recovery-crypto.test.ts: (pass) HKDF siblings match independent implementation and bind unwrap to domain, account, kind and version [22.14ms] (pass) 100 repeated wrapping operations generate independent salts and nonces [15.18ms] test/recovery-wait.test.ts: (pass) server remaining wait 0s is accepted through the capability policy maximum [2.64ms] (pass) server remaining wait 86400s is accepted through the capability policy maximum [4.66ms] (pass) server remaining wait 90000s is accepted through the capability policy maximum [2.05ms] (pass) server remaining wait 172800s is accepted through the capability policy maximum [1.44ms] (pass) malformed or excessive remaining wait -1 is denied [1.81ms] (pass) malformed or excessive remaining wait 0.5 is denied [1.81ms] (pass) malformed or excessive remaining wait 172801 is denied [2.47ms] (pass) malformed or excessive remaining wait 9007199254740992 is denied [2.14ms] (pass) malformed or excessive remaining wait 90000 is denied [1.21ms] test/recovery-rotation.test.ts: (pass) signed-in rotation sends only a local envelope and verifier after acknowledgement [14.23ms] (pass) abandoned word acknowledgement uploads nothing [1.97ms] (pass) settled acknowledgement cannot upload later (dismissed) [2.94ms] (pass) settled acknowledgement cannot upload later (no acknowledgement) [3.06ms] src/canvas/mesh/protocol.test.ts: (pass) the server's own list becomes nodes, tags and grants, by name [1.07ms] (pass) without `access` (today's server) the person may view and may not edit [0.40ms] (pass) fields the server does not send are absent, never invented [0.30ms] (pass) anything that is not a list is refused, whole [8.04ms] (pass) a node's own tag list and the tag table agree even when a server sends only one [0.24ms] (pass) the subscription's events: a pushed list, a revision that invalidates, and the end of the subscription [0.26ms] (pass) answers carry the new revision, and a create the new arrow's id [0.08ms] (pass) endpoints go out as the server writes them: a node by id, a tag by name [0.09ms] src/canvas/mesh/layout.test.ts: (pass) a small mesh keeps the approved arrangement: tags down the left, hosts two to a row [0.89ms] (pass) the layout is deterministic and does not depend on input order [7.72ms] (pass) no two cards overlap, and every card lies inside the graph [4.70ms] (pass) the sheet is wider than tall, roughly 16:10 [1.26ms] (pass) a pinned node stays where it was put and the others do not move [2.01ms] (pass) a pin beyond the sheet grows the graph [0.26ms] (pass) a host's other tags do not move it; a tag nobody carries still has its node [0.16ms] (pass) 1,000 nodes lay out in a few milliseconds [11.02ms] src/canvas/layout/stops.test.ts: (pass) a view that fits the viewport has one stop, centred [0.25ms] (pass) a wide view has one stop per column and the last stop ends at the right edge [0.16ms] (pass) a view taller than the viewport is scaled down so it fits [0.03ms] (pass) nearestStop picks the stop whose centre is closest [0.14ms] (pass) a big graph opens fitted whole, in one stop, and its canvas is free [0.11ms] (pass) a small graph keeps one stop per node column [0.06ms] (pass) on a narrow screen a big graph does not shrink past where its names can be read: it starts at the top left [0.07ms] src/canvas/layout/geometry.test.ts: (pass) a dropped view pushes the one it lands on along the axis of least overlap, never itself [0.39ms] (pass) a chain of neighbours is pushed in turn [0.11ms] (pass) snapping rounds to whole cells [0.03ms] (pass) reach follows grants through tags and keeps the relay [0.16ms] src/canvas/model/document.test.ts: (pass) a document holds references and layout, never content [0.54ms] (pass) a document survives JSON and rebuilds the same columns [0.87ms] (pass) a target that no longer exists is dropped, and an emptied column with it [0.12ms] (pass) parseDocument rejects anything that is not a document of this format [0.17ms] 54 pass 0 fail 9930 expect() calls Ran 54 tests across 12 files. [431.00ms] $ bun run build.ts built chunk-gx6xft92.js, chunk-dr39h44e.js, main.js, chunk-seya9ywb.js, chunk-m9dns2pt.js, chunk-0x3e8s40.js, chunk-083ra37w.js, chunk-sgf4x5cq.js, chunk-1hfqw9kz.js, chunk-0hvyg8fa.js, chunk-f11g9gvg.js, chunk-4swb8545.js, chunk-34zmh4nf.js, chunk-4n18t4rx.js, chunk-axbkkqp1.js, chunk-avv0f0yw.js, backdrop.worker.js, faulty-terminal.worker.js, chunk-qbngyph5.js, chunk-tjva3s06.js, chunk-7sa7c6yn.js, chunk-y667rdh9.js, chunk-cmc3x3e5.js critical chunk-cmc3x3e5.js: identity=39 gzip=39 brotli=39 bytes deferred chunk-sgf4x5cq.js: identity=113297 gzip=39085 brotli=34038 bytes onDemand chunk-34zmh4nf.js: identity=538 gzip=352 brotli=314 bytes critical chunk-dr39h44e.js: identity=20008 gzip=6350 brotli=5669 bytes onDemand chunk-0hvyg8fa.js: identity=5749 gzip=2762 brotli=2497 bytes critical faulty-terminal.worker.js: identity=1086 gzip=561 brotli=488 bytes critical backdrop.worker.js: identity=243 gzip=212 brotli=166 bytes critical chunk-avv0f0yw.js: identity=700225 gzip=203174 brotli=164578 bytes critical chunk-7sa7c6yn.js: identity=57186 gzip=18696 brotli=16748 bytes critical chunk-qbngyph5.js: identity=9809 gzip=4014 brotli=3451 bytes critical chunk-axbkkqp1.js: identity=90 gzip=90 brotli=78 bytes onDemand chunk-4swb8545.js: identity=5370 gzip=2179 brotli=1901 bytes critical chunk-0x3e8s40.js: identity=8547 gzip=3644 brotli=3215 bytes onDemand chunk-4n18t4rx.js: identity=14856 gzip=5470 brotli=4900 bytes onDemand chunk-f11g9gvg.js: identity=20879 gzip=8494 brotli=7659 bytes deferred chunk-gx6xft92.js: identity=28519 gzip=11482 brotli=10010 bytes critical chunk-1hfqw9kz.js: identity=49 gzip=49 brotli=49 bytes critical chunk-tjva3s06.js: identity=199 gzip=159 brotli=131 bytes critical chunk-y667rdh9.js: identity=39 gzip=39 brotli=39 bytes critical chunk-m9dns2pt.js: identity=6483 gzip=3113 brotli=2829 bytes critical main.js: identity=104138 gzip=37862 brotli=32837 bytes critical chunk-083ra37w.js: identity=1805 gzip=806 brotli=691 bytes critical chunk-seya9ywb.js: identity=8377 gzip=3576 brotli=3180 bytes JavaScript transfer, critical: identity=918323 gzip=282384/307200 brotli=234188/256000 bytes JavaScript transfer, deferred: identity=141816 gzip=50567/51200 brotli=44048/45056 bytes JavaScript transfer, onDemand: identity=47392 gzip=19257/20480 brotli=17271/18432 bytes JavaScript transfer, onDemand largest chunk chunk-f11g9gvg.js: gzip=8494/20480 brotli=7659/18432 bytes (class total gzip=19257 brotli=17271, not limited) fonts/monaspace-neon/italic.latin.woff2: identity=44324 gzip=44324 brotli=44324 bytes fonts/monaspace-neon/roman.latin.woff2: identity=40016 gzip=40016 brotli=40016 bytes fonts/jetbrains-mono/italic.latin.woff2: identity=36316 gzip=36316 brotli=36316 bytes fonts/jetbrains-mono/roman.latin.woff2: identity=34068 gzip=34068 brotli=34068 bytes fonts/source-code-pro/italic.latin.woff2: identity=23612 gzip=23612 brotli=23612 bytes fonts/source-code-pro/roman.latin.woff2: identity=22872 gzip=22872 brotli=22872 bytes fonts/geist-mono/italic.latin.woff2: identity=21380 gzip=21380 brotli=21380 bytes fonts/geist-mono/roman.latin.woff2: identity=19984 gzip=19984 brotli=19981 bytes fonts/ibm-plex-mono/italic.latin.woff2: identity=22296 gzip=22296 brotli=22296 bytes fonts/ibm-plex-mono/roman.latin.woff2: identity=19048 gzip=19048 brotli=19047 bytes fonts/cascadia-code/italic.latin.woff2: identity=44404 gzip=44404 brotli=44404 bytes fonts/cascadia-code/roman.latin.woff2: identity=40604 gzip=40604 brotli=40604 bytes fonts/maple-mono-nf/italic.latin.woff2: identity=53444 gzip=53444 brotli=53444 bytes fonts/maple-mono-nf/roman.latin.woff2: identity=46432 gzip=46432 brotli=46432 bytes fonts/nerd-symbols.woff2: identity=223748 gzip=223748 brotli=223748 bytes fonts/fira-code/roman.latin.woff2: identity=36756 gzip=36756 brotli=36756 bytes fonts/commit-mono/italic-400.latin.woff2: identity=18716 gzip=18716 brotli=18716 bytes fonts/commit-mono/italic-700.latin.woff2: identity=18352 gzip=18352 brotli=18352 bytes fonts/commit-mono/roman-400.latin.woff2: identity=17484 gzip=17484 brotli=17484 bytes fonts/commit-mono/roman-700.latin.woff2: identity=17260 gzip=17260 brotli=17260 bytes Font transfer: monaspace-neon=84340/88064 jetbrains-mono=70384/75776 source-code-pro=46484/49152 geist-mono=41364/45056 ibm-plex-mono=41344/45056 cascadia-code=85008/88064 maple-mono-nf=99876/106496 (critical 46432/51200) symbols=223748/235520 fira-code=36756/40960 commit-mono=71812/75776 bytes ==> Rust stream oracle (for the differential test) ==> TypeScript protocol tests bun test v1.4.2 (744846f84) src/codec.test.ts: (pass) wire protocol golden vectors > encodes and decodes each frame exactly as the shared manifest describes [21.69ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.29ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [1.06ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.25ms] (pass) split mux header preserves trailing Close [4.81ms] src/stream.test.ts: stream differential: 141 streams, 13578 schedules, zero divergences (pass) Rust and TypeScript preserve every frame at all boundaries and random multi-splits [5108.72ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [13.01ms] 7 pass 0 fail 40810 expect() calls Ran 7 tests across 2 files. [5.17s] ``` </details>
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#100
No description provided.