S1 tracer: minimal web client (passkey login, terminal over the real protocol) #21

Closed
opened 2026-10-06 11:48:16 +00:00 by kayg · 35 comments
Owner

Part of #9. Base dev 7174d6b. A deliberately bare client (it is thrown away when the designed UI lands): passkey setup and login against #17, then one full-screen ghostty-web terminal through packages/protocol, with resume after a drop, credit, and the end-to-end latency probe (keystroke → painted echo) that becomes the S1 performance gate.

Part of #9. Base `dev` `7174d6b`. A deliberately bare client (it is thrown away when the designed UI lands): passkey setup and login against #17, then one full-screen ghostty-web terminal through packages/protocol, with resume after a drop, credit, and the end-to-end latency probe (keystroke → painted echo) that becomes the S1 performance gate.
Author
Owner

Starting S1 tracer lane on branch t-web from base 7174d6bf6f. I am reading the protocol/auth contracts first and will keep all implementation changes inside apps/tracer/.

Starting S1 tracer lane on branch t-web from base 7174d6bf6f1880458a4166a2cf0fa45158d1742e. I am reading the protocol/auth contracts first and will keep all implementation changes inside apps/tracer/.
Author
Owner

Finding while reading the requested inputs: the task cites DECISIONS 87–88, but DECISIONS.md in this worktree ends at 86 (file tail confirms the last entry is 86). I’ll follow the present contracts and decisions 14, 41, 53, 63, 81, 84–86; this does not block the tracer lane.

Finding while reading the requested inputs: the task cites DECISIONS 87–88, but DECISIONS.md in this worktree ends at 86 (file tail confirms the last entry is 86). I’ll follow the present contracts and decisions 14, 41, 53, 63, 81, 84–86; this does not block the tracer lane.
Author
Owner

Contract proposal for t-server (no shared contract files are changed in this lane): keep the wire action ID consistent with contracts/plugin.md as (the task’s shorthand), called on mux stream 0. The successful Result JSON needs as the server’s canonical lowercase UUID string; the client converts it to the 16 bytes required by AttachTerm. Input JSON should be the generated action schema, with a host UUID for a host-scoped shell. AttachTerm and subsequent terminal frames use client-opened mux stream 1. Please confirm/adjust the exact input and result fields on this issue before server integration.

Contract proposal for t-server (no shared contract files are changed in this lane): keep the wire action ID consistent with contracts/plugin.md as (the task’s shorthand), called on mux stream 0. The successful Result JSON needs as the server’s canonical lowercase UUID string; the client converts it to the 16 bytes required by AttachTerm. Input JSON should be the generated action schema, with a host UUID for a host-scoped shell. AttachTerm and subsequent terminal frames use client-opened mux stream 1. Please confirm/adjust the exact input and result fields on this issue before server integration.
Author
Owner

Contract proposal for t-server (no shared contract files are changed in this lane): keep the wire action ID consistent with contracts/plugin.md as ssh.session.open (the task shorthand terminal.open), called on mux stream 0. The successful Result JSON needs session_id as the server canonical lowercase UUID string; the client converts it to the 16 bytes required by AttachTerm. Input JSON should be the generated action schema, with a host UUID for a host-scoped shell. AttachTerm and subsequent terminal frames use client-opened mux stream 1. Please confirm or adjust the exact input and result fields on this issue before server integration.

Contract proposal for t-server (no shared contract files are changed in this lane): keep the wire action ID consistent with contracts/plugin.md as `ssh.session.open` (the task shorthand `terminal.open`), called on mux stream 0. The successful Result JSON needs `session_id` as the server canonical lowercase UUID string; the client converts it to the 16 bytes required by AttachTerm. Input JSON should be the generated action schema, with a host UUID for a host-scoped shell. AttachTerm and subsequent terminal frames use client-opened mux stream 1. Please confirm or adjust the exact input and result fields on this issue before server integration.
Author
Owner

Playwright finding: the first-run browser flow returned 401 at /auth/setup-start because submitSetup disabled controls before constructing FormData. The test-double evidence was token-match=false and name-valid=false, without logging either submitted value. The failure screenshot also showed the login form still visible beside setup because the author form display rule overrode the hidden attribute. Fix: read FormData before disabling and enforce [hidden] display; rerunning the production-build browser scenario.

Playwright finding: the first-run browser flow returned 401 at /auth/setup-start because submitSetup disabled controls before constructing FormData. The test-double evidence was token-match=false and name-valid=false, without logging either submitted value. The failure screenshot also showed the login form still visible beside setup because the author form display rule overrode the hidden attribute. Fix: read FormData before disabling and enforce [hidden] display; rerunning the production-build browser scenario.
Author
Owner

Follow-up browser finding: after fixing empty FormData and hidden-form display, Chromium WebAuthn rejected navigator.credentials.create with “This is an invalid domain.” The test server advertised the loopback IP as the relying-party ID. I’m moving the test origin to localhost so the virtual authenticator uses the accepted local RP domain.

Follow-up browser finding: after fixing empty FormData and hidden-form display, Chromium WebAuthn rejected navigator.credentials.create with “This is an invalid domain.” The test server advertised the loopback IP as the relying-party ID. I’m moving the test origin to localhost so the virtual authenticator uses the accepted local RP domain.
Author
Owner

Finding: the tracer test double reused one terminal session across fresh ssh.session.open calls. Evidence: the probe rendered all 36 characters, but its sequence inherited the earlier two-byte echo and reported only 34/36; test/mock-server.ts now creates a fresh session for each open while Resume keeps the original session.

Finding: the tracer test double reused one terminal session across fresh ssh.session.open calls. Evidence: the probe rendered all 36 characters, but its sequence inherited the earlier two-byte echo and reported only 34/36; test/mock-server.ts now creates a fresh session for each open while Resume keeps the original session.
Author
Owner

Finished on t-web. HEAD: db7f61c6a3. The tracer build and browser test pass; the test covers virtual-authenticator setup/login, output echo, dropped-Ack resume/deduplication, and forced-drop resume. Probe evidence (36 synthetic keys): p50 71.90 ms, p95 72.90 ms, p99 73.00 ms, resume 92.40 ms. Production-build screenshots: apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-terminal.png and tracer-probe.png. Real daemon integration remains for the server lane; this browser run uses the explicitly marked auth/WebSocket test double.\n\nscripts/verify fast summary output (verbatim):\n\nadvisories ok, bans ok, licenses ok, sources ok\n\n+---------------------------+--------------+\n| Rust gate | Result |\n+---------------------------+--------------+\n| fmt | PASS |\n| clippy | PASS |\n| test | PASS |\n| cargo-deny | PASS |\n| static builds | PASS |\n+---------------------------+--------------+\n\n7 pass\n0 fail\n34390 expect() calls\nRan 7 tests across 2 files. [2.00s]\n

Finished on t-web. HEAD: db7f61c6a3528bbb94836c26e1f609b2faa2ae57. The tracer build and browser test pass; the test covers virtual-authenticator setup/login, output echo, dropped-Ack resume/deduplication, and forced-drop resume. Probe evidence (36 synthetic keys): p50 71.90 ms, p95 72.90 ms, p99 73.00 ms, resume 92.40 ms. Production-build screenshots: apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-terminal.png and tracer-probe.png. Real daemon integration remains for the server lane; this browser run uses the explicitly marked auth/WebSocket test double.\n\n`scripts/verify fast` summary output (verbatim):\n```\nadvisories ok, bans ok, licenses ok, sources ok\n\n+---------------------------+--------------+\n| Rust gate | Result |\n+---------------------------+--------------+\n| fmt | PASS |\n| clippy | PASS |\n| test | PASS |\n| cargo-deny | PASS |\n| static builds | PASS |\n+---------------------------+--------------+\n\n7 pass\n0 fail\n34390 expect() calls\nRan 7 tests across 2 files. [2.00s]\n```
Author
Owner

Finished on t-web. HEAD: db7f61c6a3. The tracer build and browser test pass; the test covers virtual-authenticator setup/login, output echo, dropped-Ack resume/deduplication, and forced-drop resume. Probe evidence (36 synthetic keys): p50 71.90 ms, p95 72.90 ms, p99 73.00 ms, resume 92.40 ms. Production-build screenshots: apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-terminal.png and tracer-probe.png. Real daemon integration remains for the server lane; this browser run uses the explicitly marked auth/WebSocket test double.

scripts/verify fast summary output (verbatim):

advisories ok, bans ok, licenses ok, sources ok

+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| 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.00s]
Finished on t-web. HEAD: db7f61c6a3528bbb94836c26e1f609b2faa2ae57. The tracer build and browser test pass; the test covers virtual-authenticator setup/login, output echo, dropped-Ack resume/deduplication, and forced-drop resume. Probe evidence (36 synthetic keys): p50 71.90 ms, p95 72.90 ms, p99 73.00 ms, resume 92.40 ms. Production-build screenshots: apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-terminal.png and tracer-probe.png. Real daemon integration remains for the server lane; this browser run uses the explicitly marked auth/WebSocket test double. `scripts/verify fast` summary output (verbatim): ``` advisories ok, bans ok, licenses ok, sources ok +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | 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.00s] ```
Author
Owner

Finding: packages/ui does not exist in this worktree (rg --files packages/ui reports no such directory). The tracer therefore uses its requested static HTML controls and the existing terminal styling techniques from the mockup; there was no package component to extend.

Finding: `packages/ui` does not exist in this worktree (`rg --files packages/ui` reports no such directory). The tracer therefore uses its requested static HTML controls and the existing terminal styling techniques from the mockup; there was no package component to extend.
Author
Owner

Orchestrator review of the web client (db7f61c, 8 atomic commits): good structure. Two items before integration:

  1. The probe number cannot be trusted yet: p50 71.9 ms against a local test double. That is about 14× the whole 5 ms overhead budget, and the value is suspiciously constant (p50 to p99 within 1 ms). That points to a fixed delay somewhere (headless rAF throttling, a timer, Nagle, or batching in the double), not real work. Follow-up job t-web-latency attributes it per hop.
  2. Action id: the client calls ssh.session.open (contracts/plugin.md). The agent lane uses terminal.open on leg B. Both are right at their own layer: ssh.session.open is the user-facing action (it is generated into the API, CLI and MCP), and the server maps it to the internal leg-B call terminal.open. The server lane (#19) must implement that mapping.
Orchestrator review of the web client (`db7f61c`, 8 atomic commits): good structure. Two items before integration: 1. **The probe number cannot be trusted yet:** p50 71.9 ms against a local test double. That is about 14× the whole 5 ms overhead budget, and the value is suspiciously constant (p50 to p99 within 1 ms). That points to a fixed delay somewhere (headless rAF throttling, a timer, Nagle, or batching in the double), not real work. Follow-up job `t-web-latency` attributes it per hop. 2. **Action id:** the client calls `ssh.session.open` (contracts/plugin.md). The agent lane uses `terminal.open` on leg B. Both are right at their own layer: `ssh.session.open` is the user-facing action (it is generated into the API, CLI and MCP), and the server maps it to the internal leg-B call `terminal.open`. The server lane (#19) must implement that mapping.
Author
Owner

Starting attribution work on branch t-web at base SHA db7f61c6a3. I’ll instrument key-to-paint across the probe, client and test double, then compare headless and headed Chromium runs.

Starting attribution work on branch t-web at base SHA db7f61c6a3528bbb94836c26e1f609b2faa2ae57. I’ll instrument key-to-paint across the probe, client and test double, then compare headless and headed Chromium runs.
Author
Owner

Finding: baseline headless Playwright instrumentation at db7f61c measured keydown→paint p50 74.60 / p99 75.90 ms. The browser's keydown/onData/encode/send work is <=0.10 ms p99; double receive→decode p99 0.24 ms, decode→echo encode p99 1.40 ms, and encode→send p99 0.02 ms. The budget is consumed after that: echo send→browser onmessage p50 11.85 ms; decode→term.write p50 27.60 ms because the synchronous 36-key probe creates a burst and TerminalClient serializes renderer writes; Ghostty's write callback arrives 16.80 ms after term.write; the following client rAF adds another 16.00 ms. Evidence: apps/tracer/src/terminal.ts drainOutput (one in-flight write and a second rAF), apps/tracer/node_modules/ghostty-web/dist/ghostty-web.js:2381-2390 (Ghostty schedules write callbacks via rAF). Current probe records the requestAnimationFrame timestamp and batches all 36 keys synchronously, so it includes queueing that an isolated keystroke would not.

Finding: baseline headless Playwright instrumentation at db7f61c measured keydown→paint p50 74.60 / p99 75.90 ms. The browser's keydown/onData/encode/send work is <=0.10 ms p99; double receive→decode p99 0.24 ms, decode→echo encode p99 1.40 ms, and encode→send p99 0.02 ms. The budget is consumed after that: echo send→browser onmessage p50 11.85 ms; decode→term.write p50 27.60 ms because the synchronous 36-key probe creates a burst and TerminalClient serializes renderer writes; Ghostty's write callback arrives 16.80 ms after term.write; the following client rAF adds another 16.00 ms. Evidence: apps/tracer/src/terminal.ts drainOutput (one in-flight write and a second rAF), apps/tracer/node_modules/ghostty-web/dist/ghostty-web.js:2381-2390 (Ghostty schedules write callbacks via rAF). Current probe records the requestAnimationFrame timestamp and batches all 36 keys synchronously, so it includes queueing that an isolated keystroke would not.
Author
Owner

Chromium throttling check: headed in Xvfb measured p50 70.20 / p99 71.10 ms; headed with --disable-renderer-backgrounding --disable-background-timer-throttling measured 74.20 / 75.20 ms. The constant delay persists in both modes, so those background flags do not explain it. The double emits one Output frame per single-byte Input (); the synchronous probe queues subsequent frames while one Ghostty write is in flight (). ws 8.18.3 calls accepted socket.setNoDelay() with its default true argument (), so Nagle is disabled.

Chromium throttling check: headed in Xvfb measured p50 70.20 / p99 71.10 ms; headed with --disable-renderer-backgrounding --disable-background-timer-throttling measured 74.20 / 75.20 ms. The constant delay persists in both modes, so those background flags do not explain it. The double emits one Output frame per single-byte Input (); the synchronous probe queues subsequent frames while one Ghostty write is in flight (). ws 8.18.3 calls accepted socket.setNoDelay() with its default true argument (), so Nagle is disabled.
Author
Owner

Chromium throttling check: headed in Xvfb measured p50 70.20 / p99 71.10 ms; headed with --disable-renderer-backgrounding --disable-background-timer-throttling measured 74.20 / 75.20 ms. The constant delay persists in both modes, so those background flags do not explain it. The double emits one Output frame per single-byte Input (apps/tracer/test/mock-server.ts lines 357-395); the synchronous probe queues subsequent frames while one Ghostty write is in flight (apps/tracer/src/terminal.ts lines 577-603). ws 8.18.3 calls accepted socket.setNoDelay() with its default true argument (apps/tracer/node_modules/ws/lib/websocket.js lines 237-242), so Nagle is disabled.

Chromium throttling check: headed in Xvfb measured p50 70.20 / p99 71.10 ms; headed with --disable-renderer-backgrounding --disable-background-timer-throttling measured 74.20 / 75.20 ms. The constant delay persists in both modes, so those background flags do not explain it. The double emits one Output frame per single-byte Input (apps/tracer/test/mock-server.ts lines 357-395); the synchronous probe queues subsequent frames while one Ghostty write is in flight (apps/tracer/src/terminal.ts lines 577-603). ws 8.18.3 calls accepted socket.setNoDelay() with its default true argument (apps/tracer/node_modules/ws/lib/websocket.js lines 237-242), so Nagle is disabled.
Author
Owner

Confirmed extra-frame contribution: after consuming the write in Ghostty's write callback (which is already scheduled with requestAnimationFrame), the same 36-key headless run fell from p50 74.60 / p99 75.90 ms to p50 40.70 / p99 41.90 ms. The new callback→paint gap is 0.10 ms p50/p99, replacing the old second-frame gap of about 16 ms. Residual decode→term.write p50 8.00 / p99 10.90 ms and ws.send→ws.onmessage p50 16.60 / p99 18.00 ms remain inflated by the probe's synchronous burst; next I’m measuring keys one at a time.

Confirmed extra-frame contribution: after consuming the write in Ghostty's write callback (which is already scheduled with requestAnimationFrame), the same 36-key headless run fell from p50 74.60 / p99 75.90 ms to p50 40.70 / p99 41.90 ms. The new callback→paint gap is 0.10 ms p50/p99, replacing the old second-frame gap of about 16 ms. Residual decode→term.write p50 8.00 / p99 10.90 ms and ws.send→ws.onmessage p50 16.60 / p99 18.00 ms remain inflated by the probe's synchronous burst; next I’m measuring keys one at a time.
Author
Owner

Final per-hop attribution from the 500-key headless production-bundle run. The browser and test double were aligned with five HTTP clock samples; the minimum RTT was 3.1 ms, so split one-way estimates assume a symmetric local path.

Hop p50 p99
keydown → onData 0.00 ms 0.10 ms
onData → encode 0.00 ms 0.20 ms
encode → ws.send 0.10 ms 0.20 ms
ws.send → double receive 0.36 ms 0.76 ms
double receive → decode 0.03 ms 0.10 ms
double decode → echo encode 0.05 ms 0.13 ms
double echo encode → send 0.00 ms 0.02 ms
double echo send → ws.onmessage 0.20 ms 1.00 ms
ws.onmessage → decode 0.00 ms 0.10 ms
decode → term.write 0.00 ms 0.10 ms
term.write → Ghostty write callback 14.30 ms 15.50 ms
write callback → paint frame 0.00 ms 0.10 ms
total keydown → painted echo 15.10 ms 16.30 ms

Attribution and checks:

  • The original 36-key synchronous batch measured p50 74.60 / p99 75.90 ms. It queued output behind one in-flight renderer write (decode→term.write p50 27.60 ms). ghostty-web 0.4.0 schedules its write callback on rAF; the client then waited for another rAF (16.00 ms p50). Consuming output in the Ghostty callback removed that extra frame; serializing probe keys through their painted echo removed batch queueing.
  • Chromium scheduling: after those fixes, raw headless 500-key p99 was 21.50 ms; --disable-renderer-backgrounding alone gave 16.70 ms, while --disable-background-timer-throttling alone gave 39.40 ms. The default headless gate now disables renderer backgrounding and measured p99 16.30 ms. Headed Xvfb measured p99 36.60 ms without flags and 28.70 ms with both flags, showing noisy fake-display scheduling.
  • Nagle: ws 8.18.3 invokes socket.setNoDelay() on the accepted socket with its default true value (apps/tracer/node_modules/ws/lib/websocket.js:241).
  • Ack and credit: input is sent immediately in TerminalClient.handleInput; Ack only releases retained input bytes, and the 1 MiB credit window governs server output. Neither gates a normal key on an Ack/credit round trip.
  • Probe detection: the 100 ms quiet timer only enables the run. It is outside the sample. Samples start at synthetic keydown and end in the Ghostty callback after the renderer has drawn that write; there is no follow-up rAF.

For an active iPhone or Mac terminal, renderer backgrounding should not apply. The measured path is still one display frame plus the actual network leg; refresh cadence and device/network conditions will differ from Xvfb. No physical iPhone or Mac was available for this run.

Final per-hop attribution from the 500-key headless production-bundle run. The browser and test double were aligned with five HTTP clock samples; the minimum RTT was 3.1 ms, so split one-way estimates assume a symmetric local path. | Hop | p50 | p99 | | --- | ---: | ---: | | keydown → onData | 0.00 ms | 0.10 ms | | onData → encode | 0.00 ms | 0.20 ms | | encode → ws.send | 0.10 ms | 0.20 ms | | ws.send → double receive | 0.36 ms | 0.76 ms | | double receive → decode | 0.03 ms | 0.10 ms | | double decode → echo encode | 0.05 ms | 0.13 ms | | double echo encode → send | 0.00 ms | 0.02 ms | | double echo send → ws.onmessage | 0.20 ms | 1.00 ms | | ws.onmessage → decode | 0.00 ms | 0.10 ms | | decode → term.write | 0.00 ms | 0.10 ms | | term.write → Ghostty write callback | 14.30 ms | 15.50 ms | | write callback → paint frame | 0.00 ms | 0.10 ms | | total keydown → painted echo | 15.10 ms | 16.30 ms | Attribution and checks: - The original 36-key synchronous batch measured p50 74.60 / p99 75.90 ms. It queued output behind one in-flight renderer write (decode→term.write p50 27.60 ms). ghostty-web 0.4.0 schedules its write callback on rAF; the client then waited for another rAF (16.00 ms p50). Consuming output in the Ghostty callback removed that extra frame; serializing probe keys through their painted echo removed batch queueing. - Chromium scheduling: after those fixes, raw headless 500-key p99 was 21.50 ms; --disable-renderer-backgrounding alone gave 16.70 ms, while --disable-background-timer-throttling alone gave 39.40 ms. The default headless gate now disables renderer backgrounding and measured p99 16.30 ms. Headed Xvfb measured p99 36.60 ms without flags and 28.70 ms with both flags, showing noisy fake-display scheduling. - Nagle: ws 8.18.3 invokes socket.setNoDelay() on the accepted socket with its default true value (apps/tracer/node_modules/ws/lib/websocket.js:241). - Ack and credit: input is sent immediately in TerminalClient.handleInput; Ack only releases retained input bytes, and the 1 MiB credit window governs server output. Neither gates a normal key on an Ack/credit round trip. - Probe detection: the 100 ms quiet timer only enables the run. It is outside the sample. Samples start at synthetic keydown and end in the Ghostty callback after the renderer has drawn that write; there is no follow-up rAF. For an active iPhone or Mac terminal, renderer backgrounding should not apply. The measured path is still one display frame plus the actual network leg; refresh cadence and device/network conditions will differ from Xvfb. No physical iPhone or Mac was available for this run.
Author
Owner

Finished on branch t-web at head ed994420be. scripts/verify fast exited 0. Verbatim gate summaries:

advisories ok, bans ok, licenses ok, sources ok

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

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

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

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

The separate tracer browser gate also passed: 500 keys, p50 15.10 ms / p99 16.30 ms.

Finished on branch t-web at head ed994420be80420976323bd02ce4faa6688287c4. scripts/verify fast exited 0. Verbatim gate summaries: advisories ok, bans ok, licenses ok, sources ok +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ==> 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 [4.20ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.15ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [0.75ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.16ms] (pass) split mux header preserves trailing Close [0.15ms] src/stream.test.ts: (pass) Rust and TypeScript preserve every frame at all boundaries and random multi-splits [1836.90ms] stream differential: 134 streams, 11439 schedules, zero divergences (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [6.15ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [1.85s] The separate tracer browser gate also passed: 500 keys, p50 15.10 ms / p99 16.30 ms.
Author
Owner

Orchestrator: I accept the attribution (ed99442). The 72 ms came from an extra rAF wait in the client plus background-renderer throttling in headless Chromium. Both are fixed or understood. What remains is 15.1 ms p50: almost all of it is term.write → Ghostty write callback (14.3 ms). That is the time to the next display frame, and no web terminal can paint sooner. Our code plus the local network is about 1 ms.
Gate definition, from now on: overhead = keydown → the echo bytes handed to the renderer (budget < 5 ms p99, DECISIONS 41), reported separately from arrival → painted, which must stay ≤ 1 frame (16.7 ms at 60 Hz, 8.3 ms at 120 Hz ProMotion). The probe already reports both hops.

Orchestrator: I accept the attribution (`ed99442`). The 72 ms came from an extra rAF wait in the client plus background-renderer throttling in headless Chromium. Both are fixed or understood. What remains is 15.1 ms p50: almost all of it is `term.write → Ghostty write callback` (14.3 ms). That is the time to the next display frame, and no web terminal can paint sooner. Our code plus the local network is about 1 ms. Gate definition, from now on: **overhead = keydown → the echo bytes handed to the renderer** (budget < 5 ms p99, DECISIONS 41), reported separately from **arrival → painted**, which must stay ≤ 1 frame (16.7 ms at 60 Hz, 8.3 ms at 120 Hz ProMotion). The probe already reports both hops.
Author
Owner

Owner hit this on monitor01: "The server returned an invalid account id." Cause: the sign-in form asks for an Account ID (a UUID). The owner typed something else, and the client's message blames the server. The setup was never finished: there are 0 users and the setup token is still pending. Fix (job auth-ux, server and client):

  1. Passkey sign-in is usernameless (discoverable credentials, resident keys are already required). One button, "Continue with passkey", and no ID field.
  2. A public status action ({setup_required}). The client shows only setup while no owner exists, and only sign-in after that.
  3. Error messages say who is at fault (input vs server) in plain words.
Owner hit this on monitor01: "The server returned an invalid account id." Cause: the sign-in form asks for an **Account ID** (a UUID). The owner typed something else, and the client's message blames the server. The setup was never finished: there are 0 users and the setup token is still pending. Fix (job `auth-ux`, server and client): 1. Passkey sign-in is **usernameless** (discoverable credentials, resident keys are already required). One button, "Continue with passkey", and no ID field. 2. A public `status` action (`{setup_required}`). The client shows only setup while no owner exists, and only sign-in after that. 3. Error messages say who is at fault (input vs server) in plain words.
Author
Owner

Starting client work on t-web at 1b4c907: status-first setup/sign-in screens and discoverable passkeys, resident-key browser tests and production screenshots. Coordinating additive status/login contract on #19. Decisions 24, 54, 80. Work will be committed separately on each lane; no deploy.

Starting client work on t-web at 1b4c907: status-first setup/sign-in screens and discoverable passkeys, resident-key browser tests and production screenshots. Coordinating additive status/login contract on #19. Decisions 24, 54, 80. Work will be committed separately on each lane; no deploy.
Author
Owner

Red browser evidence: target/passkey-job/status-red.log expects setup-form visible after loading unconfigured server; current UI returns hidden. New screen code reads status first, renders exactly one form, removes account/device inputs and recovery UUID copy, and distinguishes cancelled prompt, invalid setup token and server failure. Client auth module committed 38c0aa2 with fast gate and tsc passing. Existing latency probe baseline failed p99 39.1 ms against its 20 ms gate during concurrent builds; will rerun without compilation load.

Red browser evidence: target/passkey-job/status-red.log expects setup-form visible after loading unconfigured server; current UI returns hidden. New screen code reads status first, renders exactly one form, removes account/device inputs and recovery UUID copy, and distinguishes cancelled prompt, invalid setup token and server failure. Client auth module committed 38c0aa2 with fast gate and tsc passing. Existing latency probe baseline failed p99 39.1 ms against its 20 ms gate during concurrent builds; will rerun without compilation load.
Author
Owner

Finding: production-build Chromium resident-key setup and usernameless sign-in succeed with localStorage cleared. Four explicit mobile screenshots (390x844) are apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/{setup,signin}-{light,dark}.png. Automatic trace/failure captures were disabled in 53bf408 because they can retain auth secrets; generated trace archives removed. No visual-quality judgment claimed. Latency rerun under compilation load returned p99 25.7 ms; threshold remains unchanged.

Finding: production-build Chromium resident-key setup and usernameless sign-in succeed with localStorage cleared. Four explicit mobile screenshots (390x844) are apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/{setup,signin}-{light,dark}.png. Automatic trace/failure captures were disabled in 53bf408 because they can retain auth secrets; generated trace archives removed. No visual-quality judgment claimed. Latency rerun under compilation load returned p99 25.7 ms; threshold remains unchanged.
Author
Owner

Owner decisions 97–98 (on top of the running auth-ux job, for its follow-up): accounts have an internal ID (the WebAuthn user handle), a unique username (lowercase [a-z0-9._-], 1–32 characters, can be renamed), a display name and an optional email. Passkey name = username, displayName = display name. The wizard asks for username + display name. Sign-in is one usernameless button plus "use a different passkey…" (cross-device QR or security key).

Owner decisions 97–98 (on top of the running `auth-ux` job, for its follow-up): accounts have an internal ID (the WebAuthn user handle), a unique username (lowercase `[a-z0-9._-]`, 1–32 characters, can be renamed), a display name and an optional email. Passkey name = username, displayName = display name. The wizard asks for username + display name. Sign-in is one usernameless button plus "use a different passkey…" (cross-device QR or security key).
Author
Owner

Client lane finished on t-web at 0b18339cce. Full fast gate output verbatim, part 1/2:


==> fmt

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

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

running 0 tests

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

     Running tests/shim.rs (target/debug/deps/shim-127934b20fa33652)

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

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

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

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_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::split_mux_header_preserves_trailing_close ... ok
test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok
test tests::oversized_encode_keeps_the_reusable_output_unchanged ... 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::all_short_frame_splits_match_direct_decoding ... ok
test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok

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

     Running unittests src/lib.rs (target/debug/deps/infraternal_server-7548ec02aea5dda3)

running 12 tests
test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok
test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok
test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok
test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok
test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok
test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok
test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok
test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok
test auth::tests::review_old_words_race_rotation ... ok
test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok
test auth::tests::setup_expiry_single_announcement_and_parallel_redemption ... ok
test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok

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

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

running 12 tests
test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile
test frame::checks::tests::invalid_lengths_types_and_utf8 ... ok
test frame::checks::golden::every_frozen_message ... 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 frame::checks::tests::golden_and_fragmented ... ok
test ring::checks::tests::wrap_and_exact_offsets ... ok
test terminal::checks::tests::margins_tabs_charsets_and_modes_continue ... ok
test frame::checks::golden::exact_maximum_and_coalesced_frames ... 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. 9 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.17s

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

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

   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/t-web/Cargo.lock:24:1
   │  
24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index
25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index
   │ ╰───────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ base64 v0.21.7
     ├── base64urlsafedata v0.5.5
     │   ├── webauthn-attestation-ca v0.5.5
     │   │   └── webauthn-rs-core v0.5.5
     │   │       └── webauthn-rs v0.5.5
     │   │           └── infraternal-server v0.1.0
     │   │               └── infraternal v0.1.0
     │   ├── webauthn-rs v0.5.5 (*)
     │   ├── webauthn-rs-core v0.5.5 (*)
     │   └── webauthn-rs-proto v0.5.5
     │       └── webauthn-rs-core v0.5.5 (*)
     ├── webauthn-rs-core v0.5.5 (*)
     └── webauthn-rs-proto v0.5.5 (*)
   ├ base64 v0.22.1
     ├── alacritty_terminal v0.25.1
     │   └── infraternal-shim v0.1.0
     │       ├── infraternal v0.1.0
     │       └── infraternal-fuzz 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 (*)

warning[duplicate]: found 3 duplicate entries for crate 'getrandom'
   ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:88:1
   │  
88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index
89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index
90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index
   │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ getrandom v0.2.17
     └── rand_core v0.6.4
         ├── bip39 v2.2.2
         │   └── infraternal-server v0.1.0
         │       └── infraternal v0.1.0
         ├── crypto-common v0.1.7
         │   ├── aead v0.5.2
         │   │   └── aes-gcm v0.10.3
         │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   ├── cipher v0.4.4
         │   │   ├── aes v0.8.4
         │   │   │   └── aes-gcm v0.10.3 (*)
         │   │   ├── aes-gcm v0.10.3 (*)
         │   │   └── ctr v0.9.2
         │   │       └── aes-gcm v0.10.3 (*)
         │   ├── digest v0.10.7
         │   │   ├── blake2 v0.10.6
         │   │   │   └── argon2 v0.5.3
         │   │   │       └── infraternal-server v0.1.0 (*)
         │   │   ├── hmac v0.12.1
         │   │   │   └── hkdf v0.12.4
         │   │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   │   └── sha2 v0.10.9
         │   │       ├── infraternal-server v0.1.0 (*)
         │   │       ├── sqlx-core v0.8.6
         │   │       │   ├── sqlx v0.8.6
         │   │       │   │   ├── infraternal v0.1.0 (*)
         │   │       │   │   └── infraternal-server v0.1.0 (*)
         │   │       │   ├── sqlx-macros v0.8.6
         │   │       │   │   └── sqlx v0.8.6 (*)
         │   │       │   ├── sqlx-macros-core v0.8.6
         │   │       │   │   └── sqlx-macros v0.8.6 (*)
         │   │       │   └── sqlx-sqlite v0.8.6
         │   │       │       ├── sqlx v0.8.6 (*)
         │   │       │       └── sqlx-macros-core v0.8.6 (*)
         │   │       └── sqlx-macros-core v0.8.6 (*)
         │   └── universal-hash v0.5.1
         │       └── polyval v0.6.2
         │           └── ghash v0.5.1
         │               └── aes-gcm v0.10.3 (*)
         ├── password-hash v0.5.0
         │   └── argon2 v0.5.3 (*)
         ├── rand v0.8.8
         │   └── bip39 v2.2.2 (*)
         └── rand_chacha v0.3.1
             └── rand v0.8.8 (*)
   ├ getrandom v0.3.4
     └── rand_core v0.9.5
         ├── rand v0.9.5
         │   ├── infraternal-server v0.1.0
         │   │   └── infraternal v0.1.0
         │   └── 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
     │       │       ├── openssl v0.10.81
     │       │       │   ├── infraternal-server v0.1.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 (*)
     │       │       ├── webauthn-attestation-ca v0.5.5 (*)
     │       │       └── webauthn-rs-core v0.5.5 (*)
     │       └── (build) openssl-sys v0.9.117 (*)
     └── uuid v1.27.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/t-web/Cargo.lock:93:1
   │  
93 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index
94 │ │ 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
         └── 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 (*)

warning[duplicate]: found 2 duplicate entries for crate 'r-efi'
    ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:183:1
    │  
183 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index
184 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ r-efi v5.3.0
      └── getrandom v0.3.4
          └── rand_core v0.9.5
              ├── rand v0.9.5
              │   ├── infraternal-server v0.1.0
              │   │   └── infraternal v0.1.0
              │   └── 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
          │       │       ├── openssl v0.10.81
          │       │       │   ├── infraternal-server v0.1.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 (*)
          │       │       ├── webauthn-attestation-ca v0.5.5 (*)
          │       │       └── webauthn-rs-core v0.5.5 (*)
          │       └── (build) openssl-sys v0.9.117 (*)
          └── uuid v1.27.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/t-web/Cargo.lock:185:1
    │  
185 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index
186 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand v0.8.8
      └── bip39 v2.2.2
          └── infraternal-server v0.1.0
              └── infraternal v0.1.0
    ├ rand v0.9.5
      ├── infraternal-server v0.1.0
      │   └── infraternal v0.1.0
      └── 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/t-web/Cargo.lock:187:1
    │  
187 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index
188 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand_chacha v0.3.1
      └── rand v0.8.8
          └── bip39 v2.2.2
              └── infraternal-server v0.1.0
                  └── infraternal v0.1.0
    ├ rand_chacha v0.9.0
      ├── rand v0.9.5
      │   ├── infraternal-server v0.1.0
      │   │   └── infraternal v0.1.0
      │   └── 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/t-web/Cargo.lock:189:1
    │  
189 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index
190 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand_core v0.6.4
      ├── bip39 v2.2.2
      │   └── infraternal-server v0.1.0
      │       └── infraternal v0.1.0
      ├── crypto-common v0.1.7
      │   ├── aead v0.5.2
      │   │   └── aes-gcm v0.10.3
      │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   ├── cipher v0.4.4
      │   │   ├── aes v0.8.4
      │   │   │   └── aes-gcm v0.10.3 (*)
      │   │   ├── aes-gcm v0.10.3 (*)
      │   │   └── ctr v0.9.2
      │   │       └── aes-gcm v0.10.3 (*)
      │   ├── digest v0.10.7
      │   │   ├── blake2 v0.10.6
      │   │   │   └── argon2 v0.5.3
      │   │   │       └── infraternal-server v0.1.0 (*)
      │   │   ├── hmac v0.12.1
      │   │   │   └── hkdf v0.12.4
      │   │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   │   └── 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
      │   └── 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/t-web/Cargo.lock:227:1
    │  
227 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index
228 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ syn v2.0.119
      ├── asn1-rs-derive v0.5.1
      │   └── asn1-rs v0.6.2
      │       ├── der-parser v9.0.0
      │       │   ├── webauthn-rs-core v0.5.5
      │       │   │   └── webauthn-rs v0.5.5
      │       │   │       └── infraternal-server v0.1.0
      │       │   │           └── infraternal v0.1.0
      │       │   └── x509-parser v0.16.0
      │       │       └── webauthn-rs-core v0.5.5 (*)
      │       ├── oid-registry v0.7.1
      │       │   └── x509-parser v0.16.0 (*)
      │       └── x509-parser v0.16.0 (*)
      ├── asn1-rs-impl v0.2.0
      │   └── asn1-rs v0.6.2 (*)
      ├── openssl-macros v0.1.1
      │   └── openssl v0.10.81
      │       ├── infraternal-server v0.1.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 (*)
      │       ├── 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 (*)
      │       ├── 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-fuzz 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 (*)
                      │   └── webauthn-rs-core v0.5.5 (*)
                      └── webauthn-rs-core v0.5.5 (*)
    ├ syn v3.0.6
      ├── clap_derive v4.6.7
      │   └── clap v4.6.7
      │       ├── criterion v0.7.0
      │       │   └── (dev) infraternal-protocol v0.1.0
      │       │       └── infraternal-fuzz 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
      │   │   │   │           └── 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 (*)
      │   ├── der-parser v9.0.0 (*)
      │   ├── icu_collections v2.3.0
      │   │   ├── icu_normalizer v2.3.0
Client lane finished on t-web at 0b18339cce0b2a2588fb7797e0c5679c9e6beeab. Full fast gate output verbatim, part 1/2: ```text ==> fmt ==> clippy Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.17s ==> test Finished `test` profile [unoptimized + debuginfo] target(s) in 0.17s Running unittests src/main.rs (target/debug/deps/infraternal-35f142d7f784daf3) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/shim.rs (target/debug/deps/shim-127934b20fa33652) running 7 tests test double_fork_survives_parent_death ... ok test disallowed_signal_only_disconnects_peer ... ok test replacement_connection_and_malformed_limit ... ok active test user_scope_survives_parent_unit_stop ... ok test real_shell_reconnect_resize_and_retained_exit ... ok test attached_backpressure_and_detached_progress ... ok test ring_wrap_snapshot_repaints_real_vim ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.20s Running unittests src/lib.rs (target/debug/deps/infraternal_agent-eadaa10b8c42bfd9) 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_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::split_mux_header_preserves_trailing_close ... ok test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok test tests::oversized_encode_keeps_the_reusable_output_unchanged ... 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::all_short_frame_splits_match_direct_decoding ... ok test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (target/debug/deps/infraternal_server-7548ec02aea5dda3) running 12 tests test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok test auth::tests::review_old_words_race_rotation ... ok test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok test auth::tests::setup_expiry_single_announcement_and_parallel_redemption ... ok test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.45s Running unittests src/lib.rs (target/debug/deps/infraternal_shim-ed89d744f989a5c2) running 12 tests test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile test frame::checks::tests::invalid_lengths_types_and_utf8 ... ok test frame::checks::golden::every_frozen_message ... 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 frame::checks::tests::golden_and_fragmented ... ok test ring::checks::tests::wrap_and_exact_offsets ... ok test terminal::checks::tests::margins_tabs_charsets_and_modes_continue ... ok test frame::checks::golden::exact_maximum_and_coalesced_frames ... 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. 9 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.17s Running tests/detach.rs (target/debug/deps/detach-61348d2d934a9ab8) 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.68s 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/t-web/Cargo.lock:24:1 │ 24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────┘ lock entries │ ├ base64 v0.21.7 ├── base64urlsafedata v0.5.5 │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── webauthn-rs v0.5.5 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-proto v0.5.5 │ └── webauthn-rs-core v0.5.5 (*) ├── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-proto v0.5.5 (*) ├ base64 v0.22.1 ├── alacritty_terminal v0.25.1 │ └── infraternal-shim v0.1.0 │ ├── infraternal v0.1.0 │ └── infraternal-fuzz 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 (*) warning[duplicate]: found 3 duplicate entries for crate 'getrandom' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:88:1 │ 88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ getrandom v0.2.17 └── rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── 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 │ │ ├── openssl v0.10.81 │ │ │ ├── infraternal-server v0.1.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 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.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/t-web/Cargo.lock:93:1 │ 93 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 94 │ │ 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 └── 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 (*) warning[duplicate]: found 2 duplicate entries for crate 'r-efi' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:183:1 │ 183 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 184 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────┘ lock entries │ ├ r-efi v5.3.0 └── getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── 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 │ │ ├── openssl v0.10.81 │ │ │ ├── infraternal-server v0.1.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 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.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/t-web/Cargo.lock:185:1 │ 185 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index 186 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand v0.9.5 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 └── 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/t-web/Cargo.lock:187:1 │ 187 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 188 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_chacha v0.3.1 └── rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── 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/t-web/Cargo.lock:189:1 │ 189 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 190 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── 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 │ └── 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/t-web/Cargo.lock:227:1 │ 227 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 228 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────┘ lock entries │ ├ syn v2.0.119 ├── asn1-rs-derive v0.5.1 │ └── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── asn1-rs-impl v0.2.0 │ └── asn1-rs v0.6.2 (*) ├── openssl-macros v0.1.1 │ └── openssl v0.10.81 │ ├── infraternal-server v0.1.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 (*) │ ├── 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 (*) │ ├── 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-fuzz 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 (*) │ └── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ syn v3.0.6 ├── clap_derive v4.6.7 │ └── clap v4.6.7 │ ├── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ └── infraternal-fuzz 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 │ │ │ │ └── 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 (*) │ ├── der-parser v9.0.0 (*) │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 ```
Author
Owner

Client lane finished on t-web at 0b18339cce. Full fast gate output verbatim, part 2/2:

      │   │   │   └── 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 (*)
      ├── serde_derive v1.0.229
      │   ├── serde v1.0.229
      │   │   ├── alacritty_terminal v0.25.1
      │   │   │   └── infraternal-shim v0.1.0
      │   │   │       ├── infraternal 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
      │   │   │   ├── 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-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
      │   │   │   │   └── infraternal-server v0.1.0 (*)
      │   │   │   └── 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 (*)
      │   │   ├── 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-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       └── sqlx-sqlite v0.8.6 (*)
      ├── tokio-macros v2.7.2
      │   └── tokio v1.53.2
      │       ├── axum v0.8.9 (*)
      │       ├── hyper v1.11.1
      │       │   ├── axum v0.8.9 (*)
      │       │   └── hyper-util v0.1.21
      │       │       └── axum v0.8.9 (*)
      │       ├── hyper-util v0.1.21 (*)
      │       ├── infraternal v0.1.0 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       ├── sqlx-macros-core v0.8.6 (*)
      │       ├── tokio-stream v0.1.19
      │       │   └── sqlx-core v0.8.6 (*)
      │       └── tower v0.5.3
      │           ├── axum v0.8.9 (*)
      │           └── (dev) infraternal-server v0.1.0 (*)
      ├── wasm-bindgen-macro-support v0.2.129
      │   └── wasm-bindgen-macro v0.2.129
      │       └── wasm-bindgen v0.2.129
      │           ├── js-sys v0.3.106
      │           │   └── web-sys v0.3.106
      │           │       └── plotters v0.3.7
      │           │           └── criterion v0.7.0 (*)
      │           ├── 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/t-web/Cargo.lock:230:1
    │  
230 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index
231 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ synstructure v0.13.2
      └── asn1-rs-derive v0.5.1
          └── asn1-rs v0.6.2
              ├── der-parser v9.0.0
              │   ├── webauthn-rs-core v0.5.5
              │   │   └── webauthn-rs v0.5.5
              │   │       └── infraternal-server v0.1.0
              │   │           └── infraternal v0.1.0
              │   └── x509-parser v0.16.0
              │       └── webauthn-rs-core v0.5.5 (*)
              ├── oid-registry v0.7.1
              │   └── x509-parser v0.16.0 (*)
              └── x509-parser v0.16.0 (*)
    ├ synstructure v0.14.0
      ├── yoke-derive v0.8.4
      │   └── 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/t-web/Cargo.lock:232:1
    │  
232 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index
233 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index
    │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ thiserror v1.0.69
      ├── asn1-rs v0.6.2
      │   ├── der-parser v9.0.0
      │   │   ├── webauthn-rs-core v0.5.5
      │   │   │   └── webauthn-rs v0.5.5
      │   │   │       └── infraternal-server v0.1.0
      │   │   │           └── infraternal v0.1.0
      │   │   └── x509-parser v0.16.0
      │   │       └── webauthn-rs-core v0.5.5 (*)
      │   ├── oid-registry v0.7.1
      │   │   └── x509-parser v0.16.0 (*)
      │   └── x509-parser v0.16.0 (*)
      ├── webauthn-rs-core v0.5.5 (*)
      └── x509-parser v0.16.0 (*)
    ├ thiserror v2.0.21
      ├── infraternal-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 (*)

warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl'
    ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:234:1
    │  
234 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index
235 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ thiserror-impl v1.0.69
      └── thiserror v1.0.69
          ├── asn1-rs v0.6.2
          │   ├── der-parser v9.0.0
          │   │   ├── webauthn-rs-core v0.5.5
          │   │   │   └── webauthn-rs v0.5.5
          │   │   │       └── infraternal-server v0.1.0
          │   │   │           └── infraternal v0.1.0
          │   │   └── x509-parser v0.16.0
          │   │       └── webauthn-rs-core v0.5.5 (*)
          │   ├── oid-registry v0.7.1
          │   │   └── x509-parser v0.16.0 (*)
          │   └── x509-parser v0.16.0 (*)
          ├── webauthn-rs-core v0.5.5 (*)
          └── x509-parser v0.16.0 (*)
    ├ thiserror-impl v2.0.21
      └── thiserror v2.0.21
          ├── infraternal-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 (*)

warning[duplicate]: found 2 duplicate entries for crate 'windows-sys'
    ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:278:1
    │  
278 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index
279 │ │ 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-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-fuzz v0.1.0
      │               └── infraternal v0.1.0
      ├── 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-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 (*)
      ├── home v0.5.12
      │   └── alacritty_terminal v0.25.1 (*)
      ├── mio v1.2.4
      │   └── tokio v1.53.2
      │       ├── axum v0.8.9
      │       │   └── infraternal-server v0.1.0
      │       │       └── infraternal v0.1.0 (*)
      │       ├── hyper v1.11.1
      │       │   ├── axum v0.8.9 (*)
      │       │   └── hyper-util v0.1.21
      │       │       └── axum v0.8.9 (*)
      │       ├── hyper-util v0.1.21 (*)
      │       ├── 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 (*)
      │       ├── sqlx-macros-core v0.8.6 (*)
      │       ├── tokio-stream v0.1.19
      │       │   └── sqlx-core v0.8.6 (*)
      │       └── tower v0.5.3
      │           ├── axum v0.8.9 (*)
      │           └── (dev) infraternal-server v0.1.0 (*)
      ├── miow v0.6.1
      │   └── alacritty_terminal v0.25.1 (*)
      ├── 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.15s
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: 9612768 bytes
    Finished `release` profile [optimized] target(s) in 0.18s
target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped
PT_INTERP: absent; size: 8053768 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         |
+---------------------------+--------------+

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

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 [1944.63ms]
(pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [8.82ms]

 7 pass
 0 fail
 34390 expect() calls
Ran 7 tests across 2 files. [1.96s]
Client lane finished on t-web at 0b18339cce0b2a2588fb7797e0c5679c9e6beeab. Full fast gate output verbatim, part 2/2: ```text │ │ │ └── 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 (*) ├── serde_derive v1.0.229 │ ├── serde v1.0.229 │ │ ├── alacritty_terminal v0.25.1 │ │ │ └── infraternal-shim v0.1.0 │ │ │ ├── infraternal 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 │ │ │ ├── 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-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 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── 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 (*) │ │ ├── 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-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 (*) ├── tokio-macros v2.7.2 │ └── tokio v1.53.2 │ ├── axum v0.8.9 (*) │ ├── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ └── hyper-util v0.1.21 │ │ └── axum v0.8.9 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ └── tower v0.5.3 │ ├── axum v0.8.9 (*) │ └── (dev) infraternal-server v0.1.0 (*) ├── wasm-bindgen-macro-support v0.2.129 │ └── wasm-bindgen-macro v0.2.129 │ └── wasm-bindgen v0.2.129 │ ├── js-sys v0.3.106 │ │ └── web-sys v0.3.106 │ │ └── plotters v0.3.7 │ │ └── criterion v0.7.0 (*) │ ├── 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/t-web/Cargo.lock:230:1 │ 230 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 231 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ synstructure v0.13.2 └── asn1-rs-derive v0.5.1 └── asn1-rs v0.6.2 ├── der-parser v9.0.0 │ ├── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── x509-parser v0.16.0 │ └── webauthn-rs-core v0.5.5 (*) ├── oid-registry v0.7.1 │ └── x509-parser v0.16.0 (*) └── x509-parser v0.16.0 (*) ├ synstructure v0.14.0 ├── yoke-derive v0.8.4 │ └── 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/t-web/Cargo.lock:232:1 │ 232 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 233 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror v2.0.21 ├── infraternal-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 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:234:1 │ 234 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 235 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror-impl v1.0.69 └── thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror-impl v2.0.21 └── thiserror v2.0.21 ├── infraternal-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 (*) warning[duplicate]: found 2 duplicate entries for crate 'windows-sys' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:278:1 │ 278 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index 279 │ │ 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-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-fuzz v0.1.0 │ └── infraternal v0.1.0 ├── 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-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 (*) ├── home v0.5.12 │ └── alacritty_terminal v0.25.1 (*) ├── mio v1.2.4 │ └── tokio v1.53.2 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ ├── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ └── hyper-util v0.1.21 │ │ └── axum v0.8.9 (*) │ ├── hyper-util v0.1.21 (*) │ ├── 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 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ └── tower v0.5.3 │ ├── axum v0.8.9 (*) │ └── (dev) infraternal-server v0.1.0 (*) ├── miow v0.6.1 │ └── alacritty_terminal v0.25.1 (*) ├── 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.15s 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: 9612768 bytes Finished `release` profile [optimized] target(s) in 0.18s target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 8053768 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 | +---------------------------+--------------+ ==> 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 [4.64ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.15ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [0.81ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.21ms] (pass) split mux header preserves trailing Close [0.17ms] 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 [1944.63ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [8.82ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [1.96s] ```
Author
Owner

Client verification: all three production-build Playwright tests pass; CTAP2.1 resident/UV/PRF authenticator, cookie and localStorage clearing, errors and 30 render samples per state. Build main.js 49,465 bytes; deferred terminal 662,827 bytes. Linux 6.12.111 x86_64, 8 vCPUs, i9-9900K 3.60 GHz. Review screenshots (390x844 light/dark): apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/{setup,signin}-{light,dark}.png. Self-review in apps/tracer/README.md; no phone, external visual approval or pinned perf-VM claim. Server API integration remains in t-server until orchestrator merges. No deploy or push. Browser output verbatim:

$ bun x playwright test
[WebServer] $ bun run build.ts
[WebServer] built main.js, chunk-sxzajhbf.js, chunk-6vcxv7p5.js
[WebServer] tracer TEST DOUBLE listening on http://localhost:4173

Running 3 tests using 1 worker

(node:1404679) 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)
S1 probe result (500 keys)
Painted echoes: 500 / 500
p50: 14.90 ms
p95: 16.00 ms
p99: 17.60 ms
keydown → onData: p50 0.00 ms, p99 0.10 ms
onData → encode: p50 0.00 ms, p99 0.20 ms
encode → ws.send: p50 0.10 ms, p99 0.50 ms
ws.onmessage → decode: p50 0.00 ms, p99 0.10 ms
decode → term.write: p50 0.00 ms, p99 0.10 ms
term.write → callback: p50 13.90 ms, p99 15.80 ms
callback → paint rAF: p50 0.00 ms, p99 0.10 ms
ws.send → ws.onmessage: p50 0.80 ms, p99 5.50 ms (includes the double and both local socket legs)
Time to resume: 79.60 ms
S1 per-hop attribution (500 keys)
Clock alignment: -2895.265 ms offset; best HTTP RTT 2.700 ms (cross-process one-way splits assume a symmetric local path).
Trace coverage: 500 browser keys, 2004 double marks.
keydown → onData: p50 0.00 ms, p99 0.10 ms (500 keys)
onData → encode: p50 0.00 ms, p99 0.20 ms (500 keys)
encode → ws.send: p50 0.10 ms, p99 0.50 ms (500 keys)
ws.send → double receive: p50 0.49 ms, p99 2.41 ms (500 keys)
double receive → decode: p50 0.04 ms, p99 0.14 ms (500 keys)
double decode → echo encode: p50 0.05 ms, p99 0.14 ms (500 keys)
double echo encode → send: p50 0.00 ms, p99 0.02 ms (500 keys)
double echo send → ws.onmessage: p50 0.14 ms, p99 4.82 ms (500 keys)
ws.onmessage → decode: p50 0.00 ms, p99 0.10 ms (500 keys)
decode → term.write: p50 0.00 ms, p99 0.10 ms (500 keys)
term.write → write callback: p50 13.90 ms, p99 15.80 ms (500 keys)
write callback → paint rAF: p50 0.00 ms, p99 0.10 ms (500 keys)
S1 screenshots: /home/kayg/Developer/infraternal/.worktrees/t-web/apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-terminal.png, /home/kayg/Developer/infraternal/.worktrees/t-web/apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-probe.png
  ✓  1 test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe (11.6s)
[WebServer] test-double setup denied: owner=false token-match=false name-valid=true
  ✓  2 test/terminal.spec.ts:252:1 › status failure, invalid setup token, and cancelled passkey have distinct guidance (996ms)
Access render upper bound (setup, n=30, local production build): p50 117.6000000089407 ms, p99 217.09999999403954 ms
Access render upper bound (signin, n=30, local production build): p50 125.20000000298023 ms, p99 169.5 ms
  ✓  3 test/terminal.spec.ts:283:1 › access screens render within the local first-paint budget (10.0s)

  3 passed (24.6s)
Client verification: all three production-build Playwright tests pass; CTAP2.1 resident/UV/PRF authenticator, cookie and localStorage clearing, errors and 30 render samples per state. Build main.js 49,465 bytes; deferred terminal 662,827 bytes. Linux 6.12.111 x86_64, 8 vCPUs, i9-9900K 3.60 GHz. Review screenshots (390x844 light/dark): apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/{setup,signin}-{light,dark}.png. Self-review in apps/tracer/README.md; no phone, external visual approval or pinned perf-VM claim. Server API integration remains in t-server until orchestrator merges. No deploy or push. Browser output verbatim: ```text $ bun x playwright test [WebServer] $ bun run build.ts [WebServer] built main.js, chunk-sxzajhbf.js, chunk-6vcxv7p5.js [WebServer] tracer TEST DOUBLE listening on http://localhost:4173 Running 3 tests using 1 worker (node:1404679) 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) S1 probe result (500 keys) Painted echoes: 500 / 500 p50: 14.90 ms p95: 16.00 ms p99: 17.60 ms keydown → onData: p50 0.00 ms, p99 0.10 ms onData → encode: p50 0.00 ms, p99 0.20 ms encode → ws.send: p50 0.10 ms, p99 0.50 ms ws.onmessage → decode: p50 0.00 ms, p99 0.10 ms decode → term.write: p50 0.00 ms, p99 0.10 ms term.write → callback: p50 13.90 ms, p99 15.80 ms callback → paint rAF: p50 0.00 ms, p99 0.10 ms ws.send → ws.onmessage: p50 0.80 ms, p99 5.50 ms (includes the double and both local socket legs) Time to resume: 79.60 ms S1 per-hop attribution (500 keys) Clock alignment: -2895.265 ms offset; best HTTP RTT 2.700 ms (cross-process one-way splits assume a symmetric local path). Trace coverage: 500 browser keys, 2004 double marks. keydown → onData: p50 0.00 ms, p99 0.10 ms (500 keys) onData → encode: p50 0.00 ms, p99 0.20 ms (500 keys) encode → ws.send: p50 0.10 ms, p99 0.50 ms (500 keys) ws.send → double receive: p50 0.49 ms, p99 2.41 ms (500 keys) double receive → decode: p50 0.04 ms, p99 0.14 ms (500 keys) double decode → echo encode: p50 0.05 ms, p99 0.14 ms (500 keys) double echo encode → send: p50 0.00 ms, p99 0.02 ms (500 keys) double echo send → ws.onmessage: p50 0.14 ms, p99 4.82 ms (500 keys) ws.onmessage → decode: p50 0.00 ms, p99 0.10 ms (500 keys) decode → term.write: p50 0.00 ms, p99 0.10 ms (500 keys) term.write → write callback: p50 13.90 ms, p99 15.80 ms (500 keys) write callback → paint rAF: p50 0.00 ms, p99 0.10 ms (500 keys) S1 screenshots: /home/kayg/Developer/infraternal/.worktrees/t-web/apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-terminal.png, /home/kayg/Developer/infraternal/.worktrees/t-web/apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-probe.png ✓ 1 test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe (11.6s) [WebServer] test-double setup denied: owner=false token-match=false name-valid=true ✓ 2 test/terminal.spec.ts:252:1 › status failure, invalid setup token, and cancelled passkey have distinct guidance (996ms) Access render upper bound (setup, n=30, local production build): p50 117.6000000089407 ms, p99 217.09999999403954 ms Access render upper bound (signin, n=30, local production build): p50 125.20000000298023 ms, p99 169.5 ms ✓ 3 test/terminal.spec.ts:283:1 › access screens render within the local first-paint budget (10.0s) 3 passed (24.6s) ```
Author
Owner

Additional cross-lane evidence: scripts/browser-auth/check-tracer.mjs in t-server serves the production t-web/dist read-only against the actual Rust auth router via private IPC. PASS: owner setup, 24-word acknowledgement, resident PRF sign-in with cookies/localStorage cleared, authenticated identity and DEK unwrap, Chromium 149.0.7827.55. Evidence: t-server/target/passkey-job/paired-browser.log. This supplements the client test double; no lane merge, push or deploy was performed.

Additional cross-lane evidence: scripts/browser-auth/check-tracer.mjs in t-server serves the production t-web/dist read-only against the actual Rust auth router via private IPC. PASS: owner setup, 24-word acknowledgement, resident PRF sign-in with cookies/localStorage cleared, authenticated identity and DEK unwrap, Chromium 149.0.7827.55. Evidence: t-server/target/passkey-job/paired-browser.log. This supplements the client test double; no lane merge, push or deploy was performed.
Author
Owner

Final client head: t-web 639ac27684 (supersedes earlier completion SHA after assertion/copy hardening). Full fast gate output verbatim, part 1/2:


==> fmt

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

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

running 0 tests

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

     Running tests/shim.rs (target/debug/deps/shim-127934b20fa33652)

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

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

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

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_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::split_mux_header_preserves_trailing_close ... ok
test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok
test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok
test tests::oversized_encode_keeps_the_reusable_output_unchanged ... ok
test stream_tests::all_short_frame_splits_match_direct_decoding ... 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 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-7548ec02aea5dda3)

running 12 tests
test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok
test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok
test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok
test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok
test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok
test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok
test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok
test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok
test auth::tests::review_old_words_race_rotation ... ok
test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok
test auth::tests::setup_expiry_single_announcement_and_parallel_redemption ... ok
test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok

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

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

running 12 tests
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::tests::invalid_lengths_types_and_utf8 ... 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 frame::checks::golden::exact_maximum_and_coalesced_frames ... 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. 9 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.32s

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

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

   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/t-web/Cargo.lock:24:1
   │  
24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index
25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index
   │ ╰───────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ base64 v0.21.7
     ├── base64urlsafedata v0.5.5
     │   ├── webauthn-attestation-ca v0.5.5
     │   │   └── webauthn-rs-core v0.5.5
     │   │       └── webauthn-rs v0.5.5
     │   │           └── infraternal-server v0.1.0
     │   │               └── infraternal v0.1.0
     │   ├── webauthn-rs v0.5.5 (*)
     │   ├── webauthn-rs-core v0.5.5 (*)
     │   └── webauthn-rs-proto v0.5.5
     │       └── webauthn-rs-core v0.5.5 (*)
     ├── webauthn-rs-core v0.5.5 (*)
     └── webauthn-rs-proto v0.5.5 (*)
   ├ base64 v0.22.1
     ├── alacritty_terminal v0.25.1
     │   └── infraternal-shim v0.1.0
     │       ├── infraternal v0.1.0
     │       └── infraternal-fuzz 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 (*)

warning[duplicate]: found 3 duplicate entries for crate 'getrandom'
   ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:88:1
   │  
88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index
89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index
90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index
   │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ getrandom v0.2.17
     └── rand_core v0.6.4
         ├── bip39 v2.2.2
         │   └── infraternal-server v0.1.0
         │       └── infraternal v0.1.0
         ├── crypto-common v0.1.7
         │   ├── aead v0.5.2
         │   │   └── aes-gcm v0.10.3
         │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   ├── cipher v0.4.4
         │   │   ├── aes v0.8.4
         │   │   │   └── aes-gcm v0.10.3 (*)
         │   │   ├── aes-gcm v0.10.3 (*)
         │   │   └── ctr v0.9.2
         │   │       └── aes-gcm v0.10.3 (*)
         │   ├── digest v0.10.7
         │   │   ├── blake2 v0.10.6
         │   │   │   └── argon2 v0.5.3
         │   │   │       └── infraternal-server v0.1.0 (*)
         │   │   ├── hmac v0.12.1
         │   │   │   └── hkdf v0.12.4
         │   │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   │   └── sha2 v0.10.9
         │   │       ├── infraternal-server v0.1.0 (*)
         │   │       ├── sqlx-core v0.8.6
         │   │       │   ├── sqlx v0.8.6
         │   │       │   │   ├── infraternal v0.1.0 (*)
         │   │       │   │   └── infraternal-server v0.1.0 (*)
         │   │       │   ├── sqlx-macros v0.8.6
         │   │       │   │   └── sqlx v0.8.6 (*)
         │   │       │   ├── sqlx-macros-core v0.8.6
         │   │       │   │   └── sqlx-macros v0.8.6 (*)
         │   │       │   └── sqlx-sqlite v0.8.6
         │   │       │       ├── sqlx v0.8.6 (*)
         │   │       │       └── sqlx-macros-core v0.8.6 (*)
         │   │       └── sqlx-macros-core v0.8.6 (*)
         │   └── universal-hash v0.5.1
         │       └── polyval v0.6.2
         │           └── ghash v0.5.1
         │               └── aes-gcm v0.10.3 (*)
         ├── password-hash v0.5.0
         │   └── argon2 v0.5.3 (*)
         ├── rand v0.8.8
         │   └── bip39 v2.2.2 (*)
         └── rand_chacha v0.3.1
             └── rand v0.8.8 (*)
   ├ getrandom v0.3.4
     └── rand_core v0.9.5
         ├── rand v0.9.5
         │   ├── infraternal-server v0.1.0
         │   │   └── infraternal v0.1.0
         │   └── 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
     │       │       ├── openssl v0.10.81
     │       │       │   ├── infraternal-server v0.1.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 (*)
     │       │       ├── webauthn-attestation-ca v0.5.5 (*)
     │       │       └── webauthn-rs-core v0.5.5 (*)
     │       └── (build) openssl-sys v0.9.117 (*)
     └── uuid v1.27.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/t-web/Cargo.lock:93:1
   │  
93 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index
94 │ │ 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
         └── 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 (*)

warning[duplicate]: found 2 duplicate entries for crate 'r-efi'
    ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:183:1
    │  
183 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index
184 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ r-efi v5.3.0
      └── getrandom v0.3.4
          └── rand_core v0.9.5
              ├── rand v0.9.5
              │   ├── infraternal-server v0.1.0
              │   │   └── infraternal v0.1.0
              │   └── 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
          │       │       ├── openssl v0.10.81
          │       │       │   ├── infraternal-server v0.1.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 (*)
          │       │       ├── webauthn-attestation-ca v0.5.5 (*)
          │       │       └── webauthn-rs-core v0.5.5 (*)
          │       └── (build) openssl-sys v0.9.117 (*)
          └── uuid v1.27.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/t-web/Cargo.lock:185:1
    │  
185 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index
186 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand v0.8.8
      └── bip39 v2.2.2
          └── infraternal-server v0.1.0
              └── infraternal v0.1.0
    ├ rand v0.9.5
      ├── infraternal-server v0.1.0
      │   └── infraternal v0.1.0
      └── 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/t-web/Cargo.lock:187:1
    │  
187 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index
188 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand_chacha v0.3.1
      └── rand v0.8.8
          └── bip39 v2.2.2
              └── infraternal-server v0.1.0
                  └── infraternal v0.1.0
    ├ rand_chacha v0.9.0
      ├── rand v0.9.5
      │   ├── infraternal-server v0.1.0
      │   │   └── infraternal v0.1.0
      │   └── 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/t-web/Cargo.lock:189:1
    │  
189 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index
190 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand_core v0.6.4
      ├── bip39 v2.2.2
      │   └── infraternal-server v0.1.0
      │       └── infraternal v0.1.0
      ├── crypto-common v0.1.7
      │   ├── aead v0.5.2
      │   │   └── aes-gcm v0.10.3
      │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   ├── cipher v0.4.4
      │   │   ├── aes v0.8.4
      │   │   │   └── aes-gcm v0.10.3 (*)
      │   │   ├── aes-gcm v0.10.3 (*)
      │   │   └── ctr v0.9.2
      │   │       └── aes-gcm v0.10.3 (*)
      │   ├── digest v0.10.7
      │   │   ├── blake2 v0.10.6
      │   │   │   └── argon2 v0.5.3
      │   │   │       └── infraternal-server v0.1.0 (*)
      │   │   ├── hmac v0.12.1
      │   │   │   └── hkdf v0.12.4
      │   │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   │   └── 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
      │   └── 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/t-web/Cargo.lock:227:1
    │  
227 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index
228 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ syn v2.0.119
      ├── asn1-rs-derive v0.5.1
      │   └── asn1-rs v0.6.2
      │       ├── der-parser v9.0.0
      │       │   ├── webauthn-rs-core v0.5.5
      │       │   │   └── webauthn-rs v0.5.5
      │       │   │       └── infraternal-server v0.1.0
      │       │   │           └── infraternal v0.1.0
      │       │   └── x509-parser v0.16.0
      │       │       └── webauthn-rs-core v0.5.5 (*)
      │       ├── oid-registry v0.7.1
      │       │   └── x509-parser v0.16.0 (*)
      │       └── x509-parser v0.16.0 (*)
      ├── asn1-rs-impl v0.2.0
      │   └── asn1-rs v0.6.2 (*)
      ├── openssl-macros v0.1.1
      │   └── openssl v0.10.81
      │       ├── infraternal-server v0.1.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 (*)
      │       ├── 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 (*)
      │       ├── 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-fuzz 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 (*)
                      │   └── webauthn-rs-core v0.5.5 (*)
                      └── webauthn-rs-core v0.5.5 (*)
    ├ syn v3.0.6
      ├── clap_derive v4.6.7
      │   └── clap v4.6.7
      │       ├── criterion v0.7.0
      │       │   └── (dev) infraternal-protocol v0.1.0
      │       │       └── infraternal-fuzz 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
      │   │   │   │           └── 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 (*)
      │   ├── der-parser v9.0.0 (*)
      │   ├── icu_collections v2.3.0
      │   │   ├── icu_normalizer v2.3.0
Final client head: t-web 639ac276841832b76828ca09abedf98cca663296 (supersedes earlier completion SHA after assertion/copy hardening). Full fast gate output verbatim, part 1/2: ```text ==> fmt ==> clippy Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.43s ==> test Finished `test` profile [unoptimized + debuginfo] target(s) in 0.58s Running unittests src/main.rs (target/debug/deps/infraternal-35f142d7f784daf3) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/shim.rs (target/debug/deps/shim-127934b20fa33652) running 7 tests test double_fork_survives_parent_death ... ok test replacement_connection_and_malformed_limit ... ok test disallowed_signal_only_disconnects_peer ... ok active test user_scope_survives_parent_unit_stop ... ok test real_shell_reconnect_resize_and_retained_exit ... ok test attached_backpressure_and_detached_progress ... ok test ring_wrap_snapshot_repaints_real_vim ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.55s Running unittests src/lib.rs (target/debug/deps/infraternal_agent-eadaa10b8c42bfd9) 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_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::split_mux_header_preserves_trailing_close ... ok test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok test tests::oversized_encode_keeps_the_reusable_output_unchanged ... ok test stream_tests::all_short_frame_splits_match_direct_decoding ... 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 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-7548ec02aea5dda3) running 12 tests test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok test auth::tests::review_old_words_race_rotation ... ok test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok test auth::tests::setup_expiry_single_announcement_and_parallel_redemption ... ok test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 27.24s Running unittests src/lib.rs (target/debug/deps/infraternal_shim-ed89d744f989a5c2) running 12 tests 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::tests::invalid_lengths_types_and_utf8 ... 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 frame::checks::golden::exact_maximum_and_coalesced_frames ... 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. 9 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.32s Running tests/detach.rs (target/debug/deps/detach-61348d2d934a9ab8) 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 1.35s 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/t-web/Cargo.lock:24:1 │ 24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────┘ lock entries │ ├ base64 v0.21.7 ├── base64urlsafedata v0.5.5 │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── webauthn-rs v0.5.5 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-proto v0.5.5 │ └── webauthn-rs-core v0.5.5 (*) ├── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-proto v0.5.5 (*) ├ base64 v0.22.1 ├── alacritty_terminal v0.25.1 │ └── infraternal-shim v0.1.0 │ ├── infraternal v0.1.0 │ └── infraternal-fuzz 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 (*) warning[duplicate]: found 3 duplicate entries for crate 'getrandom' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:88:1 │ 88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ getrandom v0.2.17 └── rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── 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 │ │ ├── openssl v0.10.81 │ │ │ ├── infraternal-server v0.1.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 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.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/t-web/Cargo.lock:93:1 │ 93 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 94 │ │ 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 └── 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 (*) warning[duplicate]: found 2 duplicate entries for crate 'r-efi' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:183:1 │ 183 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 184 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────┘ lock entries │ ├ r-efi v5.3.0 └── getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── 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 │ │ ├── openssl v0.10.81 │ │ │ ├── infraternal-server v0.1.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 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.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/t-web/Cargo.lock:185:1 │ 185 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index 186 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand v0.9.5 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 └── 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/t-web/Cargo.lock:187:1 │ 187 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 188 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_chacha v0.3.1 └── rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── 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/t-web/Cargo.lock:189:1 │ 189 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 190 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── 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 │ └── 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/t-web/Cargo.lock:227:1 │ 227 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 228 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────┘ lock entries │ ├ syn v2.0.119 ├── asn1-rs-derive v0.5.1 │ └── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── asn1-rs-impl v0.2.0 │ └── asn1-rs v0.6.2 (*) ├── openssl-macros v0.1.1 │ └── openssl v0.10.81 │ ├── infraternal-server v0.1.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 (*) │ ├── 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 (*) │ ├── 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-fuzz 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 (*) │ └── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ syn v3.0.6 ├── clap_derive v4.6.7 │ └── clap v4.6.7 │ ├── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ └── infraternal-fuzz 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 │ │ │ │ └── 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 (*) │ ├── der-parser v9.0.0 (*) │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 ```
Author
Owner

Final client head: t-web 639ac27684 (supersedes earlier completion SHA after assertion/copy hardening). Full fast gate output verbatim, part 2/2:

      │   │   │   └── 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 (*)
      ├── serde_derive v1.0.229
      │   ├── serde v1.0.229
      │   │   ├── alacritty_terminal v0.25.1
      │   │   │   └── infraternal-shim v0.1.0
      │   │   │       ├── infraternal 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
      │   │   │   ├── 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-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
      │   │   │   │   └── infraternal-server v0.1.0 (*)
      │   │   │   └── 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 (*)
      │   │   ├── 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-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       └── sqlx-sqlite v0.8.6 (*)
      ├── tokio-macros v2.7.2
      │   └── tokio v1.53.2
      │       ├── axum v0.8.9 (*)
      │       ├── hyper v1.11.1
      │       │   ├── axum v0.8.9 (*)
      │       │   └── hyper-util v0.1.21
      │       │       └── axum v0.8.9 (*)
      │       ├── hyper-util v0.1.21 (*)
      │       ├── infraternal v0.1.0 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       ├── sqlx-macros-core v0.8.6 (*)
      │       ├── tokio-stream v0.1.19
      │       │   └── sqlx-core v0.8.6 (*)
      │       └── tower v0.5.3
      │           ├── axum v0.8.9 (*)
      │           └── (dev) infraternal-server v0.1.0 (*)
      ├── wasm-bindgen-macro-support v0.2.129
      │   └── wasm-bindgen-macro v0.2.129
      │       └── wasm-bindgen v0.2.129
      │           ├── js-sys v0.3.106
      │           │   └── web-sys v0.3.106
      │           │       └── plotters v0.3.7
      │           │           └── criterion v0.7.0 (*)
      │           ├── 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/t-web/Cargo.lock:230:1
    │  
230 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index
231 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ synstructure v0.13.2
      └── asn1-rs-derive v0.5.1
          └── asn1-rs v0.6.2
              ├── der-parser v9.0.0
              │   ├── webauthn-rs-core v0.5.5
              │   │   └── webauthn-rs v0.5.5
              │   │       └── infraternal-server v0.1.0
              │   │           └── infraternal v0.1.0
              │   └── x509-parser v0.16.0
              │       └── webauthn-rs-core v0.5.5 (*)
              ├── oid-registry v0.7.1
              │   └── x509-parser v0.16.0 (*)
              └── x509-parser v0.16.0 (*)
    ├ synstructure v0.14.0
      ├── yoke-derive v0.8.4
      │   └── 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/t-web/Cargo.lock:232:1
    │  
232 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index
233 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index
    │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ thiserror v1.0.69
      ├── asn1-rs v0.6.2
      │   ├── der-parser v9.0.0
      │   │   ├── webauthn-rs-core v0.5.5
      │   │   │   └── webauthn-rs v0.5.5
      │   │   │       └── infraternal-server v0.1.0
      │   │   │           └── infraternal v0.1.0
      │   │   └── x509-parser v0.16.0
      │   │       └── webauthn-rs-core v0.5.5 (*)
      │   ├── oid-registry v0.7.1
      │   │   └── x509-parser v0.16.0 (*)
      │   └── x509-parser v0.16.0 (*)
      ├── webauthn-rs-core v0.5.5 (*)
      └── x509-parser v0.16.0 (*)
    ├ thiserror v2.0.21
      ├── infraternal-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 (*)

warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl'
    ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:234:1
    │  
234 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index
235 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ thiserror-impl v1.0.69
      └── thiserror v1.0.69
          ├── asn1-rs v0.6.2
          │   ├── der-parser v9.0.0
          │   │   ├── webauthn-rs-core v0.5.5
          │   │   │   └── webauthn-rs v0.5.5
          │   │   │       └── infraternal-server v0.1.0
          │   │   │           └── infraternal v0.1.0
          │   │   └── x509-parser v0.16.0
          │   │       └── webauthn-rs-core v0.5.5 (*)
          │   ├── oid-registry v0.7.1
          │   │   └── x509-parser v0.16.0 (*)
          │   └── x509-parser v0.16.0 (*)
          ├── webauthn-rs-core v0.5.5 (*)
          └── x509-parser v0.16.0 (*)
    ├ thiserror-impl v2.0.21
      └── thiserror v2.0.21
          ├── infraternal-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 (*)

warning[duplicate]: found 2 duplicate entries for crate 'windows-sys'
    ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:278:1
    │  
278 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index
279 │ │ 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-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-fuzz v0.1.0
      │               └── infraternal v0.1.0
      ├── 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-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 (*)
      ├── home v0.5.12
      │   └── alacritty_terminal v0.25.1 (*)
      ├── mio v1.2.4
      │   └── tokio v1.53.2
      │       ├── axum v0.8.9
      │       │   └── infraternal-server v0.1.0
      │       │       └── infraternal v0.1.0 (*)
      │       ├── hyper v1.11.1
      │       │   ├── axum v0.8.9 (*)
      │       │   └── hyper-util v0.1.21
      │       │       └── axum v0.8.9 (*)
      │       ├── hyper-util v0.1.21 (*)
      │       ├── 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 (*)
      │       ├── sqlx-macros-core v0.8.6 (*)
      │       ├── tokio-stream v0.1.19
      │       │   └── sqlx-core v0.8.6 (*)
      │       └── tower v0.5.3
      │           ├── axum v0.8.9 (*)
      │           └── (dev) infraternal-server v0.1.0 (*)
      ├── miow v0.6.1
      │   └── alacritty_terminal v0.25.1 (*)
      ├── 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.32s
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: 9612768 bytes
    Finished `release` profile [optimized] target(s) in 0.15s
target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped
PT_INTERP: absent; size: 8053768 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         |
+---------------------------+--------------+

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

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 [2306.99ms]
(pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [8.19ms]

 7 pass
 0 fail
 34390 expect() calls
Ran 7 tests across 2 files. [2.33s]
Final client head: t-web 639ac276841832b76828ca09abedf98cca663296 (supersedes earlier completion SHA after assertion/copy hardening). Full fast gate output verbatim, part 2/2: ```text │ │ │ └── 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 (*) ├── serde_derive v1.0.229 │ ├── serde v1.0.229 │ │ ├── alacritty_terminal v0.25.1 │ │ │ └── infraternal-shim v0.1.0 │ │ │ ├── infraternal 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 │ │ │ ├── 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-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 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── 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 (*) │ │ ├── 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-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 (*) ├── tokio-macros v2.7.2 │ └── tokio v1.53.2 │ ├── axum v0.8.9 (*) │ ├── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ └── hyper-util v0.1.21 │ │ └── axum v0.8.9 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ └── tower v0.5.3 │ ├── axum v0.8.9 (*) │ └── (dev) infraternal-server v0.1.0 (*) ├── wasm-bindgen-macro-support v0.2.129 │ └── wasm-bindgen-macro v0.2.129 │ └── wasm-bindgen v0.2.129 │ ├── js-sys v0.3.106 │ │ └── web-sys v0.3.106 │ │ └── plotters v0.3.7 │ │ └── criterion v0.7.0 (*) │ ├── 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/t-web/Cargo.lock:230:1 │ 230 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 231 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ synstructure v0.13.2 └── asn1-rs-derive v0.5.1 └── asn1-rs v0.6.2 ├── der-parser v9.0.0 │ ├── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── x509-parser v0.16.0 │ └── webauthn-rs-core v0.5.5 (*) ├── oid-registry v0.7.1 │ └── x509-parser v0.16.0 (*) └── x509-parser v0.16.0 (*) ├ synstructure v0.14.0 ├── yoke-derive v0.8.4 │ └── 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/t-web/Cargo.lock:232:1 │ 232 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 233 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror v2.0.21 ├── infraternal-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 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:234:1 │ 234 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 235 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror-impl v1.0.69 └── thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror-impl v2.0.21 └── thiserror v2.0.21 ├── infraternal-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 (*) warning[duplicate]: found 2 duplicate entries for crate 'windows-sys' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-web/Cargo.lock:278:1 │ 278 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index 279 │ │ 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-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-fuzz v0.1.0 │ └── infraternal v0.1.0 ├── 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-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 (*) ├── home v0.5.12 │ └── alacritty_terminal v0.25.1 (*) ├── mio v1.2.4 │ └── tokio v1.53.2 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ ├── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ └── hyper-util v0.1.21 │ │ └── axum v0.8.9 (*) │ ├── hyper-util v0.1.21 (*) │ ├── 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 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ └── tower v0.5.3 │ ├── axum v0.8.9 (*) │ └── (dev) infraternal-server v0.1.0 (*) ├── miow v0.6.1 │ └── alacritty_terminal v0.25.1 (*) ├── 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.32s 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: 9612768 bytes Finished `release` profile [optimized] target(s) in 0.15s target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 8053768 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 | +---------------------------+--------------+ ==> 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 [7.12ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.24ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [1.18ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.36ms] (pass) split mux header preserves trailing Close [0.20ms] 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 [2306.99ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [8.19ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.33s] ```
Author
Owner

Final client verification at 639ac27: strict TypeScript, production build and all three Playwright tests pass; current main.js 49,589 bytes and deferred terminal chunk 662,827 bytes. Final browser output verbatim:

$ bun x playwright test
[WebServer] $ bun run build.ts
[WebServer] built main.js, chunk-sxzajhbf.js, chunk-k5nvdjvh.js
[WebServer] tracer TEST DOUBLE listening on http://localhost:4173

Running 3 tests using 1 worker

(node:1518330) 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)
S1 probe result (500 keys)
Painted echoes: 500 / 500
p50: 14.90 ms
p95: 16.60 ms
p99: 18.90 ms
keydown → onData: p50 0.00 ms, p99 0.20 ms
onData → encode: p50 0.00 ms, p99 0.20 ms
encode → ws.send: p50 0.10 ms, p99 1.30 ms
ws.onmessage → decode: p50 0.00 ms, p99 0.10 ms
decode → term.write: p50 0.00 ms, p99 0.10 ms
term.write → callback: p50 13.80 ms, p99 17.60 ms
callback → paint rAF: p50 0.00 ms, p99 0.10 ms
ws.send → ws.onmessage: p50 0.70 ms, p99 5.80 ms (includes the double and both local socket legs)
Time to resume: 79.90 ms
S1 per-hop attribution (500 keys)
Clock alignment: -3483.177 ms offset; best HTTP RTT 2.500 ms (cross-process one-way splits assume a symmetric local path).
Trace coverage: 500 browser keys, 2004 double marks.
keydown → onData: p50 0.00 ms, p99 0.20 ms (500 keys)
onData → encode: p50 0.00 ms, p99 0.20 ms (500 keys)
encode → ws.send: p50 0.10 ms, p99 1.30 ms (500 keys)
ws.send → double receive: p50 0.52 ms, p99 4.11 ms (500 keys)
double receive → decode: p50 0.04 ms, p99 0.10 ms (500 keys)
double decode → echo encode: p50 0.05 ms, p99 0.16 ms (500 keys)
double echo encode → send: p50 0.00 ms, p99 0.02 ms (500 keys)
double echo send → ws.onmessage: p50 0.11 ms, p99 3.44 ms (500 keys)
ws.onmessage → decode: p50 0.00 ms, p99 0.10 ms (500 keys)
decode → term.write: p50 0.00 ms, p99 0.10 ms (500 keys)
term.write → write callback: p50 13.80 ms, p99 17.60 ms (500 keys)
write callback → paint rAF: p50 0.00 ms, p99 0.10 ms (500 keys)
S1 screenshots: /home/kayg/Developer/infraternal/.worktrees/t-web/apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-terminal.png, /home/kayg/Developer/infraternal/.worktrees/t-web/apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-probe.png
  ✓  1 test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe (12.2s)
[WebServer] test-double setup denied: owner=false token-match=false name-valid=true
  ✓  2 test/terminal.spec.ts:253:1 › status failure, invalid setup token, and cancelled passkey have distinct guidance (1.0s)
Access render upper bound (setup, n=30, local production build): p50 104.5 ms, p99 133.40000000596046 ms
Access render upper bound (signin, n=30, local production build): p50 102.20000000298023 ms, p99 129 ms
  ✓  3 test/terminal.spec.ts:284:1 › access screens render within the local first-paint budget (8.6s)

  3 passed (24.1s)
Final client verification at 639ac27: strict TypeScript, production build and all three Playwright tests pass; current main.js 49,589 bytes and deferred terminal chunk 662,827 bytes. Final browser output verbatim: ```text $ bun x playwright test [WebServer] $ bun run build.ts [WebServer] built main.js, chunk-sxzajhbf.js, chunk-k5nvdjvh.js [WebServer] tracer TEST DOUBLE listening on http://localhost:4173 Running 3 tests using 1 worker (node:1518330) 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) S1 probe result (500 keys) Painted echoes: 500 / 500 p50: 14.90 ms p95: 16.60 ms p99: 18.90 ms keydown → onData: p50 0.00 ms, p99 0.20 ms onData → encode: p50 0.00 ms, p99 0.20 ms encode → ws.send: p50 0.10 ms, p99 1.30 ms ws.onmessage → decode: p50 0.00 ms, p99 0.10 ms decode → term.write: p50 0.00 ms, p99 0.10 ms term.write → callback: p50 13.80 ms, p99 17.60 ms callback → paint rAF: p50 0.00 ms, p99 0.10 ms ws.send → ws.onmessage: p50 0.70 ms, p99 5.80 ms (includes the double and both local socket legs) Time to resume: 79.90 ms S1 per-hop attribution (500 keys) Clock alignment: -3483.177 ms offset; best HTTP RTT 2.500 ms (cross-process one-way splits assume a symmetric local path). Trace coverage: 500 browser keys, 2004 double marks. keydown → onData: p50 0.00 ms, p99 0.20 ms (500 keys) onData → encode: p50 0.00 ms, p99 0.20 ms (500 keys) encode → ws.send: p50 0.10 ms, p99 1.30 ms (500 keys) ws.send → double receive: p50 0.52 ms, p99 4.11 ms (500 keys) double receive → decode: p50 0.04 ms, p99 0.10 ms (500 keys) double decode → echo encode: p50 0.05 ms, p99 0.16 ms (500 keys) double echo encode → send: p50 0.00 ms, p99 0.02 ms (500 keys) double echo send → ws.onmessage: p50 0.11 ms, p99 3.44 ms (500 keys) ws.onmessage → decode: p50 0.00 ms, p99 0.10 ms (500 keys) decode → term.write: p50 0.00 ms, p99 0.10 ms (500 keys) term.write → write callback: p50 13.80 ms, p99 17.60 ms (500 keys) write callback → paint rAF: p50 0.00 ms, p99 0.10 ms (500 keys) S1 screenshots: /home/kayg/Developer/infraternal/.worktrees/t-web/apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-terminal.png, /home/kayg/Developer/infraternal/.worktrees/t-web/apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/tracer-probe.png ✓ 1 test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe (12.2s) [WebServer] test-double setup denied: owner=false token-match=false name-valid=true ✓ 2 test/terminal.spec.ts:253:1 › status failure, invalid setup token, and cancelled passkey have distinct guidance (1.0s) Access render upper bound (setup, n=30, local production build): p50 104.5 ms, p99 133.40000000596046 ms Access render upper bound (signin, n=30, local production build): p50 102.20000000298023 ms, p99 129 ms ✓ 3 test/terminal.spec.ts:284:1 › access screens render within the local first-paint budget (8.6s) 3 passed (24.1s) ```
Author
Owner

Final server head 7948ff00fb; client head 639ac27. Atomic commits on separate branches, clean worktrees, no push/deploy/merge. Implemented discoverable login, exact public setup status, fresh ownerless restart token, stored per-user PRF input with legacy preservation, and status-first one-form client screens. PRF requires a second local prompt after signed identity resolution. Self-review and reproducible evidence are docs/verification/discoverable.md and apps/tracer/README.md. Screenshots are client apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/{setup,signin}-{light,dark}.png at 390x844; inherited CSS is dark-only. No physical iPhone, independent visual/security approval or perf-VM claim.

Actual process restart output verbatim:

server process restart: PASS (SIGKILL, stale socket, fresh CLI token, old/spent token denial, production resident setup/sign-in, owner persists without token)

Paired production browser output verbatim:

tracer + Rust auth: PASS (production UI, resident PRF setup, empty-storage discoverable login, DEK unwrap; Chromium 149.0.7827.55)

Native browser output verbatim:

   Compiling infraternal-server v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/t-server/crates/infraternal-server)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.43s
bun install v1.4.2 (744846f84)

Checked 5 installs across 7 packages (no changes) [1.00ms]
Bundled 11 modules in 7ms

  entropy.js  38.28 KB  (entry point)

supported: server rejected native browser assertion without UV
supported: discoverable resident UV passkey, PRF fallback get, stripped proofs, native HKDF/AES-GCM, login DEK roundtrip, wrong origin rejected
unsupported-prf: abort before finish; owner not created
nonresident: browser refused registration; owner not created
no-uv: browser refused registration; owner not created
auth browser: PASS (4 isolated scenarios; Chromium 149.0.7827.55)

Release scale output verbatim (200 samples per operation, 2 passkeys, pending limit 1024; load and memory caveats in docs):

 src/lib.rs (target/release/deps/infraternal_server-c4542cba05bbc25b)

running 1 test
auth scale: owners=1 passkeys=2 pending_limit=1024 arch=x86_64 load=6.36 8.48 6.06 8/718 1519565
challenge mode=identified pending=0..200 n=200 p50_us=32 p99_us=77 rss_before_kib=12688 rss_after_kib=12936
challenge mode=identified pending=824..1024 n=200 p50_us=35 p99_us=101 rss_before_kib=13648 rss_after_kib=14032
challenge mode=discoverable pending=0..200 n=200 p50_us=3 p99_us=6 rss_before_kib=14036 rss_after_kib=14036
challenge mode=discoverable pending=824..1024 n=200 p50_us=3 p99_us=4 rss_before_kib=14036 rss_after_kib=14036
pending inline bytes/unit=112 bytes/1024=114688 (excludes heap/hash-table allocations)
signed discoverable finish pending=1024 n=200 p50_us=222 p99_us=3323 (SQLite memory + real ES256 verifier)
test auth::tests::discoverable_latency_at_pending_capacity ... ok

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

Final server head 7948ff00fb6370e0a257a14b9fb00f3d6fc3cf7a; client head 639ac27. Atomic commits on separate branches, clean worktrees, no push/deploy/merge. Implemented discoverable login, exact public setup status, fresh ownerless restart token, stored per-user PRF input with legacy preservation, and status-first one-form client screens. PRF requires a second local prompt after signed identity resolution. Self-review and reproducible evidence are docs/verification/discoverable.md and apps/tracer/README.md. Screenshots are client apps/tracer/test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/{setup,signin}-{light,dark}.png at 390x844; inherited CSS is dark-only. No physical iPhone, independent visual/security approval or perf-VM claim. Actual process restart output verbatim: ```text server process restart: PASS (SIGKILL, stale socket, fresh CLI token, old/spent token denial, production resident setup/sign-in, owner persists without token) ``` Paired production browser output verbatim: ```text tracer + Rust auth: PASS (production UI, resident PRF setup, empty-storage discoverable login, DEK unwrap; Chromium 149.0.7827.55) ``` Native browser output verbatim: ```text Compiling infraternal-server v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/t-server/crates/infraternal-server) Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.43s bun install v1.4.2 (744846f84) Checked 5 installs across 7 packages (no changes) [1.00ms] Bundled 11 modules in 7ms entropy.js 38.28 KB (entry point) supported: server rejected native browser assertion without UV supported: discoverable resident UV passkey, PRF fallback get, stripped proofs, native HKDF/AES-GCM, login DEK roundtrip, wrong origin rejected unsupported-prf: abort before finish; owner not created nonresident: browser refused registration; owner not created no-uv: browser refused registration; owner not created auth browser: PASS (4 isolated scenarios; Chromium 149.0.7827.55) ``` Release scale output verbatim (200 samples per operation, 2 passkeys, pending limit 1024; load and memory caveats in docs): ```text src/lib.rs (target/release/deps/infraternal_server-c4542cba05bbc25b) running 1 test auth scale: owners=1 passkeys=2 pending_limit=1024 arch=x86_64 load=6.36 8.48 6.06 8/718 1519565 challenge mode=identified pending=0..200 n=200 p50_us=32 p99_us=77 rss_before_kib=12688 rss_after_kib=12936 challenge mode=identified pending=824..1024 n=200 p50_us=35 p99_us=101 rss_before_kib=13648 rss_after_kib=14032 challenge mode=discoverable pending=0..200 n=200 p50_us=3 p99_us=6 rss_before_kib=14036 rss_after_kib=14036 challenge mode=discoverable pending=824..1024 n=200 p50_us=3 p99_us=4 rss_before_kib=14036 rss_after_kib=14036 pending inline bytes/unit=112 bytes/1024=114688 (excludes heap/hash-table allocations) signed discoverable finish pending=1024 n=200 p50_us=222 p99_us=3323 (SQLite memory + real ES256 verifier) test auth::tests::discoverable_latency_at_pending_capacity ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 22 filtered out; finished in 0.17s ```
Author
Owner

Independent audit started: t-web base 1b4c907, head 639ac27684, paired with server t-server base 6fa27a3 head 7948ff0. F1 (P1): failed local unwrap + logout 429 -> expected signed out; actual real Rust session 200 and production reload opens terminal. auth.ts:151 suppresses logout failure. Red test /tmp/review-auth-browser-test.mjs; /tmp/review-auth-unwrap-red.log. Original worktrees remain read-only.

Independent audit started: t-web base 1b4c907, head 639ac276841832b76828ca09abedf98cca663296, paired with server t-server base 6fa27a3 head 7948ff0. F1 (P1): failed local unwrap + logout 429 -> expected signed out; actual real Rust session 200 and production reload opens terminal. auth.ts:151 suppresses logout failure. Red test /tmp/review-auth-browser-test.mjs; /tmp/review-auth-unwrap-red.log. Original worktrees remain read-only.
Author
Owner

Independent audit verdict: REWORK (F1). Failed unwrap + logout 429 retains the session and production reload opens terminal. Real 120-action admission test blocks logout with 429/live session. Full findings and design reasoning posted on #19. Client tsc/build, real production setup/sign-in, restart, storage/traffic and error-copy checks passed. Independent audit finish evidence: client scripts/verify fast (exit 0). Server head 7948ff00fb; client head 639ac27684. Original branches t-server/t-web remain clean; no commits, push or deploy. Disposable /tmp worktrees removed.

Verbatim output:


==> fmt

==> clippy
    Checking infraternal-shim v0.1.0 (/tmp/review-auth-web/crates/infraternal-shim)
    Checking infraternal-server v0.1.0 (/tmp/review-auth-web/crates/infraternal-server)
    Checking infraternal-fuzz v0.1.0 (/tmp/review-auth-web/fuzz)
    Checking infraternal v0.1.0 (/tmp/review-auth-web/crates/infraternal)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.41s

==> test
   Compiling infraternal-shim v0.1.0 (/tmp/review-auth-web/crates/infraternal-shim)
   Compiling infraternal-server v0.1.0 (/tmp/review-auth-web/crates/infraternal-server)
   Compiling infraternal v0.1.0 (/tmp/review-auth-web/crates/infraternal)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 6.91s
     Running unittests src/main.rs (target/debug/deps/infraternal-9e94862a7b394f9c)

running 0 tests

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

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

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

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

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

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_api-4c15adbf8555ed52)

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-61e7d8ca927ad4ff)

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-adc33ab540b93a69)

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

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

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

running 12 tests
test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok
test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok
test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok
test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok
test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok
test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok
test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok
test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok
test auth::tests::review_old_words_race_rotation ... ok
test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok
test auth::tests::setup_expiry_single_announcement_and_parallel_redemption ... ok
test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok

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

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

running 12 tests
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 frame::checks::tests::golden_and_fragmented ... ok
test frame::checks::tests::invalid_lengths_types_and_utf8 ... ok
test ring::checks::tests::wrap_and_exact_offsets ... 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 frame::checks::golden::exact_maximum_and_coalesced_frames ... ok
test terminal::checks::tests::fixtures_and_continuations_repaint ... ok
test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok

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

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

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

   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'
   ┌─ /tmp/review-auth-web/Cargo.lock:24:1
   │  
24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index
25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index
   │ ╰───────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ base64 v0.21.7
     ├── base64urlsafedata v0.5.5
     │   ├── webauthn-attestation-ca v0.5.5
     │   │   └── webauthn-rs-core v0.5.5
     │   │       └── webauthn-rs v0.5.5
     │   │           └── infraternal-server v0.1.0
     │   │               └── infraternal v0.1.0
     │   ├── webauthn-rs v0.5.5 (*)
     │   ├── webauthn-rs-core v0.5.5 (*)
     │   └── webauthn-rs-proto v0.5.5
     │       └── webauthn-rs-core v0.5.5 (*)
     ├── webauthn-rs-core v0.5.5 (*)
     └── webauthn-rs-proto v0.5.5 (*)
   ├ base64 v0.22.1
     ├── alacritty_terminal v0.25.1
     │   └── infraternal-shim v0.1.0
     │       ├── infraternal v0.1.0
     │       └── infraternal-fuzz 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 (*)

warning[duplicate]: found 3 duplicate entries for crate 'getrandom'
   ┌─ /tmp/review-auth-web/Cargo.lock:88:1
   │  
88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index
89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index
90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index
   │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ getrandom v0.2.17
     └── rand_core v0.6.4
         ├── bip39 v2.2.2
         │   └── infraternal-server v0.1.0
         │       └── infraternal v0.1.0
         ├── crypto-common v0.1.7
         │   ├── aead v0.5.2
         │   │   └── aes-gcm v0.10.3
         │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   ├── cipher v0.4.4
         │   │   ├── aes v0.8.4
         │   │   │   └── aes-gcm v0.10.3 (*)
         │   │   ├── aes-gcm v0.10.3 (*)
         │   │   └── ctr v0.9.2
         │   │       └── aes-gcm v0.10.3 (*)
         │   ├── digest v0.10.7
         │   │   ├── blake2 v0.10.6
         │   │   │   └── argon2 v0.5.3
         │   │   │       └── infraternal-server v0.1.0 (*)
         │   │   ├── hmac v0.12.1
         │   │   │   └── hkdf v0.12.4
         │   │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   │   └── sha2 v0.10.9
         │   │       ├── infraternal-server v0.1.0 (*)
         │   │       ├── sqlx-core v0.8.6
         │   │       │   ├── sqlx v0.8.6
         │   │       │   │   ├── infraternal v0.1.0 (*)
         │   │       │   │   └── infraternal-server v0.1.0 (*)
         │   │       │   ├── sqlx-macros v0.8.6
         │   │       │   │   └── sqlx v0.8.6 (*)
         │   │       │   ├── sqlx-macros-core v0.8.6
         │   │       │   │   └── sqlx-macros v0.8.6 (*)
         │   │       │   └── sqlx-sqlite v0.8.6
         │   │       │       ├── sqlx v0.8.6 (*)
         │   │       │       └── sqlx-macros-core v0.8.6 (*)
         │   │       └── sqlx-macros-core v0.8.6 (*)
         │   └── universal-hash v0.5.1
         │       └── polyval v0.6.2
         │           └── ghash v0.5.1
         │               └── aes-gcm v0.10.3 (*)
         ├── password-hash v0.5.0
         │   └── argon2 v0.5.3 (*)
         ├── rand v0.8.8
         │   └── bip39 v2.2.2 (*)
         └── rand_chacha v0.3.1
             └── rand v0.8.8 (*)
   ├ getrandom v0.3.4
     └── rand_core v0.9.5
         ├── rand v0.9.5
         │   ├── infraternal-server v0.1.0
         │   │   └── infraternal v0.1.0
         │   └── 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
     │       │       ├── openssl v0.10.81
     │       │       │   ├── infraternal-server v0.1.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 (*)
     │       │       ├── webauthn-attestation-ca v0.5.5 (*)
     │       │       └── webauthn-rs-core v0.5.5 (*)
     │       └── (build) openssl-sys v0.9.117 (*)
     └── uuid v1.27.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'
   ┌─ /tmp/review-auth-web/Cargo.lock:93:1
   │  
93 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index
94 │ │ 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
         └── 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 (*)

warning[duplicate]: found 2 duplicate entries for crate 'r-efi'
    ┌─ /tmp/review-auth-web/Cargo.lock:183:1
    │  
183 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index
184 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ r-efi v5.3.0
      └── getrandom v0.3.4
          └── rand_core v0.9.5
              ├── rand v0.9.5
              │   ├── infraternal-server v0.1.0
              │   │   └── infraternal v0.1.0
              │   └── 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
          │       │       ├── openssl v0.10.81
          │       │       │   ├── infraternal-server v0.1.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 (*)
          │       │       ├── webauthn-attestation-ca v0.5.5 (*)
          │       │       └── webauthn-rs-core v0.5.5 (*)
          │       └── (build) openssl-sys v0.9.117 (*)
          └── uuid v1.27.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'
    ┌─ /tmp/review-auth-web/Cargo.lock:185:1
    │  
185 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index
186 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand v0.8.8
      └── bip39 v2.2.2
          └── infraternal-server v0.1.0
              └── infraternal v0.1.0
    ├ rand v0.9.5
      ├── infraternal-server v0.1.0
      │   └── infraternal v0.1.0
      └── 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'
    ┌─ /tmp/review-auth-web/Cargo.lock:187:1
    │  
187 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index
188 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand_chacha v0.3.1
      └── rand v0.8.8
          └── bip39 v2.2.2
              └── infraternal-server v0.1.0
                  └── infraternal v0.1.0
    ├ rand_chacha v0.9.0
      ├── rand v0.9.5
      │   ├── infraternal-server v0.1.0
      │   │   └── infraternal v0.1.0
      │   └── 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'
    ┌─ /tmp/review-auth-web/Cargo.lock:189:1
    │  
189 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index
190 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand_core v0.6.4
      ├── bip39 v2.2.2
      │   └── infraternal-server v0.1.0
      │       └── infraternal v0.1.0
      ├── crypto-common v0.1.7
      │   ├── aead v0.5.2
      │   │   └── aes-gcm v0.10.3
      │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   ├── cipher v0.4.4
      │   │   ├── aes v0.8.4
      │   │   │   └── aes-gcm v0.10.3 (*)
      │   │   ├── aes-gcm v0.10.3 (*)
      │   │   └── ctr v0.9.2
      │   │       └── aes-gcm v0.10.3 (*)
      │   ├── digest v0.10.7
      │   │   ├── blake2 v0.10.6
      │   │   │   └── argon2 v0.5.3
      │   │   │       └── infraternal-server v0.1.0 (*)
      │   │   ├── hmac v0.12.1
      │   │   │   └── hkdf v0.12.4
      │   │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   │   └── 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
      │   └── 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'
    ┌─ /tmp/review-auth-web/Cargo.lock:227:1
    │  
227 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index
228 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ syn v2.0.119
      ├── asn1-rs-derive v0.5.1
      │   └── asn1-rs v0.6.2
      │       ├── der-parser v9.0.0
      │       │   ├── webauthn-rs-core v0.5.5
      │       │   │   └── webauthn-rs v0.5.5
      │       │   │       └── infraternal-server v0.1.0
      │       │   │           └── infraternal v0.1.0
      │       │   └── x509-parser v0.16.0
      │       │       └── webauthn-rs-core v0.5.5 (*)
      │       ├── oid-registry v0.7.1
      │       │   └── x509-parser v0.16.0 (*)
      │       └── x509-parser v0.16.0 (*)
      ├── asn1-rs-impl v0.2.0
      │   └── asn1-rs v0.6.2 (*)
      ├── openssl-macros v0.1.1
      │   └── openssl v0.10.81
      │       ├── infraternal-server v0.1.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 (*)
      │       ├── 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 (*)
      │       ├── 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-fuzz 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 (*)
                      │   └── webauthn-rs-core v0.5.5 (*)
                      └── webauthn-rs-core v0.5.5 (*)
    ├ syn v3.0.6
      ├── clap_derive v4.6.7
      │   └── clap v4.6.7
      │       ├── criterion v0.7.0
      │       │   └── (dev) infraternal-protocol v0.1.0
      │       │       └── infraternal-fuzz 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
      │   │   │   │           └── 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 (*)
      │   ├── 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 (*)
      ├── serde_derive v1.0.229
      │   ├── serde v1.0.229
      │   │   ├── alacritty_terminal v0.25.1
      │   │   │   └── infraternal-shim v0.1.0
      │   │   │       ├── infraternal 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
      │   │   │   ├── 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-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
      │   │   │   │   └── infraternal-server v0.1.0 (*)
      │   │   │   └── 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 (*)
      │   │   ├── 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-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       └── sqlx-sqlite v0.8.6 (*)
      ├── tokio-macros v2.7.2
      │   └── tokio v1.53.2
      │       ├── axum v0.8.9 (*)
      │       ├── hyper v1.11.1
      │       │   ├── axum v0.8.9 (*)
      │       │   └── hyper-util v0.1.21
      │       │       └── axum v0.8.9 (*)
      │       ├── hyper-util v0.1.21 (*)
      │       ├── infraternal v0.1.0 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       ├── sqlx-macros-core v0.8.6 (*)
      │       ├── tokio-stream v0.1.19
      │       │   └── sqlx-core v0.8.6 (*)
      │       └── tower v0.5.3
      │           ├── axum v0.8.9 (*)
      │           └── (dev) infraternal-server v0.1.0 (*)
      ├── wasm-bindgen-macro-support v0.2.129
      │   └── wasm-bindgen-macro v0.2.129
      │       └── wasm-bindgen v0.2.129
      │           ├── js-sys v0.3.106
      │           │   └── web-sys v0.3.106
      │           │       └── plotters v0.3.7
      │           │           └── criterion v0.7.0 (*)
      │           ├── 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'
    ┌─ /tmp/review-auth-web/Cargo.lock:230:1
    │  
230 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index
231 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ synstructure v0.13.2
      └── asn1-rs-derive v0.5.1
          └── asn1-rs v0.6.2
              ├── der-parser v9.0.0
              │   ├── webauthn-rs-core v0.5.5
              │   │   └── webauthn-rs v0.5.5
              │   │       └── infraternal-server v0.1.0
              │   │           └── infraternal v0.1.0
              │   └── x509-parser v0.16.0
              │       └── webauthn-rs-core v0.5.5 (*)
              ├── oid-registry v0.7.1
              │   └── x509-parser v0.16.0 (*)
              └── x509-parser v0.16.0 (*)
    ├ synstructure v0.14.0
      ├── yoke-derive v0.8.4
      │   └── 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'
    ┌─ /tmp/review-auth-web/Cargo.lock:232:1
    │  
232 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index
233 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index
    │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ thiserror v1.0.69
      ├── asn1-rs v0.6.2
      │   ├── der-parser v9.0.0
      │   │   ├── webauthn-rs-core v0.5.5
      │   │   │   └── webauthn-rs v0.5.5
      │   │   │       └── infraternal-server v0.1.0
      │   │   │           └── infraternal v0.1.0
      │   │   └── x509-parser v0.16.0
      │   │       └── webauthn-rs-core v0.5.5 (*)
      │   ├── oid-registry v0.7.1
      │   │   └── x509-parser v0.16.0 (*)
      │   └── x509-parser v0.16.0 (*)
      ├── webauthn-rs-core v0.5.5 (*)
      └── x509-parser v0.16.0 (*)
    ├ thiserror v2.0.21
      ├── infraternal-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 (*)

warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl'
    ┌─ /tmp/review-auth-web/Cargo.lock:234:1
    │  
234 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index
235 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ thiserror-impl v1.0.69
      └── thiserror v1.0.69
          ├── asn1-rs v0.6.2
          │   ├── der-parser v9.0.0
          │   │   ├── webauthn-rs-core v0.5.5
          │   │   │   └── webauthn-rs v0.5.5
          │   │   │       └── infraternal-server v0.1.0
          │   │   │           └── infraternal v0.1.0
          │   │   └── x509-parser v0.16.0
          │   │       └── webauthn-rs-core v0.5.5 (*)
          │   ├── oid-registry v0.7.1
          │   │   └── x509-parser v0.16.0 (*)
          │   └── x509-parser v0.16.0 (*)
          ├── webauthn-rs-core v0.5.5 (*)
          └── x509-parser v0.16.0 (*)
    ├ thiserror-impl v2.0.21
      └── thiserror v2.0.21
          ├── infraternal-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 (*)

warning[duplicate]: found 2 duplicate entries for crate 'windows-sys'
    ┌─ /tmp/review-auth-web/Cargo.lock:278:1
    │  
278 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index
279 │ │ 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-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-fuzz v0.1.0
      │               └── infraternal v0.1.0
      ├── 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-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 (*)
      ├── home v0.5.12
      │   └── alacritty_terminal v0.25.1 (*)
      ├── mio v1.2.4
      │   └── tokio v1.53.2
      │       ├── axum v0.8.9
      │       │   └── infraternal-server v0.1.0
      │       │       └── infraternal v0.1.0 (*)
      │       ├── hyper v1.11.1
      │       │   ├── axum v0.8.9 (*)
      │       │   └── hyper-util v0.1.21
      │       │       └── axum v0.8.9 (*)
      │       ├── hyper-util v0.1.21 (*)
      │       ├── 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 (*)
      │       ├── sqlx-macros-core v0.8.6 (*)
      │       ├── tokio-stream v0.1.19
      │       │   └── sqlx-core v0.8.6 (*)
      │       └── tower v0.5.3
      │           ├── axum v0.8.9 (*)
      │           └── (dev) infraternal-server v0.1.0 (*)
      ├── miow v0.6.1
      │   └── alacritty_terminal v0.25.1 (*)
      ├── 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
    Blocking waiting for file lock on build directory
   Compiling cfg-if v1.0.5
   Compiling memchr v2.8.3
   Compiling libc v0.2.190
   Compiling serde_core v1.0.229
   Compiling zerofrom v0.1.8
   Compiling stable_deref_trait v1.2.1
   Compiling pin-project-lite v0.2.17
   Compiling smallvec v1.16.2
   Compiling futures-core v0.3.34
   Compiling itoa v1.0.18
   Compiling bytes v1.12.1
   Compiling yoke v0.8.3
   Compiling log v0.4.34
   Compiling writeable v0.6.4
   Compiling litemap v0.8.3
   Compiling zerovec v0.11.8
   Compiling zerotrie v0.2.5
   Compiling utf8_iter v1.0.4
   Compiling num-traits v0.2.19
   Compiling once_cell v1.21.4
   Compiling futures-sink v0.3.34
   Compiling tracing-core v0.1.36
   Compiling icu_normalizer_data v2.3.0
   Compiling icu_properties_data v2.3.0
   Compiling zerocopy v0.8.60
   Compiling scopeguard v1.2.0
   Compiling typenum v1.20.1
   Compiling tinystr v0.8.4
   Compiling potential_utf v0.1.6
   Compiling percent-encoding v2.3.2
   Compiling icu_collections v2.3.0
   Compiling icu_locale_core v2.3.0
   Compiling tracing v0.1.44
   Compiling socket2 v0.6.5
   Compiling mio v1.2.4
   Compiling form_urlencoded v1.2.2
   Compiling generic-array v0.14.7
   Compiling lock_api v0.4.14
   Compiling openssl-sys v0.9.117
   Compiling subtle v2.6.1
   Compiling tokio v1.53.2
   Compiling minimal-lexical v0.2.1
   Compiling parking_lot_core v0.9.12
   Compiling icu_provider v2.3.1
   Compiling nom v7.1.3
   Compiling crypto-common v0.1.7
   Compiling serde v1.0.229
   Compiling bitflags v2.13.2
   Compiling icu_normalizer v2.3.0
   Compiling icu_properties v2.3.0
   Compiling block-buffer v0.10.4
   Compiling futures-io v0.3.34
   Compiling slab v0.4.12
   Compiling time-core v0.1.9
   Compiling num-conv v0.2.2
   Compiling deranged v0.5.8
   Compiling powerfmt v0.2.1
   Compiling futures-task v0.3.34
   Compiling digest v0.10.7
   Compiling futures-util v0.3.34
   Compiling thiserror v1.0.69
   Compiling parking_lot v0.12.5
   Compiling rusticata-macros v4.1.0
   Compiling idna_adapter v1.2.2
   Compiling idna v1.1.0
   Compiling getrandom v0.2.17
   Compiling http v1.5.0
   Compiling time v0.3.55
   Compiling equivalent v1.0.2
   Compiling arrayvec v0.7.8
   Compiling url v2.5.8
   Compiling ppv-lite86 v0.2.21
   Compiling zmij v1.0.23
   Compiling http-body v1.1.0
   Compiling rand_core v0.6.4
   Compiling getrandom v0.3.4
   Compiling num-integer v0.1.47
   Compiling futures-channel v0.3.34
   Compiling base64 v0.22.1
   Compiling allocator-api2 v0.2.21
   Compiling foldhash v0.1.5
   Compiling base64 v0.21.7
   Compiling foreign-types-shared v0.1.1
   Compiling cpufeatures v0.2.17
   Compiling foreign-types v0.3.2
   Compiling hashbrown v0.15.5
   Compiling num-bigint v0.4.8
   Compiling crossbeam-utils v0.8.23
   Compiling rand_core v0.9.5
   Compiling base64urlsafedata v0.5.5
   Compiling serde_json v1.0.151
   Compiling getrandom v0.4.3
   Compiling parking v2.2.1
   Compiling ryu v1.0.23
   Compiling linux-raw-sys v0.12.1
   Compiling hashbrown v0.17.1
   Compiling asn1-rs v0.6.2
   Compiling tower-service v0.3.3
   Compiling crc-catalog v2.5.0
   Compiling crc v3.4.0
   Compiling rustix v1.1.5
   Compiling indexmap v2.14.2
   Compiling tokio-stream v0.1.19
   Compiling serde_urlencoded v0.7.1
   Compiling der-parser v9.0.0
   Compiling oid-registry v0.7.1
   Compiling uuid v1.27.0
   Compiling event-listener v5.4.2
   Compiling hashlink v0.10.0
   Compiling thiserror v2.0.21
   Compiling crossbeam-queue v0.3.14
   Compiling rand_chacha v0.9.0
   Compiling httparse v1.10.1
   Compiling sha2 v0.10.9
   Compiling half v2.7.1
   Compiling futures-intrusive v0.5.0
   Compiling either v1.18.0
   Compiling spin v0.9.9
   Compiling libsqlite3-sys v0.30.1
   Compiling errno v0.3.14
   Compiling tower-layer v0.3.3
   Compiling utf8parse v0.2.2
   Compiling data-encoding v2.11.1
   Compiling sync_wrapper v1.0.2
   Compiling lazy_static v1.5.1
   Compiling atomic-waker v1.1.2
   Compiling httpdate v1.0.3
   Compiling anstyle-parse v1.0.0
   Compiling hyper v1.11.1
   Compiling signal-hook-registry v1.4.8
   Compiling flume v0.11.1
   Compiling sqlx-core v0.8.6
   Compiling x509-parser v0.16.0
   Compiling serde_cbor_2 v0.13.0
   Compiling rand v0.9.5
   Compiling webauthn-rs-proto v0.5.5
   Compiling futures-executor v0.3.34
   Compiling rand_chacha v0.3.1
   Compiling http-body-util v0.1.5
   Compiling hex-conservative v0.2.3
   Compiling atoi v2.0.0
   Compiling aho-corasick v1.1.5
   Compiling base64ct v1.8.3
   Compiling colorchoice v1.0.5
   Compiling anstyle v1.0.14
   Compiling mime v0.3.17
   Compiling tinyvec v1.13.3
   Compiling cursor-icon v1.2.0
   Compiling anstyle-query v1.1.5
   Compiling is_terminal_polyfill v1.70.2
   Compiling hex v0.4.3
   Compiling regex-syntax v0.8.11
   Compiling anstream v1.0.0
   Compiling vte v0.15.0
   Compiling axum-core v0.5.6
   Compiling unicode-normalization v0.1.25
   Compiling sqlx-sqlite v0.8.6
   Compiling password-hash v0.5.0
   Compiling bitcoin_hashes v0.14.101
   Compiling rand v0.8.8
   Compiling regex-automata v0.4.18
   Compiling hyper-util v0.1.21
   Compiling polling v3.11.0
   Compiling rustix-openpty v0.2.0
   Compiling signal-hook v0.3.18
   Compiling memoffset v0.9.1
   Compiling tower v0.5.3
   Compiling blake2 v0.10.6
   Compiling serde_path_to_error v0.1.20
   Compiling strsim v0.11.1
   Compiling matchit v0.8.4
   Compiling clap_lex v1.1.1
   Compiling home v0.5.12
   Compiling unicode-width v0.2.2
   Compiling axum v0.8.9
   Compiling clap_builder v4.6.7
   Compiling sqlx v0.8.6
   Compiling argon2 v0.5.3
   Compiling nix v0.30.1
   Compiling bip39 v2.2.2
   Compiling alacritty_terminal v0.25.1
   Compiling clap v4.6.7
   Compiling infraternal-shim v0.1.0 (/tmp/review-auth-web/crates/infraternal-shim)
   Compiling openssl v0.10.81
   Compiling webauthn-attestation-ca v0.5.5
   Compiling webauthn-rs-core v0.5.5
   Compiling webauthn-rs v0.5.5
   Compiling infraternal-server v0.1.0 (/tmp/review-auth-web/crates/infraternal-server)
   Compiling infraternal v0.1.0 (/tmp/review-auth-web/crates/infraternal)
    Finished `release` profile [optimized] target(s) in 3m 49s
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: 9612768 bytes
    Blocking waiting for file lock on build directory
   Compiling cfg-if v1.0.5
   Compiling memchr v2.8.3
   Compiling libc v0.2.190
   Compiling serde_core v1.0.229
   Compiling zerofrom v0.1.8
   Compiling stable_deref_trait v1.2.1
   Compiling pin-project-lite v0.2.17
   Compiling smallvec v1.16.2
   Compiling futures-core v0.3.34
   Compiling itoa v1.0.18
   Compiling yoke v0.8.3
   Compiling bytes v1.12.1
   Compiling writeable v0.6.4
   Compiling log v0.4.34
   Compiling litemap v0.8.3
   Compiling zerovec v0.11.8
   Compiling zerotrie v0.2.5
   Compiling utf8_iter v1.0.4
   Compiling num-traits v0.2.19
   Compiling once_cell v1.21.4
   Compiling futures-sink v0.3.34
   Compiling icu_properties_data v2.3.0
   Compiling icu_normalizer_data v2.3.0
   Compiling zerocopy v0.8.60
   Compiling percent-encoding v2.3.2
   Compiling tracing-core v0.1.36
   Compiling scopeguard v1.2.0
   Compiling tinystr v0.8.4
   Compiling potential_utf v0.1.6
   Compiling typenum v1.20.1
   Compiling icu_collections v2.3.0
   Compiling icu_locale_core v2.3.0
   Compiling form_urlencoded v1.2.2
   Compiling mio v1.2.4
   Compiling socket2 v0.6.5
   Compiling tracing v0.1.44
   Compiling generic-array v0.14.7
   Compiling lock_api v0.4.14
   Compiling tokio v1.53.2
   Compiling openssl-sys v0.9.117
   Compiling subtle v2.6.1
   Compiling minimal-lexical v0.2.1
   Compiling icu_provider v2.3.1
   Compiling serde v1.0.229
   Compiling bitflags v2.13.2
   Compiling icu_properties v2.3.0
   Compiling icu_normalizer v2.3.0
   Compiling block-buffer v0.10.4
   Compiling crypto-common v0.1.7
   Compiling nom v7.1.3
   Compiling parking_lot_core v0.9.12
   Compiling slab v0.4.12
   Compiling time-core v0.1.9
   Compiling num-conv v0.2.2
   Compiling deranged v0.5.8
   Compiling futures-io v0.3.34
   Compiling powerfmt v0.2.1
   Compiling futures-task v0.3.34
   Compiling idna_adapter v1.2.2
   Compiling futures-util v0.3.34
   Compiling idna v1.1.0
   Compiling parking_lot v0.12.5
   Compiling ppv-lite86 v0.2.21
   Compiling time v0.3.55
   Compiling rusticata-macros v4.1.0
   Compiling url v2.5.8
   Compiling thiserror v1.0.69
   Compiling digest v0.10.7
   Compiling getrandom v0.2.17
   Compiling http v1.5.0
   Compiling equivalent v1.0.2
   Compiling arrayvec v0.7.8
   Compiling zmij v1.0.23
   Compiling rand_core v0.6.4
   Compiling getrandom v0.3.4
   Compiling num-integer v0.1.47
   Compiling futures-channel v0.3.34
   Compiling foreign-types-shared v0.1.1
   Compiling base64 v0.22.1
   Compiling allocator-api2 v0.2.21
   Compiling http-body v1.1.0
   Compiling foldhash v0.1.5
   Compiling base64 v0.21.7
   Compiling num-bigint v0.4.8
   Compiling hashbrown v0.15.5
   Compiling foreign-types v0.3.2
   Compiling crossbeam-utils v0.8.23
   Compiling base64urlsafedata v0.5.5
   Compiling rand_core v0.9.5
   Compiling serde_json v1.0.151
   Compiling asn1-rs v0.6.2
   Compiling getrandom v0.4.3
   Compiling cpufeatures v0.2.17
   Compiling parking v2.2.1
   Compiling ryu v1.0.23
   Compiling hashbrown v0.17.1
   Compiling linux-raw-sys v0.12.1
   Compiling tower-service v0.3.3
   Compiling crc-catalog v2.5.0
   Compiling crc v3.4.0
   Compiling serde_urlencoded v0.7.1
   Compiling rustix v1.1.5
   Compiling event-listener v5.4.2
   Compiling indexmap v2.14.2
   Compiling thiserror v2.0.21
   Compiling sha2 v0.10.9
   Compiling der-parser v9.0.0
   Compiling oid-registry v0.7.1
   Compiling uuid v1.27.0
   Compiling hashlink v0.10.0
   Compiling rand_chacha v0.9.0
   Compiling crossbeam-queue v0.3.14
   Compiling httparse v1.10.1
   Compiling tokio-stream v0.1.19
   Compiling half v2.7.1
   Compiling futures-intrusive v0.5.0
   Compiling either v1.18.0
   Compiling spin v0.9.9
   Compiling libsqlite3-sys v0.30.1
   Compiling errno v0.3.14
   Compiling utf8parse v0.2.2
   Compiling sync_wrapper v1.0.2
   Compiling data-encoding v2.11.1
   Compiling atomic-waker v1.1.2
   Compiling lazy_static v1.5.1
   Compiling httpdate v1.0.3
   Compiling tower-layer v0.3.3
   Compiling flume v0.11.1
   Compiling hyper v1.11.1
   Compiling sqlx-core v0.8.6
   Compiling anstyle-parse v1.0.0
   Compiling x509-parser v0.16.0
   Compiling signal-hook-registry v1.4.8
   Compiling serde_cbor_2 v0.13.0
   Compiling rand v0.9.5
   Compiling webauthn-rs-proto v0.5.5
   Compiling http-body-util v0.1.5
   Compiling futures-executor v0.3.34
   Compiling rand_chacha v0.3.1
   Compiling hex-conservative v0.2.3
   Compiling atoi v2.0.0
   Compiling aho-corasick v1.1.5
   Compiling hex v0.4.3
   Compiling base64ct v1.8.3
   Compiling colorchoice v1.0.5
   Compiling tinyvec v1.13.3
   Compiling mime v0.3.17
   Compiling cursor-icon v1.2.0
   Compiling anstyle-query v1.1.5
   Compiling anstyle v1.0.14
   Compiling is_terminal_polyfill v1.70.2
   Compiling regex-syntax v0.8.11
   Compiling anstream v1.0.0
   Compiling axum-core v0.5.6
   Compiling unicode-normalization v0.1.25
   Compiling vte v0.15.0
   Compiling password-hash v0.5.0
   Compiling sqlx-sqlite v0.8.6
   Compiling bitcoin_hashes v0.14.101
   Compiling rand v0.8.8
   Compiling polling v3.11.0
   Compiling rustix-openpty v0.2.0
   Compiling hyper-util v0.1.21
   Compiling signal-hook v0.3.18
   Compiling regex-automata v0.4.18
   Compiling memoffset v0.9.1
   Compiling tower v0.5.3
   Compiling blake2 v0.10.6
   Compiling serde_path_to_error v0.1.20
   Compiling strsim v0.11.1
   Compiling matchit v0.8.4
   Compiling clap_lex v1.1.1
   Compiling home v0.5.12
   Compiling unicode-width v0.2.2
   Compiling clap_builder v4.6.7
   Compiling sqlx v0.8.6
   Compiling axum v0.8.9
   Compiling argon2 v0.5.3
   Compiling nix v0.30.1
   Compiling bip39 v2.2.2
   Compiling clap v4.6.7
   Compiling alacritty_terminal v0.25.1
   Compiling infraternal-shim v0.1.0 (/tmp/review-auth-web/crates/infraternal-shim)
   Compiling openssl v0.10.81
   Compiling webauthn-attestation-ca v0.5.5
   Compiling webauthn-rs-core v0.5.5
   Compiling webauthn-rs v0.5.5
   Compiling infraternal-server v0.1.0 (/tmp/review-auth-web/crates/infraternal-server)
   Compiling infraternal v0.1.0 (/tmp/review-auth-web/crates/infraternal)
    Finished `release` profile [optimized] target(s) in 2m 45s
target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped
PT_INTERP: absent; size: 8053768 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         |
+---------------------------+--------------+

==> TypeScript protocol compiler

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

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

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 [2186.66ms]
(pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [10.44ms]

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

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

Independent audit verdict: REWORK (F1). Failed unwrap + logout 429 retains the session and production reload opens terminal. Real 120-action admission test blocks logout with 429/live session. Full findings and design reasoning posted on #19. Client tsc/build, real production setup/sign-in, restart, storage/traffic and error-copy checks passed. Independent audit finish evidence: client scripts/verify fast (exit 0). Server head 7948ff00fb6370e0a257a14b9fb00f3d6fc3cf7a; client head 639ac276841832b76828ca09abedf98cca663296. Original branches t-server/t-web remain clean; no commits, push or deploy. Disposable /tmp worktrees removed. Verbatim output: ```text ==> fmt ==> clippy Checking infraternal-shim v0.1.0 (/tmp/review-auth-web/crates/infraternal-shim) Checking infraternal-server v0.1.0 (/tmp/review-auth-web/crates/infraternal-server) Checking infraternal-fuzz v0.1.0 (/tmp/review-auth-web/fuzz) Checking infraternal v0.1.0 (/tmp/review-auth-web/crates/infraternal) Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.41s ==> test Compiling infraternal-shim v0.1.0 (/tmp/review-auth-web/crates/infraternal-shim) Compiling infraternal-server v0.1.0 (/tmp/review-auth-web/crates/infraternal-server) Compiling infraternal v0.1.0 (/tmp/review-auth-web/crates/infraternal) Finished `test` profile [unoptimized + debuginfo] target(s) in 6.91s Running unittests src/main.rs (target/debug/deps/infraternal-9e94862a7b394f9c) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/shim.rs (target/debug/deps/shim-6f04c94795826747) running 7 tests test double_fork_survives_parent_death ... ok test disallowed_signal_only_disconnects_peer ... ok test replacement_connection_and_malformed_limit ... ok active test user_scope_survives_parent_unit_stop ... ok test real_shell_reconnect_resize_and_retained_exit ... ok test attached_backpressure_and_detached_progress ... ok test ring_wrap_snapshot_repaints_real_vim ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.34s Running unittests src/lib.rs (target/debug/deps/infraternal_agent-fa68307371902d7e) 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_api-4c15adbf8555ed52) 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-61e7d8ca927ad4ff) 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-adc33ab540b93a69) running 7 tests test stream_tests::split_mux_header_preserves_trailing_close ... ok test stream_tests::all_short_frame_splits_match_direct_decoding ... ok test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok test tests::oversized_encode_keeps_the_reusable_output_unchanged ... ok test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (target/debug/deps/infraternal_server-dc22f5a27520ab06) running 12 tests test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok test auth::tests::review_old_words_race_rotation ... ok test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok test auth::tests::setup_expiry_single_announcement_and_parallel_redemption ... ok test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 14.17s Running unittests src/lib.rs (target/debug/deps/infraternal_shim-c452eabf32098c3d) running 12 tests 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 frame::checks::tests::golden_and_fragmented ... ok test frame::checks::tests::invalid_lengths_types_and_utf8 ... ok test ring::checks::tests::wrap_and_exact_offsets ... 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 frame::checks::golden::exact_maximum_and_coalesced_frames ... ok test terminal::checks::tests::fixtures_and_continuations_repaint ... ok test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok test result: ok. 9 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.18s Running tests/detach.rs (target/debug/deps/detach-b5e6ea2e7295c0ad) 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.62s 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' ┌─ /tmp/review-auth-web/Cargo.lock:24:1 │ 24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────┘ lock entries │ ├ base64 v0.21.7 ├── base64urlsafedata v0.5.5 │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── webauthn-rs v0.5.5 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-proto v0.5.5 │ └── webauthn-rs-core v0.5.5 (*) ├── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-proto v0.5.5 (*) ├ base64 v0.22.1 ├── alacritty_terminal v0.25.1 │ └── infraternal-shim v0.1.0 │ ├── infraternal v0.1.0 │ └── infraternal-fuzz 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 (*) warning[duplicate]: found 3 duplicate entries for crate 'getrandom' ┌─ /tmp/review-auth-web/Cargo.lock:88:1 │ 88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ getrandom v0.2.17 └── rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── 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 │ │ ├── openssl v0.10.81 │ │ │ ├── infraternal-server v0.1.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 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.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' ┌─ /tmp/review-auth-web/Cargo.lock:93:1 │ 93 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 94 │ │ 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 └── 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 (*) warning[duplicate]: found 2 duplicate entries for crate 'r-efi' ┌─ /tmp/review-auth-web/Cargo.lock:183:1 │ 183 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 184 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────┘ lock entries │ ├ r-efi v5.3.0 └── getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── 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 │ │ ├── openssl v0.10.81 │ │ │ ├── infraternal-server v0.1.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 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.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' ┌─ /tmp/review-auth-web/Cargo.lock:185:1 │ 185 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index 186 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand v0.9.5 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 └── 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' ┌─ /tmp/review-auth-web/Cargo.lock:187:1 │ 187 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 188 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_chacha v0.3.1 └── rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── 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' ┌─ /tmp/review-auth-web/Cargo.lock:189:1 │ 189 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 190 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── 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 │ └── 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' ┌─ /tmp/review-auth-web/Cargo.lock:227:1 │ 227 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 228 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────┘ lock entries │ ├ syn v2.0.119 ├── asn1-rs-derive v0.5.1 │ └── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── asn1-rs-impl v0.2.0 │ └── asn1-rs v0.6.2 (*) ├── openssl-macros v0.1.1 │ └── openssl v0.10.81 │ ├── infraternal-server v0.1.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 (*) │ ├── 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 (*) │ ├── 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-fuzz 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 (*) │ └── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ syn v3.0.6 ├── clap_derive v4.6.7 │ └── clap v4.6.7 │ ├── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ └── infraternal-fuzz 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 │ │ │ │ └── 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 (*) │ ├── 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 (*) ├── serde_derive v1.0.229 │ ├── serde v1.0.229 │ │ ├── alacritty_terminal v0.25.1 │ │ │ └── infraternal-shim v0.1.0 │ │ │ ├── infraternal 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 │ │ │ ├── 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-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 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── 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 (*) │ │ ├── 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-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 (*) ├── tokio-macros v2.7.2 │ └── tokio v1.53.2 │ ├── axum v0.8.9 (*) │ ├── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ └── hyper-util v0.1.21 │ │ └── axum v0.8.9 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ └── tower v0.5.3 │ ├── axum v0.8.9 (*) │ └── (dev) infraternal-server v0.1.0 (*) ├── wasm-bindgen-macro-support v0.2.129 │ └── wasm-bindgen-macro v0.2.129 │ └── wasm-bindgen v0.2.129 │ ├── js-sys v0.3.106 │ │ └── web-sys v0.3.106 │ │ └── plotters v0.3.7 │ │ └── criterion v0.7.0 (*) │ ├── 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' ┌─ /tmp/review-auth-web/Cargo.lock:230:1 │ 230 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 231 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ synstructure v0.13.2 └── asn1-rs-derive v0.5.1 └── asn1-rs v0.6.2 ├── der-parser v9.0.0 │ ├── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── x509-parser v0.16.0 │ └── webauthn-rs-core v0.5.5 (*) ├── oid-registry v0.7.1 │ └── x509-parser v0.16.0 (*) └── x509-parser v0.16.0 (*) ├ synstructure v0.14.0 ├── yoke-derive v0.8.4 │ └── 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' ┌─ /tmp/review-auth-web/Cargo.lock:232:1 │ 232 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 233 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror v2.0.21 ├── infraternal-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 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl' ┌─ /tmp/review-auth-web/Cargo.lock:234:1 │ 234 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 235 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror-impl v1.0.69 └── thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror-impl v2.0.21 └── thiserror v2.0.21 ├── infraternal-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 (*) warning[duplicate]: found 2 duplicate entries for crate 'windows-sys' ┌─ /tmp/review-auth-web/Cargo.lock:278:1 │ 278 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index 279 │ │ 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-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-fuzz v0.1.0 │ └── infraternal v0.1.0 ├── 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-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 (*) ├── home v0.5.12 │ └── alacritty_terminal v0.25.1 (*) ├── mio v1.2.4 │ └── tokio v1.53.2 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ ├── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ └── hyper-util v0.1.21 │ │ └── axum v0.8.9 (*) │ ├── hyper-util v0.1.21 (*) │ ├── 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 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ └── tower v0.5.3 │ ├── axum v0.8.9 (*) │ └── (dev) infraternal-server v0.1.0 (*) ├── miow v0.6.1 │ └── alacritty_terminal v0.25.1 (*) ├── 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 Blocking waiting for file lock on build directory Compiling cfg-if v1.0.5 Compiling memchr v2.8.3 Compiling libc v0.2.190 Compiling serde_core v1.0.229 Compiling zerofrom v0.1.8 Compiling stable_deref_trait v1.2.1 Compiling pin-project-lite v0.2.17 Compiling smallvec v1.16.2 Compiling futures-core v0.3.34 Compiling itoa v1.0.18 Compiling bytes v1.12.1 Compiling yoke v0.8.3 Compiling log v0.4.34 Compiling writeable v0.6.4 Compiling litemap v0.8.3 Compiling zerovec v0.11.8 Compiling zerotrie v0.2.5 Compiling utf8_iter v1.0.4 Compiling num-traits v0.2.19 Compiling once_cell v1.21.4 Compiling futures-sink v0.3.34 Compiling tracing-core v0.1.36 Compiling icu_normalizer_data v2.3.0 Compiling icu_properties_data v2.3.0 Compiling zerocopy v0.8.60 Compiling scopeguard v1.2.0 Compiling typenum v1.20.1 Compiling tinystr v0.8.4 Compiling potential_utf v0.1.6 Compiling percent-encoding v2.3.2 Compiling icu_collections v2.3.0 Compiling icu_locale_core v2.3.0 Compiling tracing v0.1.44 Compiling socket2 v0.6.5 Compiling mio v1.2.4 Compiling form_urlencoded v1.2.2 Compiling generic-array v0.14.7 Compiling lock_api v0.4.14 Compiling openssl-sys v0.9.117 Compiling subtle v2.6.1 Compiling tokio v1.53.2 Compiling minimal-lexical v0.2.1 Compiling parking_lot_core v0.9.12 Compiling icu_provider v2.3.1 Compiling nom v7.1.3 Compiling crypto-common v0.1.7 Compiling serde v1.0.229 Compiling bitflags v2.13.2 Compiling icu_normalizer v2.3.0 Compiling icu_properties v2.3.0 Compiling block-buffer v0.10.4 Compiling futures-io v0.3.34 Compiling slab v0.4.12 Compiling time-core v0.1.9 Compiling num-conv v0.2.2 Compiling deranged v0.5.8 Compiling powerfmt v0.2.1 Compiling futures-task v0.3.34 Compiling digest v0.10.7 Compiling futures-util v0.3.34 Compiling thiserror v1.0.69 Compiling parking_lot v0.12.5 Compiling rusticata-macros v4.1.0 Compiling idna_adapter v1.2.2 Compiling idna v1.1.0 Compiling getrandom v0.2.17 Compiling http v1.5.0 Compiling time v0.3.55 Compiling equivalent v1.0.2 Compiling arrayvec v0.7.8 Compiling url v2.5.8 Compiling ppv-lite86 v0.2.21 Compiling zmij v1.0.23 Compiling http-body v1.1.0 Compiling rand_core v0.6.4 Compiling getrandom v0.3.4 Compiling num-integer v0.1.47 Compiling futures-channel v0.3.34 Compiling base64 v0.22.1 Compiling allocator-api2 v0.2.21 Compiling foldhash v0.1.5 Compiling base64 v0.21.7 Compiling foreign-types-shared v0.1.1 Compiling cpufeatures v0.2.17 Compiling foreign-types v0.3.2 Compiling hashbrown v0.15.5 Compiling num-bigint v0.4.8 Compiling crossbeam-utils v0.8.23 Compiling rand_core v0.9.5 Compiling base64urlsafedata v0.5.5 Compiling serde_json v1.0.151 Compiling getrandom v0.4.3 Compiling parking v2.2.1 Compiling ryu v1.0.23 Compiling linux-raw-sys v0.12.1 Compiling hashbrown v0.17.1 Compiling asn1-rs v0.6.2 Compiling tower-service v0.3.3 Compiling crc-catalog v2.5.0 Compiling crc v3.4.0 Compiling rustix v1.1.5 Compiling indexmap v2.14.2 Compiling tokio-stream v0.1.19 Compiling serde_urlencoded v0.7.1 Compiling der-parser v9.0.0 Compiling oid-registry v0.7.1 Compiling uuid v1.27.0 Compiling event-listener v5.4.2 Compiling hashlink v0.10.0 Compiling thiserror v2.0.21 Compiling crossbeam-queue v0.3.14 Compiling rand_chacha v0.9.0 Compiling httparse v1.10.1 Compiling sha2 v0.10.9 Compiling half v2.7.1 Compiling futures-intrusive v0.5.0 Compiling either v1.18.0 Compiling spin v0.9.9 Compiling libsqlite3-sys v0.30.1 Compiling errno v0.3.14 Compiling tower-layer v0.3.3 Compiling utf8parse v0.2.2 Compiling data-encoding v2.11.1 Compiling sync_wrapper v1.0.2 Compiling lazy_static v1.5.1 Compiling atomic-waker v1.1.2 Compiling httpdate v1.0.3 Compiling anstyle-parse v1.0.0 Compiling hyper v1.11.1 Compiling signal-hook-registry v1.4.8 Compiling flume v0.11.1 Compiling sqlx-core v0.8.6 Compiling x509-parser v0.16.0 Compiling serde_cbor_2 v0.13.0 Compiling rand v0.9.5 Compiling webauthn-rs-proto v0.5.5 Compiling futures-executor v0.3.34 Compiling rand_chacha v0.3.1 Compiling http-body-util v0.1.5 Compiling hex-conservative v0.2.3 Compiling atoi v2.0.0 Compiling aho-corasick v1.1.5 Compiling base64ct v1.8.3 Compiling colorchoice v1.0.5 Compiling anstyle v1.0.14 Compiling mime v0.3.17 Compiling tinyvec v1.13.3 Compiling cursor-icon v1.2.0 Compiling anstyle-query v1.1.5 Compiling is_terminal_polyfill v1.70.2 Compiling hex v0.4.3 Compiling regex-syntax v0.8.11 Compiling anstream v1.0.0 Compiling vte v0.15.0 Compiling axum-core v0.5.6 Compiling unicode-normalization v0.1.25 Compiling sqlx-sqlite v0.8.6 Compiling password-hash v0.5.0 Compiling bitcoin_hashes v0.14.101 Compiling rand v0.8.8 Compiling regex-automata v0.4.18 Compiling hyper-util v0.1.21 Compiling polling v3.11.0 Compiling rustix-openpty v0.2.0 Compiling signal-hook v0.3.18 Compiling memoffset v0.9.1 Compiling tower v0.5.3 Compiling blake2 v0.10.6 Compiling serde_path_to_error v0.1.20 Compiling strsim v0.11.1 Compiling matchit v0.8.4 Compiling clap_lex v1.1.1 Compiling home v0.5.12 Compiling unicode-width v0.2.2 Compiling axum v0.8.9 Compiling clap_builder v4.6.7 Compiling sqlx v0.8.6 Compiling argon2 v0.5.3 Compiling nix v0.30.1 Compiling bip39 v2.2.2 Compiling alacritty_terminal v0.25.1 Compiling clap v4.6.7 Compiling infraternal-shim v0.1.0 (/tmp/review-auth-web/crates/infraternal-shim) Compiling openssl v0.10.81 Compiling webauthn-attestation-ca v0.5.5 Compiling webauthn-rs-core v0.5.5 Compiling webauthn-rs v0.5.5 Compiling infraternal-server v0.1.0 (/tmp/review-auth-web/crates/infraternal-server) Compiling infraternal v0.1.0 (/tmp/review-auth-web/crates/infraternal) Finished `release` profile [optimized] target(s) in 3m 49s 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: 9612768 bytes Blocking waiting for file lock on build directory Compiling cfg-if v1.0.5 Compiling memchr v2.8.3 Compiling libc v0.2.190 Compiling serde_core v1.0.229 Compiling zerofrom v0.1.8 Compiling stable_deref_trait v1.2.1 Compiling pin-project-lite v0.2.17 Compiling smallvec v1.16.2 Compiling futures-core v0.3.34 Compiling itoa v1.0.18 Compiling yoke v0.8.3 Compiling bytes v1.12.1 Compiling writeable v0.6.4 Compiling log v0.4.34 Compiling litemap v0.8.3 Compiling zerovec v0.11.8 Compiling zerotrie v0.2.5 Compiling utf8_iter v1.0.4 Compiling num-traits v0.2.19 Compiling once_cell v1.21.4 Compiling futures-sink v0.3.34 Compiling icu_properties_data v2.3.0 Compiling icu_normalizer_data v2.3.0 Compiling zerocopy v0.8.60 Compiling percent-encoding v2.3.2 Compiling tracing-core v0.1.36 Compiling scopeguard v1.2.0 Compiling tinystr v0.8.4 Compiling potential_utf v0.1.6 Compiling typenum v1.20.1 Compiling icu_collections v2.3.0 Compiling icu_locale_core v2.3.0 Compiling form_urlencoded v1.2.2 Compiling mio v1.2.4 Compiling socket2 v0.6.5 Compiling tracing v0.1.44 Compiling generic-array v0.14.7 Compiling lock_api v0.4.14 Compiling tokio v1.53.2 Compiling openssl-sys v0.9.117 Compiling subtle v2.6.1 Compiling minimal-lexical v0.2.1 Compiling icu_provider v2.3.1 Compiling serde v1.0.229 Compiling bitflags v2.13.2 Compiling icu_properties v2.3.0 Compiling icu_normalizer v2.3.0 Compiling block-buffer v0.10.4 Compiling crypto-common v0.1.7 Compiling nom v7.1.3 Compiling parking_lot_core v0.9.12 Compiling slab v0.4.12 Compiling time-core v0.1.9 Compiling num-conv v0.2.2 Compiling deranged v0.5.8 Compiling futures-io v0.3.34 Compiling powerfmt v0.2.1 Compiling futures-task v0.3.34 Compiling idna_adapter v1.2.2 Compiling futures-util v0.3.34 Compiling idna v1.1.0 Compiling parking_lot v0.12.5 Compiling ppv-lite86 v0.2.21 Compiling time v0.3.55 Compiling rusticata-macros v4.1.0 Compiling url v2.5.8 Compiling thiserror v1.0.69 Compiling digest v0.10.7 Compiling getrandom v0.2.17 Compiling http v1.5.0 Compiling equivalent v1.0.2 Compiling arrayvec v0.7.8 Compiling zmij v1.0.23 Compiling rand_core v0.6.4 Compiling getrandom v0.3.4 Compiling num-integer v0.1.47 Compiling futures-channel v0.3.34 Compiling foreign-types-shared v0.1.1 Compiling base64 v0.22.1 Compiling allocator-api2 v0.2.21 Compiling http-body v1.1.0 Compiling foldhash v0.1.5 Compiling base64 v0.21.7 Compiling num-bigint v0.4.8 Compiling hashbrown v0.15.5 Compiling foreign-types v0.3.2 Compiling crossbeam-utils v0.8.23 Compiling base64urlsafedata v0.5.5 Compiling rand_core v0.9.5 Compiling serde_json v1.0.151 Compiling asn1-rs v0.6.2 Compiling getrandom v0.4.3 Compiling cpufeatures v0.2.17 Compiling parking v2.2.1 Compiling ryu v1.0.23 Compiling hashbrown v0.17.1 Compiling linux-raw-sys v0.12.1 Compiling tower-service v0.3.3 Compiling crc-catalog v2.5.0 Compiling crc v3.4.0 Compiling serde_urlencoded v0.7.1 Compiling rustix v1.1.5 Compiling event-listener v5.4.2 Compiling indexmap v2.14.2 Compiling thiserror v2.0.21 Compiling sha2 v0.10.9 Compiling der-parser v9.0.0 Compiling oid-registry v0.7.1 Compiling uuid v1.27.0 Compiling hashlink v0.10.0 Compiling rand_chacha v0.9.0 Compiling crossbeam-queue v0.3.14 Compiling httparse v1.10.1 Compiling tokio-stream v0.1.19 Compiling half v2.7.1 Compiling futures-intrusive v0.5.0 Compiling either v1.18.0 Compiling spin v0.9.9 Compiling libsqlite3-sys v0.30.1 Compiling errno v0.3.14 Compiling utf8parse v0.2.2 Compiling sync_wrapper v1.0.2 Compiling data-encoding v2.11.1 Compiling atomic-waker v1.1.2 Compiling lazy_static v1.5.1 Compiling httpdate v1.0.3 Compiling tower-layer v0.3.3 Compiling flume v0.11.1 Compiling hyper v1.11.1 Compiling sqlx-core v0.8.6 Compiling anstyle-parse v1.0.0 Compiling x509-parser v0.16.0 Compiling signal-hook-registry v1.4.8 Compiling serde_cbor_2 v0.13.0 Compiling rand v0.9.5 Compiling webauthn-rs-proto v0.5.5 Compiling http-body-util v0.1.5 Compiling futures-executor v0.3.34 Compiling rand_chacha v0.3.1 Compiling hex-conservative v0.2.3 Compiling atoi v2.0.0 Compiling aho-corasick v1.1.5 Compiling hex v0.4.3 Compiling base64ct v1.8.3 Compiling colorchoice v1.0.5 Compiling tinyvec v1.13.3 Compiling mime v0.3.17 Compiling cursor-icon v1.2.0 Compiling anstyle-query v1.1.5 Compiling anstyle v1.0.14 Compiling is_terminal_polyfill v1.70.2 Compiling regex-syntax v0.8.11 Compiling anstream v1.0.0 Compiling axum-core v0.5.6 Compiling unicode-normalization v0.1.25 Compiling vte v0.15.0 Compiling password-hash v0.5.0 Compiling sqlx-sqlite v0.8.6 Compiling bitcoin_hashes v0.14.101 Compiling rand v0.8.8 Compiling polling v3.11.0 Compiling rustix-openpty v0.2.0 Compiling hyper-util v0.1.21 Compiling signal-hook v0.3.18 Compiling regex-automata v0.4.18 Compiling memoffset v0.9.1 Compiling tower v0.5.3 Compiling blake2 v0.10.6 Compiling serde_path_to_error v0.1.20 Compiling strsim v0.11.1 Compiling matchit v0.8.4 Compiling clap_lex v1.1.1 Compiling home v0.5.12 Compiling unicode-width v0.2.2 Compiling clap_builder v4.6.7 Compiling sqlx v0.8.6 Compiling axum v0.8.9 Compiling argon2 v0.5.3 Compiling nix v0.30.1 Compiling bip39 v2.2.2 Compiling clap v4.6.7 Compiling alacritty_terminal v0.25.1 Compiling infraternal-shim v0.1.0 (/tmp/review-auth-web/crates/infraternal-shim) Compiling openssl v0.10.81 Compiling webauthn-attestation-ca v0.5.5 Compiling webauthn-rs-core v0.5.5 Compiling webauthn-rs v0.5.5 Compiling infraternal-server v0.1.0 (/tmp/review-auth-web/crates/infraternal-server) Compiling infraternal v0.1.0 (/tmp/review-auth-web/crates/infraternal) Finished `release` profile [optimized] target(s) in 2m 45s target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 8053768 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 | +---------------------------+--------------+ ==> TypeScript protocol compiler ==> Rust stream oracle (for the differential test) ==> TypeScript protocol tests bun test v1.4.2 (744846f84) 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 [2186.66ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [10.44ms] src/codec.test.ts: (pass) wire protocol golden vectors > encodes and decodes each frame exactly as the shared manifest describes [2.51ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.11ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [0.26ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.18ms] (pass) split mux header preserves trailing Close [0.09ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.21s] ```
kayg referenced this issue from a commit 2026-10-10 09:20:33 +00:00
Author
Owner

Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Web client merged (58040df, faa3154, ff505cb in dev and prod); audit F1 fixed in #29 round. 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: Web client merged (58040df, faa3154, ff505cb in dev and prod); audit F1 fixed in #29 round. Reopen if anything is still missing.
kayg closed this issue 2026-10-28 17:52:13 +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#21
No description provided.