S1 integration: merge tracer lanes into dev, deploy to monitor01 #34

Closed
opened 2026-10-06 15:42:36 +00:00 by kayg · 95 comments
Owner

Integration: merge the S1 tracer lanes into dev, then deploy to monitor01.

Order and gates:

  1. t-agent (#20): fixes 6c64ede, gate green; the LF budget is met only with vt-ghostty.
  2. vt-ghostty (#22): after the snapshot-fidelity fixes and the second review.
  3. t-server (#19): after the auth review and the fix-server round.
  4. t-web (#21): after the auth review.

After each merge, run scripts/verify fast on the merge result. Then deploy to monitor01 (~/.local/bin/infraternal, user unit infraternal-server) and post the "how to test" note.

Owner action still open: the DNS A record infraternal.kayg.org → 10.69.69.50 (#6).

Integration: merge the S1 tracer lanes into `dev`, then deploy to monitor01. Order and gates: 1. t-agent (#20): fixes 6c64ede, gate green; the LF budget is met only with vt-ghostty. 2. vt-ghostty (#22): after the snapshot-fidelity fixes and the second review. 3. t-server (#19): after the auth review and the fix-server round. 4. t-web (#21): after the auth review. After each merge, run `scripts/verify fast` on the merge result. Then deploy to monitor01 (`~/.local/bin/infraternal`, user unit `infraternal-server`) and post the "how to test" note. **Owner action still open:** the DNS A record `infraternal.kayg.org → 10.69.69.50` (#6).
Author
Owner

What lives where on monitor01 (checked 2026-10-06, user kayg). A fresh deploy wipes the data directory only.

Path What On a fresh deploy
~/.local/bin/infraternal the single static binary (server, embedded agent, shim) replaced
~/.local/share/infraternal/infraternal.sqlite all state: owner account, passkey public keys, encrypted key envelopes (PRF / recovery), sessions deleted, which means a new owner setup
~/.local/share/infraternal/setup-token.sock private first-run token socket, present only while there is no owner recreated
~/.local/share/infraternal-web/ built web client (static files) replaced
~/.config/systemd/user/infraternal-server.service user unit kept
$XDG_RUNTIME_DIR/infraternal/sessions/*.sock (/run/infraternal when root) live terminal shims (RAM; they survive server restarts, not reboots) ended, so shells close
/opt/infra/traefik/dynamic/infraternal.yml proxy route (NetBird-only, TLS) kept

Outside the server: the passkey itself lives on the owner's device (iCloud Keychain). After a wipe, delete the old "infraternal.kayg.org" passkey in the Passwords app, or the browser may offer a passkey the server no longer knows.

Not yet on disk (future slices): the internal CA and mTLS certificates for remote infraternal agents (D64), and plugin data.

**What lives where on monitor01** (checked 2026-10-06, user kayg). A fresh deploy wipes the data directory only. | Path | What | On a fresh deploy | |---|---|---| | `~/.local/bin/infraternal` | the single static binary (server, embedded agent, shim) | replaced | | `~/.local/share/infraternal/infraternal.sqlite` | all state: owner account, passkey public keys, encrypted key envelopes (PRF / recovery), sessions | **deleted**, which means a new owner setup | | `~/.local/share/infraternal/setup-token.sock` | private first-run token socket, present only while there is no owner | recreated | | `~/.local/share/infraternal-web/` | built web client (static files) | replaced | | `~/.config/systemd/user/infraternal-server.service` | user unit | kept | | `$XDG_RUNTIME_DIR/infraternal/sessions/*.sock` (`/run/infraternal` when root) | live terminal shims (RAM; they survive server restarts, not reboots) | ended, so shells close | | `/opt/infra/traefik/dynamic/infraternal.yml` | proxy route (NetBird-only, TLS) | kept | Outside the server: the passkey itself lives on the owner's device (iCloud Keychain). After a wipe, delete the old "infraternal.kayg.org" passkey in the Passwords app, or the browser may offer a passkey the server no longer knows. Not yet on disk (future slices): the internal CA and mTLS certificates for remote infraternal agents (D64), and plugin data.
Author
Owner

After merging t-server, extend the idle canary (scripts/idle_canary.py from t-agent 48d7bab) to the long-running server process. Currently only the infraternal agent and shim are measured.

After merging t-server, extend the idle canary (scripts/idle_canary.py from t-agent 48d7bab) to the long-running server process. Currently only the infraternal agent and shim are measured.
Author
Owner

Starting integration on dev at 8e0c5c2 (t-agent already merged). Following the job order: t-server e4809d4, exact t-web 845c293, t-web-auth 58040df; each merge gated before the next. No push or deploy. docs/PROCESS.md is absent; supplied process rules apply. Reading #28 history and retaining prior integration/replay limitations until real merged-build evidence resolves them.

Starting integration on dev at 8e0c5c2 (t-agent already merged). Following the job order: t-server e4809d4, exact t-web 845c293, t-web-auth 58040df; each merge gated before the next. No push or deploy. docs/PROCESS.md is absent; supplied process rules apply. Reading #28 history and retaining prior integration/replay limitations until real merged-build evidence resolves them.
Author
Owner

Finding: server writer identities (websocket.rs) conflict with t-agent daemon.rs: AttachTerm rejects a second stream for the same session (line 186), and terminal forwards the session-wide shim written Ack (line 303). Multi-device acceptance therefore requires a reproduced integration fix. Additive contract proposal: negotiate a new shim capability and writer-select frame keyed by the stable leg-B writer id; retain independent accepted/written cursors and multiple bounded viewers in the surviving shim. Keep caps-zero and sequenced-input v1 frames unchanged; no new engine/library. Existing 120s browser-writer authority boundary remains.

Finding: server writer identities (websocket.rs) conflict with t-agent daemon.rs: AttachTerm rejects a second stream for the same session (line 186), and terminal forwards the session-wide shim written Ack (line 303). Multi-device acceptance therefore requires a reproduced integration fix. Additive contract proposal: negotiate a new shim capability and writer-select frame keyed by the stable leg-B writer id; retain independent accepted/written cursors and multiple bounded viewers in the surviving shim. Keep caps-zero and sequenced-input v1 frames unchanged; no new engine/library. Existing 120s browser-writer authority boundary remains.
Author
Owner

Real-binary reproduction: first writer reaches Ack 23; attaching writer 2 to the same PTY exits leg B with terminal stream already attached or limit reached. First merge gate also caught one startup scheduler activation in 2.201s; isolated unchanged daemon rerun passed with 24 abrupt restarts and 4,710,396 exact replay bytes. Full gate rerun required; no idle threshold change. Another integration gap: tracer TerminalClient keeps session_id only in memory (terminal.ts), so browser reload creates a new PTY rather than reattaching. Will retain only a nonsecret session id scoped to the authenticated user; replay authority remains in memory.

Real-binary reproduction: first writer reaches Ack 23; attaching writer 2 to the same PTY exits leg B with terminal stream already attached or limit reached. First merge gate also caught one startup scheduler activation in 2.201s; isolated unchanged daemon rerun passed with 24 abrupt restarts and 4,710,396 exact replay bytes. Full gate rerun required; no idle threshold change. Another integration gap: tracer TerminalClient keeps session_id only in memory (terminal.ts), so browser reload creates a new PTY rather than reattaching. Will retain only a nonsecret session id scoped to the authenticated user; replay authority remains in memory.
Author
Owner

Completed t-server merge f5ea2c9 (parents 8e0c5c2/e4809d4). Required fast gate exit0: fmt/clippy/test/deny/static PASS; protocol7/7, 34390 assertions, 134 streams/11439 schedules/zero divergences. Three conflicts resolved additively (main real daemon+synchronous shim+server CLI, both Cargo dependencies, both wire flow-control clauses). Startup fixture correction preserves zero steady-state activations. Real daemon24 crashes/4710396 bytes exact; fresh static server0 activations/10.002s. Exact t-web845c293 now merges without conflicts; its gate is running.

Completed t-server merge f5ea2c9 (parents 8e0c5c2/e4809d4). Required fast gate exit0: fmt/clippy/test/deny/static PASS; protocol7/7, 34390 assertions, 134 streams/11439 schedules/zero divergences. Three conflicts resolved additively (main real daemon+synchronous shim+server CLI, both Cargo dependencies, both wire flow-control clauses). Startup fixture correction preserves zero steady-state activations. Real daemon24 crashes/4710396 bytes exact; fresh static server0 activations/10.002s. Exact t-web845c293 now merges without conflicts; its gate is running.
Author
Owner

Completed exact t-web845c293 merge 9e82c28: no conflicts, required fast exit0/all Rust rows PASS; pinned vendor hashes valid; protocol7/7/34390 assertions/zero differential divergences. Production tracer builds. t-web-auth58040df now merges without conflicts (mock-server.ts auto-merged); third merge gate running. No newer t-web tip used.

Completed exact t-web845c293 merge 9e82c28: no conflicts, required fast exit0/all Rust rows PASS; pinned vendor hashes valid; protocol7/7/34390 assertions/zero differential divergences. Production tracer builds. t-web-auth58040df now merges without conflicts (mock-server.ts auto-merged); third merge gate running. No newer t-web tip used.
Author
Owner

Completed t-web-auth58040df merge; all three ordered merge results passed the required fast gate before the next merge. Auth merge had no conflicts; tracer check/build pass; native Chromium149 auth gate4 isolated scenarios PASS. Continuing real PTY multi-writer, reload persistence and merged static-browser evidence. No push/deploy.

Completed t-web-auth58040df merge; all three ordered merge results passed the required fast gate before the next merge. Auth merge had no conflicts; tracer check/build pass; native Chromium149 auth gate4 isolated scenarios PASS. Continuing real PTY multi-writer, reload persistence and merged static-browser evidence. No push/deploy.
Author
Owner

Codec step e3c6d09 adds negotiated shim capability bit1 and SelectWriter(u32)/0x1b; existing v1 layouts unchanged. fmt/workspace clippy/shim tests PASS. Next step: shim per-writer queue accounting plus concurrent viewer pump. Native auth gate4/4 passes at merged client auth6f4214e; third merge fast exit0.

Codec step e3c6d09 adds negotiated shim capability bit1 and SelectWriter(u32)/0x1b; existing v1 layouts unchanged. fmt/workspace clippy/shim tests PASS. Next step: shim per-writer queue accounting plus concurrent viewer pump. Native auth gate4/4 passes at merged client auth6f4214e; third merge fast exit0.
Author
Owner

Shim step completed: independent surviving cursors (512 writer identities + legacy0), bounded32 viewers and last-typist size [74]. Direct real-shim probe writer2 Ack30 / writer4 starts0 then30; writer2 reconnect retains30 and duplicate replay trimmed. fmt/workspace clippy/unit shim/seven real-PTY integration tests PASS. Agent integration follows; no process-local acceptance authority.

Shim step completed: independent surviving cursors (512 writer identities + legacy0), bounded32 viewers and last-typist size [74]. Direct real-shim probe writer2 Ack30 / writer4 starts0 then30; writer2 reconnect retains30 and duplicate replay trimmed. fmt/workspace clippy/unit shim/seven real-PTY integration tests PASS. Agent integration follows; no process-local acceptance authority.
Author
Owner

Multi-device leg-B/real-shim oracle now PASS: first Ack45; device2 starts0; two viewers receive37 exact bytes and full-range replay after daemon SIGKILL does not duplicate input. Existing24-stop/4710396-byte oracle also passes. Shim de73267; writer helper1ea6b8a; subsequent daemon/canary commits recorded in dev history. Production browser first-open repro FAILS at merged static binary: browser sends ssh.session.open {} but server accepts only terminal.open dimensions; legB server omits uid and returns32hex while client expects canonical UUID. These additional cross-lane schema mismatches need adapters, preserving both existing contracts; no new transport/library.

Multi-device leg-B/real-shim oracle now PASS: first Ack45; device2 starts0; two viewers receive37 exact bytes and full-range replay after daemon SIGKILL does not duplicate input. Existing24-stop/4710396-byte oracle also passes. Shim de73267; writer helper1ea6b8a; subsequent daemon/canary commits recorded in dev history. Production browser first-open repro FAILS at merged static binary: browser sends ssh.session.open {} but server accepts only terminal.open dimensions; legB server omits uid and returns32hex while client expects canonical UUID. These additional cross-lane schema mismatches need adapters, preserving both existing contracts; no new transport/library.
Author
Owner

Additional schema regressions reproduced before fixing: real legB Call contains cols/rows/px_w/px_h but required uid is absent; canonical agent UUID Result rejected. Both red tests now pass via embedded adapter1468776. Existing actor gate7/7:511 healthy readers/102200 events p50<1us/p994us, load2.45/5.11/7.85. LegA adapter preserves terminal.open and adds tracer ssh.session.open default embedded host; explicit remote host requests fail closed until inventory/plugin routing exists. Browser replay/reload run now uses the rebuilt debug binary to reach the next boundary before final static build.

Additional schema regressions reproduced before fixing: real legB Call contains cols/rows/px_w/px_h but required uid is absent; canonical agent UUID Result rejected. Both red tests now pass via embedded adapter1468776. Existing actor gate7/7:511 healthy readers/102200 events p50<1us/p994us, load2.45/5.11/7.85. LegA adapter preserves terminal.open and adds tracer ssh.session.open default embedded host; explicit remote host requests fail closed until inventory/plugin routing exists. Browser replay/reload run now uses the rebuilt debug binary to reach the next boundary before final static build.
Author
Owner

Browser action adapter01ce197: server56 tests pass/3 existing measurements ignored, full authority guards shared by both action names. Rebuilt debug production-browser test now creates/types real PTY successfully, then fails with reload opened a new PTY (retained red log). Terminal restore APIb768bf4 passes strict TypeScript/build; main-module fix retains only public per-user/tab session id and puts it in a shareable session URL for another authenticated device. No resume tokens or queued input persisted. Per-file/module adapter history kept atomic.

Browser action adapter01ce197: server56 tests pass/3 existing measurements ignored, full authority guards shared by both action names. Rebuilt debug production-browser test now creates/types real PTY successfully, then fails with reload opened a new PTY (retained red log). Terminal restore APIb768bf4 passes strict TypeScript/build; main-module fix retains only public per-user/tab session id and puts it in a shareable session URL for another authenticated device. No resume tokens or queued input persisted. Per-file/module adapter history kept atomic.
Author
Owner

Real latency finding (fresh native auth + real backend WS/PTY, event-driven500 keys, 3 attached viewers): debug p50=48.021ms/p99=68.082ms, fails D41 5ms overhead. runtime.rs plain proxy listener lacks TCP_NODELAY; axum-server TLS acceptor already sets it. Adding the same policy to accepted plain sockets, preserving the server engine. CDP-intercepted and incomplete380-key paint runs are invalid timing evidence and excluded. Fixture now uses native TLS/WebSockets with certificate only in pipes/memory, full500 echoes and numeric resume; no TLS-key file. Ten-second no-session/shared-idle server observations are0; a620s canary is checking SQLx periodic housekeeping.

Real latency finding (fresh native auth + real backend WS/PTY, event-driven500 keys, 3 attached viewers): debug p50=48.021ms/p99=68.082ms, fails D41 5ms overhead. runtime.rs plain proxy listener lacks TCP_NODELAY; axum-server TLS acceptor already sets it. Adding the same policy to accepted plain sockets, preserving the server engine. CDP-intercepted and incomplete380-key paint runs are invalid timing evidence and excluded. Fixture now uses native TLS/WebSockets with certificate only in pipes/memory, full500 echoes and numeric resume; no TLS-key file. Ten-second no-session/shared-idle server observations are0; a620s canary is checking SQLx periodic housekeeping.
Author
Owner

Retained real-engine regressions: 04c140f adds two simultaneous PTY writers, independent Acks, identical exact output, and full acknowledged-range replay after daemon SIGKILL; agent_review: 4 passed in 47.41s. a1eeaf6 retains the two real embedded actor regressions that failed on uid/dimensions and UUID spelling before the boundary adapters; server suite: 56 passed, 3 ignored.

Retained real-engine regressions: 04c140f adds two simultaneous PTY writers, independent Acks, identical exact output, and full acknowledged-range replay after daemon SIGKILL; agent_review: 4 passed in 47.41s. a1eeaf6 retains the two real embedded actor regressions that failed on uid/dimensions and UUID spelling before the boundary adapters; server suite: 56 passed, 3 ignored.
Author
Owner

5926049 matches the existing TLS acceptor with TCP_NODELAY on the plain proxy listener. Same real 500-key debug echo: before p50/p99 48.021/68.082 ms; after 3.705/12.033 ms. Optimized static budget verification remains pending. 1d2fc98 measures the full 32-peer shim limit: 32 writers/viewers x 200 distinct inputs, independent Acks, identical exact output, 6400 inputs / 614400 delivered bytes in 0.804s; daemon RSS 13764 KiB, x86_64 / 8 cores, load 4.14/5.21/6.14. 3fd35e7 pins additive writer framing and partial-write accounting; shim tests 17 passed, 5 ignored. Strict clippy literal correction is 65f5b29.

5926049 matches the existing TLS acceptor with TCP_NODELAY on the plain proxy listener. Same real 500-key debug echo: before p50/p99 48.021/68.082 ms; after 3.705/12.033 ms. Optimized static budget verification remains pending. 1d2fc98 measures the full 32-peer shim limit: 32 writers/viewers x 200 distinct inputs, independent Acks, identical exact output, 6400 inputs / 614400 delivered bytes in 0.804s; daemon RSS 13764 KiB, x86_64 / 8 cores, load 4.14/5.21/6.14. 3fd35e7 pins additive writer framing and partial-write accounting; shim tests 17 passed, 5 ignored. Strict clippy literal correction is 65f5b29.
Author
Owner

ba6a560 retains real PTY geometry evidence for decision 74: simultaneous 80x24 and 120x40 viewers, stty size reports 24 80 after device A input and 40 120 after device B input, visible to both viewers; real Rust-launched regression passes in 0.17s. The merged x86_64 binary is static-pie, no PT_INTERP, 15063104 bytes. Native browser acceptance is moving from debug to that optimized binary; 620-second idle observation is approaching the default SQLx 600-second reaper boundary.

ba6a560 retains real PTY geometry evidence for decision 74: simultaneous 80x24 and 120x40 viewers, stty size reports 24 80 after device A input and 40 120 after device B input, visible to both viewers; real Rust-launched regression passes in 0.17s. The merged x86_64 binary is static-pie, no PT_INTERP, 15063104 bytes. Native browser acceptance is moving from debug to that optimized binary; 620-second idle observation is approaching the default SQLx 600-second reaper boundary.
Author
Owner

Failing idle oracle before fix: fresh static server, no sessions or requests, 620.001 seconds; idle_canary reports 4 scheduler activations on tokio-rt-worker tid 3058434. SQLx 0.8.6 pool/inner.rs installs a maintenance task at min(idle_timeout,max_lifetime); runtime.rs uses defaults 600s/1800s. Ten-second samples missed this. Proposed bounded fix: keep max_connections(8), set both lifetime/idle timeouts to None for local SQLite; reject polling/reaping and retain the zero-activation threshold. No engine/dependency change. Evidence: .codex-integration/server-idle-long-red.log.

Failing idle oracle before fix: fresh static server, no sessions or requests, 620.001 seconds; idle_canary reports 4 scheduler activations on tokio-rt-worker tid 3058434. SQLx 0.8.6 pool/inner.rs installs a maintenance task at min(idle_timeout,max_lifetime); runtime.rs uses defaults 600s/1800s. Ten-second samples missed this. Proposed bounded fix: keep max_connections(8), set both lifetime/idle timeouts to None for local SQLite; reject polling/reaping and retain the zero-activation threshold. No engine/dependency change. Evidence: .codex-integration/server-idle-long-red.log.
Author
Owner

Fast-gate finding: the old 12-session queue oracle prepared every session on writer 1, then replayed writers 2..12 using writer 1 Ack. Independent writers correctly refuse that gap. Updated the oracle to start new writers 2..12 at zero while preserving writer 1 and each overload/replay identity; unchanged real saturation assertion now passes: 12 streams x 65 replay frames, 2640000 payload bytes exactly once, dead-shim isolation and daemon Ping. This is fixture compatibility with #28, not relaxed queue bounds. The first aggregate gate also caught a pedantic literal lint already corrected in 65f5b29.

Fast-gate finding: the old 12-session queue oracle prepared every session on writer 1, then replayed writers 2..12 using writer 1 Ack. Independent writers correctly refuse that gap. Updated the oracle to start new writers 2..12 at zero while preserving writer 1 and each overload/replay identity; unchanged real saturation assertion now passes: 12 streams x 65 replay frames, 2640000 payload bytes exactly once, dead-shim isolation and daemon Ping. This is fixture compatibility with #28, not relaxed queue bounds. The first aggregate gate also caught a pedantic literal lint already corrected in 65f5b29.
Author
Owner

Production acceptance PASS on merged static binary + built tracer: native WebAuthn setup/sign-in, real PTY, reload same public session, two separately signed-in device contexts, first writer Ack10 then second Ack0, exact shared input, logout socket revocation. All 500 painted echoes: p50/p95/p99 15.00/15.60/15.90 ms; resume 94.70 ms. Isolated 500-key real leg-A/server/daemon/shim/PTY echo: p50 0.968 ms, p99 1.713 ms (<5 ms). Browser renderer/proxy contention was excluded from this latter server-overhead measurement; earlier concurrent 3-viewer samples remain recorded (debug p99 12.033 ms, static loaded p99 15.121 ms). Static server canaries: 0/10.001s without session and 0/10.001s with two-viewer idle PTY, RSS 11452/15364 KiB. 724fc33 disables only SQLite periodic reaping, retaining 8 connections; 620s static retest running. Safe production screenshots preserved in target/integration-evidence/screenshots/; no recovery words or capabilities captured.

Production acceptance PASS on merged static binary + built tracer: native WebAuthn setup/sign-in, real PTY, reload same public session, two separately signed-in device contexts, first writer Ack10 then second Ack0, exact shared input, logout socket revocation. All 500 painted echoes: p50/p95/p99 15.00/15.60/15.90 ms; resume 94.70 ms. Isolated 500-key real leg-A/server/daemon/shim/PTY echo: p50 0.968 ms, p99 1.713 ms (<5 ms). Browser renderer/proxy contention was excluded from this latter server-overhead measurement; earlier concurrent 3-viewer samples remain recorded (debug p99 12.033 ms, static loaded p99 15.121 ms). Static server canaries: 0/10.001s without session and 0/10.001s with two-viewer idle PTY, RSS 11452/15364 KiB. 724fc33 disables only SQLite periodic reaping, retaining 8 connections; 620s static retest running. Safe production screenshots preserved in target/integration-evidence/screenshots/; no recovery words or capabilities captured.
Author
Owner

Idle fix and contract steps: 724fc33 retains the eight-connection local SQLite pool with no idle/lifetime reaper; five runtime tests pass (0.80s), optimized x86_64 rebuild passes. a3c6224 retains the request-free 620s server canary (zero-activation short smoke 10.001s); the full static observation is running. 2a659a6 documents the previously proposed additive shim capability, writer/peer/queue bounds and legacy browser plus trusted leg-B action adapters; preserves all legacy fields and the longer-drop capability gap. No new foundational library or engine was selected.

Idle fix and contract steps: 724fc33 retains the eight-connection local SQLite pool with no idle/lifetime reaper; five runtime tests pass (0.80s), optimized x86_64 rebuild passes. a3c6224 retains the request-free 620s server canary (zero-activation short smoke 10.001s); the full static observation is running. 2a659a6 documents the previously proposed additive shim capability, writer/peer/queue bounds and legacy browser plus trusted leg-B action adapters; preserves all legacy fields and the longer-drop capability gap. No new foundational library or engine was selected.
Author
Owner

Static capacity proof (70a0 pending exact SHA in next step): 32 simultaneous writers/viewers x 200 inputs = 6400 real PTY-write Acks; p50/p99 0.473/2.825 ms, 19200 exact bytes per viewer / 614400 delivered bytes, 0.413s. Daemon RSS 6212 KiB; shim RSS 9732 KiB. x86_64, 8 cores, load 3.92/3.30/4.64. The first optimized scale probe saturated the intentional eight-command queue by refunding every tiny output frame; initial 1MiB credit already covers 19200 bytes, so the retained probe now uses that bounded window instead. No production queue bound or assertion was relaxed. These are 32 live peers on one shared PTY, not an extrapolation to 512 live sessions.

Static capacity proof (70a0 pending exact SHA in next step): 32 simultaneous writers/viewers x 200 inputs = 6400 real PTY-write Acks; p50/p99 0.473/2.825 ms, 19200 exact bytes per viewer / 614400 delivered bytes, 0.413s. Daemon RSS 6212 KiB; shim RSS 9732 KiB. x86_64, 8 cores, load 3.92/3.30/4.64. The first optimized scale probe saturated the intentional eight-command queue by refunding every tiny output frame; initial 1MiB credit already covers 19200 bytes, so the retained probe now uses that bounded window instead. No production queue bound or assertion was relaxed. These are 32 live peers on one shared PTY, not an extrapolation to 512 live sessions.
Author
Owner

The exact static capacity-probe commit is 62dedf0 (the previous comment included an unintentional pending-SHA placeholder). It records all 6400 Ack timings and both RSS values with the unchanged 32-viewer exact-output assertion. The request-free static idle observation is past four minutes with its final 620-second result still pending. Final aggregate Rust tests, including retained multi-writer, queue saturation and geometry regressions, now pass; final ARM static rebuild is finishing.

The exact static capacity-probe commit is 62dedf0 (the previous comment included an unintentional pending-SHA placeholder). It records all 6400 Ack timings and both RSS values with the unchanged 32-viewer exact-output assertion. The request-free static idle observation is past four minutes with its final 620-second result still pending. Final aggregate Rust tests, including retained multi-writer, queue saturation and geometry regressions, now pass; final ARM static rebuild is finishing.
Author
Owner

Long no-session static canary PASS after 724fc33: 0 scheduler activations / 620.004s, x86_64 / 8 cores, load 4.07/3.53/4.25; before fix 4 / 620.001s. Two-viewer production-browser 620s idle canary is still running. 412bd39 adds writer-frame fuzz seeds: sanitizer/libFuzzer completed 1138785 executions in 61s, no crash, final coverage 567 / features 1599. Static daemon crash/latency evidence: all 24 stops / 4710396 bytes exact; 1000 real PTY-write Acks p50/p99 150.053/337.246 us. Alacritty flood exceeds the old 20s diagnostic window; dedicated nonblocking throughput report follows. Final fast gate is green and native auth gate passes 4 isolated scenarios.

Long no-session static canary PASS after 724fc33: 0 scheduler activations / 620.004s, x86_64 / 8 cores, load 4.07/3.53/4.25; before fix 4 / 620.001s. Two-viewer production-browser 620s idle canary is still running. 412bd39 adds writer-frame fuzz seeds: sanitizer/libFuzzer completed 1138785 executions in 61s, no crash, final coverage 567 / features 1599. Static daemon crash/latency evidence: all 24 stops / 4710396 bytes exact; 1000 real PTY-write Acks p50/p99 150.053/337.246 us. Alacritty flood exceeds the old 20s diagnostic window; dedicated nonblocking throughput report follows. Final fast gate is green and native auth gate passes 4 isolated scenarios.
Author
Owner

Alacritty credited flood (nonblocking as requested): 52429168 bytes in 28.763s = 1.738 MiB/s, no Snapshot/raw-output loss, daemon RSS 6068 KiB; x86_64, 8 cores, load 16.29/7.23/5.48 with unrelated concurrent builds. The earlier combined probe timed out at its 20s flood observation; the separate retained diagnostic reports actual throughput with a bounded 120s observation and no throughput-budget relaxation. No engine change. Extra per-byte payload validation is now running before committing that diagnostic.

Alacritty credited flood (nonblocking as requested): 52429168 bytes in 28.763s = 1.738 MiB/s, no Snapshot/raw-output loss, daemon RSS 6068 KiB; x86_64, 8 cores, load 16.29/7.23/5.48 with unrelated concurrent builds. The earlier combined probe timed out at its 20s flood observation; the separate retained diagnostic reports actual throughput with a bounded 120s observation and no throughput-budget relaxation. No engine change. Extra per-byte payload validation is now running before committing that diagnostic.
Author
Owner

The retained flood diagnostic additionally validated every 50MiB payload byte: 52429019 total bytes / 57.210s = 0.874 MiB/s, daemon RSS 6048 KiB, load 33.87/17.07/9.37 on the eight-core host. Both loaded-host samples are retained. Host load rose substantially due to unrelated jobs; these are actual Alacritty/protocol observations, not pinned-VM renderer numbers. New diagnostic remains nonblocking and makes no engine or budget change.

The retained flood diagnostic additionally validated every 50MiB payload byte: 52429019 total bytes / 57.210s = 0.874 MiB/s, daemon RSS 6048 KiB, load 33.87/17.07/9.37 on the eight-core host. Both loaded-host samples are retained. Host load rose substantially due to unrelated jobs; these are actual Alacritty/protocol observations, not pinned-VM renderer numbers. New diagnostic remains nonblocking and makes no engine or budget change.
Author
Owner

Long open-PTY red oracle: native production devices reconnect every 30 seconds; 7761 server scheduler activations / 620.002s. websocket.rs receive_wire starts MESSAGE_TIMEOUT while receive is empty, so a healthy silent socket is closed repeatedly. Contract proposal before change: authenticated empty-buffer waits should have only event-driven authority expiry/revocation, preserving 5s Hello/Resume and partial mux-frame deadlines, 1s writes, 16/user and 256/global permits, and 4MiB message/frame bounds. No wire field or engine changes. Axum exposes reassembled messages, so unseen post-Hello RFC fragments retain size/permit/authority bounds rather than the old idle-read 30s timer; that exact boundary must be explicit in the draft contract and review. The 30s liveness rule cannot coexist with required zero idle scheduler activations without transport progress instrumentation. Retain a real >30s socket regression plus existing partial-frame/revocation gates; repeat long native canary after the fix.

Long open-PTY red oracle: native production devices reconnect every 30 seconds; 7761 server scheduler activations / 620.002s. websocket.rs receive_wire starts MESSAGE_TIMEOUT while receive is empty, so a healthy silent socket is closed repeatedly. Contract proposal before change: authenticated empty-buffer waits should have only event-driven authority expiry/revocation, preserving 5s Hello/Resume and partial mux-frame deadlines, 1s writes, 16/user and 256/global permits, and 4MiB message/frame bounds. No wire field or engine changes. Axum exposes reassembled messages, so unseen post-Hello RFC fragments retain size/permit/authority bounds rather than the old idle-read 30s timer; that exact boundary must be explicit in the draft contract and review. The 30s liveness rule cannot coexist with required zero idle scheduler activations without transport progress instrumentation. Retain a real >30s socket regression plus existing partial-frame/revocation gates; repeat long native canary after the fix.
Author
Owner

29fcb05 removes only the empty-buffer authenticated read timer; 80ecde1 retains the real >30s regression that failed first and the unfinished-RFC logout regression (0.78s). Six socket tests pass, one release benchmark ignored; strict server clippy passes. Existing partial mux-frame completion, pre-Hello admission/deadlines and revocation remain green. The explicit RFC-fragment policy proposal is now reflected in the draft contract. Browser gate initially could not start because another job owns localhost:4173 (PID3100607); test-only TRACER_TEST_PORT isolates this job at4391, without stopping that process. Found inherited onboarding screenshots unmasked browser-generated recovery words; removed this job capture files and masked recovery-grid/setup-token fields before the next gate.

29fcb05 removes only the empty-buffer authenticated read timer; 80ecde1 retains the real >30s regression that failed first and the unfinished-RFC logout regression (0.78s). Six socket tests pass, one release benchmark ignored; strict server clippy passes. Existing partial mux-frame completion, pre-Hello admission/deadlines and revocation remain green. The explicit RFC-fragment policy proposal is now reflected in the draft contract. Browser gate initially could not start because another job owns localhost:4173 (PID3100607); test-only TRACER_TEST_PORT isolates this job at4391, without stopping that process. Found inherited onboarding screenshots unmasked browser-generated recovery words; removed this job capture files and masked recovery-grid/setup-token fields before the next gate.
Author
Owner

Browser gate on isolated port4391: 12 passed, 2 performance failures on the loaded host (500-key paint p99 64.2ms vs20ms; setup render p99 1151.4ms vs1000ms, actual FCP p99 541ms). All ten pinned renderer fixtures including full behemoth/mixed/binary survive and paint canaries. Host load ~29-35 on 8 cores with unrelated Rust/OpenSSL/VT jobs. Thresholds are unchanged; final rerun will use the corrected privacy masks and stable assets. Final fast gate is currently exercising four real 12MiB tiny-credit floods and rebuilding the socket-idle fix. New real native fixture snapshots its production assets so separate builds cannot invalidate its ceremonies.

Browser gate on isolated port4391: 12 passed, 2 performance failures on the loaded host (500-key paint p99 64.2ms vs20ms; setup render p99 1151.4ms vs1000ms, actual FCP p99 541ms). All ten pinned renderer fixtures including full behemoth/mixed/binary survive and paint canaries. Host load ~29-35 on 8 cores with unrelated Rust/OpenSSL/VT jobs. Thresholds are unchanged; final rerun will use the corrected privacy masks and stable assets. Final fast gate is currently exercising four real 12MiB tiny-credit floods and rebuilding the socket-idle fix. New real native fixture snapshots its production assets so separate builds cannot invalidate its ceremonies.
Author
Owner

Final fast gate with 29fcb05 idle-socket fix passes: fmt/clippy/test/cargo-deny/static builds all PASS; protocol 7 pass /0 fail, 34390 assertions and 11439 differential schedules. Fresh fixed production no-session and two-device open-PTY 620-second canaries are running (past six minutes). Browser gate with privacy masks: all renderer/auth/functional cases pass, same two timing failures remain under ~20-35 load on 8 cores; thresholds unchanged. Waiting for a quieter measurement window before the required final browser gate. No push or deployment.

Final fast gate with 29fcb05 idle-socket fix passes: fmt/clippy/test/cargo-deny/static builds all PASS; protocol 7 pass /0 fail, 34390 assertions and 11439 differential schedules. Fresh fixed production no-session and two-device open-PTY 620-second canaries are running (past six minutes). Browser gate with privacy masks: all renderer/auth/functional cases pass, same two timing failures remain under ~20-35 load on 8 cores; thresholds unchanged. Waiting for a quieter measurement window before the required final browser gate. No push or deployment.
Author
Owner

Awaiting a quiet CPU measurement window from the orchestrator for the final browser timing gate: current 8-core host load20-35, two repeated full suites pass all12 functional/renderer cases but fail unchanged20ms paint and1s render budgets. No unrelated process was stopped. Long fixed-production idle observations and independent review continue while the resource question is pending. Test-only port isolation, privacy masks and fresh-probe tab state are committed as separate logical steps; strict tracer check passes.

Awaiting a quiet CPU measurement window from the orchestrator for the final browser timing gate: current 8-core host load20-35, two repeated full suites pass all12 functional/renderer cases but fail unchanged20ms paint and1s render budgets. No unrelated process was stopped. Long fixed-production idle observations and independent review continue while the resource question is pending. Test-only port isolation, privacy masks and fresh-probe tab state are committed as separate logical steps; strict tracer check passes.
Author
Owner

Main-dispatch self-review: the inherited t-agent arm still constructed a current-thread Tokio runtime directly in main.rs. It was fork-safe (shim execs a separate synchronous process), but the job explicitly requires the CLI runtime only in the server arm. Move the unchanged daemon reactor into an additive blocking infraternal-agent entry point and call it from the agent arm; preserve synchronous shim dispatch and the existing async daemon API. No protocol/engine change. Real daemon regression and strict clippy will gate each module step.

Main-dispatch self-review: the inherited t-agent arm still constructed a current-thread Tokio runtime directly in main.rs. It was fork-safe (shim execs a separate synchronous process), but the job explicitly requires the CLI runtime only in the server arm. Move the unchanged daemon reactor into an additive blocking infraternal-agent entry point and call it from the agent arm; preserve synchronous shim dispatch and the existing async daemon API. No protocol/engine change. Real daemon regression and strict clippy will gate each module step.
Author
Owner

Steps 19379a7 / 506e1f5: synchronous host-daemon library entry point and separate CLI caller commit; main constructs a runtime only in the server arm, preserving synchronous shim forks [9][13]. Workspace all-target clippy passed (4.29s); real binary 24-stop regression passed (11.76s). Final fast gate rebuilding both static targets. Open-PTY long idle remained connected but counted one activation / 620.004s; timestamp diagnostics added, zero threshold unchanged, investigation continues.

Steps 19379a7 / 506e1f5: synchronous host-daemon library entry point and separate CLI caller commit; main constructs a runtime only in the server arm, preserving synchronous shim forks [9][13]. Workspace all-target clippy passed (4.29s); real binary 24-stop regression passed (11.76s). Final fast gate rebuilding both static targets. Open-PTY long idle remained connected but counted one activation / 620.004s; timestamp diagnostics added, zero threshold unchanged, investigation continues.
Author
Owner

Step c0686ac: optional timestamped positive-activation events in scripts/idle_canary.py, strict zero threshold and default API unchanged. Actual 1Hz SIGALRM child yielded two events at 0.908s and 1.913s over 2.200s. Long native two-viewer canary running with events; isolated wake still under investigation. Final full browser gate needs a quiet CPU window; functional and renderer checks pass, unchanged paint/render timing budgets failed under competing builds.

Step c0686ac: optional timestamped positive-activation events in scripts/idle_canary.py, strict zero threshold and default API unchanged. Actual 1Hz SIGALRM child yielded two events at 0.908s and 1.913s over 2.200s. Long native two-viewer canary running with events; isolated wake still under investigation. Final full browser gate needs a quiet CPU window; functional and renderer checks pass, unchanged paint/render timing budgets failed under competing builds.
Author
Owner

Final fast gate PASS at c0686ac (exit 0), including 134 streams / 11439 differential schedules / zero divergences and both static binaries without PT_INTERP. x86_64: 15,065,920 bytes. Full verbatim output retained for finish comment. Our compiler work is complete; rerunning all 14 Playwright cases on isolated port 4391 with unchanged timing budgets. Fresh final static no-session native canary: 0 / 10.005s. Long shared-PTY observation running after explicit post-auth startup settling.

Final fast gate PASS at c0686ac (exit 0), including 134 streams / 11439 differential schedules / zero divergences and both static binaries without PT_INTERP. x86_64: 15,065,920 bytes. Full verbatim output retained for finish comment. Our compiler work is complete; rerunning all 14 Playwright cases on isolated port 4391 with unchanged timing budgets. Fresh final static no-session native canary: 0 / 10.005s. Long shared-PTY observation running after explicit post-auth startup settling.
Author
Owner

Finding: timestamped shared-PTY canary counted exactly one activation at 273.991s / 620.015s (tokio worker tid 3382815), both native viewers remained connected. This rules out the guessed ten-second blocking-worker retirement; startup settling is not a fix. Investigating long-lived socket-expiry timer/driver wheel, preserving expiry and revocation enforcement and strict zero threshold. Evidence: .codex-integration/browser-idle-events.log.

Finding: timestamped shared-PTY canary counted exactly one activation at 273.991s / 620.015s (tokio worker tid 3382815), both native viewers remained connected. This rules out the guessed ten-second blocking-worker retirement; startup settling is not a fix. Investigating long-lived socket-expiry timer/driver wheel, preserving expiry and revocation enforcement and strict zero threshold. Evidence: .codex-integration/browser-idle-events.log.
Author
Owner

Finding: the second idle wake moved to 264.405s when startup settling increased by 11s, ruling out settling as a solution. Native fixture now closes its initial Bun health HTTP connection explicitly and asserts procfs established backend count 0 before no-session observation, exactly 2 before shared idle (the intended WebSockets). Production source unchanged. Controlled fresh-server/no-auth pooled-health reproduction running for 310s to verify the late EOF. Third full browser suite: 12/14 pass, both unchanged timing gates fail at host load ~27; quiet CPU window required from orchestrator, no unrelated processes changed.

Finding: the second idle wake moved to 264.405s when startup settling increased by 11s, ruling out settling as a solution. Native fixture now closes its initial Bun health HTTP connection explicitly and asserts procfs established backend count 0 before no-session observation, exactly 2 before shared idle (the intended WebSockets). Production source unchanged. Controlled fresh-server/no-auth pooled-health reproduction running for 310s to verify the late EOF. Third full browser suite: 12/14 pass, both unchanged timing gates fail at host load ~27; quiet CPU window required from orchestrator, no unrelated processes changed.
Author
Owner

Browser timing blocker evidence: third full 14-case run passed all 12 functional/renderer cases; paint p99 38.7ms vs 20ms, setup screenshot-confirmed render upper bound p99 1189.4ms vs 1000ms (actual FCP p99 527.3ms). Host load 27–28 on 8 cores; 2s procfs CPU sample: 83.7% user, 16.1% system, 0.0% idle. No test thresholds/cases/samples relaxed. Corrected health-closed long idle window running; retained native fixture now completes logout/raw-echo functional checks before reporting any timing-budget failures, still exits nonzero on every budget failure.

Browser timing blocker evidence: third full 14-case run passed all 12 functional/renderer cases; paint p99 38.7ms vs 20ms, setup screenshot-confirmed render upper bound p99 1189.4ms vs 1000ms (actual FCP p99 527.3ms). Host load 27–28 on 8 cores; 2s procfs CPU sample: 83.7% user, 16.1% system, 0.0% idle. No test thresholds/cases/samples relaxed. Corrected health-closed long idle window running; retained native fixture now completes logout/raw-echo functional checks before reporting any timing-budget failures, still exits nonzero on every budget failure.
Author
Owner

Controlled idle finding confirmed: a fresh static server with no auth/PTYS and only a default Bun startup health fetch retained one established HTTP connection. Canary observed exactly one activation at 299.091s / 310.007s; established connections became zero. Native fixture now explicitly closes that probe before observation (0 connections, then exactly 2 intended WebSockets). No production timers changed for this fixture EOF. Latest short native run at load 28 failed 500-key completion after Ack129, then repeated pre-Ack reconnects; investigating with safe close-code diagnostics, not treating this as a passing or merely slow run.

Controlled idle finding confirmed: a fresh static server with no auth/PTYS and only a default Bun startup health fetch retained one established HTTP connection. Canary observed exactly one activation at 299.091s / 310.007s; established connections became zero. Native fixture now explicitly closes that probe before observation (0 connections, then exactly 2 intended WebSockets). No production timers changed for this fixture EOF. Latest short native run at load 28 failed 500-key completion after Ack129, then repeated pre-Ack reconnects; investigating with safe close-code diagnostics, not treating this as a passing or merely slow run.
Author
Owner

Long idle proof on final x86_64 static: zero scheduler activations / 620.002s with exactly two authenticated WebSockets and shared idle PTY; no-session 0 / 10.008s (independent fresh-server 0 / 620.002s previously). Controlled pooled-health test reproduced one EOF wake at 299.091s / 310.007s, eliminated by fixture Connection: close. Long native UI completed all 500 keys, p50/p99 27.70/86.20ms, resume 141.00ms; paint budget failed at load 22.8/19.95/19.39. Server idle and byte completion proved; loaded-host performance remains blocked.

Long idle proof on final x86_64 static: zero scheduler activations / 620.002s with exactly two authenticated WebSockets and shared idle PTY; no-session 0 / 10.008s (independent fresh-server 0 / 620.002s previously). Controlled pooled-health test reproduced one EOF wake at 299.091s / 310.007s, eliminated by fixture Connection: close. Long native UI completed all 500 keys, p50/p99 27.70/86.20ms, resume 141.00ms; paint budget failed at load 22.8/19.95/19.39. Server idle and byte completion proved; loaded-host performance remains blocked.
Author
Owner

Final-static native functional acceptance PASS with retained fixture: real owner setup/sign-in, typing/output, same-session reload, independent signed-in device cookies, fresh B Ack0 after A Ack10, exact shared input, B logout/socket revocation, all 500 painted echoes and 500 exact isolated raw echoes. Per-browser paint p50/p99 15.00/62.30ms; resume 156.10ms; isolated server p50/p99 1.015/19.920ms. Timing budgets remain FAIL under competing workload; no weakening. Native fixture finishes device logout then measures one active frontend, and reports all timing failures at end. Production screenshots preserved in target/integration-evidence/screenshots.

Final-static native functional acceptance PASS with retained fixture: real owner setup/sign-in, typing/output, same-session reload, independent signed-in device cookies, fresh B Ack0 after A Ack10, exact shared input, B logout/socket revocation, all 500 painted echoes and 500 exact isolated raw echoes. Per-browser paint p50/p99 15.00/62.30ms; resume 156.10ms; isolated server p50/p99 1.015/19.920ms. Timing budgets remain FAIL under competing workload; no weakening. Native fixture finishes device logout then measures one active frontend, and reports all timing failures at end. Production screenshots preserved in target/integration-evidence/screenshots.
Author
Owner

Steps 0f4e830 / acf83c7: retained native merged-build fixture and separate integration evidence docs. Fixture closes/fences startup health sockets, freezes built assets, keeps secrets in memory/pipes, finishes full native functional acceptance before collecting every timing failure. Native functional PASS; shared idle 0 / 620.002s; long no-session 0 / 620.002s. Docs retain all failed samples, 32-peer numbers, crash/fuzz/flood evidence and 120s writer-capability boundary. Re-running fast at final head acf83c7a06. Completion remains blocked on quiet CPU window for required timing gates; no push/deploy.

Steps 0f4e830 / acf83c7: retained native merged-build fixture and separate integration evidence docs. Fixture closes/fences startup health sockets, freezes built assets, keeps secrets in memory/pipes, finishes full native functional acceptance before collecting every timing failure. Native functional PASS; shared idle 0 / 620.002s; long no-session 0 / 620.002s. Docs retain all failed samples, 32-peer numbers, crash/fuzz/flood evidence and 120s writer-capability boundary. Re-running fast at final head acf83c7a06a534e5aabecf3cf8c959538021a4a3. Completion remains blocked on quiet CPU window for required timing gates; no push/deploy.
Author
Owner

Fast gate at dev acf83c7a06: PASS (exit 0). Command: nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl -c scripts/verify fast. Verbatim output, part 1/4:


==> fmt

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

==> test
    Finished `test` profile [unoptimized + debuginfo] target(s) in 0.84s
     Running unittests src/main.rs (target/debug/deps/infraternal-537ca4e316785dfd)

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 (target/debug/deps/agent_daemon-b3d9dc4c49c59a01)

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 12.05s

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

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 2.86s

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

running 5 tests
test last_typist_selects_its_own_real_pty_dimensions ... ok
test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok
test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok
test retained_unwritten_input_survives_interleaved_ack_restart ... ok
test repeated_tiny_credit_snapshots_preserve_shell_progress has been running for over 60 seconds
test repeated_tiny_credit_snapshots_preserve_shell_progress ... ok

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

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

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.13s

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

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.20s

     Running tests/shim.rs (target/debug/deps/shim-6c97f427e96535cc)

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 real_shell_reconnect_resize_and_retained_exit ... ok
test user_scope_survives_parent_unit_stop ... 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.65s

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

running 15 tests
test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement
test relay::tests::output_partial_credit_and_dedup ... ok
test relay::tests::initial_ring_wrap_repaint_with_insufficient_credit_obeys_debt ... ok
test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok
test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok
test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement
test relay::tests::tiny_snapshot_credit_is_one_frame_debt_not_unlimited_output ... ok
test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok
test relay::tests::overflowing_ranges_never_mutate_cursors ... ok
test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... 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 sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... 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. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s

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

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_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-c198a78833f77637)

running 7 tests
test stream_tests::all_short_frame_splits_match_direct_decoding ... ok
test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok
test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok
test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok
test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok
test stream_tests::split_mux_header_preserves_trailing_close ... ok
test tests::oversized_encode_keeps_the_reusable_output_unchanged ... 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-4828f2ef0db108fb)

running 61 tests
test auth::tests::account_identity_migration_backfills_legacy_users ... ok
test auth::tests::account_identity_schema_has_unique_usernames_and_display_names ... ok
test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds
test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok
test auth::tests::audit_logout_survives_admission_exhaustion ... ok
test auth::tests::audit_ceremony_browser_binding ... ok
test auth::tests::audit_no_public_credential_listing ... ok
test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok
test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... 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_delay_cancel_and_replacement_revokes_every_capability ... ok
test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... 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::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::setup_identity_validation_and_uniqueness ... 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::setup_start_accepts_username_and_display_name ... ok
test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok
test auth::tests::review_old_words_race_rotation ... 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::socket_authority_latency_at_user_capacity ... ignored, release-only measurement without concurrent compilation
test auth::tests::socket_tests::authenticated_idle_socket_survives_the_former_read_timeout ... ok
test embedded::regressions::full_output_queue_must_not_block_shared_actor ... 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::stream_close_must_not_restart_all_sessions ... 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 auth::tests::socket_tests::clean_control_close_is_not_an_internal_error ... ok
test runtime::tests::router_migrates_private_storage_and_serves_health ... ok
test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... 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 runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... 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::revoked_idle_socket_loses_all_authority ... ok
test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok

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

     Running unittests src/lib.rs (target/debug/deps/infraternal_shim-855e269aba63a0f4)

running 22 tests
test frame::checks::codec_reuse_measurement ... ignored, release codec and allocation-path measurement
test frame::checks::tests::invalid_lengths_types_and_utf8 ... ok
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::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile
test frame::checks::golden::every_frozen_message ... ok
test ring::checks::tests::wrap_and_exact_offsets ... ok
test frame::checks::tests::golden_and_fragmented ... ok
test frame::checks::golden::exact_maximum_and_coalesced_frames ... ok
test session::inputs::tests::identity_cap_preserves_all_existing_cursors ... ok
test session::measurements::poll_storage_measurement ... ignored, release poll-storage allocation measurement
test session::sequenced_checks::coalesced_ack_never_overwrites_a_partial_output_and_cursors_survive_peer_loss ... 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 session::sequenced_checks::trim_duplicates_gaps_overflow_and_capacity_are_transactional ... ok
test session::sequenced_checks::new_frames_roundtrip_and_refuse_noncanonical_payloads ... ok
test terminal::measurements::budgets::snapshot_200x60 ... ignored, performance measurement; run release on the perf host
test terminal::measurements::throughput::measured_parser ... ignored, VT observer and history throughput measurement
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::fixtures_and_continuations_repaint ... ok
test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok

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

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

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.84s

   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_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/dev/Cargo.lock:26:1
   │  
26 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index
27 │ │ 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
     ├── alacritty_terminal v0.25.1
     │   └── infraternal-shim v0.1.0
     │       ├── infraternal v0.1.0
     │       ├── infraternal-agent v0.1.0
     │       │   └── infraternal v0.1.0 (*)
     │       └── infraternal-fuzz v0.1.0
     ├── 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/dev/Cargo.lock:93:1
   │  
93 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index
94 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index
95 │ │ 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 (*)
Fast gate at dev acf83c7a06a534e5aabecf3cf8c959538021a4a3: PASS (exit 0). Command: nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl -c scripts/verify fast. Verbatim output, part 1/4: ```text ==> fmt ==> clippy Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.21s ==> test Finished `test` profile [unoptimized + debuginfo] target(s) in 0.84s Running unittests src/main.rs (target/debug/deps/infraternal-537ca4e316785dfd) 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 (target/debug/deps/agent_daemon-b3d9dc4c49c59a01) 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 12.05s Running tests/agent_queues.rs (target/debug/deps/agent_queues-a5521b4a60b8f9c4) 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 2.86s Running tests/agent_review.rs (target/debug/deps/agent_review-24efecc2d438a84f) running 5 tests test last_typist_selects_its_own_real_pty_dimensions ... ok test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok test retained_unwritten_input_survives_interleaved_ack_restart ... ok test repeated_tiny_credit_snapshots_preserve_shell_progress has been running for over 60 seconds test repeated_tiny_credit_snapshots_preserve_shell_progress ... ok test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 130.65s Running tests/agent_sessions.rs (target/debug/deps/agent_sessions-fbf166d292108aff) 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.13s Running tests/idle_canary.rs (target/debug/deps/idle_canary-ed5d7613aaf3d90e) 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.20s Running tests/shim.rs (target/debug/deps/shim-6c97f427e96535cc) 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 real_shell_reconnect_resize_and_retained_exit ... ok test user_scope_survives_parent_unit_stop ... 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.65s Running unittests src/lib.rs (target/debug/deps/infraternal_agent-f355b9ff6c8cf754) running 15 tests test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement test relay::tests::output_partial_credit_and_dedup ... ok test relay::tests::initial_ring_wrap_repaint_with_insufficient_credit_obeys_debt ... ok test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement test relay::tests::tiny_snapshot_credit_is_one_frame_debt_not_unlimited_output ... ok test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok test relay::tests::overflowing_ranges_never_mutate_cursors ... ok test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... 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 sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... 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. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s Running tests/transport.rs (target/debug/deps/transport-3540b2f566e0aed5) 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_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-c198a78833f77637) running 7 tests test stream_tests::all_short_frame_splits_match_direct_decoding ... ok test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok test stream_tests::split_mux_header_preserves_trailing_close ... ok test tests::oversized_encode_keeps_the_reusable_output_unchanged ... 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-4828f2ef0db108fb) running 61 tests test auth::tests::account_identity_migration_backfills_legacy_users ... ok test auth::tests::account_identity_schema_has_unique_usernames_and_display_names ... ok test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok test auth::tests::audit_logout_survives_admission_exhaustion ... ok test auth::tests::audit_ceremony_browser_binding ... ok test auth::tests::audit_no_public_credential_listing ... ok test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... 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_delay_cancel_and_replacement_revokes_every_capability ... ok test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... 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::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::setup_identity_validation_and_uniqueness ... 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::setup_start_accepts_username_and_display_name ... ok test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok test auth::tests::review_old_words_race_rotation ... 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::socket_authority_latency_at_user_capacity ... ignored, release-only measurement without concurrent compilation test auth::tests::socket_tests::authenticated_idle_socket_survives_the_former_read_timeout ... ok test embedded::regressions::full_output_queue_must_not_block_shared_actor ... 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::stream_close_must_not_restart_all_sessions ... 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 auth::tests::socket_tests::clean_control_close_is_not_an_internal_error ... ok test runtime::tests::router_migrates_private_storage_and_serves_health ... ok test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... 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 runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... 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::revoked_idle_socket_loses_all_authority ... ok test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test result: ok. 58 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 104.52s Running unittests src/lib.rs (target/debug/deps/infraternal_shim-855e269aba63a0f4) running 22 tests test frame::checks::codec_reuse_measurement ... ignored, release codec and allocation-path measurement test frame::checks::tests::invalid_lengths_types_and_utf8 ... ok 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::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile test frame::checks::golden::every_frozen_message ... ok test ring::checks::tests::wrap_and_exact_offsets ... ok test frame::checks::tests::golden_and_fragmented ... ok test frame::checks::golden::exact_maximum_and_coalesced_frames ... ok test session::inputs::tests::identity_cap_preserves_all_existing_cursors ... ok test session::measurements::poll_storage_measurement ... ignored, release poll-storage allocation measurement test session::sequenced_checks::coalesced_ack_never_overwrites_a_partial_output_and_cursors_survive_peer_loss ... 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 session::sequenced_checks::trim_duplicates_gaps_overflow_and_capacity_are_transactional ... ok test session::sequenced_checks::new_frames_roundtrip_and_refuse_noncanonical_payloads ... ok test terminal::measurements::budgets::snapshot_200x60 ... ignored, performance measurement; run release on the perf host test terminal::measurements::throughput::measured_parser ... ignored, VT observer and history throughput measurement 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::fixtures_and_continuations_repaint ... ok test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok test result: ok. 17 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 0.19s Running tests/detach.rs (target/debug/deps/detach-3f82bff5b2172301) 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.84s 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_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/dev/Cargo.lock:26:1 │ 26 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 27 │ │ 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 ├── alacritty_terminal v0.25.1 │ └── infraternal-shim v0.1.0 │ ├── infraternal v0.1.0 │ ├── infraternal-agent v0.1.0 │ │ └── infraternal v0.1.0 (*) │ └── infraternal-fuzz v0.1.0 ├── 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/dev/Cargo.lock:93:1 │ 93 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 94 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 95 │ │ 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 (*) ```
Author
Owner

Fast gate at dev acf83c7a06: PASS (exit 0). Command: nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl -c scripts/verify fast. Verbatim output, part 2/4:

         │   │       │   │   └── 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/dev/Cargo.lock:99:1
    │  
 99 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index
100 │ │ 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/dev/Cargo.lock:193:1
    │  
193 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index
194 │ │ 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/dev/Cargo.lock:195:1
    │  
195 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index
196 │ │ 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/dev/Cargo.lock:197:1
    │  
197 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index
198 │ │ 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/dev/Cargo.lock:199:1
    │  
199 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index
200 │ │ 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/dev/Cargo.lock:239:1
    │  
239 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index
240 │ │ 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
              │       ├── (dev) 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 (*)
Fast gate at dev acf83c7a06a534e5aabecf3cf8c959538021a4a3: PASS (exit 0). Command: nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl -c scripts/verify fast. Verbatim output, part 2/4: ```text │ │ │ │ └── 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/dev/Cargo.lock:99:1 │ 99 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 100 │ │ 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/dev/Cargo.lock:193:1 │ 193 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 194 │ │ 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/dev/Cargo.lock:195:1 │ 195 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index 196 │ │ 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/dev/Cargo.lock:197:1 │ 197 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 198 │ │ 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/dev/Cargo.lock:199:1 │ 199 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 200 │ │ 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/dev/Cargo.lock:239:1 │ 239 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 240 │ │ 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 │ ├── (dev) 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 (*) ```
Author
Owner

Fast gate at dev acf83c7a06: PASS (exit 0). Command: nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl -c scripts/verify fast. Verbatim output, part 3/4:

                      └── 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
      │   │   ├── alacritty_terminal v0.25.1
      │   │   │   └── infraternal-shim v0.1.0
      │   │   │       ├── infraternal v0.1.0 (*)
      │   │   │       ├── infraternal-agent v0.1.0 (*)
      │   │   │       └── infraternal-fuzz v0.1.0 (*)
      │   │   ├── 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-server v0.1.0 (*)
      │   │   ├── serde_cbor_2 v0.13.0
      │   │   │   ├── (dev) 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 (*)
      │   │   ├── vte v0.15.0
      │   │   │   ├── alacritty_terminal v0.25.1 (*)
      │   │   │   ├── infraternal-shim v0.1.0 (*)
      │   │   │   └── vt100 v0.16.2
      │   │   │       ├── (dev) infraternal v0.1.0 (*)
      │   │   │       └── (dev) infraternal-shim v0.1.0 (*)
      │   │   ├── 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-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/dev/Cargo.lock:242:1
    │  
242 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index
243 │ │ 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/dev/Cargo.lock:244:1
    │  
244 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index
245 │ │ 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-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/dev/Cargo.lock:246:1
    │  
246 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index
247 │ │ 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-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 'windows-sys'
    ┌─ /home/kayg/Developer/infraternal/.worktrees/dev/Cargo.lock:300:1
    │  
300 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index
301 │ │ windows-sys 0.61.2 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ windows-sys v0.59.0
      └── alacritty_terminal v0.25.1
          └── infraternal-shim v0.1.0
              ├── infraternal v0.1.0
              ├── infraternal-agent v0.1.0
              │   └── infraternal v0.1.0 (*)
              └── infraternal-fuzz v0.1.0
    ├ windows-sys v0.61.2
      ├── anstyle-query v1.1.5
      │   └── anstream v1.0.0
      │       └── clap_builder 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 (*)
Fast gate at dev acf83c7a06a534e5aabecf3cf8c959538021a4a3: PASS (exit 0). Command: nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl -c scripts/verify fast. Verbatim output, part 3/4: ```text └── 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 │ │ ├── alacritty_terminal v0.25.1 │ │ │ └── infraternal-shim v0.1.0 │ │ │ ├── infraternal v0.1.0 (*) │ │ │ ├── infraternal-agent v0.1.0 (*) │ │ │ └── infraternal-fuzz v0.1.0 (*) │ │ ├── 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-server v0.1.0 (*) │ │ ├── serde_cbor_2 v0.13.0 │ │ │ ├── (dev) 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 (*) │ │ ├── vte v0.15.0 │ │ │ ├── alacritty_terminal v0.25.1 (*) │ │ │ ├── infraternal-shim v0.1.0 (*) │ │ │ └── vt100 v0.16.2 │ │ │ ├── (dev) infraternal v0.1.0 (*) │ │ │ └── (dev) infraternal-shim v0.1.0 (*) │ │ ├── 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-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/dev/Cargo.lock:242:1 │ 242 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 243 │ │ 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/dev/Cargo.lock:244:1 │ 244 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 245 │ │ 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-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/dev/Cargo.lock:246:1 │ 246 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 247 │ │ 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-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 'windows-sys' ┌─ /home/kayg/Developer/infraternal/.worktrees/dev/Cargo.lock:300:1 │ 300 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index 301 │ │ windows-sys 0.61.2 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ windows-sys v0.59.0 └── alacritty_terminal v0.25.1 └── infraternal-shim v0.1.0 ├── infraternal v0.1.0 ├── infraternal-agent v0.1.0 │ └── infraternal v0.1.0 (*) └── infraternal-fuzz v0.1.0 ├ windows-sys v0.61.2 ├── anstyle-query v1.1.5 │ └── anstream v1.0.0 │ └── clap_builder 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 (*) ```
Author
Owner

Fast gate at dev acf83c7a06: PASS (exit 0). Command: nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl -c scripts/verify fast. Verbatim output, part 4/4:

      ├── anstyle-wincon v3.0.11
      │   └── anstream v1.0.0 (*)
      ├── errno v0.3.14
      │   ├── rustix v1.1.5
      │   │   ├── alacritty_terminal v0.25.1
      │   │   │   └── infraternal-shim v0.1.0
      │   │   │       ├── infraternal v0.1.0 (*)
      │   │   │       ├── infraternal-agent v0.1.0 (*)
      │   │   │       └── infraternal-fuzz v0.1.0 (*)
      │   │   ├── polling v3.11.0
      │   │   │   └── alacritty_terminal v0.25.1 (*)
      │   │   └── rustix-openpty v0.2.0
      │   │       └── alacritty_terminal v0.25.1 (*)
      │   ├── rustix-openpty v0.2.0 (*)
      │   └── signal-hook-registry v1.4.8
      │       ├── signal-hook v0.3.18
      │       │   └── alacritty_terminal v0.25.1 (*)
      │       └── tokio v1.53.2
      │           ├── axum v0.8.9
      │           │   └── infraternal-server v0.1.0 (*)
      │           ├── axum-server v0.8.0
      │           │   └── infraternal-server v0.1.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 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 (*)
      │           ├── 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
      │           │   ├── axum v0.8.9 (*)
      │           │   └── (dev) infraternal-server v0.1.0 (*)
      │           ├── tokio-util v0.7.19
      │           │   ├── h2 v0.4.19 (*)
      │           │   └── tower-http v0.6.11
      │           │       └── infraternal-server v0.1.0 (*)
      │           ├── tower v0.5.3
      │           │   ├── axum v0.8.9 (*)
      │           │   └── (dev) infraternal-server v0.1.0 (*)
      │           └── tower-http v0.6.11 (*)
      ├── home v0.5.12
      │   └── alacritty_terminal v0.25.1 (*)
      ├── mio v1.2.4
      │   └── tokio v1.53.2 (*)
      ├── miow v0.6.1
      │   └── alacritty_terminal v0.25.1 (*)
      ├── nu-ansi-term v0.50.3
      │   └── tracing-subscriber v0.3.23
      │       └── infraternal-server v0.1.0 (*)
      ├── polling v3.11.0 (*)
      ├── rustix v1.1.5 (*)
      ├── socket2 v0.6.5
      │   └── tokio v1.53.2 (*)
      ├── tokio v1.53.2 (*)
      └── winapi-util v0.1.11
          ├── same-file v1.0.6
          │   └── walkdir v2.5.0
          │       └── criterion v0.7.0 (*)
          └── walkdir v2.5.0 (*)

advisories ok, bans ok, licenses ok, sources ok

==> static builds
    Finished `release` profile [optimized] target(s) in 0.34s
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: 15065920 bytes
    Finished `release` profile [optimized] target(s) in 0.31s
target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped
PT_INTERP: absent; size: 12635680 bytes
server subcommand: exit 2, not implemented
agent subcommand: exit 2, not implemented

+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| 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

==> 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 [10.27ms]
(pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.39ms]
(pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [1.19ms]
(pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.27ms]
(pass) split mux header preserves trailing Close [0.32ms]

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

 7 pass
 0 fail
 34390 expect() calls
Ran 7 tests across 2 files. [3.61s]
Fast gate at dev acf83c7a06a534e5aabecf3cf8c959538021a4a3: PASS (exit 0). Command: nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl -c scripts/verify fast. Verbatim output, part 4/4: ```text ├── anstyle-wincon v3.0.11 │ └── anstream v1.0.0 (*) ├── errno v0.3.14 │ ├── rustix v1.1.5 │ │ ├── alacritty_terminal v0.25.1 │ │ │ └── infraternal-shim v0.1.0 │ │ │ ├── infraternal v0.1.0 (*) │ │ │ ├── infraternal-agent v0.1.0 (*) │ │ │ └── infraternal-fuzz v0.1.0 (*) │ │ ├── polling v3.11.0 │ │ │ └── alacritty_terminal v0.25.1 (*) │ │ └── rustix-openpty v0.2.0 │ │ └── alacritty_terminal v0.25.1 (*) │ ├── rustix-openpty v0.2.0 (*) │ └── signal-hook-registry v1.4.8 │ ├── signal-hook v0.3.18 │ │ └── alacritty_terminal v0.25.1 (*) │ └── tokio v1.53.2 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.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 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 (*) │ ├── 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 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 │ │ └── infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 (*) ├── home v0.5.12 │ └── alacritty_terminal v0.25.1 (*) ├── mio v1.2.4 │ └── tokio v1.53.2 (*) ├── miow v0.6.1 │ └── alacritty_terminal v0.25.1 (*) ├── nu-ansi-term v0.50.3 │ └── tracing-subscriber v0.3.23 │ └── infraternal-server v0.1.0 (*) ├── polling v3.11.0 (*) ├── rustix v1.1.5 (*) ├── socket2 v0.6.5 │ └── tokio v1.53.2 (*) ├── tokio v1.53.2 (*) └── winapi-util v0.1.11 ├── same-file v1.0.6 │ └── walkdir v2.5.0 │ └── criterion v0.7.0 (*) └── walkdir v2.5.0 (*) advisories ok, bans ok, licenses ok, sources ok ==> static builds Finished `release` profile [optimized] target(s) in 0.34s 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: 15065920 bytes Finished `release` profile [optimized] target(s) in 0.31s target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 12635680 bytes server subcommand: exit 2, not implemented agent subcommand: exit 2, not implemented +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | 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 ==> 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 [10.27ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.39ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [1.19ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.27ms] (pass) split mux header preserves trailing Close [0.32ms] src/stream.test.ts: stream differential: 134 streams, 11439 schedules, zero divergences (pass) Rust and TypeScript preserve every frame at all boundaries and random multi-splits [3583.84ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [11.34ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [3.61s] ```
Author
Owner

Final complete browser gate at dev acf83c7a06: FAIL (12 passed, 2 timing failures; exit 1). Command: cd apps/tracer && TRACER_TEST_PORT=4391 bun x playwright test. Verbatim output, part 1/1:

[WebServer] $ bun run build.ts
[WebServer] built main.js, chunk-hj49pt4y.js
[WebServer] tracer TEST DOUBLE listening on http://localhost:4391

Running 14 tests using 1 worker

(node:3437737) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
(Use `node --trace-warnings ...` to show where the warning was created)
ONBOARDING_SCREENSHOTS /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-1-token-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-1-token-desktop.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-2-identity-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-2-identity-desktop.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-3-passkey-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-3-passkey-desktop.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-4-recovery-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-4-recovery-desktop.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/welcome-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/welcome-desktop.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/returning-sign-in-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/returning-sign-in-desktop.png
  ✓   1 test/onboarding.spec.ts:9:1 › setup, recovery acknowledgement, welcome and returning sign-in match the browser contract (22.0s)
minimal-combining-5679.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=279, wasm=11730944 B
minimal-combining-5679.bin: grid=205x56, scrollback=0, wasm=11730944 B
  ✓   2 test/renderer-regression.spec.ts:17:3 › renderer survives minimal-combining-5679.bin and paints a canary (2.2s)
behemoth-prefix-82541.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=330, wasm=11730944 B
behemoth-prefix-82541.bin: grid=205x56, scrollback=0, wasm=11730944 B
  ✓   3 test/renderer-regression.spec.ts:17:3 › renderer survives behemoth-prefix-82541.bin and paints a canary (2.8s)
mixed-prefix-82144.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=328, wasm=11730944 B
mixed-prefix-82144.bin: grid=205x56, scrollback=0, wasm=11730944 B
  ✓   4 test/renderer-regression.spec.ts:17:3 › renderer survives mixed-prefix-82144.bin and paints a canary (2.1s)
binary-prefix-106342.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=244, wasm=8650752 B
binary-prefix-106342.bin: grid=205x56, scrollback=0, wasm=8650752 B
  ✓   5 test/renderer-regression.spec.ts:17:3 › renderer survives binary-prefix-106342.bin and paints a canary (3.0s)
browser-text-binary-prefix-192253.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=176, wasm=10944512 B
browser-text-binary-prefix-192253.bin: grid=205x56, scrollback=0, wasm=10944512 B
  ✓   6 test/renderer-regression.spec.ts:17:3 › renderer survives browser-text-binary-prefix-192253.bin and paints a canary (2.7s)
binary-one-esc-context.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=251, wasm=10944512 B
binary-one-esc-context.bin: grid=205x56, scrollback=0, wasm=10944512 B
  ✓   7 test/renderer-regression.spec.ts:17:3 › renderer survives binary-one-esc-context.bin and paints a canary (2.0s)
binary-no-esc-context.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=369, wasm=8847360 B
binary-no-esc-context.bin: grid=205x56, scrollback=0, wasm=8847360 B
  ✓   8 test/renderer-regression.spec.ts:17:3 › renderer survives binary-no-esc-context.bin and paints a canary (2.3s)
behemoth.txt before canary: grid=205x56, configuredScrollback=10000, retainedRows=291, wasm=1053818880 B
behemoth.txt: grid=205x56, scrollback=0, wasm=1053818880 B
  ✓   9 test/renderer-regression.spec.ts:17:3 › renderer survives behemoth.txt and paints a canary (1.0m)
mixed.txt before canary: grid=205x56, configuredScrollback=10000, retainedRows=0, wasm=414187520 B
mixed.txt: grid=205x56, scrollback=0, wasm=414187520 B
  ✓  10 test/renderer-regression.spec.ts:17:3 › renderer survives mixed.txt and paints a canary (16.4s)
binary.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=10, wasm=11534336 B
binary.bin: grid=205x56, scrollback=0, wasm=11534336 B
  ✓  11 test/renderer-regression.spec.ts:17:3 › renderer survives binary.bin and paints a canary (1.3m)
  ✘  12 test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe (18.7s)
(node:3467767) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
(Use `node --trace-warnings ...` to show where the warning was created)
[WebServer] test-double setup denied: owner=false token-match=false username-valid=true display-name-valid=true
  ✓  13 test/terminal.spec.ts:264:1 › status failure, invalid setup token, and cancelled passkey have distinct guidance (3.6s)
Access render upper bound (setup, n=30, local production build): p50 623.4000000059605 ms, p99 1189.4000000059605 ms
Access first-contentful-paint (setup, n=30, local production build): p50 270 ms, p99 527.3000000119209 ms
  ✘  14 test/terminal.spec.ts:297:1 › access screens render within the local first-paint budget (26.0s)


  1) test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe ──

    Error: expect(received).toBeLessThan(expected)

    Expected: < 20
    Received:   38.7

      155 |   const measuredP99 = /(?:^|\n)p99: ([\d.]+) ms/.exec(probeReport)?.[1];
      156 |   expect(measuredP99).toBeDefined();
    > 157 |   expect(Number(measuredP99)).toBeLessThan(20);
          |                               ^
      158 |   console.log(`S1 probe result (${probeCount} keys)\n${probeReport}`);
      159 |   await testInfo.attach("tracer-probe-results.txt", {
      160 |     body: probeReport,
        at /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test/terminal.spec.ts:157:31

    attachment #1: signin-light (image/png) ────────────────────────────────────────────────────────
    test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/attachments/signin-light-9d688be67c42425a8289bc258de72eba5c9925e2.png
    ────────────────────────────────────────────────────────────────────────────────────────────────

    attachment #2: signin-dark (image/png) ─────────────────────────────────────────────────────────
    test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/attachments/signin-dark-16496931b61b58a84a9482a30dcca54c8bd92c45.png
    ────────────────────────────────────────────────────────────────────────────────────────────────

    attachment #3: tracer-terminal.png (image/png) ─────────────────────────────────────────────────
    test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/attachments/tracer-terminal-png-384efa972c12350b2bbaf0825ae1694c5abcd30d.png
    ────────────────────────────────────────────────────────────────────────────────────────────────

    Error Context: test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/error-context.md

  2) test/terminal.spec.ts:297:1 › access screens render within the local first-paint budget ───────

    Error: expect(received).toBeLessThan(expected)

    Expected: < 1000
    Received:   1189.4000000059605

      320 |     console.log(`Access render upper bound (${setupRequired ? "setup" : "signin"}, n=30, local production build): p50 ${samples[14]} ms, p99 ${p99} ms`);
      321 |     console.log(`Access first-contentful-paint (${setupRequired ? "setup" : "signin"}, n=30, local production build): p50 ${firstPaints[14]} ms, p99 ${firstPaints[29]} ms`);
    > 322 |     expect(p99).toBeLessThan(1000);
          |                 ^
      323 |   }
      324 | });
      325 |
        at /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test/terminal.spec.ts:322:17

    Error Context: test-results/terminal-access-screens-re-da0df-he-local-first-paint-budget/error-context.md

  2 failed
    test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe ───
    test/terminal.spec.ts:297:1 › access screens render within the local first-paint budget ────────
  12 passed (4.2m)
Final complete browser gate at dev acf83c7a06a534e5aabecf3cf8c959538021a4a3: FAIL (12 passed, 2 timing failures; exit 1). Command: cd apps/tracer && TRACER_TEST_PORT=4391 bun x playwright test. Verbatim output, part 1/1: ```text [WebServer] $ bun run build.ts [WebServer] built main.js, chunk-hj49pt4y.js [WebServer] tracer TEST DOUBLE listening on http://localhost:4391 Running 14 tests using 1 worker (node:3437737) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. (Use `node --trace-warnings ...` to show where the warning was created) ONBOARDING_SCREENSHOTS /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-1-token-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-1-token-desktop.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-2-identity-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-2-identity-desktop.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-3-passkey-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-3-passkey-desktop.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-4-recovery-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/step-4-recovery-desktop.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/welcome-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/welcome-desktop.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/returning-sign-in-iphone-15.png /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test-results/onboarding-setup-recovery--906cd--match-the-browser-contract/returning-sign-in-desktop.png ✓ 1 test/onboarding.spec.ts:9:1 › setup, recovery acknowledgement, welcome and returning sign-in match the browser contract (22.0s) minimal-combining-5679.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=279, wasm=11730944 B minimal-combining-5679.bin: grid=205x56, scrollback=0, wasm=11730944 B ✓ 2 test/renderer-regression.spec.ts:17:3 › renderer survives minimal-combining-5679.bin and paints a canary (2.2s) behemoth-prefix-82541.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=330, wasm=11730944 B behemoth-prefix-82541.bin: grid=205x56, scrollback=0, wasm=11730944 B ✓ 3 test/renderer-regression.spec.ts:17:3 › renderer survives behemoth-prefix-82541.bin and paints a canary (2.8s) mixed-prefix-82144.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=328, wasm=11730944 B mixed-prefix-82144.bin: grid=205x56, scrollback=0, wasm=11730944 B ✓ 4 test/renderer-regression.spec.ts:17:3 › renderer survives mixed-prefix-82144.bin and paints a canary (2.1s) binary-prefix-106342.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=244, wasm=8650752 B binary-prefix-106342.bin: grid=205x56, scrollback=0, wasm=8650752 B ✓ 5 test/renderer-regression.spec.ts:17:3 › renderer survives binary-prefix-106342.bin and paints a canary (3.0s) browser-text-binary-prefix-192253.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=176, wasm=10944512 B browser-text-binary-prefix-192253.bin: grid=205x56, scrollback=0, wasm=10944512 B ✓ 6 test/renderer-regression.spec.ts:17:3 › renderer survives browser-text-binary-prefix-192253.bin and paints a canary (2.7s) binary-one-esc-context.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=251, wasm=10944512 B binary-one-esc-context.bin: grid=205x56, scrollback=0, wasm=10944512 B ✓ 7 test/renderer-regression.spec.ts:17:3 › renderer survives binary-one-esc-context.bin and paints a canary (2.0s) binary-no-esc-context.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=369, wasm=8847360 B binary-no-esc-context.bin: grid=205x56, scrollback=0, wasm=8847360 B ✓ 8 test/renderer-regression.spec.ts:17:3 › renderer survives binary-no-esc-context.bin and paints a canary (2.3s) behemoth.txt before canary: grid=205x56, configuredScrollback=10000, retainedRows=291, wasm=1053818880 B behemoth.txt: grid=205x56, scrollback=0, wasm=1053818880 B ✓ 9 test/renderer-regression.spec.ts:17:3 › renderer survives behemoth.txt and paints a canary (1.0m) mixed.txt before canary: grid=205x56, configuredScrollback=10000, retainedRows=0, wasm=414187520 B mixed.txt: grid=205x56, scrollback=0, wasm=414187520 B ✓ 10 test/renderer-regression.spec.ts:17:3 › renderer survives mixed.txt and paints a canary (16.4s) binary.bin before canary: grid=205x56, configuredScrollback=10000, retainedRows=10, wasm=11534336 B binary.bin: grid=205x56, scrollback=0, wasm=11534336 B ✓ 11 test/renderer-regression.spec.ts:17:3 › renderer survives binary.bin and paints a canary (1.3m) ✘ 12 test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe (18.7s) (node:3467767) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. (Use `node --trace-warnings ...` to show where the warning was created) [WebServer] test-double setup denied: owner=false token-match=false username-valid=true display-name-valid=true ✓ 13 test/terminal.spec.ts:264:1 › status failure, invalid setup token, and cancelled passkey have distinct guidance (3.6s) Access render upper bound (setup, n=30, local production build): p50 623.4000000059605 ms, p99 1189.4000000059605 ms Access first-contentful-paint (setup, n=30, local production build): p50 270 ms, p99 527.3000000119209 ms ✘ 14 test/terminal.spec.ts:297:1 › access screens render within the local first-paint budget (26.0s) 1) test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe ── Error: expect(received).toBeLessThan(expected) Expected: < 20 Received: 38.7 155 | const measuredP99 = /(?:^|\n)p99: ([\d.]+) ms/.exec(probeReport)?.[1]; 156 | expect(measuredP99).toBeDefined(); > 157 | expect(Number(measuredP99)).toBeLessThan(20); | ^ 158 | console.log(`S1 probe result (${probeCount} keys)\n${probeReport}`); 159 | await testInfo.attach("tracer-probe-results.txt", { 160 | body: probeReport, at /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test/terminal.spec.ts:157:31 attachment #1: signin-light (image/png) ──────────────────────────────────────────────────────── test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/attachments/signin-light-9d688be67c42425a8289bc258de72eba5c9925e2.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: signin-dark (image/png) ───────────────────────────────────────────────────────── test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/attachments/signin-dark-16496931b61b58a84a9482a30dcca54c8bd92c45.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: tracer-terminal.png (image/png) ───────────────────────────────────────────────── test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/attachments/tracer-terminal-png-384efa972c12350b2bbaf0825ae1694c5abcd30d.png ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/error-context.md 2) test/terminal.spec.ts:297:1 › access screens render within the local first-paint budget ─────── Error: expect(received).toBeLessThan(expected) Expected: < 1000 Received: 1189.4000000059605 320 | console.log(`Access render upper bound (${setupRequired ? "setup" : "signin"}, n=30, local production build): p50 ${samples[14]} ms, p99 ${p99} ms`); 321 | console.log(`Access first-contentful-paint (${setupRequired ? "setup" : "signin"}, n=30, local production build): p50 ${firstPaints[14]} ms, p99 ${firstPaints[29]} ms`); > 322 | expect(p99).toBeLessThan(1000); | ^ 323 | } 324 | }); 325 | at /home/kayg/Developer/infraternal/.worktrees/dev/apps/tracer/test/terminal.spec.ts:322:17 Error Context: test-results/terminal-access-screens-re-da0df-he-local-first-paint-budget/error-context.md 2 failed test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe ─── test/terminal.spec.ts:297:1 › access screens render within the local first-paint budget ──────── 12 passed (4.2m) ```
Author
Owner

Checkpoint / blocked handoff at dev acf83c7a06. Final fast PASS (exit 0), complete output quoted above in four parts; final full Playwright FAIL (12 passed, 2 timing failures), complete output quoted above. Native static full functional acceptance PASS; both long idle conditions 0 / 620.002s; latest 500-key paint p50/p99 15.00/62.30ms, resume 156.10ms, isolated echo 1.015/19.920ms. Required quiet CPU window must come from orchestrator; timing budgets and all cases unchanged. Two loaded native retry/replay failures remain recorded for quiet-window rerun/investigation if they persist. All historical .codex-integration/*.log paths are now preserved by basename under target/integration-evidence/; safe production screenshots in its screenshots/ directory; native fixture scripts/browser-auth/check-merged.mjs; report docs/verification/integration.md. Native/health processes and private data dirs removed, scratch removed (HOME fuzz scratch removed earlier), git worktree clean. No push/deploy; issues remain open. Resume: reserve CPU, run full TRACER_TEST_PORT=4391 bun x playwright test in apps/tracer, then bun scripts/browser-auth/check-merged.mjs from root; freeze assets is automatic. No implementation permission is pending.

Checkpoint / blocked handoff at dev acf83c7a06a534e5aabecf3cf8c959538021a4a3. Final fast PASS (exit 0), complete output quoted above in four parts; final full Playwright FAIL (12 passed, 2 timing failures), complete output quoted above. Native static full functional acceptance PASS; both long idle conditions 0 / 620.002s; latest 500-key paint p50/p99 15.00/62.30ms, resume 156.10ms, isolated echo 1.015/19.920ms. Required quiet CPU window must come from orchestrator; timing budgets and all cases unchanged. Two loaded native retry/replay failures remain recorded for quiet-window rerun/investigation if they persist. All historical .codex-integration/*.log paths are now preserved by basename under target/integration-evidence/; safe production screenshots in its screenshots/ directory; native fixture scripts/browser-auth/check-merged.mjs; report docs/verification/integration.md. Native/health processes and private data dirs removed, scratch removed (HOME fuzz scratch removed earlier), git worktree clean. No push/deploy; issues remain open. Resume: reserve CPU, run full TRACER_TEST_PORT=4391 bun x playwright test in apps/tracer, then bun scripts/browser-auth/check-merged.mjs from root; freeze assets is automatic. No implementation permission is pending.
Author
Owner

Deploy 1 is live on https://infraternal.kayg.org (2026-10-07 ~01:25 CEST): dev 0c47cd4, binary sha256 ae2005e6d35d330b….

Contents:

  • t-agent: the infraternal agent core and shim management;
  • t-server: the server core, discoverable passkey auth with one prompt, all the fix rounds (#28, #29, #30), username and display name, hostname;
  • t-web: onboarding (#32), the core screen (#33) and the pinned ghostty-web with the crash fix (#36).

Old state moved aside, not deleted, as *.bak-20261006T232451Z (data dir, web root, binary) on monitor01.

Hands-on check:

  • The server (11 MB RSS) and the embedded agent agent --fd 3 (5.4 MB) are running, with no warnings.
  • / and /health return 200.
  • server setup-token works (exit 0, 43 characters; the value is not printed).
  • On an iPhone-15 viewport the setup page loads in 0.72 s with no console errors.

Two bugs found by hand (fix-setup job running):

  1. a wrong token is not rejected at step 1;
  2. Continue is left-aligned on step 1.

Merge-result verification:

  • the fast gate is green;
  • Playwright passes 16/16, with the latency gate checked under deprioritised background load: p50/p99 14.8–15.4 / 16.1–19.3 ms;
  • flood 4.58 MiB/s (Alacritty engine; vt-ghostty merges after its review);
  • idle canary 0 activations over 620 s (server and agent).
**Deploy 1 is live on https://infraternal.kayg.org** (2026-10-07 ~01:25 CEST): dev 0c47cd4, binary sha256 ae2005e6d35d330b…. Contents: - t-agent: the infraternal agent core and shim management; - t-server: the server core, discoverable passkey auth with one prompt, all the fix rounds (#28, #29, #30), username and display name, hostname; - t-web: onboarding (#32), the core screen (#33) and the pinned ghostty-web with the crash fix (#36). Old state moved aside, not deleted, as `*.bak-20261006T232451Z` (data dir, web root, binary) on monitor01. Hands-on check: - The server (11 MB RSS) and the embedded agent `agent --fd 3` (5.4 MB) are running, with no warnings. - `/` and `/health` return 200. - `server setup-token` works (exit 0, 43 characters; the value is not printed). - On an iPhone-15 viewport the setup page loads in 0.72 s with no console errors. Two bugs found by hand (fix-setup job running): 1. a wrong token is not rejected at step 1; 2. Continue is left-aligned on step 1. Merge-result verification: - the fast gate is green; - Playwright passes 16/16, with the latency gate checked under deprioritised background load: p50/p99 14.8–15.4 / 16.1–19.3 ms; - flood 4.58 MiB/s (Alacritty engine; vt-ghostty merges after its review); - idle canary 0 activations over 620 s (server and agent).
Author
Owner

Starting integrate2 at base 0c47cd42e6; merging exact vt-ghostty 565105fde0 with --no-ff. Read #34/#22/#26 history and repository decisions/architecture. Preserve per-writer Ack/trusted open plus flagged recovery and ordering; evidence target/integrate2-evidence. No push/deploy. docs/PROCESS.md absent.

Starting integrate2 at base 0c47cd42e6afeec7ca9d6d430bc11b319eb677c8; merging exact vt-ghostty 565105fde025e602aa587b91f98a93b0eb8e7c12 with --no-ff. Read #34/#22/#26 history and repository decisions/architecture. Preserve per-writer Ack/trusted open plus flagged recovery and ordering; evidence target/integrate2-evidence. No push/deploy. docs/PROCESS.md absent.
Author
Owner

Merge finding: both branches assigned capability bit1 and frame type 27. Preserve deployed MULTI_WRITER bit1/SelectWriter type27; allocate APPROXIMATE_SNAPSHOT bit2/SnapshotWithFlags type28. Keep borrowed decoder, trusted terminal-open, independent writer cursors, ordered detached State fence, retained-ring-first replay and refusal recovery on explicit and last-typist resize. Ghostty reviewed indivisible repaint credit accounting supersedes dev repaint borrowing to preserve positive-insufficient-credit pause regression. Merge gate building; no budget changes.

Merge finding: both branches assigned capability bit1 and frame type 27. Preserve deployed MULTI_WRITER bit1/SelectWriter type27; allocate APPROXIMATE_SNAPSHOT bit2/SnapshotWithFlags type28. Keep borrowed decoder, trusted terminal-open, independent writer cursors, ordered detached State fence, retained-ring-first replay and refusal recovery on explicit and last-typist resize. Ghostty reviewed indivisible repaint credit accounting supersedes dev repaint borrowing to preserve positive-insufficient-credit pause regression. Merge gate building; no budget changes.
Author
Owner

Full-path source finding: embedded.rs read_incoming accepts Output/Snapshot/Ack but rejects terminal Event; tracer terminal.ts also rejects Event on its terminal stream. Ghostty approximate recovery emits an ordered notice before Snapshot, so a ring-gap reconnect would currently retire the embedded connection. Will reproduce with a retained socket regression after the merge gate, then forward bounded terminal lifecycle/recovery events through server and client. Evidence locations embedded.rs:934-948 and terminal.ts:446-474.

Full-path source finding: embedded.rs read_incoming accepts Output/Snapshot/Ack but rejects terminal Event; tracer terminal.ts also rejects Event on its terminal stream. Ghostty approximate recovery emits an ordered notice before Snapshot, so a ring-gap reconnect would currently retire the embedded connection. Will reproduce with a retained socket regression after the merge gate, then forward bounded terminal lifecycle/recovery events through server and client. Evidence locations embedded.rs:934-948 and terminal.ts:446-474.
Author
Owner

Ack129 hypothesis with source evidence: tracer terminal.ts tryAttach sends lastInSeq=nextInSeq (generated/submitted bytes), websocket.rs:886 refuses last_in_seq above owned writer Ack. A lost in-flight Input can therefore make every resume fail while the browser retains that key. Preparing deterministic native proxy loss of single-byte Input at sequence129; will retain failing run before changing attachment to the acknowledged cursor. Resume queue remains in memory and is replayed separately.

Ack129 hypothesis with source evidence: tracer terminal.ts tryAttach sends lastInSeq=nextInSeq (generated/submitted bytes), websocket.rs:886 refuses last_in_seq above owned writer Ack. A lost in-flight Input can therefore make every resume fail while the browser retains that key. Preparing deterministic native proxy loss of single-byte Input at sequence129; will retain failing run before changing attachment to the acknowledged cursor. Resume queue remains in memory and is replayed separately.
Author
Owner

Initial full browser gate on port4441: 15 passed, 1 failed; 500-key paint p99 46.5ms versus unchanged20ms. Setup render p99 848ms, FCP p99 475.4ms; all renderer/functional cases pass. Unisolated dev box, 8 cores, load36-38 during compilation. Initial merge fast caught omitted shared InputCursors helper and dangling scratch target links; corrected before commit. Explicit/last-typist geometry now share reviewed recovery and roll back remembered size after refusal. Exact fast rerun in merge-fast-2.log.

Initial full browser gate on port4441: 15 passed, 1 failed; 500-key paint p99 46.5ms versus unchanged20ms. Setup render p99 848ms, FCP p99 475.4ms; all renderer/functional cases pass. Unisolated dev box, 8 cores, load36-38 during compilation. Initial merge fast caught omitted shared InputCursors helper and dangling scratch target links; corrected before commit. Explicit/last-typist geometry now share reviewed recovery and roll back remembered size after refusal. Exact fast rerun in merge-fast-2.log.
Author
Owner

Merged real test finding: dev verify-agent-snapshot.py explicitly expects a full repaint funded by one byte plus debt; this contradicts reviewed #26 indivisible repaint/positive-insufficient-credit pause. Initial merged test timed out at that old expectation. Updating only credit oracle to require no repaint/cursor movement at1 byte, then exactly1 repaint after a full grant; retain all four12MiB producer-completion checks and final ring-gap attach. Native #26 faithful/approximate ×1/16384-byte regression remains unchanged.

Merged real test finding: dev verify-agent-snapshot.py explicitly expects a full repaint funded by one byte plus debt; this contradicts reviewed #26 indivisible repaint/positive-insufficient-credit pause. Initial merged test timed out at that old expectation. Updating only credit oracle to require no repaint/cursor movement at1 byte, then exactly1 repaint after a full grant; retain all four12MiB producer-completion checks and final ring-gap attach. Native #26 faithful/approximate ×1/16384-byte regression remains unchanged.
Author
Owner

Real geometry repro: 20 repeated two-writer runs,18 pass/2 fail. Both Close diagnostics identify command queue capacity, not shim disconnect; retained geometry-*.log/geometry-close.bin. Fixture refunded every tiny prompt frame despite initial1MiB/viewer, reproducing the same deliberate eight-command saturation previously seen in integrate1 scale probe. Remove redundant refunds, assert total output remains below initial credit, preserve both real stty observations. Green20-run repeat underway; production bounds unchanged.

Real geometry repro: 20 repeated two-writer runs,18 pass/2 fail. Both Close diagnostics identify command queue capacity, not shim disconnect; retained geometry-*.log/geometry-close.bin. Fixture refunded every tiny prompt frame despite initial1MiB/viewer, reproducing the same deliberate eight-command saturation previously seen in integrate1 scale probe. Remove redundant refunds, assert total output remains below initial credit, preserve both real stty observations. Green20-run repeat underway; production bounds unchanged.
Author
Owner

Geometry correction20/20 PASS, unchanged sizes/output/bounds. #26 credit fixture initially waited for1MiB after startup, but deployed agent_fixture.py retains sub64KiB refunds; it stalled at exhausted actual credit. Flushing that startup refund once restores an exact1MiB measurement window: approximate/1-byte case PASS,2MiB producer202.0ms, zero early notices/repaints, one funded recovery. Native debug full-path check currently fails first output (Close1011 before Ack129 injection); safe frame-metadata diagnostics underway. Static x86 build16,058,800 bytes/no PT_INTERP; ARM build continues.

Geometry correction20/20 PASS, unchanged sizes/output/bounds. #26 credit fixture initially waited for1MiB after startup, but deployed agent_fixture.py retains sub64KiB refunds; it stalled at exhausted actual credit. Flushing that startup refund once restores an exact1MiB measurement window: approximate/1-byte case PASS,2MiB producer202.0ms, zero early notices/repaints, one funded recovery. Native debug full-path check currently fails first output (Close1011 before Ack129 injection); safe frame-metadata diagnostics underway. Static x86 build16,058,800 bytes/no PT_INTERP; ARM build continues.
Author
Owner

Native first-open red: built production tracer sends Attach/Credit/Resize(150x40,1238x642)/terminal-stream Ping; real server replies Ack0 then control Close1011, no output. Metadata in native-first-open-diagnostic.log. terminal.ts:811 sends Ping on stream1; websocket.rs:779 permits control stream0 only. Same RTT sampler installs a2s interval, violating required zero-idle window. Proposing event-driven RTT: one control-stream sample on attachment, then at most one per2s while typing, no idle timer. Native timer-only red uses disclosed proxy stream remap to isolate idle activations; source unchanged.

Native first-open red: built production tracer sends Attach/Credit/Resize(150x40,1238x642)/terminal-stream Ping; real server replies Ack0 then control Close1011, no output. Metadata in native-first-open-diagnostic.log. terminal.ts:811 sends Ping on stream1; websocket.rs:779 permits control stream0 only. Same RTT sampler installs a2s interval, violating required zero-idle window. Proposing event-driven RTT: one control-stream sample on attachment, then at most one per2s while typing, no idle timer. Native timer-only red uses disclosed proxy stream remap to isolate idle activations; source unchanged.
Author
Owner

Completed no-ff engine merge d5831143ca (parents0c47cd4/565105f). Exact fast exit0, log target/integrate2-evidence/merge-fast-4.log. Verbatim summary:

| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
 7 pass
 0 fail

Static raw50MiB floods zero Snapshot substitutions: LF14.921, CRLF19.623, printable80.632 MB/s; minimum exceeds10. 32 writers/viewers×200:6400 Acks, p50/p99 0.536/4.377ms,614400 exact delivered bytes,0.511s; daemon/shim RSS5544/6188KiB. Wrapped/less reconnect harness PASS; exact retained replay and one negotiated gap notice. Dev box x86_64/8 cores/load2.46; not perf VM. Continuing native client/notice boundary fixes separately; no push/deploy.

Completed no-ff engine merge d5831143ca5f8b7a5769229de3ad5ea43643f8f6 (parents0c47cd4/565105f). Exact fast exit0, log target/integrate2-evidence/merge-fast-4.log. Verbatim summary: ``` | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | 7 pass 0 fail ``` Static raw50MiB floods zero Snapshot substitutions: LF14.921, CRLF19.623, printable80.632 MB/s; minimum exceeds10. 32 writers/viewers×200:6400 Acks, p50/p99 0.536/4.377ms,614400 exact delivered bytes,0.511s; daemon/shim RSS5544/6188KiB. Wrapped/less reconnect harness PASS; exact retained replay and one negotiated gap notice. Dev box x86_64/8 cores/load2.46; not perf VM. Continuing native client/notice boundary fixes separately; no push/deploy.
Author
Owner

Deterministic native fault injection reproduced the Ack129 reconnect loop: dropping one submitted single-byte Input before PTY delivery causes repeated resumes with no Ack. apps/tracer/src/terminal.ts sends nextInSeq in Resume rather than ackedInSeq. The retained queue already replays separately. Native first-open additionally fails on RTT Ping sent on terminal stream 1; server accepts control stream 0. With only a diagnostic stream remap, two idle native viewers caused 103 activations/10s. Fixing client resume cursor and removing idle RTT intervals. Evidence: target/integrate2-evidence/native-ack129-red.log, native-first-open-diagnostic.log, native-rtt-idle-red.log. At 128 full-history sessions, daemon RSS 5496 KiB, summed shim RSS 4209752 KiB, simultaneous recovery n=1280 p99=58.404ms; 8 CPUs, load14.95. scale-128-static.log.

Deterministic native fault injection reproduced the Ack129 reconnect loop: dropping one submitted single-byte Input before PTY delivery causes repeated resumes with no Ack. apps/tracer/src/terminal.ts sends nextInSeq in Resume rather than ackedInSeq. The retained queue already replays separately. Native first-open additionally fails on RTT Ping sent on terminal stream 1; server accepts control stream 0. With only a diagnostic stream remap, two idle native viewers caused 103 activations/10s. Fixing client resume cursor and removing idle RTT intervals. Evidence: target/integrate2-evidence/native-ack129-red.log, native-first-open-diagnostic.log, native-rtt-idle-red.log. At 128 full-history sessions, daemon RSS 5496 KiB, summed shim RSS 4209752 KiB, simultaneous recovery n=1280 p99=58.404ms; 8 CPUs, load14.95. scale-128-static.log.
Author
Owner

Full-path native flood exposed a further leg-B scheduling failure: the authenticated terminal stream closes during sustained output, before ring-gap recovery. The embedded actor uses try_send into a four-frame queue; immediately-ready socket frames can fill it before a healthy receiver is scheduled. Existing slow-viewer isolation must remain bounded/nonblocking. Proposing a cooperative scheduling point after queued Output rather than enlarging buffers or awaiting a slow reader; benchmark the merged full path afterward. Evidence: native-event-red.log (native flood terminal stream closed), embedded.rs OUTPUT_CAPACITY=4 and process_incoming Output try_send.

Full-path native flood exposed a further leg-B scheduling failure: the authenticated terminal stream closes during sustained output, before ring-gap recovery. The embedded actor uses try_send into a four-frame queue; immediately-ready socket frames can fill it before a healthy receiver is scheduled. Existing slow-viewer isolation must remain bounded/nonblocking. Proposing a cooperative scheduling point after queued Output rather than enlarging buffers or awaiting a slow reader; benchmark the merged full path afterward. Evidence: native-event-red.log (native flood terminal stream closed), embedded.rs OUTPUT_CAPACITY=4 and process_incoming Output try_send.
Author
Owner

Completed tests-first steps: native harness 4ed4af9704 adds opt-in 20 reconnects/stress8, one-byte sequence129 fault injection, full-path flood and browser ring-gap oracle. Server regression module e67918031f retains ignored Event/Snapshot and healthy four-frame burst oracles; both explicit ignored runs failed. Baseline gates native-harness-fast.log and regression-fast.log exited 0, 34390 TS assertions, 134 streams/11439 schedules/no divergences. Gate output:
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+
7 pass
0 fail
34390 expect() calls

Completed tests-first steps: native harness 4ed4af9704a1d8037b1f433f4339d6618625d8b6 adds opt-in 20 reconnects/stress8, one-byte sequence129 fault injection, full-path flood and browser ring-gap oracle. Server regression module e67918031f60c524676fa8d954068ccb95541400 retains ignored Event/Snapshot and healthy four-frame burst oracles; both explicit ignored runs failed. Baseline gates native-harness-fast.log and regression-fast.log exited 0, 34390 TS assertions, 134 streams/11439 schedules/no divergences. Gate output: +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail 34390 expect() calls
Author
Owner

Completed client RTT and parser-seed steps:
740e6f9 test(fuzz): seed approximate snapshot flags alongside writer identity
7eaa8dd fix(tracer): route RTT samples on control and leave idle terminals asleep
RTT fix uses control Ping and samples only attachment/typing; native two-viewer idle 0/10.006s and no-session 0/10.002s. Native functional acceptance and all 500 echoed keys passed with sequence129 loss; timing budgets were exceeded during concurrent builds, retained in client-native-green.log and scheduled for quiet final static measurement. Shim fuzz: 1144058 runs/61s, coverage602/features1621, no sanitizer failure. scripts/verify fast rtt-fast.log exited0: six Rust gates PASS; 7 pass, 0 fail,34390 assertions. The optional repeat loop initially ran before viewers existed (ReferenceError), corrected placement after two-viewer setup; no reconnect trials claimed for that fixture failure.

Completed client RTT and parser-seed steps: 740e6f9 test(fuzz): seed approximate snapshot flags alongside writer identity 7eaa8dd fix(tracer): route RTT samples on control and leave idle terminals asleep RTT fix uses control Ping and samples only attachment/typing; native two-viewer idle 0/10.006s and no-session 0/10.002s. Native functional acceptance and all 500 echoed keys passed with sequence129 loss; timing budgets were exceeded during concurrent builds, retained in client-native-green.log and scheduled for quiet final static measurement. Shim fuzz: 1144058 runs/61s, coverage602/features1621, no sanitizer failure. scripts/verify fast rtt-fast.log exited0: six Rust gates PASS; 7 pass, 0 fail,34390 assertions. The optional repeat loop initially ran before viewers existed (ReferenceError), corrected placement after two-viewer setup; no reconnect trials claimed for that fixture failure.
Author
Owner

Completed resume/harness steps: 282d0ab sends ackedInSeq in Resume, retaining queued replay; a21ad0c places repeat trials after native two-viewer setup. ack-fast.log exits0 (six Rust gates PASS;7 pass/0 fail/34390 TS assertions). A real repeat passed both independent resumes plus device-A restoration/replay/exact shared input in101.17ms (reconnect-harness-placement.log). A subsequent native probe mount failed before measurements; bounded diagnostics added, investigation ongoing. Dev advanced to7d17212 with reviewed Snapshot-callback ordering fix (#39); will incorporate before final acceptance. No push/deploy.

Completed resume/harness steps: 282d0ab sends ackedInSeq in Resume, retaining queued replay; a21ad0c places repeat trials after native two-viewer setup. ack-fast.log exits0 (six Rust gates PASS;7 pass/0 fail/34390 TS assertions). A real repeat passed both independent resumes plus device-A restoration/replay/exact shared input in101.17ms (reconnect-harness-placement.log). A subsequent native probe mount failed before measurements; bounded diagnostics added, investigation ongoing. Dev advanced to7d17212 with reviewed Snapshot-callback ordering fix (#39); will incorporate before final acceptance. No push/deploy.
Author
Owner

Finding resolved in native fixture: repeat+probe generated32 auth HTTP requests (counts:status9/session10/other13) from the same loopback source in one minute. runtime.rs source_admission correctly enforces30/source/minute independently of the120 aggregate browser partition. This explains the probe mount429; not an engine or auth defect. Added request-count diagnostics and pacing before extra reload/probe reads, preserving all production limits. Evidence: reconnect-auth-counts.log; actual reconnect/restoration still passed101.04ms before admission refusal. Healthy native burst red regression now passes after bounded cooperative scheduling; static gate building final binaries.

Finding resolved in native fixture: repeat+probe generated32 auth HTTP requests (counts:status9/session10/other13) from the same loopback source in one minute. runtime.rs source_admission correctly enforces30/source/minute independently of the120 aggregate browser partition. This explains the probe mount429; not an engine or auth defect. Added request-count diagnostics and pacing before extra reload/probe reads, preserving all production limits. Evidence: reconnect-auth-counts.log; actual reconnect/restoration still passed101.04ms before admission refusal. Healthy native burst red regression now passes after bounded cooperative scheduling; static gate building final binaries.
Author
Owner

Completed bounded scheduling/native admission steps:12dbc82 yields after a queued Output so healthy receivers drain the unchanged four-frame queue; red128-output oracle now passes. Held slow-viewer queues still retire without blocking siblings. f24e766 paces repeated native reload/probe auth reads within the unchanged30/source/minute limit and records content-free diagnostics. Native harness parses. burst-fast.log exits0; gate output:
| Rust gate | Result |
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | PASS |
7 pass
0 fail
34390 expect() calls
Native full-path throughput and20stress repetitions follow on the finished merged binary.

Completed bounded scheduling/native admission steps:12dbc82 yields after a queued Output so healthy receivers drain the unchanged four-frame queue; red128-output oracle now passes. Held slow-viewer queues still retire without blocking siblings. f24e766 paces repeated native reload/probe auth reads within the unchanged30/source/minute limit and records content-free diagnostics. Native harness parses. burst-fast.log exits0; gate output: | Rust gate | Result | | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | 7 pass 0 fail 34390 expect() calls Native full-path throughput and20stress repetitions follow on the finished merged binary.
Author
Owner

Real merged static full-path benchmark after12dbc82 scheduling fix: authenticated leg-A/server/embedded infraternal-agent/shim/PTY flood delivered52428800 exact bytes,0Snapshots,11.113MB/s in4.718s (8CPU dev box,load2.82/3.34/6.72). All500 browser echoes completed; paintp99=16.1ms, nativeecho p99=4.121ms. Pacing respects unchanged source admission. Subsequent browser ring-gap oracle fails as expected before Event adapter fix (native-event-red-after-fairness.log), independently of successful flood/latency. Metrics:
static server without session: 0 scheduler activations / 10.001s (0.000/min); RSS=11504 KiB; threads=13
static server with shared idle PTY: 0 scheduler activations / 10.001s (0.000/min); RSS=15312 KiB; threads=19
p99: 16.10 ms
Time to resume: 93.10 ms
real leg-A/agent/shim/PTY echo: n=500 p50=1.032ms p99=4.121ms
Native full path flood: 52428800 exact payload bytes; 4.718s; 11.113 MB/s; snapshots=0; load=2.82/3.34/6.72

Real merged static full-path benchmark after12dbc82 scheduling fix: authenticated leg-A/server/embedded infraternal-agent/shim/PTY flood delivered52428800 exact bytes,0Snapshots,11.113MB/s in4.718s (8CPU dev box,load2.82/3.34/6.72). All500 browser echoes completed; paintp99=16.1ms, nativeecho p99=4.121ms. Pacing respects unchanged source admission. Subsequent browser ring-gap oracle fails as expected before Event adapter fix (native-event-red-after-fairness.log), independently of successful flood/latency. Metrics: static server without session: 0 scheduler activations / 10.001s (0.000/min); RSS=11504 KiB; threads=13 static server with shared idle PTY: 0 scheduler activations / 10.001s (0.000/min); RSS=15312 KiB; threads=19 p99: 16.10 ms Time to resume: 93.10 ms real leg-A/agent/shim/PTY echo: n=500 p50=1.032ms p99=4.121ms Native full path flood: 52428800 exact payload bytes; 4.718s; 11.113 MB/s; snapshots=0; load=2.82/3.34/6.72
Author
Owner

Deploy 1.1 is live (dev 7d2d0a5, binary sha256 33213e12ed8a9ee3…). The data dir was kept (no owner had been created yet). Old binary and web root are saved as *.bak-20261007T-d11.

New since deploy 1:

  • #39: the echo after a resumed Snapshot now paints;
  • #32: a wrong setup token is rejected at step 1 (POST /auth/setup-check, non-consuming, 401 for a wrong token), and Continue is right-aligned.

Hands-on check on production (iPhone 15 viewport): the page loads in 0.67 s, a wrong token shows "That token doesn't match. Run infraternal server setup-token on the server.", and the button sits at the right edge. The server (10.8 MB) and agent (5.4 MB) are up.

Merge-result checks:

  • fast gate green;
  • Playwright 19/20, then 2/2 on the onboarding spec after the sub-pixel shift tolerance fix (7d2d0a5);
  • 500-key p50/p99 15.2/17.5 ms.
**Deploy 1.1 is live** (dev 7d2d0a5, binary sha256 33213e12ed8a9ee3…). The data dir was kept (no owner had been created yet). Old binary and web root are saved as `*.bak-20261007T-d11`. New since deploy 1: - #39: the echo after a resumed Snapshot now paints; - #32: a wrong setup token is rejected at step 1 (`POST /auth/setup-check`, non-consuming, 401 for a wrong token), and Continue is right-aligned. Hands-on check on production (iPhone 15 viewport): the page loads in 0.67 s, a wrong token shows "That token doesn't match. Run infraternal server setup-token on the server.", and the button sits at the right edge. The server (10.8 MB) and agent (5.4 MB) are up. Merge-result checks: - fast gate green; - Playwright 19/20, then 2/2 on the onboarding spec after the sub-pixel shift tolerance fix (7d2d0a5); - 500-key p50/p99 15.2/17.5 ms.
Author
Owner

Further full-path finding: cooperative scheduling alone is insufficient. native-event-green.log completed500echoes (paintp99=19.6ms, rawp99=1.654ms) then the flood retired its terminal during concurrent ARM linking, before Event recovery. Four embedded frame slots cannot hold the already credited default1MiB burst while authenticated WebSocket forwarding awaits I/O. Proposing256 bounded frame slots for common4KiB PTY bulk frames, retaining credit ceilings, nonblocking slow-viewer retirement and all existing parser bounds. Add a red credited-burst/I/O-pause oracle and measure128 attachments with1MiB each plus final throughput/RSS; no production admission or wire changes. Evidence: native-event-green.log; embedded.rs OUTPUT_CAPACITY4, websocket.rs authenticated output forwarding.

Further full-path finding: cooperative scheduling alone is insufficient. native-event-green.log completed500echoes (paintp99=19.6ms, rawp99=1.654ms) then the flood retired its terminal during concurrent ARM linking, before Event recovery. Four embedded frame slots cannot hold the already credited default1MiB burst while authenticated WebSocket forwarding awaits I/O. Proposing256 bounded frame slots for common4KiB PTY bulk frames, retaining credit ceilings, nonblocking slow-viewer retirement and all existing parser bounds. Add a red credited-burst/I/O-pause oracle and measure128 attachments with1MiB each plus final throughput/RSS; no production admission or wire changes. Evidence: native-event-green.log; embedded.rs OUTPUT_CAPACITY4, websocket.rs authenticated output forwarding.
Author
Owner

Tests-first follow-up: credited_bulk_output_survives_forwarder_io_pause fails before queue sizing; uncredited_output_or_repaint_is_rejected_before_queueing also fails on existing saturating subtraction. The256-frame fix must enforce granted Output/Snapshot bytes before enqueueing, preserving an8MiB outstanding-credit payload ceiling plus bounded1KiB notices/frame metadata, rather than permitting256 maximum4MiB frames. Default1MiB credited bursts ×128 streams will be measured with unique payload allocations. Red logs: credited-burst-red.log and credit-bound-red.log. Production wire credit limits remain unchanged.

Tests-first follow-up: credited_bulk_output_survives_forwarder_io_pause fails before queue sizing; uncredited_output_or_repaint_is_rejected_before_queueing also fails on existing saturating subtraction. The256-frame fix must enforce granted Output/Snapshot bytes before enqueueing, preserving an8MiB outstanding-credit payload ceiling plus bounded1KiB notices/frame metadata, rather than permitting256 maximum4MiB frames. Default1MiB credited bursts ×128 streams will be measured with unique payload allocations. Red logs: credited-burst-red.log and credit-bound-red.log. Production wire credit limits remain unchanged.
Author
Owner

Completed Event/UI steps and latest-dev merge:76e2efc forwards bounded/session-bound ordered notices and activates real-socket/isolation/credit/order regressions; d7524ab displays static approximation/pause labels; de37976 arms seq129 loss on the fresh probe writer. event-fast.log exits0, three Event/ready-burst regressions pass, TS strict check/build pass. Merge6a350e9 includes devcac64e6 (reviewed Snapshot ordering/Unicode #39 and additive native setup check/UI #32); clean merge, DECISIONS unchanged. dev-merge-fast.log exits0; gate output:
| Rust gate | Result |
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | PASS |
7 pass
0 fail
34390 expect() calls
Follow-up credited burst/strict byte-bound red tests are being gated separately before queue sizing. Current dev-only7d2d0a5 layout-tolerance test adjustment will be included before final browser acceptance.

Completed Event/UI steps and latest-dev merge:76e2efc forwards bounded/session-bound ordered notices and activates real-socket/isolation/credit/order regressions; d7524ab displays static approximation/pause labels; de37976 arms seq129 loss on the fresh probe writer. event-fast.log exits0, three Event/ready-burst regressions pass, TS strict check/build pass. Merge6a350e9 includes devcac64e6 (reviewed Snapshot ordering/Unicode #39 and additive native setup check/UI #32); clean merge, DECISIONS unchanged. dev-merge-fast.log exits0; gate output: | Rust gate | Result | | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | 7 pass 0 fail 34390 expect() calls Follow-up credited burst/strict byte-bound red tests are being gated separately before queue sizing. Current dev-only7d2d0a5 layout-tolerance test adjustment will be included before final browser acceptance.
Author
Owner

Completed credited queue step:806b2ee retains two ignored red regressions and128-stream measurement (first tests-only Clippy gate rejected2casts; checked conversions fixed, queue-regressions-fast-2 exits0). 0e8d7dc activates256frame slots, rejects over-credit Output/Snapshot before queueing, preserves8MiB credit and bounded notice/frame counts; credit-queue-fast exits0, all new credit/order/isolation oracles pass;6 Rust PASS,7 TS pass/0fail/34390assertions. Measurement with32768unique4KiB buffers:
debug actor scale: streams=128 frames=32768 payload_bytes=134217728 baseline_RSS_KiB=9064 idle_queues_RSS_KiB=11484 full_queues_RSS_KiB=145164 dispatch_p99_ms=0.032832 CPUs=8 load=7.18 4.44 4.33 12/748 4189331
Payload128MiB plus measured metadata/allocator cost at128streams. Hard outstanding payload limit remains128×8MiB=1GiB, plus bounded notices/frame metadata; default browser grant remains1MiB. Native stress run passed6trials (101.59–132.47ms) then next attachment pair timed out; inspecting frame-type/DB capacity counts, no final acceptance claim. native-final-2.log. Initial first-command oracle also followed a closed proxy connection while the replacement accepted all46bytes: fixing logical-viewer tracking/sequence dedup in the native fixture.

Completed credited queue step:806b2ee retains two ignored red regressions and128-stream measurement (first tests-only Clippy gate rejected2casts; checked conversions fixed, queue-regressions-fast-2 exits0). 0e8d7dc activates256frame slots, rejects over-credit Output/Snapshot before queueing, preserves8MiB credit and bounded notice/frame counts; credit-queue-fast exits0, all new credit/order/isolation oracles pass;6 Rust PASS,7 TS pass/0fail/34390assertions. Measurement with32768unique4KiB buffers: debug actor scale: streams=128 frames=32768 payload_bytes=134217728 baseline_RSS_KiB=9064 idle_queues_RSS_KiB=11484 full_queues_RSS_KiB=145164 dispatch_p99_ms=0.032832 CPUs=8 load=7.18 4.44 4.33 12/748 4189331 Payload128MiB plus measured metadata/allocator cost at128streams. Hard outstanding payload limit remains128×8MiB=1GiB, plus bounded notices/frame metadata; default browser grant remains1MiB. Native stress run passed6trials (101.59–132.47ms) then next attachment pair timed out; inspecting frame-type/DB capacity counts, no final acceptance claim. native-final-2.log. Initial first-command oracle also followed a closed proxy connection while the replacement accepted all46bytes: fixing logical-viewer tracking/sequence dedup in the native fixture.
Author
Owner

Detached output finding: native two-device CPU8 runs completed 6 then 8 trials before device B sent Hello/Resume and received Welcome without Attach. Database remained at 2 active connections (not admission). Real Ghostty browser regression held render callbacks across disconnect: received 16,454 bytes but painted stopped at 16,384 (detached-output-red.log). drainOutput required attached while tryAttach required an empty queue, creating a lifecycle deadlock. Removing that guard drains already-owned bytes without sending detached credit; targeted real-renderer regression now passes (detached-output-green.log). Evidence: target/integrate2-evidence/.

Detached output finding: native two-device CPU8 runs completed 6 then 8 trials before device B sent Hello/Resume and received Welcome without Attach. Database remained at 2 active connections (not admission). Real Ghostty browser regression held render callbacks across disconnect: received 16,454 bytes but painted stopped at 16,384 (detached-output-red.log). drainOutput required attached while tryAttach required an empty queue, creating a lifecycle deadlock. Removing that guard drains already-owned bytes without sending detached credit; targeted real-renderer regression now passes (detached-output-green.log). Evidence: target/integrate2-evidence/.
Author
Owner

Committed tests-first detached callback oracle b8d120d, logical viewer tracking 1ad5582, and detached owned-byte drain fix008aa36. Real Ghostty targeted browser test passes; TypeScript check passes. detached-tests-fast.log: fmt/VT native fmt/clippy/test/cargo-deny/static builds PASS; protocol7pass/0fail/34390 assertions,134streams11439schedules zero divergences. Fixed native run currently11/20 successful CPU8 two-device reconnect/reload trials; prior reproduction stalled at trial9. Final reconnect harness passes raw/starved/approximate/legacy paths (reconnect-final.log).

Committed tests-first detached callback oracle b8d120d, logical viewer tracking 1ad5582, and detached owned-byte drain fix008aa36. Real Ghostty targeted browser test passes; TypeScript check passes. detached-tests-fast.log: fmt/VT native fmt/clippy/test/cargo-deny/static builds PASS; protocol7pass/0fail/34390 assertions,134streams11439schedules zero divergences. Fixed native run currently11/20 successful CPU8 two-device reconnect/reload trials; prior reproduction stalled at trial9. Final reconnect harness passes raw/starved/approximate/legacy paths (reconnect-final.log).
Author
Owner

Fixed build native-final-4.log: 20/20 two-device reconnect+device-A reload restoration+exact shared input PASS under stress-ng --cpu8. Resume min100.54ms median106.99ms max189.67ms; measured load reached12.33/6.64/5.06. CPU stress stopped before620-second open-idle and latency/flood checks. agent-functional-final.log:24/24 abrupt stop/restart cases,4710396 exact payload bytes; idle daemon0/2.201s RSS5176KiB, attached daemon0/2.200s, shim0/2.201s. Full Playwright currently19passed including500-key mock paintp9915.8ms. Final native throughput and gates pending.

Fixed build native-final-4.log: 20/20 two-device reconnect+device-A reload restoration+exact shared input PASS under stress-ng --cpu8. Resume min100.54ms median106.99ms max189.67ms; measured load reached12.33/6.64/5.06. CPU stress stopped before620-second open-idle and latency/flood checks. agent-functional-final.log:24/24 abrupt stop/restart cases,4710396 exact payload bytes; idle daemon0/2.201s RSS5176KiB, attached daemon0/2.200s, shim0/2.201s. Full Playwright currently19passed including500-key mock paintp9915.8ms. Final native throughput and gates pending.
Author
Owner

Verification checkpoint head008aa36: exact requested Nix fast command exits0; ALL Playwright port4441 exits0,21passed(2.4m), including real Ghostty detached callback regression. Production screenshots preserved target/integrate2-evidence/screenshots/. Native20/20CPU8 and24/24stop/restart pass;620s open-idle/finalnative500/flood/recovery/logout still running. Gate output verbatim:
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+

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

Verification checkpoint head008aa36: exact requested Nix fast command exits0; ALL Playwright port4441 exits0,21passed(2.4m), including real Ghostty detached callback regression. Production screenshots preserved target/integrate2-evidence/screenshots/. Native20/20CPU8 and24/24stop/restart pass;620s open-idle/finalnative500/flood/recovery/logout still running. Gate output verbatim: +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.10s]
Author
Owner

Final native-final-4: open sharedPTY idle0activations/620.002s RSS16312KiB;500-keypaintp9918.8ms, resume95.5ms; real authenticated echo500p995.404ms; full-path52428800exactbytes in4.159s=12.606MB/s,0Snapshots. All20CPU8runs passed. Final gap assertion failed despite live stream(Hello/Welcome/Ack/Event2/Snapshot1, noClose): oracle counted all notices rather than exactly one approximate notice. Attach-before-Credit permits output-paused notification before funded repaint. Correcting only harness cardinality while requiring oneapproxnotice/oneSnapshot/matchingseq/live stream; fresh fullfunctional rerun pending. Handoff fast gate alreadyPASS6Rust+7protocol/0fail (handoff-fast.log).

Final native-final-4: open sharedPTY idle0activations/620.002s RSS16312KiB;500-keypaintp9918.8ms, resume95.5ms; real authenticated echo500p995.404ms; full-path52428800exactbytes in4.159s=12.606MB/s,0Snapshots. All20CPU8runs passed. Final gap assertion failed despite live stream(Hello/Welcome/Ack/Event2/Snapshot1, noClose): oracle counted all notices rather than exactly one approximate notice. Attach-before-Credit permits output-paused notification before funded repaint. Correcting only harness cardinality while requiring oneapproxnotice/oneSnapshot/matchingseq/live stream; fresh fullfunctional rerun pending. Handoff fast gate alreadyPASS6Rust+7protocol/0fail (handoff-fast.log).
Author
Owner

Recovery oracle rerun native-final-5: browser500paintp9917.9ms/resume94.7ms, idle0/10s; subsequent direct-native echo timed out before recovery check. Added content-free direct frame-kind/Ack/sample counts to distinguish transport retirement, replays and terminal response. Existing native-final-4 direct500echo completed butp995.404ms exceeds its5ms decision41 gate; full combined run is not yet accepted. Native20CPU8/620sidle/12.606MB/s evidence remains valid; fresh repeat running without input-loss injection (seq129 recovery already proved in final4/final5).

Recovery oracle rerun native-final-5: browser500paintp9917.9ms/resume94.7ms, idle0/10s; subsequent direct-native echo timed out before recovery check. Added content-free direct frame-kind/Ack/sample counts to distinguish transport retirement, replays and terminal response. Existing native-final-4 direct500echo completed butp995.404ms exceeds its5ms decision41 gate; full combined run is not yet accepted. Native20CPU8/620sidle/12.606MB/s evidence remains valid; fresh repeat running without input-loss injection (seq129 recovery already proved in final4/final5).
Author
Owner

native-final-6 confirms corrected recovery oracle: oneapproxnotice/oneSnapshot/matchingseq/visiblelabel/live stream PASS; full native setup/sign-in/independent Acks/reload/resume/logout functional acceptance PASS. Full-path50MiB12.730MB/s0Snapshots. Timing repeat failed: browserpaintp9931ms and direct500echop996.050ms, vs final4paint18.8ms/echo5.404ms. Shared-boxCPU pressure avg10=1.33%, no cgroup throttle. Preserve failures; quieter repeat running. No performance thresholds relaxed or production changes added.

native-final-6 confirms corrected recovery oracle: oneapproxnotice/oneSnapshot/matchingseq/visiblelabel/live stream PASS; full native setup/sign-in/independent Acks/reload/resume/logout functional acceptance PASS. Full-path50MiB12.730MB/s0Snapshots. Timing repeat failed: browserpaintp9931ms and direct500echop996.050ms, vs final4paint18.8ms/echo5.404ms. Shared-boxCPU pressure avg10=1.33%, no cgroup throttle. Preserve failures; quieter repeat running. No performance thresholds relaxed or production changes added.
Author
Owner

Resolved harness oracle committed3655a44; native-final-7 exits0: FULL native functional acceptance PASS (setup/sign-in/realPTY/independent-deviceAck0/reload/resume/logout), browser gap recovery one orderedapproxnotice/repaint +visiblelabel/live stream PASS; ALL performance budgets PASS. 500paintp9917.2ms, resume94.4ms, rawauthenticated500echop992.382ms;52428800exactfloodbytes/4.416s=11.873MB/s0Snapshots, load5.08/3.95/4.37. Earlier timing failures preserved. Same production implementation passed20CPU8reconnects and0activations/620.002s in final4; seq129loss500/500replay in final4/final5. Full21Playwrightpassed. Final docs/gate/cleanup in progress; nothing pushed or deployed.

Resolved harness oracle committed3655a44; native-final-7 exits0: FULL native functional acceptance PASS (setup/sign-in/realPTY/independent-deviceAck0/reload/resume/logout), browser gap recovery one orderedapproxnotice/repaint +visiblelabel/live stream PASS; ALL performance budgets PASS. 500paintp9917.2ms, resume94.4ms, rawauthenticated500echop992.382ms;52428800exactfloodbytes/4.416s=11.873MB/s0Snapshots, load5.08/3.95/4.37. Earlier timing failures preserved. Same production implementation passed20CPU8reconnects and0activations/620.002s in final4; seq129loss500/500replay in final4/final5. Full21Playwrightpassed. Final docs/gate/cleanup in progress; nothing pushed or deployed.
Author
Owner

Finished integrate2 head 7b1ed777fc; no push/deploy. No-ff Ghostty merge d583114 and dev merge6a350e9 (dev7d2d0a5); DECISIONS unchanged; worktree clean. Atomic follow-ups record regression tests/fixes/harness/docs. Native final7 exits0 FULL functional and performance PASS: setup/sign-in/PTY/two independentAcks/reload/resume/logout; one ordered approximate recovery with visiblelabel/live stream. 500paintp9917.2ms; rawauthenticated500echop992.382ms; resume94.4ms; full-path50MiB11.873MB/s0Snapshots (repeats12.606/12.730). Native final4:20/20CPU8reconnect+restoration/exactsharedinput, median106.99/max189.67ms; idle0activations/620.002s; seq129loss500/500replay. Final reconnect native harnessPASS;24/24abruptstop/restartPASS; daemon/shimidle0/2.2s. Scale32writersAckp994.377ms;128fullhistorysessions recoveryp9958.404ms;128queueRSS145164KiB/default1MiB credit,8MiB hard credit cap. Fuzz1144058runs/61s no sanitizerfailure. ALL21PlaywrightPASS port4441 (production assets), TScheckPASS. Earlier timing failures and rawecho timeout retained, no thresholds relaxed.
Evidence: docs/verification/ghostty-integration.md and target/integrate2-evidence/ (native-final-4/6/7.log, reconnect-final.log, agent-functional-final.log, playwright-accepted.log, complete-fast.log, scale/memory/fuzz logs, binary-sha256.txt, machine.txt). Production screenshots: screenshots/merged-real-terminal.png, merged-real-probe.png, merged-approximate-recovery.png, merged-mobile-setup/login.png and core mobile/desktop. Self-review recorded; physicaliPhone and independent visual/security review external. HOME job scratch removed; verified staticx86/ARM binaries retained in target. Exact requested Nix fast exits0; gate output verbatim:
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+

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

Finished integrate2 head 7b1ed777fca7b4de41b03305558530489f7276b7; no push/deploy. No-ff Ghostty merge d583114 and dev merge6a350e9 (dev7d2d0a5); DECISIONS unchanged; worktree clean. Atomic follow-ups record regression tests/fixes/harness/docs. Native final7 exits0 FULL functional and performance PASS: setup/sign-in/PTY/two independentAcks/reload/resume/logout; one ordered approximate recovery with visiblelabel/live stream. 500paintp9917.2ms; rawauthenticated500echop992.382ms; resume94.4ms; full-path50MiB11.873MB/s0Snapshots (repeats12.606/12.730). Native final4:20/20CPU8reconnect+restoration/exactsharedinput, median106.99/max189.67ms; idle0activations/620.002s; seq129loss500/500replay. Final reconnect native harnessPASS;24/24abruptstop/restartPASS; daemon/shimidle0/2.2s. Scale32writersAckp994.377ms;128fullhistorysessions recoveryp9958.404ms;128queueRSS145164KiB/default1MiB credit,8MiB hard credit cap. Fuzz1144058runs/61s no sanitizerfailure. ALL21PlaywrightPASS port4441 (production assets), TScheckPASS. Earlier timing failures and rawecho timeout retained, no thresholds relaxed. Evidence: docs/verification/ghostty-integration.md and target/integrate2-evidence/ (native-final-4/6/7.log, reconnect-final.log, agent-functional-final.log, playwright-accepted.log, complete-fast.log, scale/memory/fuzz logs, binary-sha256.txt, machine.txt). Production screenshots: screenshots/merged-real-terminal.png, merged-real-probe.png, merged-approximate-recovery.png, merged-mobile-setup/login.png and core mobile/desktop. Self-review recorded; physicaliPhone and independent visual/security review external. HOME job scratch removed; verified staticx86/ARM binaries retained in target. Exact requested Nix fast exits0; gate output verbatim: +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.44s]
Author
Owner

Deploy 2 is live (the new terminal engine): dev a5250c3, binary sha256 0c9b6193f437a89e…. Data dir kept; old binary and web saved as *.bak-20261007T-d2. Server 10.7 MB, agent 5.1 MB, 0 warnings, / and /health 200.

The orchestrator's hands-on checks with the same release binary (local, native, real PTY):

  • verify-agent-flood: 12.429 MiB/s for 50 MiB (Alacritty was 4.58). The script still labels the result "Alacritty"; label bug filed.
  • verify-vt-reconnect: PASS (less reconnect keeps the live stream; legacy retry PASS).
  • verify-agent-multi: PASS (the second writer starts at Ack 0; both viewers get the exact bytes; full-range replay).
  • verify-agent-resume: PASS (abrupt stop and restart; 524,288 replay bytes exactly once).
  • verify-auth-browser: PASS (4 scenarios, Chromium 149).
  • Merge gate green; Playwright 21/21; 500-key p50/p99 15.1/17.2 ms.

Production itself can't be tested beyond setup without claiming the owner account; the owner does setup in the morning.

**Deploy 2 is live** (the new terminal engine): dev a5250c3, binary sha256 0c9b6193f437a89e…. Data dir kept; old binary and web saved as `*.bak-20261007T-d2`. Server 10.7 MB, agent 5.1 MB, 0 warnings, `/` and `/health` 200. The orchestrator's hands-on checks with the same release binary (local, native, real PTY): - verify-agent-flood: **12.429 MiB/s** for 50 MiB (Alacritty was 4.58). *The script still labels the result "Alacritty"; label bug filed.* - verify-vt-reconnect: PASS (`less` reconnect keeps the live stream; legacy retry PASS). - verify-agent-multi: PASS (the second writer starts at Ack 0; both viewers get the exact bytes; full-range replay). - verify-agent-resume: PASS (abrupt stop and restart; 524,288 replay bytes exactly once). - verify-auth-browser: PASS (4 scenarios, Chromium 149). - Merge gate green; Playwright 21/21; 500-key p50/p99 15.1/17.2 ms. Production itself can't be tested beyond setup without claiming the owner account; the owner does setup in the morning.
Author
Owner

Deploy 2.1 is live (dev 4daf8c0): web-only change (the binary hash is unchanged, 0c9b6193…). Contents: the motion audit fixes plus the restored approved designs (#40; D111 and D112), and main's docs merged into dev (DECISIONS up to 112, PROCESS.md). Checked by hand: the setup page loads in 0.67 s, wrong-token rejection works, server and agent are up with 0 warnings. The merge result had a green gate and 22/22 Playwright; idle trace 0 rAF and 0 timers over 10 s; 500-key p50/p99 15.0/15.9 ms.

**Deploy 2.1 is live** (dev 4daf8c0): web-only change (the binary hash is unchanged, 0c9b6193…). Contents: the motion audit fixes plus the restored approved designs (#40; D111 and D112), and main's docs merged into dev (DECISIONS up to 112, PROCESS.md). Checked by hand: the setup page loads in 0.67 s, wrong-token rejection works, server and agent are up with 0 warnings. The merge result had a green gate and 22/22 Playwright; idle trace 0 rAF and 0 timers over 10 s; 500-key p50/p99 15.0/15.9 ms.
Author
Owner

Deploy 2.2 is live (dev 191c283, binary 9d3978559ab9ec98…): the #43 PRF normalisation (1Password extension output) and the passkey provider record. The data was kept, with a pre-deploy copy at ~/.local/share/infraternal.predeploy-20261007T071239Z. Owner account intact (1 user, 1 passkey). Gate green; Playwright 31/32, then the flaky blur assertion was fixed (191c283) and passes. Waiting for the owner's desktop 1Password sign-in.

**Deploy 2.2 is live** (dev 191c283, binary 9d3978559ab9ec98…): the #43 PRF normalisation (1Password extension output) and the passkey provider record. The data was kept, with a pre-deploy copy at `~/.local/share/infraternal.predeploy-20261007T071239Z`. Owner account intact (1 user, 1 passkey). Gate green; Playwright 31/32, then the flaky blur assertion was fixed (191c283) and passes. Waiting for the owner's desktop 1Password sign-in.
Author
Owner

Deploy 2.3 live (dev fca6e09, binary 2d226eada8d24dea…), data kept with a pre-deploy copy. Contains: #66 part 1 (precompressed assets, and the explicit-credit fix for the 400 ms attach stall), the keytray modifiers (#53), the scroll fix (#44) and the caret fix. Checked through Traefik: main.js br 24,767 B / gzip 28,488 B / identity 75,896 B with the correct Content-Encoding. 0 warnings after start. The merge result had a green gate and Playwright 35/35.

**Deploy 2.3 live** (dev fca6e09, binary 2d226eada8d24dea…), data kept with a pre-deploy copy. Contains: #66 part 1 (precompressed assets, and the explicit-credit fix for the 400 ms attach stall), the keytray modifiers (#53), the scroll fix (#44) and the caret fix. Checked through Traefik: main.js br 24,767 B / gzip 28,488 B / identity 75,896 B with the correct Content-Encoding. 0 warnings after start. The merge result had a green gate and Playwright 35/35.
Author
Owner

Remote phase1 #78 data-layout extension proposed: $XDG_DATA_HOME/infraternal/ca/ (default ~/.local/share/infraternal/ca/), 0700, encrypted internal CA key envelopes and public issuer generations, files0600; outside infraternal.sqlite. Retain current+previous issuer generations during overlap [D133]. CA unlock source is an owner question on #78; never persist a plaintext adjacent unlock key. Rootless host identity belongs under its XDG data directory, separate from XDG_RUNTIME_DIR/infraternal/sessions. No production path changed or remote state installed.

Remote phase1 #78 data-layout extension proposed: $XDG_DATA_HOME/infraternal/ca/ (default ~/.local/share/infraternal/ca/), 0700, encrypted internal CA key envelopes and public issuer generations, files0600; outside infraternal.sqlite. Retain current+previous issuer generations during overlap [D133]. CA unlock source is an owner question on #78; never persist a plaintext adjacent unlock key. Rootless host identity belongs under its XDG data directory, separate from XDG_RUNTIME_DIR/infraternal/sessions. No production path changed or remote state installed.
Author
Owner

Data-layout table extension for remote phase1 #78 (proposed; no files created):

Path What On a fresh deploy
$XDG_DATA_HOME/infraternal/ca/ (default ~/.local/share/infraternal/ca/) Encrypted internal CA key envelopes plus public current/previous issuer generations; directory0700, files0600; outside infraternal.sqlite [D64/D133] Part of an explicit full data-directory wipe; ordinary redeploy/restart retains it

The independent CA unlock source is pending owner clarification on #78. No plaintext adjacent unlock-key file is proposed. This checkpoint creates no CA state and changes no production directory.

Data-layout table extension for remote phase1 #78 (proposed; no files created): | Path | What | On a fresh deploy | |---|---|---| | $XDG_DATA_HOME/infraternal/ca/ (default ~/.local/share/infraternal/ca/) | Encrypted internal CA key envelopes plus public current/previous issuer generations; directory0700, files0600; outside infraternal.sqlite [D64/D133] | Part of an explicit full data-directory wipe; ordinary redeploy/restart retains it | The independent CA unlock source is pending owner clarification on #78. No plaintext adjacent unlock-key file is proposed. This checkpoint creates no CA state and changes no production directory.
Author
Owner

Deploy 2026-10-07 ~16:15 (orchestrator): owner asked to remove the user deploy and redeploy fresh as root (D170). Removed the user unit, binary, data, web and the three surviving shims plus /run/user/1001/infraternal. Installed dev ac03b19 (x86_64 musl): /usr/local/bin/infraternal, web /usr/local/share/infraternal/web, data /var/lib/infraternal (0700 root), system unit /etc/systemd/system/infraternal-server.service (same listen 172.18.0.1:7011 behind Traefik). Public origin answers 200. Owner re-enrolls with a fresh setup token (given to the owner directly, not recorded).

Deploy 2026-10-07 ~16:15 (orchestrator): owner asked to remove the user deploy and redeploy fresh as root (D170). Removed the user unit, binary, data, web and the three surviving shims plus /run/user/1001/infraternal. Installed dev ac03b19 (x86_64 musl): /usr/local/bin/infraternal, web /usr/local/share/infraternal/web, data /var/lib/infraternal (0700 root), system unit /etc/systemd/system/infraternal-server.service (same listen 172.18.0.1:7011 behind Traefik). Public origin answers 200. Owner re-enrolls with a fresh setup token (given to the owner directly, not recorded).
Author
Owner

Data-layout table extension for rootless remote infraternal agents (#78, operator commit baf36bb; no remote host installed):

Path What On a fresh deploy
$XDG_DATA_HOME/infraternal/agent/identity.json (default ~/.local/share/infraternal/agent/identity.json) Host-generated private Ed25519 key, issued certificate and public server/issuer coordinates; directory0700, identity0600, owned by enrolled uid; outside SQLite and shim runtime state [D63/D132/D168] Ordinary restart/redeploy retains identity; explicit host removal must erase user-level enrolled state

Join publishes via fsynced same-filesystem hard link with atomic no-replace semantics. Initial operator join never overwrites an existing identity. Rootless shims continue to use their existing XDG runtime/state location separately. The CA directory/encrypted administrator envelopes remain as already documented above; no plaintext CA unlock file or CA storage implementation is added by this step.

Data-layout table extension for rootless remote infraternal agents (#78, operator commit baf36bb; no remote host installed): | Path | What | On a fresh deploy | |---|---|---| | $XDG_DATA_HOME/infraternal/agent/identity.json (default ~/.local/share/infraternal/agent/identity.json) | Host-generated private Ed25519 key, issued certificate and public server/issuer coordinates; directory0700, identity0600, owned by enrolled uid; outside SQLite and shim runtime state [D63/D132/D168] | Ordinary restart/redeploy retains identity; explicit host removal must erase user-level enrolled state | Join publishes via fsynced same-filesystem hard link with atomic no-replace semantics. Initial operator join never overwrites an existing identity. Rootless shims continue to use their existing XDG runtime/state location separately. The CA directory/encrypted administrator envelopes remain as already documented above; no plaintext CA unlock file or CA storage implementation is added by this step.
Author
Owner

Remote #78 cold-start loader specifies the public current issuer file in the existing CA layout:\n\n| Path | What | On a fresh deploy |\n|---|---|---|\n| $XDG_DATA_HOME/infraternal/ca/issuer.pem (default ~/.local/share/infraternal/ca/issuer.pem) | Retained public Ed25519 issuer for cold-locked signing and existing-host mTLS verification; directory0700, file0600; no private CA/unlock key | Ordinary restart retains it; missing/invalid public trust refuses remote startup without regeneration |\n\nThe explicit test/operator --remote-ca-dir override uses the same private-directory/file checks. Normal standalone HTTPS leaf/key remain independently configured TLS files; for this startup slice the leaf must chain to issuer.pem. Encrypted administrator envelopes and rotation overlap are still pending; no production filesystem changed.

Remote #78 cold-start loader specifies the public current issuer file in the existing CA layout:\n\n| Path | What | On a fresh deploy |\n|---|---|---|\n| $XDG_DATA_HOME/infraternal/ca/issuer.pem (default ~/.local/share/infraternal/ca/issuer.pem) | Retained public Ed25519 issuer for cold-locked signing and existing-host mTLS verification; directory0700, file0600; no private CA/unlock key | Ordinary restart retains it; missing/invalid public trust refuses remote startup without regeneration |\n\nThe explicit test/operator --remote-ca-dir override uses the same private-directory/file checks. Normal standalone HTTPS leaf/key remain independently configured TLS files; for this startup slice the leaf must chain to issuer.pem. Encrypted administrator envelopes and rotation overlap are still pending; no production filesystem changed.
Author
Owner

Formatting correction: remote #78 public-issuer row for the existing CA data-layout table.

Path What On a fresh deploy
$XDG_DATA_HOME/infraternal/ca/issuer.pem (default ~/.local/share/infraternal/ca/issuer.pem) Public current Ed25519 issuer; dir0700/file0600, outside SQLite; cold signer remains locked [D168] Retain on ordinary restart/redeploy; missing/invalid trust refuses remote startup without regeneration

--remote-ca-dir is an explicit test/operator override with the same private metadata checks. No private CA or unlock-key file is read by this loader. Encrypted administrator envelopes and rotation overlap remain pending. No production filesystem changed.

Formatting correction: remote #78 public-issuer row for the existing CA data-layout table. | Path | What | On a fresh deploy | |---|---|---| | $XDG_DATA_HOME/infraternal/ca/issuer.pem (default ~/.local/share/infraternal/ca/issuer.pem) | Public current Ed25519 issuer; dir0700/file0600, outside SQLite; cold signer remains locked [D168] | Retain on ordinary restart/redeploy; missing/invalid trust refuses remote startup without regeneration | --remote-ca-dir is an explicit test/operator override with the same private metadata checks. No private CA or unlock-key file is read by this loader. Encrypted administrator envelopes and rotation overlap remain pending. No production filesystem changed.
Author
Owner

Lifecycle storage row for the existing “What lives where on monitor01” table (D183):

| $XDG_DATA_HOME/infraternal/infraternal.sqlite (default ~/.local/share/infraternal/infraternal.sqlite; directory selected by --data) | Account-owned exited-session status/time, final screen (up to 1 MiB), output tail (up to 256 KiB), working directory and command; at most 128 retained exits/account (up to 160 MiB payload/account) | Explicit data-directory wipe removes it; each payload expires after 7 days or is removed on dismissal |

Lifecycle storage row for the existing “What lives where on monitor01” table (D183): | `$XDG_DATA_HOME/infraternal/infraternal.sqlite` (default `~/.local/share/infraternal/infraternal.sqlite`; directory selected by `--data`) | Account-owned exited-session status/time, final screen (up to 1 MiB), output tail (up to 256 KiB), working directory and command; at most 128 retained exits/account (up to 160 MiB payload/account) | Explicit data-directory wipe removes it; each payload expires after 7 days or is removed on dismissal |
Author
Owner

Data-layout table extension for D168 per-administrator encrypted CA copies (#78; implementation in progress, no production paths changed):

Path What On a fresh deploy
$XDG_DATA_HOME/infraternal/ca/administrators/administrator-<SHA256(user-id)>..json (default ~/.local/share/infraternal/ca/administrators/) One AES-256-GCM encrypted Ed25519 CA seed copy per explicit administrator generation, with authenticated public issuer/member/generation/salt metadata; owned directory0700/files0600, outside SQLite; no plaintext CA or unlock key Ordinary restart/redeploy retains it; explicit full data wipe removes it; role revocation removes the old generation copy

Bounded8192-byte no-follow reads, same-directory atomic rename and file/directory fsync. Role generation is checked under the SQLite writer lock before decrypt/install or publication. Server/browser HTTP never sends encrypted copies or seed. This extends existing CA root/public-issuer rows, not a new directory convention.

Data-layout table extension for D168 per-administrator encrypted CA copies (#78; implementation in progress, no production paths changed): | Path | What | On a fresh deploy | |---|---|---| | $XDG_DATA_HOME/infraternal/ca/administrators/administrator-<SHA256(user-id)>.<generation>.json (default ~/.local/share/infraternal/ca/administrators/) | One AES-256-GCM encrypted Ed25519 CA seed copy per explicit administrator generation, with authenticated public issuer/member/generation/salt metadata; owned directory0700/files0600, outside SQLite; no plaintext CA or unlock key | Ordinary restart/redeploy retains it; explicit full data wipe removes it; role revocation removes the old generation copy | Bounded8192-byte no-follow reads, same-directory atomic rename and file/directory fsync. Role generation is checked under the SQLite writer lock before decrypt/install or publication. Server/browser HTTP never sends encrypted copies or seed. This extends existing CA root/public-issuer rows, not a new directory convention.
Author
Owner

Documented the Feedback report path and rotation policy against the existing private data-directory layout from #34. Commit: 7f358e08. Paths: <data>/feedback/frames.jsonl and <data>/feedback/frames.1.jsonl; each file is capped at 8 MiB, directory 0700, files 0600, two files retained.

Documented the Feedback report path and rotation policy against the existing private data-directory layout from #34. Commit: 7f358e08. Paths: `<data>/feedback/frames.jsonl` and `<data>/feedback/frames.1.jsonl`; each file is capped at 8 MiB, directory 0700, files 0600, two files retained.
Author
Owner

Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Lanes merged into dev and deployed to monitor01 (acf83c7 in dev and prod; prod now runs release 9.4 line); later comments are layout-table notes. Reopen if anything is still missing.

Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Lanes merged into dev and deployed to monitor01 (acf83c7 in dev and prod; prod now runs release 9.4 line); later comments are layout-table notes. Reopen if anything is still missing.
kayg closed this issue 2026-10-28 17:52:24 +00:00
Sign in to join this conversation.
No labels
launch-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/infraternal#34
No description provided.