S1 tracer: server core (HTTP, WebSocket, sessions, embedded agent spawn, self-install) #19

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

Part of #9. Base dev 7174d6b. The server half of the tracer bullet: axum on HTTPS or plain HTTP behind a proxy, the auth routes from #17 mounted, the leg-A WebSocket with the wire codec, sessions per user, spawning and supervising the embedded agent (agent --fd 3), routing terminal streams, and infraternal server install.

Part of #9. Base `dev` `7174d6b`. The server half of the tracer bullet: axum on HTTPS or plain HTTP behind a proxy, the auth routes from #17 mounted, the leg-A WebSocket with the wire codec, sessions per user, spawning and supervising the embedded agent (`agent --fd 3`), routing terminal streams, and `infraternal server install`.
Author
Owner

Starting server core lane on branch t-server, based on dev 7174d6bf6f.

Starting server core lane on branch t-server, based on dev 7174d6bf6f1880458a4166a2cf0fa45158d1742e.
Author
Owner

Contract gaps found at 7174d6b: contracts/wire.md defines WebSocket frames but not the embedded Unix socketpair channel's trust/mux behavior or terminal stream allocation; contracts/plugin.md has no terminal.open schema; contracts/keywrap.md requires forwarded client IPs to be trusted only from configured proxy peers, while the requested CLI has only --behind-proxy. Proposal for this lane: (1) terminal.open on control stream 0 uses JSON {cols:u16,rows:u16,px_w:u16,px_h:u16} and returns {session_id:<32 lowercase hex>}; (2) socketpair fd 3 uses the existing length-delimited wire frames wrapped in leg-B mux envelopes, with stream 0 control and server-opened even terminal streams; the inherited local socketpair is the trust boundary, so no mTLS; (3) add repeatable --trusted-proxy <IP/CIDR>, require at least one when --behind-proxy is set, and only accept X-Forwarded-* from those peer addresses (public-origin remains pinned). I will implement these additive details in this lane and document the local IPC boundary.

Contract gaps found at 7174d6b: contracts/wire.md defines WebSocket frames but not the embedded Unix socketpair channel's trust/mux behavior or terminal stream allocation; contracts/plugin.md has no terminal.open schema; contracts/keywrap.md requires forwarded client IPs to be trusted only from configured proxy peers, while the requested CLI has only --behind-proxy. Proposal for this lane: (1) terminal.open on control stream 0 uses JSON {cols:u16,rows:u16,px_w:u16,px_h:u16} and returns {session_id:<32 lowercase hex>}; (2) socketpair fd 3 uses the existing length-delimited wire frames wrapped in leg-B mux envelopes, with stream 0 control and server-opened even terminal streams; the inherited local socketpair is the trust boundary, so no mTLS; (3) add repeatable --trusted-proxy <IP/CIDR>, require at least one when --behind-proxy is set, and only accept X-Forwarded-* from those peer addresses (public-origin remains pinned). I will implement these additive details in this lane and document the local IPC boundary.
Author
Owner

Baseline finding at 7174d6b: crates/infraternal-agent/src/lib.rs contains only its module doc and crates/infraternal/src/main.rs returns 'not implemented' for the agent command. The server lane cannot launch a real local agent against this base; per #19 I will keep the production contract pointed at agent --fd 3 and use a clearly marked contract-speaking stub only in the integration test until the agent lane is merged.

Baseline finding at 7174d6b: crates/infraternal-agent/src/lib.rs contains only its module doc and crates/infraternal/src/main.rs returns 'not implemented' for the agent command. The server lane cannot launch a real local agent against this base; per #19 I will keep the production contract pointed at <self> agent --fd 3 and use a clearly marked contract-speaking stub only in the integration test until the agent lane is merged.
Author
Owner

Runtime storage test found a migration namespace collision: placing the server schema at crates/infraternal-server/migrations/server/0001_runtime.sql makes auth::Auth::new return Migration(VersionMismatch(1)); reproduced by runtime::tests::router_migrates_private_storage_and_serves_health. I am moving server migrations to an independent server-migrations directory so the existing #17 auth migration runner remains untouched.

Runtime storage test found a migration namespace collision: placing the server schema at crates/infraternal-server/migrations/server/0001_runtime.sql makes auth::Auth::new return Migration(VersionMismatch(1)); reproduced by runtime::tests::router_migrates_private_storage_and_serves_health. I am moving server migrations to an independent server-migrations directory so the existing #17 auth migration runner remains untouched.
Author
Owner

Correction to the previous migration finding: the collision is the shared SQLite version namespace, not recursive discovery. The server's version-1 migration ran before Auth and Auth then rejected its different version-1 checksum. Fix: keep the server migration in at version 2 and run Auth::new first, then the server migration.

Correction to the previous migration finding: the collision is the shared SQLite version namespace, not recursive discovery. The server's version-1 migration ran before Auth and Auth then rejected its different version-1 checksum. Fix: keep the server migration in at version 2 and run Auth::new first, then the server migration.
Author
Owner

Correction to the previous migration finding: the collision is the shared SQLite _sqlx_migrations version namespace, not recursive discovery. The server version-1 migration ran before Auth and Auth then rejected its different version-1 checksum. Fix: keep the server migration in server-migrations at version 2 and run Auth::new first, then the server migration.

Correction to the previous migration finding: the collision is the shared SQLite _sqlx_migrations version namespace, not recursive discovery. The server version-1 migration ran before Auth and Auth then rejected its different version-1 checksum. Fix: keep the server migration in server-migrations at version 2 and run Auth::new first, then the server migration.
Author
Owner

Second migration correction from the same startup test: using a separate migrator directory with version 2 returns Migration(VersionMissing(1)), because both migrators share one SQLite migration table and sqlx verifies the complete embedded history. The compatible approach is a contiguous 0002_runtime.sql in the existing migrations directory; Auth::new then applies the single ordered schema stream without changing auth behavior.

Second migration correction from the same startup test: using a separate migrator directory with version 2 returns Migration(VersionMissing(1)), because both migrators share one SQLite migration table and sqlx verifies the complete embedded history. The compatible approach is a contiguous 0002_runtime.sql in the existing migrations directory; Auth::new then applies the single ordered schema stream without changing auth behavior.
Author
Owner

Protocol gap proposal: the current wire handshake has no unambiguous way to tell a new connection from one that will send Resume. I propose reserving Hello caps bit 0 as RESUME_NEXT: a new client sends Hello with bit 0 clear and receives Welcome; a resuming client sends Hello with bit 0 set, then Resume on stream 0, and receives a refreshed Welcome after the server validates the single-use resume token. The server rejects a Resume unless bit 0 was set. I am implementing this handshake and documenting the capability on the #19 branch.

Protocol gap proposal: the current wire handshake has no unambiguous way to tell a new connection from one that will send Resume. I propose reserving Hello caps bit 0 as RESUME_NEXT: a new client sends Hello with bit 0 clear and receives Welcome; a resuming client sends Hello with bit 0 set, then Resume on stream 0, and receives a refreshed Welcome after the server validates the single-use resume token. The server rejects a Resume unless bit 0 was set. I am implementing this handshake and documenting the capability on the #19 branch.
Author
Owner

Alignment note: the web client calls the user-facing action ssh.session.open (contracts/plugin.md §3). The agent (#20) exposes the internal leg-B call terminal.open with input {uid, cols, rows} and output {session_id}, and reports exit as Event terminal.exited. The server maps one to the other (authorize and audit, then forward).

Alignment note: the web client calls the user-facing action `ssh.session.open` (contracts/plugin.md §3). The agent (#20) exposes the internal leg-B call `terminal.open` with input `{uid, cols, rows}` and output `{session_id}`, and reports exit as Event `terminal.exited`. The server maps one to the other (authorize and audit, then forward).
Author
Owner

Finding: wire.md §5 defines terminal offsets as u64, but SQLite INTEGER/BIGINT is signed and migration 0002 stores input_acked as INTEGER. An offset above 2^63-1 cannot be persisted exactly, so restart/resume accounting would fail at the upper half of the wire range. Proposal: add migration 0004 with an eight-byte little-endian BLOB input_acked_u64, use it as the authoritative offset, and retain 0002 input_acked for migration compatibility. I am implementing that representation.

Finding: wire.md §5 defines terminal offsets as u64, but SQLite INTEGER/BIGINT is signed and migration 0002 stores input_acked as INTEGER. An offset above 2^63-1 cannot be persisted exactly, so restart/resume accounting would fail at the upper half of the wire range. Proposal: add migration 0004 with an eight-byte little-endian BLOB input_acked_u64, use it as the authoritative offset, and retain 0002 input_acked for migration compatibility. I am implementing that representation.
Author
Owner

Protocol gap proposal: the mux has no way to retire one terminal attachment without closing the socketpair, and Credit(0) means zero output credit rather than detach. I propose that Close on a nonzero mux stream retire only that stream (code 1000 means detached); Close on stream 0 continues to close the connection. I am documenting this and sending per-stream Close when a browser attachment drops, so the agent lane can match it.

Protocol gap proposal: the mux has no way to retire one terminal attachment without closing the socketpair, and Credit(0) means zero output credit rather than detach. I propose that Close on a nonzero mux stream retire only that stream (code 1000 means detached); Close on stream 0 continues to close the connection. I am documenting this and sending per-stream Close when a browser attachment drops, so the agent lane can match it.
Author
Owner

Finding: the requested spawn command is <self> agent --fd 3, but crates/infraternal/src/main.rs currently defines Command::Agent without options, so Clap exits before the socketpair handshake. Proposal: reserve optional agent --fd <u32> in the CLI now; the agent lane can consume that descriptor when its implementation lands, while the current stub continues returning exit 2. I am adding only this compatibility argument.

Finding: the requested spawn command is `<self> agent --fd 3`, but `crates/infraternal/src/main.rs` currently defines `Command::Agent` without options, so Clap exits before the socketpair handshake. Proposal: reserve optional `agent --fd <u32>` in the CLI now; the agent lane can consume that descriptor when its implementation lands, while the current stub continues returning exit 2. I am adding only this compatibility argument.
Author
Owner

Finding: Decision 26 requires printing the initial setup capability to logs, but the job contract forbids secrets in logs, files, and argv. Proposal: keep Auth bootstrap unchanged and deliver the newly generated capability only over a same-user Unix socket at /setup-token.sock (inside the private 0700 data directory, socket mode 0600); add an explicit infraternal server setup-token command that prints it only on operator request. Runtime holds the token in memory and never logs or persists it. This changes Decision 26 behavior and needs owner review; the decision file remains untouched.

Finding: Decision 26 requires printing the initial setup capability to logs, but the job contract forbids secrets in logs, files, and argv. Proposal: keep Auth bootstrap unchanged and deliver the newly generated capability only over a same-user Unix socket at <data>/setup-token.sock (inside the private 0700 data directory, socket mode 0600); add an explicit `infraternal server setup-token` command that prints it only on operator request. Runtime holds the token in memory and never logs or persists it. This changes Decision 26 behavior and needs owner review; the decision file remains untouched.
Author
Owner

Finding: the user unit cannot start with public origin https://10.69.69.125:47361; startup fails with rp_id is not an effective_domain of rp_origin. The WebAuthn RP-ID rule requires a domain-form host, so the listener IP cannot itself be the passkey RP ID. Proposal: keep the listener bound to 10.69.69.125:47361, and use https://10.69.69.125.nip.io:47361 as public origin with a self-signed certificate whose SAN covers both that DNS name and the IP. This preserves the NetBird listener while giving passkeys a valid RP ID; the owner can replace nip.io with managed DNS later.

Finding: the user unit cannot start with public origin https://10.69.69.125:47361; startup fails with `rp_id is not an effective_domain of rp_origin`. The WebAuthn RP-ID rule requires a domain-form host, so the listener IP cannot itself be the passkey RP ID. Proposal: keep the listener bound to 10.69.69.125:47361, and use https://10.69.69.125.nip.io:47361 as public origin with a self-signed certificate whose SAN covers both that DNS name and the IP. This preserves the NetBird listener while giving passkeys a valid RP ID; the owner can replace nip.io with managed DNS later.
Author
Owner

Finished on branch t-server, HEAD 6fa27a3a53.

Commits: a3bf1bf specifies per-stream Close; 0f71e50 mounts the authenticated WebSocket and embedded-agent relay; 6fa27a3 adds the setup/echo/resume integration test.

Live URL: https://10.69.69.125.nip.io:47361. The tracer-server user unit is enabled and active, bound to 10.69.69.125:47361; /healthz returned {"status":"ok"} with HTTP 200. TLS is self-signed and the certificate SAN covers both the NetBird IP and DNS origin. The DNS name resolves to 10.69.69.125 and gives WebAuthn a valid domain-form RP ID. Terminal calls await the t-agent lane; no production fake agent was added.

Final gate output (verbatim):
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+
stream differential: 134 streams, 11439 schedules, zero divergences
7 pass
0 fail
34390 expect() calls
Ran 7 tests across 2 files. [5.73s]

Finished on branch t-server, HEAD 6fa27a3a53c7dbf686bde5d712640239e6802eee. Commits: a3bf1bf specifies per-stream Close; 0f71e50 mounts the authenticated WebSocket and embedded-agent relay; 6fa27a3 adds the setup/echo/resume integration test. Live URL: https://10.69.69.125.nip.io:47361. The tracer-server user unit is enabled and active, bound to 10.69.69.125:47361; /healthz returned {"status":"ok"} with HTTP 200. TLS is self-signed and the certificate SAN covers both the NetBird IP and DNS origin. The DNS name resolves to 10.69.69.125 and gives WebAuthn a valid domain-form RP ID. Terminal calls await the t-agent lane; no production fake agent was added. Final gate output (verbatim): +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ stream differential: 134 streams, 11439 schedules, zero divergences 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [5.73s]
Author
Owner

Independent server review started. Read-only branch t-server, head 6fa27a3a53; dev/base 7174d6bf6f. Reviewing dev..t-server against wire/plugin/keywrap and the requested security/resource/history checklist. Experiments and gates will run in a temporary checkout. docs/PROCESS.md is absent at this head.

Independent server review started. Read-only branch t-server, head 6fa27a3a53c7dbf686bde5d712640239e6802eee; dev/base 7174d6bf6f1880458a4166a2cf0fa45158d1742e. Reviewing dev..t-server against wire/plugin/keywrap and the requested security/resource/history checklist. Experiments and gates will run in a temporary checkout. docs/PROCESS.md is absent at this head.
Author
Owner

Independent review finding P1: logout/revocation does not remove live terminal authority. websocket.rs:537-538 checks Auth::session only for Frame::Call; AttachTerm/Input/Resize/Credit and output bypass it. Temporary real-WebSocket/software-passkey test review_revoked_socket_cannot_reattach_and_type logged out via /auth/logout (200), reattached stream 3, sent Input(seq=8, bytes=id\n), and received Ack(11). Test fails with: revoked session reattached and typed id: infraternal agent acknowledged byte offset 11. Fix live-socket invalidation including output and recheck before attachment/input.

Independent review finding P1: logout/revocation does not remove live terminal authority. websocket.rs:537-538 checks Auth::session only for Frame::Call; AttachTerm/Input/Resize/Credit and output bypass it. Temporary real-WebSocket/software-passkey test review_revoked_socket_cannot_reattach_and_type logged out via /auth/logout (200), reattached stream 3, sent Input(seq=8, bytes=id\n), and received Ack(11). Test fails with: revoked session reattached and typed id: infraternal agent acknowledged byte offset 11. Fix live-socket invalidation including output and recheck before attachment/input.
Author
Owner

Independent review finding P1: one stalled consumer blocks all embedded terminal traffic. embedded.rs:768-776 awaits attachment.output.send inside the sole actor; the same actor serves every command/stream. Temporary test review_full_output_queue_must_not_block_shared_actor fills a capacity-1 queue and submits a one-byte Output: process_incoming exceeds a 100ms timeout. Production queue capacity is 4; a fifth undrained event has the same behavior. Shared writer awaits are also unbounded. Isolate per-stream backpressure/catch-up from the shared actor and add a two-client slow-reader regression.

Independent review finding P1: one stalled consumer blocks all embedded terminal traffic. embedded.rs:768-776 awaits attachment.output.send inside the sole actor; the same actor serves every command/stream. Temporary test review_full_output_queue_must_not_block_shared_actor fills a capacity-1 queue and submits a one-byte Output: process_incoming exceeds a 100ms timeout. Production queue capacity is 4; a fifth undrained event has the same behavior. Shared writer awaits are also unbounded. Isolate per-stream backpressure/catch-up from the shared actor and add a two-client slow-reader regression.
Author
Owner

Independent review finding P1: restart loses browser output credit. embedded.rs:699-725 reattach_all emits AttachTerm only and tracks no remaining credit. Test review_reattach_must_restore_output_credit first forwards Credit(1024), replaces the socketpair connection, then records only AttachTerm on the replacement. A compliant infraternal agent starts with no credit, so an attached browser expecting output can hang until it sends additional credit. Reconcile outstanding credit on restart and test real shim resume.

Independent review finding P1: restart loses browser output credit. embedded.rs:699-725 reattach_all emits AttachTerm only and tracks no remaining credit. Test review_reattach_must_restore_output_credit first forwards Credit(1024), replaces the socketpair connection, then records only AttachTerm on the replacement. A compliant infraternal agent starts with no credit, so an attached browser expecting output can hang until it sends additional credit. Reconcile outstanding credit on restart and test real shim resume.
Author
Owner

Independent review finding P2: normal stream retirement can fail the entire embedded connection. embedded.rs:850-864 returns output.send(Closed).await.is_ok(); if the browser receiver has already dropped, process_incoming returns false and run_actor invokes connection_lost for all attachments. Temporary test review_stream_close_must_not_restart_all_sessions sends Close(stream=2, code=1000) to an attachment with a dropped receiver and fails. A disconnected recipient must be a local detach, not a global transport failure.

Independent review finding P2: normal stream retirement can fail the entire embedded connection. embedded.rs:850-864 returns output.send(Closed).await.is_ok(); if the browser receiver has already dropped, process_incoming returns false and run_actor invokes connection_lost for all attachments. Temporary test review_stream_close_must_not_restart_all_sessions sends Close(stream=2, code=1000) to an attachment with a dropped receiver and fails. A disconnected recipient must be a local detach, not a global transport failure.
Author
Owner

Independent review finding P2: setup-token retrieval is unrecoverable after a pre-enrollment server restart. runtime.rs:245-251 creates the local socket only when bootstrap newly inserts the hash; bootstrap never reannounces an existing setup row. Measured static binary: first setup-token exit=0, response length=44; after terminate/restart with same database: exit=1, response length=0, stderr=setup token unavailable: no active first-run token socket. Unlike the old log handoff there is no retained capability to retrieve. Recommend accepting the private local-socket concept rather than reverting to secret logs, but add an explicit safe operator reset/recovery flow, reconcile keywrap text and Decision 26 with owner approval; enrollment itself remains single-use in the auth transaction.

Independent review finding P2: setup-token retrieval is unrecoverable after a pre-enrollment server restart. runtime.rs:245-251 creates the local socket only when bootstrap newly inserts the hash; bootstrap never reannounces an existing setup row. Measured static binary: first setup-token exit=0, response length=44; after terminate/restart with same database: exit=1, response length=0, stderr=setup token unavailable: no active first-run token socket. Unlike the old log handoff there is no retained capability to retrieve. Recommend accepting the private local-socket concept rather than reverting to secret logs, but add an explicit safe operator reset/recovery flow, reconcile keywrap text and Decision 26 with owner approval; enrollment itself remains single-use in the auth transaction.
Author
Owner

Independent review history finding: 13 commits, but 0f71e50 adds embedded.rs (1035 lines), websocket.rs (918 lines), runtime/setup-socket changes and CLI handoff together (2207 insertions total), contrary to the requested each-module logical slices. b73276c, 05d1d61, fa08403 mix migrations/runtime/installer with tests, and four early commit messages contain literal backslash-n sequences; several omit alternatives. docs/PROCESS.md referenced by the job is absent. Rework history into gate-passing logical steps before merge.

Independent review history finding: 13 commits, but 0f71e50 adds embedded.rs (1035 lines), websocket.rs (918 lines), runtime/setup-socket changes and CLI handoff together (2207 insertions total), contrary to the requested each-module logical slices. b73276c, 05d1d61, fa08403 mix migrations/runtime/installer with tests, and four early commit messages contain literal backslash-n sequences; several omit alternatives. docs/PROCESS.md referenced by the job is absent. Rework history into gate-passing logical steps before merge.
Author
Owner

Independent review finding P1: per-user limits are bypassed before Hello, and no handshake/read/write timeout exists. Temporary real-WebSocket test review_half_open_sockets_must_obey_user_limit authenticates one cookie, upgrades 256 sockets without sending Hello, holds them >500ms, and confirms upgrade 257 returns 503. The intended per-user limit 16 is checked only in new_connection after Hello; all 256 process permits can be held indefinitely by one authenticated device. Reserve per-user capacity at upgrade and bound handshake/frame assembly/writer progress. websocket.rs:94-103, 142-158, 319-333, 851-885.

Independent review finding P1: per-user limits are bypassed before Hello, and no handshake/read/write timeout exists. Temporary real-WebSocket test review_half_open_sockets_must_obey_user_limit authenticates one cookie, upgrades 256 sockets without sending Hello, holds them >500ms, and confirms upgrade 257 returns 503. The intended per-user limit 16 is checked only in new_connection after Hello; all 256 process permits can be held indefinitely by one authenticated device. Reserve per-user capacity at upgrade and bound handshake/frame assembly/writer progress. websocket.rs:94-103, 142-158, 319-333, 851-885.
Author
Owner

Independent review finding P1: multi-device input offsets collide. Test review_multi_device_inputs_must_not_share_byte_range creates two AttachmentState entries for the same session at ack=0 and routes Input(0,x) and Input(0,y) through process_command. Captured leg-B frames are distinct x and y, both at in_seq=0 (streams 2 and 4). A per-session shim deduplicating byte offsets must drop one legitimate keystroke. Input/ack tracking is attachment-local (embedded.rs:235-239, 570-594; websocket.rs:718-724), without a session-wide writer/offset allocation scheme. Reconcile multi-writer exactly-once semantics in wire.md before implementation; test two real devices against one real shim.

Independent review finding P1: multi-device input offsets collide. Test review_multi_device_inputs_must_not_share_byte_range creates two AttachmentState entries for the same session at ack=0 and routes Input(0,x) and Input(0,y) through process_command. Captured leg-B frames are distinct x and y, both at in_seq=0 (streams 2 and 4). A per-session shim deduplicating byte offsets must drop one legitimate keystroke. Input/ack tracking is attachment-local (embedded.rs:235-239, 570-594; websocket.rs:718-724), without a session-wide writer/offset allocation scheme. Reconcile multi-writer exactly-once semantics in wire.md before implementation; test two real devices against one real shim.
Author
Owner

Deployed to the dogfood target (DECISIONS 48), at the owner's request:

  • monitor01, user kayg: the static binary ~/.local/bin/infraternal (t-server 6fa27a3, sha256 dfdb0af4e58d06b6…), installed with its own infraternal server install --user --listen 172.18.0.1:7011 --behind-proxy --trusted-proxy 172.18.0.0/16 --public-origin https://infraternal.kayg.org. Unit infraternal-server.service (user, linger on). Data in ~/.local/share/infraternal.
  • Traefik: /opt/infra/traefik/dynamic/infraternal.yml, NetBird-only allowlist, Let's Encrypt cert issued (valid until 2027-01-02). /healthz returns 200 through Traefik from NetBird.
  • Blocking: public DNS for infraternal.kayg.org resolves to o1.kayg.org (144.24.150.105, probably the *.kayg.org wildcard). It needs an explicit A record → 10.69.69.50 (DNS only).
  • The nip.io preview on infraternal-dev is stopped (tracer-server disabled).
  • Not there yet: the terminal (agent lane in fixes, web client not merged). Each merge to dev gets deployed here.
Deployed to the dogfood target (DECISIONS 48), at the owner's request: - monitor01, user `kayg`: the static binary `~/.local/bin/infraternal` (t-server `6fa27a3`, sha256 `dfdb0af4e58d06b6…`), installed with its own `infraternal server install --user --listen 172.18.0.1:7011 --behind-proxy --trusted-proxy 172.18.0.0/16 --public-origin https://infraternal.kayg.org`. Unit `infraternal-server.service` (user, linger on). Data in `~/.local/share/infraternal`. - Traefik: `/opt/infra/traefik/dynamic/infraternal.yml`, NetBird-only allowlist, Let's Encrypt cert issued (valid until 2027-01-02). `/healthz` returns 200 through Traefik from NetBird. - Blocking: public DNS for `infraternal.kayg.org` resolves to `o1.kayg.org` (144.24.150.105, probably the `*.kayg.org` wildcard). It needs an explicit A record → `10.69.69.50` (DNS only). - The nip.io preview on infraternal-dev is stopped (`tracer-server` disabled). - Not there yet: the terminal (agent lane in fixes, web client not merged). Each merge to `dev` gets deployed here.
Author
Owner

Clarification to multi-device finding: contracts/shim.md gives the shim raw Input bytes without sequence numbers; deduplication must live in the infraternal agent/server, not the shim itself. The test proves two distinct payloads share offset 0 on leg B while persistence stores one session-wide input_acked_u64. A session-wide deduplicator would discard one, whereas stream-local deduplication cannot be reconciled with the single persisted session offset on reconnect. No real-engine data-loss result is claimed: the production infraternal agent is still a stub at this head.

Clarification to multi-device finding: contracts/shim.md gives the shim raw Input bytes without sequence numbers; deduplication must live in the infraternal agent/server, not the shim itself. The test proves two distinct payloads share offset 0 on leg B while persistence stores one session-wide input_acked_u64. A session-wide deduplicator would discard one, whereas stream-local deduplication cannot be reconciled with the single persisted session offset on reconnect. No real-engine data-loss result is claimed: the production infraternal agent is still a stub at this head.
Author
Owner

Independent review finding P1 / integration blocker: at this head, main.rs:204-207 accepts agent --fd but always prints not implemented and exits 2. EmbeddedAgent starts immediately, retries even with zero clients, and open()/attach() await replies without a timeout while connect failures never drain/reject queued commands (embedded.rs:306-348). Concrete input: infraternal agent --fd 3 exits 2; authenticated terminal.open on the shipped server has no responding process and no result deadline. The integration test uses a deterministic transcript fixture, not a real PTY. Merge/integration must bring the real infraternal agent lane and a real shim test; also reject calls within a bounded time when supervision is unavailable. This is a cross-lane integration dependency, not a request to implement a production fake.

Independent review finding P1 / integration blocker: at this head, main.rs:204-207 accepts agent --fd but always prints not implemented and exits 2. EmbeddedAgent starts immediately, retries even with zero clients, and open()/attach() await replies without a timeout while connect failures never drain/reject queued commands (embedded.rs:306-348). Concrete input: infraternal agent --fd 3 exits 2; authenticated terminal.open on the shipped server has no responding process and no result deadline. The integration test uses a deterministic transcript fixture, not a real PTY. Merge/integration must bring the real infraternal agent lane and a real shim test; also reject calls within a bounded time when supervision is unavailable. This is a cross-lane integration dependency, not a request to implement a production fake.
Author
Owner

Independent review finding P2: migration 0004_u64_input_offsets.sql resets existing acknowledgement authority to zero. SQLite reproduction: apply migration 0002, insert one session with input_acked=8, apply migration 0004, SELECT input_acked,input_acked_u64 yields legacy=8 and new unsigned offset=0. owned_session_ack now reads only the new blob, so an existing acknowledged range becomes replayable. Backfill the eight-byte offset from every legacy value as part of migration and add an upgrade regression.

Independent review finding P2: migration 0004_u64_input_offsets.sql resets existing acknowledgement authority to zero. SQLite reproduction: apply migration 0002, insert one session with input_acked=8, apply migration 0004, SELECT input_acked,input_acked_u64 yields legacy=8 and new unsigned offset=0. owned_session_ack now reads only the new blob, so an existing acknowledged range becomes replayable. Backfill the eight-byte offset from every legacy value as part of migration and add an upgrade regression.
Author
Owner

Independent review finding P1: terminal.open bypasses the plugin action/audit path. Concrete valid Call(7,terminal.open,{cols:80,rows:24,px_w:0,px_h:0}) succeeds in the integration test, but websocket.rs:558-585/761-788 calls EmbeddedAgent::open before inserting only terminal_sessions. No role/permission check, pending audit, result audit, or audit table exists in the server migrations. The new core-action contract exception only changes descriptor ownership; plugin.md sections 3-4 still require authorization and audit before side effects. Define an explicit core action policy and durable audit path, or obtain an owner-approved contract change before merge.

Independent review finding P1: terminal.open bypasses the plugin action/audit path. Concrete valid Call(7,terminal.open,{cols:80,rows:24,px_w:0,px_h:0}) succeeds in the integration test, but websocket.rs:558-585/761-788 calls EmbeddedAgent::open before inserting only terminal_sessions. No role/permission check, pending audit, result audit, or audit table exists in the server migrations. The new core-action contract exception only changes descriptor ownership; plugin.md sections 3-4 still require authorization and audit before side effects. Define an explicit core action policy and durable audit path, or obtain an owner-approved contract change before merge.
Author
Owner

Independent review finding P1: resource budgets and user-owned PTY counts are unbounded. Concrete request sequence: repeat valid Call(id++, terminal.open, {cols:80,rows:24,px_w:0,px_h:0}) on one authenticated control stream. open_terminal has no per-user session-count check or rate admission (websocket.rs:761-788), and /v1/ws bypasses SourceAdmission entirely (runtime.rs:426-429). The 32-attachment bound does not bound sessions opened and left detached. Queue item counts also allow 4MiB payloads: an attachment output queue alone permits 16MiB, times 32 attachments/socket and 16 active sockets/user = 8GiB of configured payload slots, before input queues and shared channels (this is a bound calculation, not measured saturation). No at-scale session/RSS/echo/resume benchmark is supplied, and bench/integration gates only print not yet implemented. Set explicit byte and per-user/process session budgets, measure expected scale, and test flood/slow-client isolation.

Independent review finding P1: resource budgets and user-owned PTY counts are unbounded. Concrete request sequence: repeat valid Call(id++, terminal.open, {cols:80,rows:24,px_w:0,px_h:0}) on one authenticated control stream. open_terminal has no per-user session-count check or rate admission (websocket.rs:761-788), and /v1/ws bypasses SourceAdmission entirely (runtime.rs:426-429). The 32-attachment bound does not bound sessions opened and left detached. Queue item counts also allow 4MiB payloads: an attachment output queue alone permits 16MiB, times 32 attachments/socket and 16 active sockets/user = 8GiB of configured payload slots, before input queues and shared channels (this is a bound calculation, not measured saturation). No at-scale session/RSS/echo/resume benchmark is supplied, and bench/integration gates only print not yet implemented. Set explicit byte and per-user/process session budgets, measure expected scale, and test flood/slow-client isolation.
Author
Owner

Independent review last-typer size finding / cross-lane obligation: concrete sequence A Resize(80x24), B Resize(120x40), A Input(seq=0,x). embedded.rs:602-612 forwards both Resize frames immediately; Input carries no dimensions and the server retains no per-device dimensions or active-writer state. The final server trace therefore contains no restore to 80x24 when A types. Decision 74 must be implemented by the real infraternal agent using each leg-B stream identity; that lane is absent here and the single-stream transcript fixture cannot demonstrate it. Require a two-device size-switch integration test before merge.

Independent review last-typer size finding / cross-lane obligation: concrete sequence A Resize(80x24), B Resize(120x40), A Input(seq=0,x). embedded.rs:602-612 forwards both Resize frames immediately; Input carries no dimensions and the server retains no per-device dimensions or active-writer state. The final server trace therefore contains no restore to 80x24 when A types. Decision 74 must be implemented by the real infraternal agent using each leg-B stream identity; that lane is absent here and the single-stream transcript fixture cannot demonstrate it. Require a two-device size-switch integration test before merge.
Author
Owner

Independent review Close contract finding P2: stream-0 Close(code=1000, reason=done) reaches websocket.rs:720 default Err because only odd nonzero Close is handled. run_socket then emits Close(code=1011, connection ended), whereas normal nonzero Close removes one attachment. The new wire semantics (connection Close vs stream detach) are reasonable, but clean control Close needs its own normal shutdown path; test both leg A and local mux. RESUME_NEXT ordering is unambiguous; keep it, with handshake deadlines and compatibility tests.

Independent review Close contract finding P2: stream-0 Close(code=1000, reason=done) reaches websocket.rs:720 default Err because only odd nonzero Close is handled. run_socket then emits Close(code=1011, connection ended), whereas normal nonzero Close removes one attachment. The new wire semantics (connection Close vs stream detach) are reasonable, but clean control Close needs its own normal shutdown path; test both leg A and local mux. RESUME_NEXT ordering is unambiguous; keep it, with handshake deadlines and compatibility tests.
Author
Owner

Bug found while deploying (DECISIONS 26): after any restart before setup is complete, the owner can no longer get a setup token. The token is created once at first start and stored only as a hash. After a restart, no new token socket is started, so server setup-token answers "no active first-run token socket" forever (the old socket file stays, stale). The owner hit this on monitor01, after I restarted the service to add --web-root.
Expected: on each start, while no owner exists, mint a fresh single-use token, invalidate any older one, and serve it on a fresh socket (and remove a stale socket file on start). Add an integration test: start → restart → setup-token works → setup completes.
Workaround applied on monitor01: an empty data directory (no data existed) and a fresh start.

Bug found while deploying (DECISIONS 26): **after any restart before setup is complete, the owner can no longer get a setup token.** The token is created once at first start and stored only as a hash. After a restart, no new token socket is started, so `server setup-token` answers "no active first-run token socket" forever (the old socket file stays, stale). The owner hit this on monitor01, after I restarted the service to add --web-root. Expected: on each start, while no owner exists, mint a fresh single-use token, invalidate any older one, and serve it on a fresh socket (and remove a stale socket file on start). Add an integration test: start → restart → setup-token works → setup completes. Workaround applied on monitor01: an empty data directory (no data existed) and a fresh start.
Author
Owner

Independent review integration contract mismatch: the pre-existing #19 alignment comment says browser action ssh.session.open maps to internal terminal.open {uid,cols,rows}, with terminal.exited Event and authorize/audit before forwarding. This head instead accepts browser terminal.open, sends leg B {cols,rows,px_w,px_h} with no uid (embedded.rs:50-64, 513-522), and read_incoming rejects all Event frames (lines 871-903). The deterministic fixture uses the branch-specific shape, so the green fixture test cannot catch this documented #20 interface mismatch or exited-session persistence. Reconcile both lanes/contracts and test open + exit + restart using a real shim before integration merge.

Independent review integration contract mismatch: the pre-existing #19 alignment comment says browser action ssh.session.open maps to internal terminal.open {uid,cols,rows}, with terminal.exited Event and authorize/audit before forwarding. This head instead accepts browser terminal.open, sends leg B {cols,rows,px_w,px_h} with no uid (embedded.rs:50-64, 513-522), and read_incoming rejects all Event frames (lines 871-903). The deterministic fixture uses the branch-specific shape, so the green fixture test cannot catch this documented #20 interface mismatch or exited-session persistence. Reconcile both lanes/contracts and test open + exit + restart using a real shim before integration merge.
Author
Owner

History correction after checking each commit stat: b73276c is a clean migration-only commit (one SQL file, 12 lines), and it should remain separate. 05d1d61 combines runtime with its inline tests, fa08403 combines installer/CLI/dependency/tests, and 0f71e50 combines both major modules with unrelated setup-token handoff. Three early message bodies (796873d, b73276c, 05d1d61), rather than four, contain literal backslash-n paragraph separators. The substantive history blocker is still the explicitly requested module/test/dependency separation.

History correction after checking each commit stat: b73276c is a clean migration-only commit (one SQL file, 12 lines), and it should remain separate. 05d1d61 combines runtime with its inline tests, fa08403 combines installer/CLI/dependency/tests, and 0f71e50 combines both major modules with unrelated setup-token handoff. Three early message bodies (796873d, b73276c, 05d1d61), rather than four, contain literal backslash-n paragraph separators. The substantive history blocker is still the explicitly requested module/test/dependency separation.
Author
Owner

Starting server work on t-server at 6fa27a3: discoverable passkey authentication, public setup status, and restart-safe setup token/socket. Contract proposal: additive status action returning only setup_required; login-start accepts omitted user_id, empty allowCredentials and per-credential PRF salts; preserve existing identified path for regression tests. Decisions 23, 24, 26, 86. docs/PROCESS.md is absent in this worktree; will apply the supplied Definition of Done.

Starting server work on t-server at 6fa27a3: discoverable passkey authentication, public setup status, and restart-safe setup token/socket. Contract proposal: additive status action returning only setup_required; login-start accepts omitted user_id, empty allowCredentials and per-credential PRF salts; preserve existing identified path for regression tests. Decisions 23, 24, 26, 86. docs/PROCESS.md is absent in this worktree; will apply the supplied Definition of Done.
Author
Owner

Finding: auth/crypto.rs prf_salt is global; auth/setup.rs bootstrap ON CONFLICT DO NOTHING loses token access on restart. Proposed additive contract: new credentials use per-user PRF input, existing credentials retain legacy input via nullable migration metadata. Discoverable login returns no credential list; authenticated wraps adds prf_input so client can request a local credential-specific PRF evaluation after signed login. evalByCredential with empty allowCredentials is invalid WebAuthn, so reject that alternative. No identity/credential enumeration before authentication.

Finding: auth/crypto.rs prf_salt is global; auth/setup.rs bootstrap ON CONFLICT DO NOTHING loses token access on restart. Proposed additive contract: new credentials use per-user PRF input, existing credentials retain legacy input via nullable migration metadata. Discoverable login returns no credential list; authenticated wraps adds prf_input so client can request a local credential-specific PRF evaluation after signed login. evalByCredential with empty allowCredentials is invalid WebAuthn, so reject that alternative. No identity/credential enumeration before authentication.
Author
Owner

Independent review performance evidence: canonical head x86 static binary is 14,617,568 bytes; final gate aarch64 is 12,239,072 bytes. cargo bloat --crates at head vs dev 7174d6b: .text ~9.3 vs ~6.2 MiB; openssl_sys 1.9 vs 1.4 MiB, std 1005.8 vs 598.0 KiB, server 385.1 vs 172.9 KiB, h2 +503.5 KiB, hyper +159 KiB, regex machinery +277.4 KiB, tracing_subscriber +71.4 KiB. Profiler attribution is approximate under LTO; unknown/C and rodata are not fully attributed. The profiled base stripped with GNU strip measured 9,612,760 bytes, rather than reproducing the historical 9.3 MB exactly; measured head growth is 5,004,808 bytes (~52.1%). Measure whether h2/EnvFilter are worth their size; keep the owner-approved OpenSSL verifier (Decision 86). Zero-client RSS samples were 10,712 and 8,556 KiB (separate fresh starts), 12 threads, 0 CPU ticks over 10 seconds in both samples. Repeat load was 6.93/9.09/9.67 -> 7.70/9.18/9.70, on eight i9-9900K KVM vCPUs, Linux 6.12.111, Rust 1.99.0, Zig 0.15.2, with concurrent builds. Not a pinned-VM latency or at-scale benchmark.

Independent review performance evidence: canonical head x86 static binary is 14,617,568 bytes; final gate aarch64 is 12,239,072 bytes. cargo bloat --crates at head vs dev 7174d6b: .text ~9.3 vs ~6.2 MiB; openssl_sys 1.9 vs 1.4 MiB, std 1005.8 vs 598.0 KiB, server 385.1 vs 172.9 KiB, h2 +503.5 KiB, hyper +159 KiB, regex machinery +277.4 KiB, tracing_subscriber +71.4 KiB. Profiler attribution is approximate under LTO; unknown/C and rodata are not fully attributed. The profiled base stripped with GNU strip measured 9,612,760 bytes, rather than reproducing the historical 9.3 MB exactly; measured head growth is 5,004,808 bytes (~52.1%). Measure whether h2/EnvFilter are worth their size; keep the owner-approved OpenSSL verifier (Decision 86). Zero-client RSS samples were 10,712 and 8,556 KiB (separate fresh starts), 12 threads, 0 CPU ticks over 10 seconds in both samples. Repeat load was 6.93/9.09/9.67 -> 7.70/9.18/9.70, on eight i9-9900K KVM vCPUs, Linux 6.12.111, Rust 1.99.0, Zig 0.15.2, with concurrent builds. Not a pinned-VM latency or at-scale benchmark.
Author
Owner

Independent server-core review finished: verdict REWORK at HEAD 6fa27a3a53 (base 7174d6bf6f). Blocking findings: live-socket revocation bypass; shared-actor slow-client denial of service; pre-Hello per-user admission bypass; multi-device input-offset authority; lost restart credit; missing authorization/audit path and session/byte budgets; bounded supervision failure responses; unresolved real-infraternal-agent/exit/last-typer integration. Also fix legacy acknowledgement backfill, Close failure scope, pre-enrollment setup-token restart/lifecycle and requested commit granularity. Recommend accepting the private setup socket concept with fixes and owner decision/contract reconciliation. Six independent invariant probes failed as documented; the submitted fixture gate does not prove a real PTY. Findings, exact probes, size/RSS/load measurements and full final gate output appended to /home/kayg/.local/state/codex-jobs/infraternal/review-server/findings.md. Original worktree remains clean; 156 tracked files matched the pristine experimental checkout. Final scripts/verify fast exit 0; complete output verbatim follows:


==> fmt

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

==> test
   Compiling infraternal v0.1.0 (/tmp/infraternal-review-server.GK03jG/crates/infraternal)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 1.98s
     Running unittests src/main.rs (target/debug/deps/infraternal-41e0b3e1d51d8c3d)

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

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

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

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

     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::all_short_frame_splits_match_direct_decoding ... ok
test stream_tests::split_mux_header_preserves_trailing_close ... ok
test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok
test tests::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::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-9c965f6e8f7916b5)

running 17 tests
test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... 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 runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok
test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok
test runtime::tests::router_migrates_private_storage_and_serves_health ... ok
test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok
test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... 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::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok
test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok
test auth::tests::setup_expiry_single_announcement_and_parallel_redemption ... ok
test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok

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

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

running 12 tests
test frame::checks::golden::every_frozen_message ... ok
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 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 ring::checks::tests::wrap_and_exact_offsets ... ok
test frame::checks::tests::golden_and_fragmented ... 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.22s

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

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

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

warning[duplicate]: found 3 duplicate entries for crate 'getrandom'
   ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:93:1
   │  
93 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index
94 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index
95 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index
   │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ getrandom v0.2.17
     └── rand_core v0.6.4
         ├── bip39 v2.2.2
         │   └── infraternal-server v0.1.0
         │       └── infraternal v0.1.0
         ├── crypto-common v0.1.7
         │   ├── aead v0.5.2
         │   │   └── aes-gcm v0.10.3
         │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   ├── cipher v0.4.4
         │   │   ├── aes v0.8.4
         │   │   │   └── aes-gcm v0.10.3 (*)
         │   │   ├── aes-gcm v0.10.3 (*)
         │   │   └── ctr v0.9.2
         │   │       └── aes-gcm v0.10.3 (*)
         │   ├── digest v0.10.7
         │   │   ├── blake2 v0.10.6
         │   │   │   └── argon2 v0.5.3
         │   │   │       └── infraternal-server v0.1.0 (*)
         │   │   ├── hmac v0.12.1
         │   │   │   └── hkdf v0.12.4
         │   │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   │   ├── sha1 v0.10.7
         │   │   │   ├── axum v0.8.9
         │   │   │   │   └── infraternal-server v0.1.0 (*)
         │   │   │   └── tungstenite v0.29.0
         │   │   │       └── tokio-tungstenite v0.29.0
         │   │   │           ├── axum v0.8.9 (*)
         │   │   │           └── (dev) infraternal-server v0.1.0 (*)
         │   │   └── sha2 v0.10.9
         │   │       ├── infraternal-server v0.1.0 (*)
         │   │       ├── sqlx-core v0.8.6
         │   │       │   ├── sqlx v0.8.6
         │   │       │   │   ├── infraternal v0.1.0 (*)
         │   │       │   │   └── infraternal-server v0.1.0 (*)
         │   │       │   ├── sqlx-macros v0.8.6
         │   │       │   │   └── sqlx v0.8.6 (*)
         │   │       │   ├── sqlx-macros-core v0.8.6
         │   │       │   │   └── sqlx-macros v0.8.6 (*)
         │   │       │   └── sqlx-sqlite v0.8.6
         │   │       │       ├── sqlx v0.8.6 (*)
         │   │       │       └── sqlx-macros-core v0.8.6 (*)
         │   │       └── sqlx-macros-core v0.8.6 (*)
         │   └── universal-hash v0.5.1
         │       └── polyval v0.6.2
         │           └── ghash v0.5.1
         │               └── aes-gcm v0.10.3 (*)
         ├── password-hash v0.5.0
         │   └── argon2 v0.5.3 (*)
         ├── rand v0.8.8
         │   └── bip39 v2.2.2 (*)
         └── rand_chacha v0.3.1
             └── rand v0.8.8 (*)
   ├ getrandom v0.3.4
     └── rand_core v0.9.5
         ├── rand v0.9.5
         │   ├── infraternal-server v0.1.0
         │   │   └── infraternal v0.1.0
         │   ├── tungstenite v0.29.0
         │   │   └── tokio-tungstenite v0.29.0
         │   │       ├── axum v0.8.9
         │   │       │   └── infraternal-server v0.1.0 (*)
         │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   └── webauthn-rs-core v0.5.5
         │       └── webauthn-rs v0.5.5
         │           └── infraternal-server v0.1.0 (*)
         └── rand_chacha v0.9.0
             ├── rand v0.9.5 (*)
             └── webauthn-rs-core v0.5.5 (*)
   ├ getrandom v0.4.3
     ├── jobserver v0.1.35
     │   └── cc v1.6.0
     │       ├── (build) libfuzzer-sys v0.4.13
     │       │   └── infraternal-fuzz v0.1.0
     │       ├── (build) libsqlite3-sys v0.30.1
     │       │   └── sqlx-sqlite v0.8.6
     │       │       ├── sqlx v0.8.6
     │       │       │   ├── infraternal v0.1.0
     │       │       │   └── infraternal-server v0.1.0
     │       │       │       └── infraternal v0.1.0 (*)
     │       │       └── sqlx-macros-core v0.8.6
     │       │           └── sqlx-macros v0.8.6
     │       │               └── sqlx v0.8.6 (*)
     │       ├── openssl-src v300.6.1+3.6.3
     │       │   └── (build) openssl-sys v0.9.117
     │       │       ├── axum-server v0.8.0
     │       │       │   └── infraternal-server v0.1.0 (*)
     │       │       ├── openssl v0.10.81
     │       │       │   ├── axum-server v0.8.0 (*)
     │       │       │   ├── infraternal-server v0.1.0 (*)
     │       │       │   ├── tokio-openssl v0.6.5
     │       │       │   │   └── axum-server v0.8.0 (*)
     │       │       │   ├── webauthn-attestation-ca v0.5.5
     │       │       │   │   └── webauthn-rs-core v0.5.5
     │       │       │   │       └── webauthn-rs v0.5.5
     │       │       │   │           └── infraternal-server v0.1.0 (*)
     │       │       │   └── webauthn-rs-core v0.5.5 (*)
     │       │       ├── tokio-openssl v0.6.5 (*)
     │       │       ├── webauthn-attestation-ca v0.5.5 (*)
     │       │       └── webauthn-rs-core v0.5.5 (*)
     │       └── (build) openssl-sys v0.9.117 (*)
     └── uuid v1.27.0
         ├── infraternal-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/infraternal-review-server.GK03jG/Cargo.lock:99:1
    │  
 99 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index
100 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index
    │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ hashbrown v0.15.5
      ├── hashlink v0.10.0
      │   └── sqlx-core v0.8.6
      │       ├── sqlx v0.8.6
      │       │   ├── infraternal v0.1.0
      │       │   └── infraternal-server v0.1.0
      │       │       └── infraternal v0.1.0 (*)
      │       ├── sqlx-macros v0.8.6
      │       │   └── sqlx v0.8.6 (*)
      │       ├── sqlx-macros-core v0.8.6
      │       │   └── sqlx-macros v0.8.6 (*)
      │       └── sqlx-sqlite v0.8.6
      │           ├── sqlx v0.8.6 (*)
      │           └── sqlx-macros-core v0.8.6 (*)
      └── sqlx-core v0.8.6 (*)
    ├ hashbrown v0.17.1
      └── indexmap v2.14.2
          ├── h2 v0.4.19
          │   └── hyper v1.11.1
          │       ├── axum v0.8.9
          │       │   └── infraternal-server v0.1.0
          │       │       └── infraternal v0.1.0
          │       ├── axum-server v0.8.0
          │       │   └── infraternal-server v0.1.0 (*)
          │       └── hyper-util v0.1.21
          │           ├── axum v0.8.9 (*)
          │           └── axum-server v0.8.0 (*)
          └── sqlx-core v0.8.6
              ├── sqlx v0.8.6
              │   ├── infraternal v0.1.0 (*)
              │   └── infraternal-server v0.1.0 (*)
              ├── sqlx-macros v0.8.6
              │   └── sqlx v0.8.6 (*)
              ├── sqlx-macros-core v0.8.6
              │   └── sqlx-macros v0.8.6 (*)
              └── sqlx-sqlite v0.8.6
                  ├── sqlx v0.8.6 (*)
                  └── sqlx-macros-core v0.8.6 (*)

warning[duplicate]: found 2 duplicate entries for crate 'r-efi'
    ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:193:1
    │  
193 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index
194 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ r-efi v5.3.0
      └── getrandom v0.3.4
          └── rand_core v0.9.5
              ├── rand v0.9.5
              │   ├── infraternal-server v0.1.0
              │   │   └── infraternal v0.1.0
              │   ├── tungstenite v0.29.0
              │   │   └── tokio-tungstenite v0.29.0
              │   │       ├── axum v0.8.9
              │   │       │   └── infraternal-server v0.1.0 (*)
              │   │       └── (dev) infraternal-server v0.1.0 (*)
              │   └── webauthn-rs-core v0.5.5
              │       └── webauthn-rs v0.5.5
              │           └── infraternal-server v0.1.0 (*)
              └── rand_chacha v0.9.0
                  ├── rand v0.9.5 (*)
                  └── webauthn-rs-core v0.5.5 (*)
    ├ r-efi v6.0.0
      └── getrandom v0.4.3
          ├── jobserver v0.1.35
          │   └── cc v1.6.0
          │       ├── (build) libfuzzer-sys v0.4.13
          │       │   └── infraternal-fuzz v0.1.0
          │       ├── (build) libsqlite3-sys v0.30.1
          │       │   └── sqlx-sqlite v0.8.6
          │       │       ├── sqlx v0.8.6
          │       │       │   ├── infraternal v0.1.0
          │       │       │   └── infraternal-server v0.1.0
          │       │       │       └── infraternal v0.1.0 (*)
          │       │       └── sqlx-macros-core v0.8.6
          │       │           └── sqlx-macros v0.8.6
          │       │               └── sqlx v0.8.6 (*)
          │       ├── openssl-src v300.6.1+3.6.3
          │       │   └── (build) openssl-sys v0.9.117
          │       │       ├── axum-server v0.8.0
          │       │       │   └── infraternal-server v0.1.0 (*)
          │       │       ├── openssl v0.10.81
          │       │       │   ├── axum-server v0.8.0 (*)
          │       │       │   ├── infraternal-server v0.1.0 (*)
          │       │       │   ├── tokio-openssl v0.6.5
          │       │       │   │   └── axum-server v0.8.0 (*)
          │       │       │   ├── webauthn-attestation-ca v0.5.5
          │       │       │   │   └── webauthn-rs-core v0.5.5
          │       │       │   │       └── webauthn-rs v0.5.5
          │       │       │   │           └── infraternal-server v0.1.0 (*)
          │       │       │   └── webauthn-rs-core v0.5.5 (*)
          │       │       ├── tokio-openssl v0.6.5 (*)
          │       │       ├── webauthn-attestation-ca v0.5.5 (*)
          │       │       └── webauthn-rs-core v0.5.5 (*)
          │       └── (build) openssl-sys v0.9.117 (*)
          └── uuid v1.27.0
              ├── infraternal-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/infraternal-review-server.GK03jG/Cargo.lock:195:1
    │  
195 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index
196 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand v0.8.8
      └── bip39 v2.2.2
          └── infraternal-server v0.1.0
              └── infraternal v0.1.0
    ├ rand v0.9.5
      ├── infraternal-server v0.1.0
      │   └── infraternal v0.1.0
      ├── tungstenite v0.29.0
      │   └── tokio-tungstenite v0.29.0
      │       ├── axum v0.8.9
      │       │   └── infraternal-server v0.1.0 (*)
      │       └── (dev) infraternal-server v0.1.0 (*)
      └── webauthn-rs-core v0.5.5
          └── webauthn-rs v0.5.5
              └── infraternal-server v0.1.0 (*)

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

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

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

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

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

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

warning[duplicate]: found 2 duplicate entries for crate 'windows-sys'
    ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:300:1
    │  
300 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index
301 │ │ windows-sys 0.61.2 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ windows-sys v0.59.0
      └── alacritty_terminal v0.25.1
          └── infraternal-shim v0.1.0
              ├── infraternal v0.1.0
              └── infraternal-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-server v0.1.0
      │               │           └── infraternal 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 (*)
      │       └── tokio v1.53.2
      │           ├── axum v0.8.9
      │           │   └── infraternal-server v0.1.0 (*)
      │           ├── axum-server v0.8.0
      │           │   └── infraternal-server v0.1.0 (*)
      │           ├── fs-err v3.3.2
      │           │   └── axum-server v0.8.0 (*)
      │           ├── h2 v0.4.19
      │           │   └── hyper v1.11.1
      │           │       ├── axum v0.8.9 (*)
      │           │       ├── axum-server v0.8.0 (*)
      │           │       └── hyper-util v0.1.21
      │           │           ├── axum v0.8.9 (*)
      │           │           └── axum-server v0.8.0 (*)
      │           ├── hyper v1.11.1 (*)
      │           ├── hyper-util v0.1.21 (*)
      │           ├── infraternal v0.1.0 (*)
      │           ├── infraternal-server v0.1.0 (*)
      │           ├── sqlx-core v0.8.6
      │           │   ├── sqlx v0.8.6
      │           │   │   ├── infraternal v0.1.0 (*)
      │           │   │   └── infraternal-server v0.1.0 (*)
      │           │   ├── sqlx-macros v0.8.6
      │           │   │   └── sqlx v0.8.6 (*)
      │           │   ├── sqlx-macros-core v0.8.6
      │           │   │   └── sqlx-macros v0.8.6 (*)
      │           │   └── sqlx-sqlite v0.8.6
      │           │       ├── sqlx v0.8.6 (*)
      │           │       └── sqlx-macros-core v0.8.6 (*)
      │           ├── sqlx-macros-core v0.8.6 (*)
      │           ├── tokio-openssl v0.6.5
      │           │   └── axum-server v0.8.0 (*)
      │           ├── tokio-stream v0.1.19
      │           │   └── sqlx-core v0.8.6 (*)
      │           ├── tokio-tungstenite v0.29.0
      │           │   ├── axum v0.8.9 (*)
      │           │   └── (dev) infraternal-server v0.1.0 (*)
      │           ├── tokio-util v0.7.19
      │           │   ├── h2 v0.4.19 (*)
      │           │   └── tower-http v0.6.11
      │           │       └── infraternal-server v0.1.0 (*)
      │           ├── tower v0.5.3
      │           │   ├── axum v0.8.9 (*)
      │           │   └── (dev) infraternal-server v0.1.0 (*)
      │           └── tower-http v0.6.11 (*)
      ├── home v0.5.12
      │   └── alacritty_terminal v0.25.1 (*)
      ├── mio v1.2.4
      │   └── tokio v1.53.2 (*)
      ├── miow v0.6.1
      │   └── alacritty_terminal v0.25.1 (*)
      ├── nu-ansi-term v0.50.3
      │   └── tracing-subscriber v0.3.23
      │       └── infraternal-server v0.1.0 (*)
      ├── polling v3.11.0 (*)
      ├── rustix v1.1.5 (*)
      ├── socket2 v0.6.5
      │   └── tokio v1.53.2 (*)
      ├── tokio v1.53.2 (*)
      └── winapi-util v0.1.11
          ├── same-file v1.0.6
          │   └── walkdir v2.5.0
          │       └── criterion v0.7.0 (*)
          └── walkdir v2.5.0 (*)

advisories ok, bans ok, licenses ok, sources ok

==> static builds
   Compiling infraternal v0.1.0 (/tmp/infraternal-review-server.GK03jG/crates/infraternal)
    Finished `release` profile [optimized] target(s) in 1m 03s
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: 14617568 bytes
   Compiling infraternal v0.1.0 (/tmp/infraternal-review-server.GK03jG/crates/infraternal)
    Finished `release` profile [optimized] target(s) in 1m 09s
target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped
PT_INTERP: absent; size: 12239072 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 [2576.75ms]
(pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [7.45ms]

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

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

Independent server-core review finished: verdict REWORK at HEAD 6fa27a3a53c7dbf686bde5d712640239e6802eee (base 7174d6bf6f1880458a4166a2cf0fa45158d1742e). Blocking findings: live-socket revocation bypass; shared-actor slow-client denial of service; pre-Hello per-user admission bypass; multi-device input-offset authority; lost restart credit; missing authorization/audit path and session/byte budgets; bounded supervision failure responses; unresolved real-infraternal-agent/exit/last-typer integration. Also fix legacy acknowledgement backfill, Close failure scope, pre-enrollment setup-token restart/lifecycle and requested commit granularity. Recommend accepting the private setup socket concept with fixes and owner decision/contract reconciliation. Six independent invariant probes failed as documented; the submitted fixture gate does not prove a real PTY. Findings, exact probes, size/RSS/load measurements and full final gate output appended to /home/kayg/.local/state/codex-jobs/infraternal/review-server/findings.md. Original worktree remains clean; 156 tracked files matched the pristine experimental checkout. Final scripts/verify fast exit 0; complete output verbatim follows: ```text ==> fmt ==> clippy Checking infraternal v0.1.0 (/tmp/infraternal-review-server.GK03jG/crates/infraternal) Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.54s ==> test Compiling infraternal v0.1.0 (/tmp/infraternal-review-server.GK03jG/crates/infraternal) Finished `test` profile [unoptimized + debuginfo] target(s) in 1.98s Running unittests src/main.rs (target/debug/deps/infraternal-41e0b3e1d51d8c3d) running 2 tests test install::tests::dry_run_prints_a_process_surviving_user_unit ... ok test setup_token_tests::setup_token_command_reads_only_the_expected_socket_response ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/shim.rs (target/debug/deps/shim-a16df9e883743d06) 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.25s 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::all_short_frame_splits_match_direct_decoding ... ok test stream_tests::split_mux_header_preserves_trailing_close ... ok test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok test tests::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::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-9c965f6e8f7916b5) running 17 tests test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... 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 runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok test runtime::tests::router_migrates_private_storage_and_serves_health ... ok test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... 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::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok test auth::tests::setup_expiry_single_announcement_and_parallel_redemption ... ok test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 19.12s Running unittests src/lib.rs (target/debug/deps/infraternal_shim-95c8f09c3e6bd78c) running 12 tests test frame::checks::golden::every_frozen_message ... ok 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 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 ring::checks::tests::wrap_and_exact_offsets ... ok test frame::checks::tests::golden_and_fragmented ... 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.22s Running tests/detach.rs (target/debug/deps/detach-9f5d4ed474ba6700) 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.78s 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/infraternal-review-server.GK03jG/Cargo.lock:26:1 │ 26 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 27 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────┘ lock entries │ ├ base64 v0.21.7 ├── base64urlsafedata v0.5.5 │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── webauthn-rs v0.5.5 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-proto v0.5.5 │ └── webauthn-rs-core v0.5.5 (*) ├── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-proto v0.5.5 (*) ├ base64 v0.22.1 ├── alacritty_terminal v0.25.1 │ └── infraternal-shim v0.1.0 │ ├── infraternal v0.1.0 │ └── infraternal-fuzz v0.1.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 3 duplicate entries for crate 'getrandom' ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:93:1 │ 93 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 94 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 95 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ getrandom v0.2.17 └── rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-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/infraternal-review-server.GK03jG/Cargo.lock:99:1 │ 99 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 100 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ hashbrown v0.15.5 ├── hashlink v0.10.0 │ └── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) └── sqlx-core v0.8.6 (*) ├ hashbrown v0.17.1 └── indexmap v2.14.2 ├── h2 v0.4.19 │ └── hyper v1.11.1 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ └── hyper-util v0.1.21 │ ├── axum v0.8.9 (*) │ └── axum-server v0.8.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 2 duplicate entries for crate 'r-efi' ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:193:1 │ 193 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 194 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────┘ lock entries │ ├ r-efi v5.3.0 └── getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ r-efi v6.0.0 └── getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-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/infraternal-review-server.GK03jG/Cargo.lock:195:1 │ 195 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index 196 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand v0.9.5 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ └── (dev) infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 └── webauthn-rs v0.5.5 └── infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_chacha' ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:197:1 │ 197 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 198 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_chacha v0.3.1 └── rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_core' ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:199:1 │ 199 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 200 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'syn' ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:239:1 │ 239 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 240 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────┘ lock entries │ ├ syn v2.0.119 ├── asn1-rs-derive v0.5.1 │ └── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── asn1-rs-impl v0.2.0 │ └── asn1-rs v0.6.2 (*) ├── openssl-macros v0.1.1 │ └── openssl v0.10.81 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) ├── synstructure v0.13.2 │ └── asn1-rs-derive v0.5.1 (*) ├── thiserror-impl v1.0.69 │ └── thiserror v1.0.69 │ ├── asn1-rs v0.6.2 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── x509-parser v0.16.0 (*) ├── tracing-attributes v0.1.31 │ └── tracing v0.1.44 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-core v0.5.6 │ │ └── axum v0.8.9 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ ├── sqlx-macros v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tracing-subscriber v0.3.23 │ │ └── infraternal-server v0.1.0 (*) │ ├── webauthn-attestation-ca v0.5.5 (*) │ ├── webauthn-rs v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) └── zerocopy-derive v0.8.60 └── zerocopy v0.8.60 ├── half v2.7.1 │ ├── ciborium-ll v0.2.2 │ │ └── ciborium v0.2.2 │ │ └── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 (*) │ └── serde_cbor_2 v0.13.0 │ ├── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── ppv-lite86 v0.2.21 ├── rand_chacha v0.3.1 │ └── rand v0.8.8 │ └── bip39 v2.2.2 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 (*) │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── 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-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── infraternal v0.1.0 (*) ├── displaydoc v0.2.7 │ ├── asn1-rs v0.6.2 │ │ ├── der-parser v9.0.0 │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── x509-parser v0.16.0 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── oid-registry v0.7.1 │ │ │ └── x509-parser v0.16.0 (*) │ │ └── x509-parser v0.16.0 (*) │ ├── der-parser v9.0.0 (*) │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── tinystr v0.8.4 │ │ └── icu_locale_core v2.3.0 (*) │ └── zerotrie v0.2.5 │ ├── icu_properties v2.3.0 (*) │ └── icu_provider v2.3.1 (*) ├── futures-macro v0.3.34 │ └── futures-util v0.3.34 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── futures-executor v0.3.34 │ │ └── sqlx-sqlite v0.8.6 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── js-sys v0.3.106 │ │ └── web-sys v0.3.106 │ │ └── plotters v0.3.7 │ │ └── criterion v0.7.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 │ └── infraternal-server v0.1.0 (*) ├── serde_derive v1.0.229 │ ├── serde v1.0.229 │ │ ├── alacritty_terminal v0.25.1 │ │ │ └── infraternal-shim v0.1.0 │ │ │ ├── infraternal v0.1.0 (*) │ │ │ └── infraternal-fuzz v0.1.0 (*) │ │ ├── base64urlsafedata v0.5.5 │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 (*) │ │ ├── bip39 v2.2.2 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── ciborium v0.2.2 │ │ │ └── criterion v0.7.0 (*) │ │ ├── criterion v0.7.0 (*) │ │ ├── either v1.18.0 │ │ │ ├── axum-server v0.8.0 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── itertools v0.13.0 │ │ │ │ ├── criterion v0.7.0 (*) │ │ │ │ └── criterion-plot v0.6.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── rayon v1.12.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── sqlx-core v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── serde_cbor_2 v0.13.0 │ │ │ ├── (dev) infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── serde_urlencoded v0.7.1 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── sqlx-sqlite v0.8.6 (*) │ │ ├── sqlx-core v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ ├── tinytemplate v1.2.1 │ │ │ └── criterion v0.7.0 (*) │ │ ├── tracing-serde v0.2.0 │ │ │ └── tracing-subscriber v0.3.23 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── tracing-subscriber v0.3.23 (*) │ │ ├── url v2.5.8 (*) │ │ ├── vte v0.15.0 │ │ │ ├── alacritty_terminal v0.25.1 (*) │ │ │ ├── infraternal-shim v0.1.0 (*) │ │ │ └── vt100 v0.16.2 │ │ │ ├── (dev) infraternal v0.1.0 (*) │ │ │ └── (dev) infraternal-shim v0.1.0 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ ├── webauthn-rs v0.5.5 (*) │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ └── webauthn-rs-proto v0.5.5 (*) │ └── url v2.5.8 (*) ├── synstructure v0.14.0 │ ├── yoke-derive v0.8.4 │ │ └── yoke v0.8.3 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── zerotrie v0.2.5 (*) │ │ └── zerovec v0.11.8 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_locale_core v2.3.0 (*) │ │ ├── icu_normalizer v2.3.0 (*) │ │ ├── icu_properties v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── potential_utf v0.1.6 │ │ │ └── icu_collections v2.3.0 (*) │ │ └── tinystr v0.8.4 (*) │ └── zerofrom-derive v0.1.8 │ └── zerofrom v0.1.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── yoke v0.8.3 (*) │ ├── zerotrie v0.2.5 (*) │ └── zerovec v0.11.8 (*) ├── thiserror-impl v2.0.21 │ └── thiserror v2.0.21 │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ └── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 (*) ├── tokio-macros v2.7.2 │ └── tokio v1.53.2 │ ├── axum v0.8.9 (*) │ ├── axum-server v0.8.0 (*) │ ├── fs-err v3.3.2 │ │ └── axum-server v0.8.0 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── hyper v1.11.1 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 (*) │ ├── tower v0.5.3 (*) │ └── tower-http v0.6.11 (*) ├── wasm-bindgen-macro-support v0.2.129 │ └── wasm-bindgen-macro v0.2.129 │ └── wasm-bindgen v0.2.129 │ ├── js-sys v0.3.106 (*) │ ├── plotters v0.3.7 (*) │ └── web-sys v0.3.106 (*) ├── yoke-derive v0.8.4 (*) ├── zerofrom-derive v0.1.8 (*) └── zerovec-derive v0.11.6 └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'synstructure' ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:242:1 │ 242 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 243 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ synstructure v0.13.2 └── asn1-rs-derive v0.5.1 └── asn1-rs v0.6.2 ├── der-parser v9.0.0 │ ├── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── x509-parser v0.16.0 │ └── webauthn-rs-core v0.5.5 (*) ├── oid-registry v0.7.1 │ └── x509-parser v0.16.0 (*) └── x509-parser v0.16.0 (*) ├ synstructure v0.14.0 ├── yoke-derive v0.8.4 │ └── yoke v0.8.3 │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 │ │ │ │ └── infraternal v0.1.0 │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── zerotrie v0.2.5 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ └── zerovec v0.11.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ ├── icu_normalizer v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── potential_utf v0.1.6 │ │ └── icu_collections v2.3.0 (*) │ └── tinystr v0.8.4 │ └── icu_locale_core v2.3.0 (*) └── zerofrom-derive v0.1.8 └── zerofrom v0.1.8 ├── icu_collections v2.3.0 (*) ├── icu_provider v2.3.1 (*) ├── yoke v0.8.3 (*) ├── zerotrie v0.2.5 (*) └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror' ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:244:1 │ 244 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 245 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl' ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:246:1 │ 246 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 247 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror-impl v1.0.69 └── thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror-impl v2.0.21 └── thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'windows-sys' ┌─ /tmp/infraternal-review-server.GK03jG/Cargo.lock:300:1 │ 300 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index 301 │ │ windows-sys 0.61.2 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ windows-sys v0.59.0 └── alacritty_terminal v0.25.1 └── infraternal-shim v0.1.0 ├── infraternal v0.1.0 └── infraternal-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-server v0.1.0 │ │ └── infraternal 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 (*) │ └── tokio v1.53.2 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ ├── fs-err v3.3.2 │ │ └── axum-server v0.8.0 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── hyper v1.11.1 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 (*) │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── sqlx-macros v0.8.6 │ │ │ └── sqlx v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 │ │ │ └── sqlx-macros v0.8.6 (*) │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 │ │ └── infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 (*) ├── home v0.5.12 │ └── alacritty_terminal v0.25.1 (*) ├── mio v1.2.4 │ └── tokio v1.53.2 (*) ├── miow v0.6.1 │ └── alacritty_terminal v0.25.1 (*) ├── nu-ansi-term v0.50.3 │ └── tracing-subscriber v0.3.23 │ └── infraternal-server v0.1.0 (*) ├── polling v3.11.0 (*) ├── rustix v1.1.5 (*) ├── socket2 v0.6.5 │ └── tokio v1.53.2 (*) ├── tokio v1.53.2 (*) └── winapi-util v0.1.11 ├── same-file v1.0.6 │ └── walkdir v2.5.0 │ └── criterion v0.7.0 (*) └── walkdir v2.5.0 (*) advisories ok, bans ok, licenses ok, sources ok ==> static builds Compiling infraternal v0.1.0 (/tmp/infraternal-review-server.GK03jG/crates/infraternal) Finished `release` profile [optimized] target(s) in 1m 03s 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: 14617568 bytes Compiling infraternal v0.1.0 (/tmp/infraternal-review-server.GK03jG/crates/infraternal) Finished `release` profile [optimized] target(s) in 1m 09s target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 12239072 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 [2576.75ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [7.45ms] src/codec.test.ts: (pass) wire protocol golden vectors > encodes and decodes each frame exactly as the shared manifest describes [3.26ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.10ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [0.18ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.15ms] (pass) split mux header preserves trailing Close [0.15ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.60s] ```
Author
Owner

Concurrency note at final cleanup: the reviewed worktree advanced externally to HEAD 6ba20aa42b; git status now reports:
M crates/infraternal-server/src/auth/setup.rs
M crates/infraternal-server/src/auth/tests.rs
This review was fixed to requested head 6fa27a3a53; the pristine gate and experiments used that snapshot (156 files matched before the concurrent update). I made no source edits or commits. Later commits/uncommitted fixes were not reviewed, so the REWORK verdict and findings must not be represented as a review of the new head. Temporary checkout and all three failed-probe data directories have been removed.

Concurrency note at final cleanup: the reviewed worktree advanced externally to HEAD 6ba20aa42bf9176a08283f03ebf428fb64f9d201; git status now reports: M crates/infraternal-server/src/auth/setup.rs M crates/infraternal-server/src/auth/tests.rs This review was fixed to requested head 6fa27a3a53c7dbf686bde5d712640239e6802eee; the pristine gate and experiments used that snapshot (156 files matched before the concurrent update). I made no source edits or commits. Later commits/uncommitted fixes were not reviewed, so the REWORK verdict and findings must not be represented as a review of the new head. Temporary checkout and all three failed-probe data directories have been removed.
Author
Owner

Red test evidence: target/passkey-job/restart-red.log, setup_restart_rotation_expiry_and_parallel_redemption failed with restart must issue a fresh setup capability (0 passed, 1 failed). Bootstrap now replaces the hash atomically; test verifies old-token denial, expiry and parallel single-use enrollment. Full fast gate is running including both static architectures.

Red test evidence: target/passkey-job/restart-red.log, setup_restart_rotation_expiry_and_parallel_redemption failed with restart must issue a fresh setup capability (0 passed, 1 failed). Bootstrap now replaces the hash atomically; test verifies old-token denial, expiry and parallel single-use enrollment. Full fast gate is running including both static architectures.
Author
Owner

Finding: target/passkey-job/prf-red.log reproduces the global input bug with two distinct setup UUIDs: PRF input must be per-user (0 passed, 1 failed). Migration 0005_passkey_prf_input.sql is additive and preserves NULL as the legacy derivation. New registration persists the exact user-bound input; identified login supports mixed legacy/new credentials through a nonempty-list evalByCredential. Auth tests pass; corrected full gate running after extracting credential persistence to satisfy the 100-line Clippy limit.

Finding: target/passkey-job/prf-red.log reproduces the global input bug with two distinct setup UUIDs: PRF input must be per-user (0 passed, 1 failed). Migration 0005_passkey_prf_input.sql is additive and preserves NULL as the legacy derivation. New registration persists the exact user-bound input; identified login supports mixed legacy/new credentials through a nonempty-list evalByCredential. Auth tests pass; corrected full gate running after extracting credential persistence to satisfy the 100-line Clippy limit.
Author
Owner

Discoverable ceremony module committed efac7d6 with full fast gate. Direct software-authenticator regression covers empty allowCredentials, no pre-auth PRF/credential enumeration, missing/15-byte/unknown handles, unknown credential, replay and stale counter. HTTP omitted-ID baseline is 400 (target/passkey-job/discoverable-red.log). Performance check plan before final measurements: one owner with up to two passkeys, pending-state maximum 1024; local release targets challenge p99 below 1 ms and signed finish p99 below 10 ms. These auth measurements are separate from decision 41 echo/phone budgets. No new library or engine selected.

Discoverable ceremony module committed efac7d6 with full fast gate. Direct software-authenticator regression covers empty allowCredentials, no pre-auth PRF/credential enumeration, missing/15-byte/unknown handles, unknown credential, replay and stale counter. HTTP omitted-ID baseline is 400 (target/passkey-job/discoverable-red.log). Performance check plan before final measurements: one owner with up to two passkeys, pending-state maximum 1024; local release targets challenge p99 below 1 ms and signed finish p99 below 10 ms. These auth measurements are separate from decision 41 echo/phone budgets. No new library or engine selected.
Author
Owner

Finding: public status returns exactly one boolean and no-store; omitted user_id now routes to signed resident authentication. Native real-router browser gate passes 4 isolated Chromium 149 scenarios, including non-UV assertion rejection and DEK preservation (target/passkey-job/native-browser-final.log). Production t-web/dist paired with the actual Rust router also passes setup, storage-cleared discoverable login and key unwrap (target/passkey-job/paired-browser.log). Restart integration now reopens one file SQLite database, replaces the stale private socket, retrieves the fresh CLI-protocol token and completes enrollment. Full gate running.

Finding: public status returns exactly one boolean and no-store; omitted user_id now routes to signed resident authentication. Native real-router browser gate passes 4 isolated Chromium 149 scenarios, including non-UV assertion rejection and DEK preservation (target/passkey-job/native-browser-final.log). Production t-web/dist paired with the actual Rust router also passes setup, storage-cleared discoverable login and key unwrap (target/passkey-job/paired-browser.log). Restart integration now reopens one file SQLite database, replaces the stale private socket, retrieves the fresh CLI-protocol token and completes enrollment. Full gate running.
Author
Owner

Server lane finished: t-server 7948ff00fb. Full fast gate output verbatim, part 1/3:


==> fmt

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

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

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

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

     Running tests/shim.rs (target/debug/deps/shim-8e53c92b1f367f87)

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::oversized_encode_keeps_the_reusable_output_unchanged ... 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::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-495795ebba6d6acb)

running 23 tests
test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds
test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok
test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok
test auth::tests::enrollment_prf_input_is_user_bound ... ok
test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok
test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok
test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok
test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok
test auth::tests::public_status_and_discoverable_http_login ... ok
test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok
test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok
test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok
test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok
test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok
test runtime::tests::router_migrates_private_storage_and_serves_health ... ok
test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok
test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok
test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok
test auth::tests::review_old_words_race_rotation ... ok
test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok
test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok
test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok
test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok

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

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

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 ring::checks::tests::wrap_and_exact_offsets ... 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.19s

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

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

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

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

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

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

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

warning[duplicate]: found 2 duplicate entries for crate 'syn'
    ┌─ /home/kayg/Developer/infraternal/.worktrees/t-server/Cargo.lock:239:1
    │  
239 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index
240 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index
Server lane finished: t-server 7948ff00fb6370e0a257a14b9fb00f3d6fc3cf7a. Full fast gate output verbatim, part 1/3: ```text ==> fmt ==> clippy Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.24s ==> test Finished `test` profile [unoptimized + debuginfo] target(s) in 0.19s Running unittests src/main.rs (target/debug/deps/infraternal-8a07bbf4e6ccb27c) running 2 tests test install::tests::dry_run_prints_a_process_surviving_user_unit ... ok test setup_token_tests::setup_token_command_reads_only_the_expected_socket_response ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/shim.rs (target/debug/deps/shim-8e53c92b1f367f87) 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::oversized_encode_keeps_the_reusable_output_unchanged ... 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::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-495795ebba6d6acb) running 23 tests test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok test auth::tests::enrollment_prf_input_is_user_bound ... ok test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok test auth::tests::public_status_and_discoverable_http_login ... ok test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok test runtime::tests::router_migrates_private_storage_and_serves_health ... ok test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok test auth::tests::review_old_words_race_rotation ... ok test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test result: ok. 22 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 14.70s Running unittests src/lib.rs (target/debug/deps/infraternal_shim-95c8f09c3e6bd78c) 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 ring::checks::tests::wrap_and_exact_offsets ... 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.19s Running tests/detach.rs (target/debug/deps/detach-9f5d4ed474ba6700) 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.57s 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-server/Cargo.lock:26:1 │ 26 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 27 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────┘ lock entries │ ├ base64 v0.21.7 ├── base64urlsafedata v0.5.5 │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── webauthn-rs v0.5.5 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-proto v0.5.5 │ └── webauthn-rs-core v0.5.5 (*) ├── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-proto v0.5.5 (*) ├ base64 v0.22.1 ├── alacritty_terminal v0.25.1 │ └── infraternal-shim v0.1.0 │ ├── infraternal v0.1.0 │ └── infraternal-fuzz v0.1.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 3 duplicate entries for crate 'getrandom' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-server/Cargo.lock:93:1 │ 93 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 94 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 95 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ getrandom v0.2.17 └── rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-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-server/Cargo.lock:99:1 │ 99 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 100 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ hashbrown v0.15.5 ├── hashlink v0.10.0 │ └── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) └── sqlx-core v0.8.6 (*) ├ hashbrown v0.17.1 └── indexmap v2.14.2 ├── h2 v0.4.19 │ └── hyper v1.11.1 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ └── hyper-util v0.1.21 │ ├── axum v0.8.9 (*) │ └── axum-server v0.8.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 2 duplicate entries for crate 'r-efi' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-server/Cargo.lock:193:1 │ 193 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 194 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────┘ lock entries │ ├ r-efi v5.3.0 └── getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ r-efi v6.0.0 └── getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-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-server/Cargo.lock:195:1 │ 195 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index 196 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand v0.9.5 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ └── (dev) infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 └── webauthn-rs v0.5.5 └── infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_chacha' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-server/Cargo.lock:197:1 │ 197 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 198 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_chacha v0.3.1 └── rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_core' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-server/Cargo.lock:199:1 │ 199 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 200 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'syn' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-server/Cargo.lock:239:1 │ 239 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 240 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index ```
Author
Owner

Server lane finished: t-server 7948ff00fb. Full fast gate output verbatim, part 2/3:

    │ ╰───────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ syn v2.0.119
      ├── asn1-rs-derive v0.5.1
      │   └── asn1-rs v0.6.2
      │       ├── der-parser v9.0.0
      │       │   ├── webauthn-rs-core v0.5.5
      │       │   │   └── webauthn-rs v0.5.5
      │       │   │       └── infraternal-server v0.1.0
      │       │   │           └── infraternal v0.1.0
      │       │   └── x509-parser v0.16.0
      │       │       └── webauthn-rs-core v0.5.5 (*)
      │       ├── oid-registry v0.7.1
      │       │   └── x509-parser v0.16.0 (*)
      │       └── x509-parser v0.16.0 (*)
      ├── asn1-rs-impl v0.2.0
      │   └── asn1-rs v0.6.2 (*)
      ├── openssl-macros v0.1.1
      │   └── openssl v0.10.81
      │       ├── axum-server v0.8.0
      │       │   └── infraternal-server v0.1.0 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── tokio-openssl v0.6.5
      │       │   └── axum-server v0.8.0 (*)
      │       ├── webauthn-attestation-ca v0.5.5
      │       │   └── webauthn-rs-core v0.5.5 (*)
      │       └── webauthn-rs-core v0.5.5 (*)
      ├── sqlx-macros v0.8.6
      │   └── sqlx v0.8.6
      │       ├── infraternal v0.1.0 (*)
      │       └── infraternal-server v0.1.0 (*)
      ├── sqlx-macros-core v0.8.6
      │   └── sqlx-macros v0.8.6 (*)
      ├── synstructure v0.13.2
      │   └── asn1-rs-derive v0.5.1 (*)
      ├── thiserror-impl v1.0.69
      │   └── thiserror v1.0.69
      │       ├── asn1-rs v0.6.2 (*)
      │       ├── webauthn-rs-core v0.5.5 (*)
      │       └── x509-parser v0.16.0 (*)
      ├── tracing-attributes v0.1.31
      │   └── tracing v0.1.44
      │       ├── axum v0.8.9
      │       │   └── infraternal-server v0.1.0 (*)
      │       ├── axum-core v0.5.6
      │       │   └── axum v0.8.9 (*)
      │       ├── h2 v0.4.19
      │       │   └── hyper v1.11.1
      │       │       ├── axum v0.8.9 (*)
      │       │       ├── axum-server v0.8.0 (*)
      │       │       └── hyper-util v0.1.21
      │       │           ├── axum v0.8.9 (*)
      │       │           └── axum-server v0.8.0 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6
      │       │   ├── sqlx v0.8.6 (*)
      │       │   ├── sqlx-macros v0.8.6 (*)
      │       │   ├── sqlx-macros-core v0.8.6 (*)
      │       │   └── sqlx-sqlite v0.8.6
      │       │       ├── sqlx v0.8.6 (*)
      │       │       └── sqlx-macros-core v0.8.6 (*)
      │       ├── sqlx-sqlite v0.8.6 (*)
      │       ├── tower v0.5.3
      │       │   ├── axum v0.8.9 (*)
      │       │   └── (dev) infraternal-server v0.1.0 (*)
      │       ├── tracing-subscriber v0.3.23
      │       │   └── infraternal-server v0.1.0 (*)
      │       ├── webauthn-attestation-ca v0.5.5 (*)
      │       ├── webauthn-rs v0.5.5 (*)
      │       └── webauthn-rs-core v0.5.5 (*)
      └── zerocopy-derive v0.8.60
          └── zerocopy v0.8.60
              ├── half v2.7.1
              │   ├── ciborium-ll v0.2.2
              │   │   └── ciborium v0.2.2
              │   │       └── criterion v0.7.0
              │   │           └── (dev) infraternal-protocol v0.1.0
              │   │               ├── infraternal-fuzz v0.1.0
              │   │               └── infraternal-server v0.1.0 (*)
              │   └── serde_cbor_2 v0.13.0
              │       ├── (dev) infraternal-server v0.1.0 (*)
              │       └── webauthn-rs-core v0.5.5 (*)
              └── ppv-lite86 v0.2.21
                  ├── rand_chacha v0.3.1
                  │   └── rand v0.8.8
                  │       └── bip39 v2.2.2
                  │           └── infraternal-server v0.1.0 (*)
                  └── rand_chacha v0.9.0
                      ├── rand v0.9.5
                      │   ├── infraternal-server v0.1.0 (*)
                      │   ├── tungstenite v0.29.0
                      │   │   └── tokio-tungstenite v0.29.0
                      │   │       ├── axum v0.8.9 (*)
                      │   │       └── (dev) infraternal-server v0.1.0 (*)
                      │   └── webauthn-rs-core v0.5.5 (*)
                      └── 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-server v0.1.0
      │       │           └── infraternal v0.1.0
      │       └── infraternal v0.1.0 (*)
      ├── displaydoc v0.2.7
      │   ├── asn1-rs v0.6.2
      │   │   ├── der-parser v9.0.0
      │   │   │   ├── webauthn-rs-core v0.5.5
      │   │   │   │   └── webauthn-rs v0.5.5
      │   │   │   │       └── infraternal-server v0.1.0 (*)
      │   │   │   └── x509-parser v0.16.0
      │   │   │       └── webauthn-rs-core v0.5.5 (*)
      │   │   ├── oid-registry v0.7.1
      │   │   │   └── x509-parser v0.16.0 (*)
      │   │   └── x509-parser v0.16.0 (*)
      │   ├── der-parser v9.0.0 (*)
      │   ├── icu_collections v2.3.0
      │   │   ├── icu_normalizer v2.3.0
      │   │   │   └── idna_adapter v1.2.2
      │   │   │       └── idna v1.1.0
      │   │   │           └── url v2.5.8
      │   │   │               ├── infraternal-server v0.1.0 (*)
      │   │   │               ├── sqlx-core v0.8.6
      │   │   │               │   ├── sqlx v0.8.6
      │   │   │               │   │   ├── infraternal v0.1.0 (*)
      │   │   │               │   │   └── infraternal-server v0.1.0 (*)
      │   │   │               │   ├── sqlx-macros v0.8.6
      │   │   │               │   │   └── sqlx v0.8.6 (*)
      │   │   │               │   ├── sqlx-macros-core v0.8.6
      │   │   │               │   │   └── sqlx-macros v0.8.6 (*)
      │   │   │               │   └── sqlx-sqlite v0.8.6
      │   │   │               │       ├── sqlx v0.8.6 (*)
      │   │   │               │       └── sqlx-macros-core v0.8.6 (*)
      │   │   │               ├── sqlx-macros-core v0.8.6 (*)
      │   │   │               ├── sqlx-sqlite v0.8.6 (*)
      │   │   │               ├── webauthn-rs v0.5.5 (*)
      │   │   │               ├── webauthn-rs-core v0.5.5 (*)
      │   │   │               └── webauthn-rs-proto v0.5.5
      │   │   │                   └── webauthn-rs-core v0.5.5 (*)
      │   │   └── icu_properties v2.3.0
      │   │       └── idna_adapter v1.2.2 (*)
      │   ├── icu_locale_core v2.3.0
      │   │   ├── icu_properties v2.3.0 (*)
      │   │   └── icu_provider v2.3.1
      │   │       ├── icu_normalizer v2.3.0 (*)
      │   │       └── icu_properties v2.3.0 (*)
      │   ├── icu_properties v2.3.0 (*)
      │   ├── icu_provider v2.3.1 (*)
      │   ├── tinystr v0.8.4
      │   │   └── icu_locale_core v2.3.0 (*)
      │   └── zerotrie v0.2.5
      │       ├── icu_properties v2.3.0 (*)
      │       └── icu_provider v2.3.1 (*)
      ├── futures-macro v0.3.34
      │   └── futures-util v0.3.34
      │       ├── axum v0.8.9
      │       │   └── infraternal-server v0.1.0 (*)
      │       ├── futures-executor v0.3.34
      │       │   └── sqlx-sqlite v0.8.6 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── js-sys v0.3.106
      │       │   └── web-sys v0.3.106
      │       │       └── plotters v0.3.7
      │       │           └── criterion v0.7.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       ├── sqlx-sqlite v0.8.6 (*)
      │       ├── tokio-tungstenite v0.29.0
      │       │   ├── axum v0.8.9 (*)
      │       │   └── (dev) infraternal-server v0.1.0 (*)
      │       ├── tower v0.5.3
      │       │   ├── axum v0.8.9 (*)
      │       │   └── (dev) infraternal-server v0.1.0 (*)
      │       └── tower-http v0.6.11
      │           └── infraternal-server v0.1.0 (*)
      ├── serde_derive v1.0.229
      │   ├── serde v1.0.229
      │   │   ├── alacritty_terminal v0.25.1
      │   │   │   └── infraternal-shim v0.1.0
      │   │   │       ├── infraternal v0.1.0 (*)
      │   │   │       └── infraternal-fuzz v0.1.0 (*)
      │   │   ├── base64urlsafedata v0.5.5
      │   │   │   ├── webauthn-attestation-ca v0.5.5
      │   │   │   │   └── webauthn-rs-core v0.5.5 (*)
      │   │   │   ├── webauthn-rs v0.5.5 (*)
      │   │   │   ├── webauthn-rs-core v0.5.5 (*)
      │   │   │   └── webauthn-rs-proto v0.5.5 (*)
      │   │   ├── bip39 v2.2.2
      │   │   │   └── infraternal-server v0.1.0 (*)
      │   │   ├── ciborium v0.2.2
      │   │   │   └── criterion v0.7.0 (*)
      │   │   ├── criterion v0.7.0 (*)
      │   │   ├── either v1.18.0
      │   │   │   ├── axum-server v0.8.0
      │   │   │   │   └── infraternal-server v0.1.0 (*)
      │   │   │   ├── itertools v0.13.0
      │   │   │   │   ├── criterion v0.7.0 (*)
      │   │   │   │   └── criterion-plot v0.6.0
      │   │   │   │       └── criterion v0.7.0 (*)
      │   │   │   ├── rayon v1.12.0
      │   │   │   │   └── criterion v0.7.0 (*)
      │   │   │   ├── sqlx-core v0.8.6 (*)
      │   │   │   └── sqlx-macros-core v0.8.6 (*)
      │   │   ├── infraternal-server v0.1.0 (*)
      │   │   ├── serde_cbor_2 v0.13.0
      │   │   │   ├── (dev) infraternal-server v0.1.0 (*)
      │   │   │   └── webauthn-rs-core v0.5.5 (*)
      │   │   ├── serde_urlencoded v0.7.1
      │   │   │   ├── axum v0.8.9 (*)
      │   │   │   └── sqlx-sqlite v0.8.6 (*)
      │   │   ├── sqlx-core v0.8.6 (*)
      │   │   ├── sqlx-macros-core v0.8.6 (*)
      │   │   ├── sqlx-sqlite v0.8.6 (*)
      │   │   ├── tinytemplate v1.2.1
      │   │   │   └── criterion v0.7.0 (*)
      │   │   ├── tracing-serde v0.2.0
      │   │   │   └── tracing-subscriber v0.3.23
      │   │   │       └── infraternal-server v0.1.0 (*)
      │   │   ├── tracing-subscriber v0.3.23 (*)
      │   │   ├── url v2.5.8 (*)
      │   │   ├── vte v0.15.0
      │   │   │   ├── alacritty_terminal v0.25.1 (*)
      │   │   │   ├── infraternal-shim v0.1.0 (*)
      │   │   │   └── vt100 v0.16.2
      │   │   │       ├── (dev) infraternal v0.1.0 (*)
      │   │   │       └── (dev) infraternal-shim v0.1.0 (*)
      │   │   ├── webauthn-attestation-ca v0.5.5 (*)
      │   │   ├── webauthn-rs v0.5.5 (*)
      │   │   ├── webauthn-rs-core v0.5.5 (*)
      │   │   └── webauthn-rs-proto v0.5.5 (*)
      │   └── url v2.5.8 (*)
      ├── synstructure v0.14.0
      │   ├── yoke-derive v0.8.4
      │   │   └── yoke v0.8.3
      │   │       ├── icu_collections v2.3.0 (*)
      │   │       ├── icu_provider v2.3.1 (*)
      │   │       ├── zerotrie v0.2.5 (*)
      │   │       └── zerovec v0.11.8
      │   │           ├── icu_collections v2.3.0 (*)
      │   │           ├── icu_locale_core v2.3.0 (*)
      │   │           ├── icu_normalizer v2.3.0 (*)
      │   │           ├── icu_properties v2.3.0 (*)
      │   │           ├── icu_provider v2.3.1 (*)
      │   │           ├── potential_utf v0.1.6
      │   │           │   └── icu_collections v2.3.0 (*)
      │   │           └── tinystr v0.8.4 (*)
      │   └── zerofrom-derive v0.1.8
      │       └── zerofrom v0.1.8
      │           ├── icu_collections v2.3.0 (*)
      │           ├── icu_provider v2.3.1 (*)
      │           ├── yoke v0.8.3 (*)
      │           ├── zerotrie v0.2.5 (*)
      │           └── zerovec v0.11.8 (*)
      ├── thiserror-impl v2.0.21
      │   └── thiserror v2.0.21
      │       ├── infraternal v0.1.0 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       ├── sqlx-sqlite v0.8.6 (*)
      │       └── tungstenite v0.29.0
      │           └── tokio-tungstenite v0.29.0 (*)
      ├── tokio-macros v2.7.2
      │   └── tokio v1.53.2
      │       ├── axum v0.8.9 (*)
      │       ├── axum-server v0.8.0 (*)
      │       ├── fs-err v3.3.2
      │       │   └── axum-server v0.8.0 (*)
      │       ├── h2 v0.4.19
      │       │   └── hyper v1.11.1
      │       │       ├── axum v0.8.9 (*)
      │       │       ├── axum-server v0.8.0 (*)
      │       │       └── hyper-util v0.1.21
      │       │           ├── axum v0.8.9 (*)
      │       │           └── axum-server v0.8.0 (*)
      │       ├── hyper v1.11.1 (*)
      │       ├── hyper-util v0.1.21 (*)
      │       ├── infraternal v0.1.0 (*)
      │       ├── infraternal-server v0.1.0 (*)
      │       ├── sqlx-core v0.8.6 (*)
      │       ├── sqlx-macros-core v0.8.6 (*)
      │       ├── tokio-openssl v0.6.5
      │       │   └── axum-server v0.8.0 (*)
      │       ├── tokio-stream v0.1.19
      │       │   └── sqlx-core v0.8.6 (*)
      │       ├── tokio-tungstenite v0.29.0 (*)
      │       ├── tokio-util v0.7.19
      │       │   ├── h2 v0.4.19 (*)
      │       │   └── tower-http v0.6.11 (*)
      │       ├── tower v0.5.3 (*)
      │       └── tower-http v0.6.11 (*)
      ├── wasm-bindgen-macro-support v0.2.129
      │   └── wasm-bindgen-macro v0.2.129
      │       └── wasm-bindgen v0.2.129
      │           ├── js-sys v0.3.106 (*)
      │           ├── plotters v0.3.7 (*)
      │           └── web-sys v0.3.106 (*)
      ├── yoke-derive v0.8.4 (*)
      ├── zerofrom-derive v0.1.8 (*)
      └── zerovec-derive v0.11.6
          └── zerovec v0.11.8 (*)

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

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

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

warning[duplicate]: found 2 duplicate entries for crate 'windows-sys'
    ┌─ /home/kayg/Developer/infraternal/.worktrees/t-server/Cargo.lock:300:1
    │  
300 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index
301 │ │ windows-sys 0.61.2 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ windows-sys v0.59.0
      └── alacritty_terminal v0.25.1
          └── infraternal-shim v0.1.0
              ├── infraternal v0.1.0
              └── infraternal-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-server v0.1.0
      │               │           └── infraternal 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 (*)
      │       └── tokio v1.53.2
      │           ├── axum v0.8.9
      │           │   └── infraternal-server v0.1.0 (*)
      │           ├── axum-server v0.8.0
      │           │   └── infraternal-server v0.1.0 (*)
      │           ├── fs-err v3.3.2
      │           │   └── axum-server v0.8.0 (*)
      │           ├── h2 v0.4.19
      │           │   └── hyper v1.11.1
      │           │       ├── axum v0.8.9 (*)
      │           │       ├── axum-server v0.8.0 (*)
      │           │       └── hyper-util v0.1.21
      │           │           ├── axum v0.8.9 (*)
      │           │           └── axum-server v0.8.0 (*)
      │           ├── hyper v1.11.1 (*)
      │           ├── hyper-util v0.1.21 (*)
      │           ├── infraternal v0.1.0 (*)
      │           ├── infraternal-server v0.1.0 (*)
      │           ├── sqlx-core v0.8.6
      │           │   ├── sqlx v0.8.6
      │           │   │   ├── infraternal v0.1.0 (*)
      │           │   │   └── infraternal-server v0.1.0 (*)
      │           │   ├── sqlx-macros v0.8.6
      │           │   │   └── sqlx v0.8.6 (*)
      │           │   ├── sqlx-macros-core v0.8.6
      │           │   │   └── sqlx-macros v0.8.6 (*)
      │           │   └── sqlx-sqlite v0.8.6
      │           │       ├── sqlx v0.8.6 (*)
      │           │       └── sqlx-macros-core v0.8.6 (*)
      │           ├── sqlx-macros-core v0.8.6 (*)
      │           ├── tokio-openssl v0.6.5
      │           │   └── axum-server v0.8.0 (*)
      │           ├── tokio-stream v0.1.19
      │           │   └── sqlx-core v0.8.6 (*)
      │           ├── tokio-tungstenite v0.29.0
      │           │   ├── axum v0.8.9 (*)
Server lane finished: t-server 7948ff00fb6370e0a257a14b9fb00f3d6fc3cf7a. Full fast gate output verbatim, part 2/3: ```text │ ╰───────────────────────────────────────────────────────────────┘ lock entries │ ├ syn v2.0.119 ├── asn1-rs-derive v0.5.1 │ └── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── asn1-rs-impl v0.2.0 │ └── asn1-rs v0.6.2 (*) ├── openssl-macros v0.1.1 │ └── openssl v0.10.81 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) ├── synstructure v0.13.2 │ └── asn1-rs-derive v0.5.1 (*) ├── thiserror-impl v1.0.69 │ └── thiserror v1.0.69 │ ├── asn1-rs v0.6.2 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── x509-parser v0.16.0 (*) ├── tracing-attributes v0.1.31 │ └── tracing v0.1.44 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-core v0.5.6 │ │ └── axum v0.8.9 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ ├── sqlx-macros v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tracing-subscriber v0.3.23 │ │ └── infraternal-server v0.1.0 (*) │ ├── webauthn-attestation-ca v0.5.5 (*) │ ├── webauthn-rs v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) └── zerocopy-derive v0.8.60 └── zerocopy v0.8.60 ├── half v2.7.1 │ ├── ciborium-ll v0.2.2 │ │ └── ciborium v0.2.2 │ │ └── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 (*) │ └── serde_cbor_2 v0.13.0 │ ├── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── ppv-lite86 v0.2.21 ├── rand_chacha v0.3.1 │ └── rand v0.8.8 │ └── bip39 v2.2.2 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 (*) │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── 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-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── infraternal v0.1.0 (*) ├── displaydoc v0.2.7 │ ├── asn1-rs v0.6.2 │ │ ├── der-parser v9.0.0 │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── x509-parser v0.16.0 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── oid-registry v0.7.1 │ │ │ └── x509-parser v0.16.0 (*) │ │ └── x509-parser v0.16.0 (*) │ ├── der-parser v9.0.0 (*) │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── tinystr v0.8.4 │ │ └── icu_locale_core v2.3.0 (*) │ └── zerotrie v0.2.5 │ ├── icu_properties v2.3.0 (*) │ └── icu_provider v2.3.1 (*) ├── futures-macro v0.3.34 │ └── futures-util v0.3.34 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── futures-executor v0.3.34 │ │ └── sqlx-sqlite v0.8.6 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── js-sys v0.3.106 │ │ └── web-sys v0.3.106 │ │ └── plotters v0.3.7 │ │ └── criterion v0.7.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 │ └── infraternal-server v0.1.0 (*) ├── serde_derive v1.0.229 │ ├── serde v1.0.229 │ │ ├── alacritty_terminal v0.25.1 │ │ │ └── infraternal-shim v0.1.0 │ │ │ ├── infraternal v0.1.0 (*) │ │ │ └── infraternal-fuzz v0.1.0 (*) │ │ ├── base64urlsafedata v0.5.5 │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 (*) │ │ ├── bip39 v2.2.2 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── ciborium v0.2.2 │ │ │ └── criterion v0.7.0 (*) │ │ ├── criterion v0.7.0 (*) │ │ ├── either v1.18.0 │ │ │ ├── axum-server v0.8.0 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── itertools v0.13.0 │ │ │ │ ├── criterion v0.7.0 (*) │ │ │ │ └── criterion-plot v0.6.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── rayon v1.12.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── sqlx-core v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── serde_cbor_2 v0.13.0 │ │ │ ├── (dev) infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── serde_urlencoded v0.7.1 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── sqlx-sqlite v0.8.6 (*) │ │ ├── sqlx-core v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ ├── tinytemplate v1.2.1 │ │ │ └── criterion v0.7.0 (*) │ │ ├── tracing-serde v0.2.0 │ │ │ └── tracing-subscriber v0.3.23 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── tracing-subscriber v0.3.23 (*) │ │ ├── url v2.5.8 (*) │ │ ├── vte v0.15.0 │ │ │ ├── alacritty_terminal v0.25.1 (*) │ │ │ ├── infraternal-shim v0.1.0 (*) │ │ │ └── vt100 v0.16.2 │ │ │ ├── (dev) infraternal v0.1.0 (*) │ │ │ └── (dev) infraternal-shim v0.1.0 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ ├── webauthn-rs v0.5.5 (*) │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ └── webauthn-rs-proto v0.5.5 (*) │ └── url v2.5.8 (*) ├── synstructure v0.14.0 │ ├── yoke-derive v0.8.4 │ │ └── yoke v0.8.3 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── zerotrie v0.2.5 (*) │ │ └── zerovec v0.11.8 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_locale_core v2.3.0 (*) │ │ ├── icu_normalizer v2.3.0 (*) │ │ ├── icu_properties v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── potential_utf v0.1.6 │ │ │ └── icu_collections v2.3.0 (*) │ │ └── tinystr v0.8.4 (*) │ └── zerofrom-derive v0.1.8 │ └── zerofrom v0.1.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── yoke v0.8.3 (*) │ ├── zerotrie v0.2.5 (*) │ └── zerovec v0.11.8 (*) ├── thiserror-impl v2.0.21 │ └── thiserror v2.0.21 │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ └── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 (*) ├── tokio-macros v2.7.2 │ └── tokio v1.53.2 │ ├── axum v0.8.9 (*) │ ├── axum-server v0.8.0 (*) │ ├── fs-err v3.3.2 │ │ └── axum-server v0.8.0 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── hyper v1.11.1 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 (*) │ ├── tower v0.5.3 (*) │ └── tower-http v0.6.11 (*) ├── wasm-bindgen-macro-support v0.2.129 │ └── wasm-bindgen-macro v0.2.129 │ └── wasm-bindgen v0.2.129 │ ├── js-sys v0.3.106 (*) │ ├── plotters v0.3.7 (*) │ └── web-sys v0.3.106 (*) ├── yoke-derive v0.8.4 (*) ├── zerofrom-derive v0.1.8 (*) └── zerovec-derive v0.11.6 └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'synstructure' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-server/Cargo.lock:242:1 │ 242 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 243 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ synstructure v0.13.2 └── asn1-rs-derive v0.5.1 └── asn1-rs v0.6.2 ├── der-parser v9.0.0 │ ├── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── x509-parser v0.16.0 │ └── webauthn-rs-core v0.5.5 (*) ├── oid-registry v0.7.1 │ └── x509-parser v0.16.0 (*) └── x509-parser v0.16.0 (*) ├ synstructure v0.14.0 ├── yoke-derive v0.8.4 │ └── yoke v0.8.3 │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 │ │ │ │ └── infraternal v0.1.0 │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── zerotrie v0.2.5 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ └── zerovec v0.11.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ ├── icu_normalizer v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── potential_utf v0.1.6 │ │ └── icu_collections v2.3.0 (*) │ └── tinystr v0.8.4 │ └── icu_locale_core v2.3.0 (*) └── zerofrom-derive v0.1.8 └── zerofrom v0.1.8 ├── icu_collections v2.3.0 (*) ├── icu_provider v2.3.1 (*) ├── yoke v0.8.3 (*) ├── zerotrie v0.2.5 (*) └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-server/Cargo.lock:244:1 │ 244 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 245 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-server/Cargo.lock:246:1 │ 246 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 247 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror-impl v1.0.69 └── thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror-impl v2.0.21 └── thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'windows-sys' ┌─ /home/kayg/Developer/infraternal/.worktrees/t-server/Cargo.lock:300:1 │ 300 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index 301 │ │ windows-sys 0.61.2 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ windows-sys v0.59.0 └── alacritty_terminal v0.25.1 └── infraternal-shim v0.1.0 ├── infraternal v0.1.0 └── infraternal-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-server v0.1.0 │ │ └── infraternal 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 (*) │ └── tokio v1.53.2 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ ├── fs-err v3.3.2 │ │ └── axum-server v0.8.0 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── hyper v1.11.1 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 (*) │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── sqlx-macros v0.8.6 │ │ │ └── sqlx v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 │ │ │ └── sqlx-macros v0.8.6 (*) │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) ```
Author
Owner

Server lane finished: t-server 7948ff00fb. Full fast gate output verbatim, part 3/3:

      │           │   └── (dev) infraternal-server v0.1.0 (*)
      │           ├── tokio-util v0.7.19
      │           │   ├── h2 v0.4.19 (*)
      │           │   └── tower-http v0.6.11
      │           │       └── infraternal-server v0.1.0 (*)
      │           ├── tower v0.5.3
      │           │   ├── axum v0.8.9 (*)
      │           │   └── (dev) infraternal-server v0.1.0 (*)
      │           └── tower-http v0.6.11 (*)
      ├── home v0.5.12
      │   └── alacritty_terminal v0.25.1 (*)
      ├── mio v1.2.4
      │   └── tokio v1.53.2 (*)
      ├── miow v0.6.1
      │   └── alacritty_terminal v0.25.1 (*)
      ├── nu-ansi-term v0.50.3
      │   └── tracing-subscriber v0.3.23
      │       └── infraternal-server v0.1.0 (*)
      ├── polling v3.11.0 (*)
      ├── rustix v1.1.5 (*)
      ├── socket2 v0.6.5
      │   └── tokio v1.53.2 (*)
      ├── tokio v1.53.2 (*)
      └── winapi-util v0.1.11
          ├── same-file v1.0.6
          │   └── walkdir v2.5.0
          │       └── criterion v0.7.0 (*)
          └── walkdir v2.5.0 (*)

advisories ok, bans ok, licenses ok, sources ok

==> static builds
    Finished `release` profile [optimized] target(s) in 0.17s
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: 14661536 bytes
    Finished `release` profile [optimized] target(s) in 0.17s
target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped
PT_INTERP: absent; size: 12272504 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 [5.11ms]
(pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.19ms]
(pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [0.77ms]
(pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.16ms]
(pass) split mux header preserves trailing Close [0.16ms]

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

 7 pass
 0 fail
 34390 expect() calls
Ran 7 tests across 2 files. [2.41s]
Server lane finished: t-server 7948ff00fb6370e0a257a14b9fb00f3d6fc3cf7a. Full fast gate output verbatim, part 3/3: ```text │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 │ │ └── infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 (*) ├── home v0.5.12 │ └── alacritty_terminal v0.25.1 (*) ├── mio v1.2.4 │ └── tokio v1.53.2 (*) ├── miow v0.6.1 │ └── alacritty_terminal v0.25.1 (*) ├── nu-ansi-term v0.50.3 │ └── tracing-subscriber v0.3.23 │ └── infraternal-server v0.1.0 (*) ├── polling v3.11.0 (*) ├── rustix v1.1.5 (*) ├── socket2 v0.6.5 │ └── tokio v1.53.2 (*) ├── tokio v1.53.2 (*) └── winapi-util v0.1.11 ├── same-file v1.0.6 │ └── walkdir v2.5.0 │ └── criterion v0.7.0 (*) └── walkdir v2.5.0 (*) advisories ok, bans ok, licenses ok, sources ok ==> static builds Finished `release` profile [optimized] target(s) in 0.17s 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: 14661536 bytes Finished `release` profile [optimized] target(s) in 0.17s target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 12272504 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 [5.11ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.19ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [0.77ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.16ms] (pass) split mux header preserves trailing Close [0.16ms] 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 [2381.28ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [13.37ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.41s] ```
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 read-only audit started: server branch t-server, base 6fa27a3, head 7948ff00fb; client branch t-web, base 1b4c907, head 639ac27684. Experiments will use disposable /tmp worktrees. Auditing discoverable login, setup-token secrecy/concurrency, PRF compatibility and admission claims.

Independent read-only audit started: server branch t-server, base 6fa27a3, head 7948ff00fb6370e0a257a14b9fb00f3d6fc3cf7a; client branch t-web, base 1b4c907, head 639ac276841832b76828ca09abedf98cca663296. Experiments will use disposable /tmp worktrees. Auditing discoverable login, setup-token secrecy/concurrency, PRF compatibility and admission claims.
Author
Owner

Finding F1 (P1): successful discoverable login + corrupted wrap + logout 429 -> expected revoked session; actual /auth/session 200 and production reload opens terminal. apps/tracer/src/auth.ts:151 suppresses logout rejection; main.ts:31 trusts remaining cookie on reload. Failing Chromium 149 real-router/SQLite test saved at /tmp/review-auth-browser-test.mjs, output /tmp/review-auth-unwrap-red.log. Logout 429 injected; real admission reachability being checked. Decisions 97/98 are absent from both supplied snapshots (DECISIONS ends at 86).

Finding F1 (P1): successful discoverable login + corrupted wrap + logout 429 -> expected revoked session; actual /auth/session 200 and production reload opens terminal. apps/tracer/src/auth.ts:151 suppresses logout rejection; main.ts:31 trusts remaining cookie on reload. Failing Chromium 149 real-router/SQLite test saved at /tmp/review-auth-browser-test.mjs, output /tmp/review-auth-unwrap-red.log. Logout 429 injected; real admission reachability being checked. Decisions 97/98 are absent from both supplied snapshots (DECISIONS ends at 86).
Author
Owner

auth-ux finished: server 7948ff0, client 639ac27. Audit running as review-auth-ux, tracked on #29. One-prompt sign-in (D108) is tracked on #30. The fix-server round is #28.

auth-ux finished: server 7948ff0, client 639ac27. Audit running as review-auth-ux, tracked on #29. One-prompt sign-in (D108) is tracked on #30. The fix-server round is #28.
Author
Owner

F2 — P2: retained public identified login discloses credential IDs and account existence

Input: unauthenticated POST /auth/login-start {user_id:known UUID} versus unknown UUID, pinned Origin → expected: no caller can list credentials and no identity oracle → actual: known UUID returns 200 with 1 allowed credential (and PRF input), unknown UUID returns 401.
Evidence: auth/http.rs:219–224, auth/webauthn.rs:188–222. Failing test audit_no_public_credential_listing in /tmp/review-auth-cases.rs; output /tmp/review-auth-server-red.log. Inherited identified endpoint deliberately retained by this change; default discoverable response itself correctly returns an empty list. UUIDs are high entropy, so this is disclosure given a known/leaked UUID, not practical brute-force enumeration of every user. Client stores UUID nonsecretly. Remove the public fallback or bind its credential disclosure to authenticated authorization; direct Auth::login_start tests do not require publishing it over HTTP.

## F2 — P2: retained public identified login discloses credential IDs and account existence Input: unauthenticated POST /auth/login-start {user_id:known UUID} versus unknown UUID, pinned Origin → expected: no caller can list credentials and no identity oracle → actual: known UUID returns 200 with 1 allowed credential (and PRF input), unknown UUID returns 401. Evidence: auth/http.rs:219–224, auth/webauthn.rs:188–222. Failing test audit_no_public_credential_listing in /tmp/review-auth-cases.rs; output /tmp/review-auth-server-red.log. Inherited identified endpoint deliberately retained by this change; default discoverable response itself correctly returns an empty list. UUIDs are high entropy, so this is disclosure given a known/leaked UUID, not practical brute-force enumeration of every user. Client stores UUID nonsecretly. Remove the public fallback or bind its credential disclosure to authenticated authorization; direct Auth::login_start tests do not require publishing it over HTTP.
Author
Owner

F3 — P2: login challenge is not bound to the initiating browser/session

Input: browser A starts discoverable login; a correctly signed proof and ceremony are finished in cookie-free browser B → expected per checklist: reject B (401), bind ceremony to A → actual: 200 and a fresh session in B; start issues no binding cookie.
Evidence: auth/http.rs:219–237 never supplies a browser binding; auth/mod.rs:83–86 Login holds only state and expiry; auth/webauthn.rs:279–335 keys state only by the bearer ceremony. Failing test audit_ceremony_browser_binding in /tmp/review-auth-cases.rs; output /tmp/review-auth-server-red.log. Signature/challenge/RP/exact-origin/UV remain enforced; this is a missing browser transaction-binding property, not demonstrated forgery or cross-origin JavaScript exploit. Same-Origin policy blocks ordinary cross-site browser requests; stolen or relayed ceremony/proof remains redeemable in another client. Also inherited for identified login. Add an unguessable browser transaction binding or have the owner explicitly resolve the checklist requirement; this audit does not change the contract.

## F3 — P2: login challenge is not bound to the initiating browser/session Input: browser A starts discoverable login; a correctly signed proof and ceremony are finished in cookie-free browser B → expected per checklist: reject B (401), bind ceremony to A → actual: 200 and a fresh session in B; start issues no binding cookie. Evidence: auth/http.rs:219–237 never supplies a browser binding; auth/mod.rs:83–86 Login holds only state and expiry; auth/webauthn.rs:279–335 keys state only by the bearer ceremony. Failing test audit_ceremony_browser_binding in /tmp/review-auth-cases.rs; output /tmp/review-auth-server-red.log. Signature/challenge/RP/exact-origin/UV remain enforced; this is a missing browser transaction-binding property, not demonstrated forgery or cross-origin JavaScript exploit. Same-Origin policy blocks ordinary cross-site browser requests; stolen or relayed ceremony/proof remains redeemable in another client. Also inherited for identified login. Add an unguessable browser transaction binding or have the owner explicitly resolve the checklist requirement; this audit does not change the contract.
Author
Owner

F1 real admission reproduction: 120 public status actions then authenticated logout -> expected revoked; actual 429 and live_session=true. audit_logout_survives_admission_exhaustion fails. Independent parallel equal-counter regression passes (exactly one success); wrong origin, no UV, expiry denied. Evidence /tmp/review-auth-cases.rs and /tmp/review-auth-server-red.log.

F1 real admission reproduction: 120 public status actions then authenticated logout -> expected revoked; actual 429 and live_session=true. audit_logout_survives_admission_exhaustion fails. Independent parallel equal-counter regression passes (exactly one success); wrong origin, no UV, expiry denied. Evidence /tmp/review-auth-cases.rs and /tmp/review-auth-server-red.log.
Author
Owner

Independent audit finish evidence: server 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-protocol v0.1.0 (/tmp/review-auth-server/crates/infraternal-protocol)
    Checking infraternal-shim v0.1.0 (/tmp/review-auth-server/crates/infraternal-shim)
    Checking infraternal-plugin-api v0.1.0 (/tmp/review-auth-server/crates/infraternal-plugin-api)
    Checking infraternal-plugin-ssh v0.1.0 (/tmp/review-auth-server/crates/plugins/ssh)
    Checking infraternal-agent v0.1.0 (/tmp/review-auth-server/crates/infraternal-agent)
    Checking infraternal-server v0.1.0 (/tmp/review-auth-server/crates/infraternal-server)
    Checking infraternal-fuzz v0.1.0 (/tmp/review-auth-server/fuzz)
    Checking infraternal v0.1.0 (/tmp/review-auth-server/crates/infraternal)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.77s

==> test
   Compiling infraternal-protocol v0.1.0 (/tmp/review-auth-server/crates/infraternal-protocol)
   Compiling infraternal-shim v0.1.0 (/tmp/review-auth-server/crates/infraternal-shim)
   Compiling infraternal-plugin-ssh v0.1.0 (/tmp/review-auth-server/crates/plugins/ssh)
   Compiling infraternal-agent v0.1.0 (/tmp/review-auth-server/crates/infraternal-agent)
   Compiling infraternal-plugin-api v0.1.0 (/tmp/review-auth-server/crates/infraternal-plugin-api)
   Compiling infraternal-server v0.1.0 (/tmp/review-auth-server/crates/infraternal-server)
   Compiling infraternal v0.1.0 (/tmp/review-auth-server/crates/infraternal)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 11.21s
     Running unittests src/main.rs (target/debug/deps/infraternal-5e10ba097451a9da)

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

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

     Running tests/shim.rs (target/debug/deps/shim-15e1dededc1e3417)

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

     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 tests::oversized_encode_keeps_the_reusable_output_unchanged ... 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 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-7735c16669b8d949)

running 23 tests
test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds
test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok
test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok
test auth::tests::enrollment_prf_input_is_user_bound ... ok
test auth::tests::public_status_and_discoverable_http_login ... ok
test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok
test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok
test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok
test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok
test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok
test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok
test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok
test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok
test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok
test runtime::tests::router_migrates_private_storage_and_serves_health ... ok
test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok
test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok
test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok
test auth::tests::review_old_words_race_rotation ... ok
test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok
test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok
test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok
test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok

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

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

running 12 tests
test frame::checks::tests::golden_and_fragmented ... ok
test frame::checks::golden::every_frozen_message ... ok
test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile
test ring::checks::tests::wrap_and_exact_offsets ... 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.17s

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

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

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

warning[duplicate]: found 3 duplicate entries for crate 'getrandom'
   ┌─ /tmp/review-auth-server/Cargo.lock:93:1
   │  
93 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index
94 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index
95 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index
   │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ getrandom v0.2.17
     └── rand_core v0.6.4
         ├── bip39 v2.2.2
         │   └── infraternal-server v0.1.0
         │       └── infraternal v0.1.0
         ├── crypto-common v0.1.7
         │   ├── aead v0.5.2
         │   │   └── aes-gcm v0.10.3
         │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   ├── cipher v0.4.4
         │   │   ├── aes v0.8.4
         │   │   │   └── aes-gcm v0.10.3 (*)
         │   │   ├── aes-gcm v0.10.3 (*)
         │   │   └── ctr v0.9.2
         │   │       └── aes-gcm v0.10.3 (*)
         │   ├── digest v0.10.7
         │   │   ├── blake2 v0.10.6
         │   │   │   └── argon2 v0.5.3
         │   │   │       └── infraternal-server v0.1.0 (*)
         │   │   ├── hmac v0.12.1
         │   │   │   └── hkdf v0.12.4
         │   │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   │   ├── sha1 v0.10.7
         │   │   │   ├── axum v0.8.9
         │   │   │   │   └── infraternal-server v0.1.0 (*)
         │   │   │   └── tungstenite v0.29.0
         │   │   │       └── tokio-tungstenite v0.29.0
         │   │   │           ├── axum v0.8.9 (*)
         │   │   │           └── (dev) infraternal-server v0.1.0 (*)
         │   │   └── sha2 v0.10.9
         │   │       ├── infraternal-server v0.1.0 (*)
         │   │       ├── sqlx-core v0.8.6
         │   │       │   ├── sqlx v0.8.6
         │   │       │   │   ├── infraternal v0.1.0 (*)
         │   │       │   │   └── infraternal-server v0.1.0 (*)
         │   │       │   ├── sqlx-macros v0.8.6
         │   │       │   │   └── sqlx v0.8.6 (*)
         │   │       │   ├── sqlx-macros-core v0.8.6
         │   │       │   │   └── sqlx-macros v0.8.6 (*)
         │   │       │   └── sqlx-sqlite v0.8.6
         │   │       │       ├── sqlx v0.8.6 (*)
         │   │       │       └── sqlx-macros-core v0.8.6 (*)
         │   │       └── sqlx-macros-core v0.8.6 (*)
         │   └── universal-hash v0.5.1
         │       └── polyval v0.6.2
         │           └── ghash v0.5.1
         │               └── aes-gcm v0.10.3 (*)
         ├── password-hash v0.5.0
         │   └── argon2 v0.5.3 (*)
         ├── rand v0.8.8
         │   └── bip39 v2.2.2 (*)
         └── rand_chacha v0.3.1
             └── rand v0.8.8 (*)
   ├ getrandom v0.3.4
     └── rand_core v0.9.5
         ├── rand v0.9.5
         │   ├── infraternal-server v0.1.0
         │   │   └── infraternal v0.1.0
         │   ├── tungstenite v0.29.0
         │   │   └── tokio-tungstenite v0.29.0
         │   │       ├── axum v0.8.9
         │   │       │   └── infraternal-server v0.1.0 (*)
         │   │       └── (dev) infraternal-server v0.1.0 (*)
         │   └── webauthn-rs-core v0.5.5
         │       └── webauthn-rs v0.5.5
         │           └── infraternal-server v0.1.0 (*)
         └── rand_chacha v0.9.0
             ├── rand v0.9.5 (*)
             └── webauthn-rs-core v0.5.5 (*)
   ├ getrandom v0.4.3
     ├── jobserver v0.1.35
     │   └── cc v1.6.0
     │       ├── (build) libfuzzer-sys v0.4.13
     │       │   └── infraternal-fuzz v0.1.0
     │       ├── (build) libsqlite3-sys v0.30.1
     │       │   └── sqlx-sqlite v0.8.6
     │       │       ├── sqlx v0.8.6
     │       │       │   ├── infraternal v0.1.0
     │       │       │   └── infraternal-server v0.1.0
     │       │       │       └── infraternal v0.1.0 (*)
     │       │       └── sqlx-macros-core v0.8.6
     │       │           └── sqlx-macros v0.8.6
     │       │               └── sqlx v0.8.6 (*)
     │       ├── openssl-src v300.6.1+3.6.3
     │       │   └── (build) openssl-sys v0.9.117
     │       │       ├── axum-server v0.8.0
     │       │       │   └── infraternal-server v0.1.0 (*)
     │       │       ├── openssl v0.10.81
     │       │       │   ├── axum-server v0.8.0 (*)
     │       │       │   ├── infraternal-server v0.1.0 (*)
     │       │       │   ├── tokio-openssl v0.6.5
     │       │       │   │   └── axum-server v0.8.0 (*)
     │       │       │   ├── webauthn-attestation-ca v0.5.5
     │       │       │   │   └── webauthn-rs-core v0.5.5
     │       │       │   │       └── webauthn-rs v0.5.5
     │       │       │   │           └── infraternal-server v0.1.0 (*)
     │       │       │   └── webauthn-rs-core v0.5.5 (*)
     │       │       ├── tokio-openssl v0.6.5 (*)
     │       │       ├── webauthn-attestation-ca v0.5.5 (*)
     │       │       └── webauthn-rs-core v0.5.5 (*)
     │       └── (build) openssl-sys v0.9.117 (*)
     └── uuid v1.27.0
         ├── infraternal-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-server/Cargo.lock:99:1
    │  
 99 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index
100 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index
    │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ hashbrown v0.15.5
      ├── hashlink v0.10.0
      │   └── sqlx-core v0.8.6
      │       ├── sqlx v0.8.6
      │       │   ├── infraternal v0.1.0
      │       │   └── infraternal-server v0.1.0
      │       │       └── infraternal v0.1.0 (*)
      │       ├── sqlx-macros v0.8.6
      │       │   └── sqlx v0.8.6 (*)
      │       ├── sqlx-macros-core v0.8.6
      │       │   └── sqlx-macros v0.8.6 (*)
      │       └── sqlx-sqlite v0.8.6
      │           ├── sqlx v0.8.6 (*)
      │           └── sqlx-macros-core v0.8.6 (*)
      └── sqlx-core v0.8.6 (*)
    ├ hashbrown v0.17.1
      └── indexmap v2.14.2
          ├── h2 v0.4.19
          │   └── hyper v1.11.1
          │       ├── axum v0.8.9
          │       │   └── infraternal-server v0.1.0
          │       │       └── infraternal v0.1.0
          │       ├── axum-server v0.8.0
          │       │   └── infraternal-server v0.1.0 (*)
          │       └── hyper-util v0.1.21
          │           ├── axum v0.8.9 (*)
          │           └── axum-server v0.8.0 (*)
          └── sqlx-core v0.8.6
              ├── sqlx v0.8.6
              │   ├── infraternal v0.1.0 (*)
              │   └── infraternal-server v0.1.0 (*)
              ├── sqlx-macros v0.8.6
              │   └── sqlx v0.8.6 (*)
              ├── sqlx-macros-core v0.8.6
              │   └── sqlx-macros v0.8.6 (*)
              └── sqlx-sqlite v0.8.6
                  ├── sqlx v0.8.6 (*)
                  └── sqlx-macros-core v0.8.6 (*)

warning[duplicate]: found 2 duplicate entries for crate 'r-efi'
    ┌─ /tmp/review-auth-server/Cargo.lock:193:1
    │  
193 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index
194 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰─────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ r-efi v5.3.0
      └── getrandom v0.3.4
          └── rand_core v0.9.5
              ├── rand v0.9.5
              │   ├── infraternal-server v0.1.0
              │   │   └── infraternal v0.1.0
              │   ├── tungstenite v0.29.0
              │   │   └── tokio-tungstenite v0.29.0
              │   │       ├── axum v0.8.9
              │   │       │   └── infraternal-server v0.1.0 (*)
              │   │       └── (dev) infraternal-server v0.1.0 (*)
              │   └── webauthn-rs-core v0.5.5
              │       └── webauthn-rs v0.5.5
              │           └── infraternal-server v0.1.0 (*)
              └── rand_chacha v0.9.0
                  ├── rand v0.9.5 (*)
                  └── webauthn-rs-core v0.5.5 (*)
    ├ r-efi v6.0.0
      └── getrandom v0.4.3
          ├── jobserver v0.1.35
          │   └── cc v1.6.0
          │       ├── (build) libfuzzer-sys v0.4.13
          │       │   └── infraternal-fuzz v0.1.0
          │       ├── (build) libsqlite3-sys v0.30.1
          │       │   └── sqlx-sqlite v0.8.6
          │       │       ├── sqlx v0.8.6
          │       │       │   ├── infraternal v0.1.0
          │       │       │   └── infraternal-server v0.1.0
          │       │       │       └── infraternal v0.1.0 (*)
          │       │       └── sqlx-macros-core v0.8.6
          │       │           └── sqlx-macros v0.8.6
          │       │               └── sqlx v0.8.6 (*)
          │       ├── openssl-src v300.6.1+3.6.3
          │       │   └── (build) openssl-sys v0.9.117
          │       │       ├── axum-server v0.8.0
          │       │       │   └── infraternal-server v0.1.0 (*)
          │       │       ├── openssl v0.10.81
          │       │       │   ├── axum-server v0.8.0 (*)
          │       │       │   ├── infraternal-server v0.1.0 (*)
          │       │       │   ├── tokio-openssl v0.6.5
          │       │       │   │   └── axum-server v0.8.0 (*)
          │       │       │   ├── webauthn-attestation-ca v0.5.5
          │       │       │   │   └── webauthn-rs-core v0.5.5
          │       │       │   │       └── webauthn-rs v0.5.5
          │       │       │   │           └── infraternal-server v0.1.0 (*)
          │       │       │   └── webauthn-rs-core v0.5.5 (*)
          │       │       ├── tokio-openssl v0.6.5 (*)
          │       │       ├── webauthn-attestation-ca v0.5.5 (*)
          │       │       └── webauthn-rs-core v0.5.5 (*)
          │       └── (build) openssl-sys v0.9.117 (*)
          └── uuid v1.27.0
              ├── infraternal-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-server/Cargo.lock:195:1
    │  
195 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index
196 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand v0.8.8
      └── bip39 v2.2.2
          └── infraternal-server v0.1.0
              └── infraternal v0.1.0
    ├ rand v0.9.5
      ├── infraternal-server v0.1.0
      │   └── infraternal v0.1.0
      ├── tungstenite v0.29.0
      │   └── tokio-tungstenite v0.29.0
      │       ├── axum v0.8.9
      │       │   └── infraternal-server v0.1.0 (*)
      │       └── (dev) infraternal-server v0.1.0 (*)
      └── webauthn-rs-core v0.5.5
          └── webauthn-rs v0.5.5
              └── infraternal-server v0.1.0 (*)

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

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

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

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

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

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

warning[duplicate]: found 2 duplicate entries for crate 'windows-sys'
    ┌─ /tmp/review-auth-server/Cargo.lock:300:1
    │  
300 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index
301 │ │ windows-sys 0.61.2 registry+https://github.com/rust-lang/crates.io-index
    │ ╰────────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ windows-sys v0.59.0
      └── alacritty_terminal v0.25.1
          └── infraternal-shim v0.1.0
              ├── infraternal v0.1.0
              └── infraternal-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-server v0.1.0
      │               │           └── infraternal 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 (*)
      │       └── tokio v1.53.2
      │           ├── axum v0.8.9
      │           │   └── infraternal-server v0.1.0 (*)
      │           ├── axum-server v0.8.0
      │           │   └── infraternal-server v0.1.0 (*)
      │           ├── fs-err v3.3.2
      │           │   └── axum-server v0.8.0 (*)
      │           ├── h2 v0.4.19
      │           │   └── hyper v1.11.1
      │           │       ├── axum v0.8.9 (*)
      │           │       ├── axum-server v0.8.0 (*)
      │           │       └── hyper-util v0.1.21
      │           │           ├── axum v0.8.9 (*)
      │           │           └── axum-server v0.8.0 (*)
      │           ├── hyper v1.11.1 (*)
      │           ├── hyper-util v0.1.21 (*)
      │           ├── infraternal v0.1.0 (*)
      │           ├── infraternal-server v0.1.0 (*)
      │           ├── sqlx-core v0.8.6
      │           │   ├── sqlx v0.8.6
      │           │   │   ├── infraternal v0.1.0 (*)
      │           │   │   └── infraternal-server v0.1.0 (*)
      │           │   ├── sqlx-macros v0.8.6
      │           │   │   └── sqlx v0.8.6 (*)
      │           │   ├── sqlx-macros-core v0.8.6
      │           │   │   └── sqlx-macros v0.8.6 (*)
      │           │   └── sqlx-sqlite v0.8.6
      │           │       ├── sqlx v0.8.6 (*)
      │           │       └── sqlx-macros-core v0.8.6 (*)
      │           ├── sqlx-macros-core v0.8.6 (*)
      │           ├── tokio-openssl v0.6.5
      │           │   └── axum-server v0.8.0 (*)
      │           ├── tokio-stream v0.1.19
      │           │   └── sqlx-core v0.8.6 (*)
      │           ├── tokio-tungstenite v0.29.0
      │           │   ├── axum v0.8.9 (*)
      │           │   └── (dev) infraternal-server v0.1.0 (*)
      │           ├── tokio-util v0.7.19
      │           │   ├── h2 v0.4.19 (*)
      │           │   └── tower-http v0.6.11
      │           │       └── infraternal-server v0.1.0 (*)
      │           ├── tower v0.5.3
      │           │   ├── axum v0.8.9 (*)
      │           │   └── (dev) infraternal-server v0.1.0 (*)
      │           └── tower-http v0.6.11 (*)
      ├── home v0.5.12
      │   └── alacritty_terminal v0.25.1 (*)
      ├── mio v1.2.4
      │   └── tokio v1.53.2 (*)
      ├── miow v0.6.1
      │   └── alacritty_terminal v0.25.1 (*)
      ├── nu-ansi-term v0.50.3
      │   └── tracing-subscriber v0.3.23
      │       └── infraternal-server v0.1.0 (*)
      ├── polling v3.11.0 (*)
      ├── rustix v1.1.5 (*)
      ├── socket2 v0.6.5
      │   └── tokio v1.53.2 (*)
      ├── tokio v1.53.2 (*)
      └── winapi-util v0.1.11
          ├── same-file v1.0.6
          │   └── walkdir v2.5.0
          │       └── criterion v0.7.0 (*)
          └── walkdir v2.5.0 (*)

advisories ok, bans ok, licenses ok, sources ok

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

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

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

Independent audit finish evidence: server 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-protocol v0.1.0 (/tmp/review-auth-server/crates/infraternal-protocol) Checking infraternal-shim v0.1.0 (/tmp/review-auth-server/crates/infraternal-shim) Checking infraternal-plugin-api v0.1.0 (/tmp/review-auth-server/crates/infraternal-plugin-api) Checking infraternal-plugin-ssh v0.1.0 (/tmp/review-auth-server/crates/plugins/ssh) Checking infraternal-agent v0.1.0 (/tmp/review-auth-server/crates/infraternal-agent) Checking infraternal-server v0.1.0 (/tmp/review-auth-server/crates/infraternal-server) Checking infraternal-fuzz v0.1.0 (/tmp/review-auth-server/fuzz) Checking infraternal v0.1.0 (/tmp/review-auth-server/crates/infraternal) Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.77s ==> test Compiling infraternal-protocol v0.1.0 (/tmp/review-auth-server/crates/infraternal-protocol) Compiling infraternal-shim v0.1.0 (/tmp/review-auth-server/crates/infraternal-shim) Compiling infraternal-plugin-ssh v0.1.0 (/tmp/review-auth-server/crates/plugins/ssh) Compiling infraternal-agent v0.1.0 (/tmp/review-auth-server/crates/infraternal-agent) Compiling infraternal-plugin-api v0.1.0 (/tmp/review-auth-server/crates/infraternal-plugin-api) Compiling infraternal-server v0.1.0 (/tmp/review-auth-server/crates/infraternal-server) Compiling infraternal v0.1.0 (/tmp/review-auth-server/crates/infraternal) Finished `test` profile [unoptimized + debuginfo] target(s) in 11.21s Running unittests src/main.rs (target/debug/deps/infraternal-5e10ba097451a9da) running 2 tests test install::tests::dry_run_prints_a_process_surviving_user_unit ... ok test setup_token_tests::setup_token_command_reads_only_the_expected_socket_response ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running tests/shim.rs (target/debug/deps/shim-15e1dededc1e3417) 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.37s 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 tests::oversized_encode_keeps_the_reusable_output_unchanged ... 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 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-7735c16669b8d949) running 23 tests test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok test auth::tests::enrollment_prf_input_is_user_bound ... ok test auth::tests::public_status_and_discoverable_http_login ... ok test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok test runtime::tests::router_migrates_private_storage_and_serves_health ... ok test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok test auth::tests::review_old_words_race_rotation ... ok test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test result: ok. 22 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 24.00s Running unittests src/lib.rs (target/debug/deps/infraternal_shim-700790c919a5af90) running 12 tests test frame::checks::tests::golden_and_fragmented ... ok test frame::checks::golden::every_frozen_message ... ok test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile test ring::checks::tests::wrap_and_exact_offsets ... 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.17s Running tests/detach.rs (target/debug/deps/detach-76f845b77f7c580b) 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.69s 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-server/Cargo.lock:26:1 │ 26 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 27 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────┘ lock entries │ ├ base64 v0.21.7 ├── base64urlsafedata v0.5.5 │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── webauthn-rs v0.5.5 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-proto v0.5.5 │ └── webauthn-rs-core v0.5.5 (*) ├── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-proto v0.5.5 (*) ├ base64 v0.22.1 ├── alacritty_terminal v0.25.1 │ └── infraternal-shim v0.1.0 │ ├── infraternal v0.1.0 │ └── infraternal-fuzz v0.1.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 3 duplicate entries for crate 'getrandom' ┌─ /tmp/review-auth-server/Cargo.lock:93:1 │ 93 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 94 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 95 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ getrandom v0.2.17 └── rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-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-server/Cargo.lock:99:1 │ 99 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 100 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ hashbrown v0.15.5 ├── hashlink v0.10.0 │ └── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) └── sqlx-core v0.8.6 (*) ├ hashbrown v0.17.1 └── indexmap v2.14.2 ├── h2 v0.4.19 │ └── hyper v1.11.1 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ └── hyper-util v0.1.21 │ ├── axum v0.8.9 (*) │ └── axum-server v0.8.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 2 duplicate entries for crate 'r-efi' ┌─ /tmp/review-auth-server/Cargo.lock:193:1 │ 193 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 194 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────┘ lock entries │ ├ r-efi v5.3.0 └── getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ r-efi v6.0.0 └── getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-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-server/Cargo.lock:195:1 │ 195 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index 196 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand v0.9.5 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ └── (dev) infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 └── webauthn-rs v0.5.5 └── infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_chacha' ┌─ /tmp/review-auth-server/Cargo.lock:197:1 │ 197 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 198 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_chacha v0.3.1 └── rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_core' ┌─ /tmp/review-auth-server/Cargo.lock:199:1 │ 199 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 200 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'syn' ┌─ /tmp/review-auth-server/Cargo.lock:239:1 │ 239 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 240 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────┘ lock entries │ ├ syn v2.0.119 ├── asn1-rs-derive v0.5.1 │ └── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── asn1-rs-impl v0.2.0 │ └── asn1-rs v0.6.2 (*) ├── openssl-macros v0.1.1 │ └── openssl v0.10.81 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) ├── synstructure v0.13.2 │ └── asn1-rs-derive v0.5.1 (*) ├── thiserror-impl v1.0.69 │ └── thiserror v1.0.69 │ ├── asn1-rs v0.6.2 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── x509-parser v0.16.0 (*) ├── tracing-attributes v0.1.31 │ └── tracing v0.1.44 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-core v0.5.6 │ │ └── axum v0.8.9 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ ├── sqlx-macros v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tracing-subscriber v0.3.23 │ │ └── infraternal-server v0.1.0 (*) │ ├── webauthn-attestation-ca v0.5.5 (*) │ ├── webauthn-rs v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) └── zerocopy-derive v0.8.60 └── zerocopy v0.8.60 ├── half v2.7.1 │ ├── ciborium-ll v0.2.2 │ │ └── ciborium v0.2.2 │ │ └── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 (*) │ └── serde_cbor_2 v0.13.0 │ ├── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── ppv-lite86 v0.2.21 ├── rand_chacha v0.3.1 │ └── rand v0.8.8 │ └── bip39 v2.2.2 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 (*) │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── 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-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── infraternal v0.1.0 (*) ├── displaydoc v0.2.7 │ ├── asn1-rs v0.6.2 │ │ ├── der-parser v9.0.0 │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── x509-parser v0.16.0 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── oid-registry v0.7.1 │ │ │ └── x509-parser v0.16.0 (*) │ │ └── x509-parser v0.16.0 (*) │ ├── der-parser v9.0.0 (*) │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── tinystr v0.8.4 │ │ └── icu_locale_core v2.3.0 (*) │ └── zerotrie v0.2.5 │ ├── icu_properties v2.3.0 (*) │ └── icu_provider v2.3.1 (*) ├── futures-macro v0.3.34 │ └── futures-util v0.3.34 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── futures-executor v0.3.34 │ │ └── sqlx-sqlite v0.8.6 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── js-sys v0.3.106 │ │ └── web-sys v0.3.106 │ │ └── plotters v0.3.7 │ │ └── criterion v0.7.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 │ └── infraternal-server v0.1.0 (*) ├── serde_derive v1.0.229 │ ├── serde v1.0.229 │ │ ├── alacritty_terminal v0.25.1 │ │ │ └── infraternal-shim v0.1.0 │ │ │ ├── infraternal v0.1.0 (*) │ │ │ └── infraternal-fuzz v0.1.0 (*) │ │ ├── base64urlsafedata v0.5.5 │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 (*) │ │ ├── bip39 v2.2.2 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── ciborium v0.2.2 │ │ │ └── criterion v0.7.0 (*) │ │ ├── criterion v0.7.0 (*) │ │ ├── either v1.18.0 │ │ │ ├── axum-server v0.8.0 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── itertools v0.13.0 │ │ │ │ ├── criterion v0.7.0 (*) │ │ │ │ └── criterion-plot v0.6.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── rayon v1.12.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── sqlx-core v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── serde_cbor_2 v0.13.0 │ │ │ ├── (dev) infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── serde_urlencoded v0.7.1 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── sqlx-sqlite v0.8.6 (*) │ │ ├── sqlx-core v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ ├── tinytemplate v1.2.1 │ │ │ └── criterion v0.7.0 (*) │ │ ├── tracing-serde v0.2.0 │ │ │ └── tracing-subscriber v0.3.23 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── tracing-subscriber v0.3.23 (*) │ │ ├── url v2.5.8 (*) │ │ ├── vte v0.15.0 │ │ │ ├── alacritty_terminal v0.25.1 (*) │ │ │ ├── infraternal-shim v0.1.0 (*) │ │ │ └── vt100 v0.16.2 │ │ │ ├── (dev) infraternal v0.1.0 (*) │ │ │ └── (dev) infraternal-shim v0.1.0 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ ├── webauthn-rs v0.5.5 (*) │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ └── webauthn-rs-proto v0.5.5 (*) │ └── url v2.5.8 (*) ├── synstructure v0.14.0 │ ├── yoke-derive v0.8.4 │ │ └── yoke v0.8.3 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── zerotrie v0.2.5 (*) │ │ └── zerovec v0.11.8 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_locale_core v2.3.0 (*) │ │ ├── icu_normalizer v2.3.0 (*) │ │ ├── icu_properties v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── potential_utf v0.1.6 │ │ │ └── icu_collections v2.3.0 (*) │ │ └── tinystr v0.8.4 (*) │ └── zerofrom-derive v0.1.8 │ └── zerofrom v0.1.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── yoke v0.8.3 (*) │ ├── zerotrie v0.2.5 (*) │ └── zerovec v0.11.8 (*) ├── thiserror-impl v2.0.21 │ └── thiserror v2.0.21 │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ └── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 (*) ├── tokio-macros v2.7.2 │ └── tokio v1.53.2 │ ├── axum v0.8.9 (*) │ ├── axum-server v0.8.0 (*) │ ├── fs-err v3.3.2 │ │ └── axum-server v0.8.0 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── hyper v1.11.1 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 (*) │ ├── tower v0.5.3 (*) │ └── tower-http v0.6.11 (*) ├── wasm-bindgen-macro-support v0.2.129 │ └── wasm-bindgen-macro v0.2.129 │ └── wasm-bindgen v0.2.129 │ ├── js-sys v0.3.106 (*) │ ├── plotters v0.3.7 (*) │ └── web-sys v0.3.106 (*) ├── yoke-derive v0.8.4 (*) ├── zerofrom-derive v0.1.8 (*) └── zerovec-derive v0.11.6 └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'synstructure' ┌─ /tmp/review-auth-server/Cargo.lock:242:1 │ 242 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 243 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ synstructure v0.13.2 └── asn1-rs-derive v0.5.1 └── asn1-rs v0.6.2 ├── der-parser v9.0.0 │ ├── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── x509-parser v0.16.0 │ └── webauthn-rs-core v0.5.5 (*) ├── oid-registry v0.7.1 │ └── x509-parser v0.16.0 (*) └── x509-parser v0.16.0 (*) ├ synstructure v0.14.0 ├── yoke-derive v0.8.4 │ └── yoke v0.8.3 │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 │ │ │ │ └── infraternal v0.1.0 │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── zerotrie v0.2.5 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ └── zerovec v0.11.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ ├── icu_normalizer v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── potential_utf v0.1.6 │ │ └── icu_collections v2.3.0 (*) │ └── tinystr v0.8.4 │ └── icu_locale_core v2.3.0 (*) └── zerofrom-derive v0.1.8 └── zerofrom v0.1.8 ├── icu_collections v2.3.0 (*) ├── icu_provider v2.3.1 (*) ├── yoke v0.8.3 (*) ├── zerotrie v0.2.5 (*) └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror' ┌─ /tmp/review-auth-server/Cargo.lock:244:1 │ 244 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 245 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl' ┌─ /tmp/review-auth-server/Cargo.lock:246:1 │ 246 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 247 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror-impl v1.0.69 └── thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror-impl v2.0.21 └── thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'windows-sys' ┌─ /tmp/review-auth-server/Cargo.lock:300:1 │ 300 │ ╭ windows-sys 0.59.0 registry+https://github.com/rust-lang/crates.io-index 301 │ │ windows-sys 0.61.2 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ windows-sys v0.59.0 └── alacritty_terminal v0.25.1 └── infraternal-shim v0.1.0 ├── infraternal v0.1.0 └── infraternal-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-server v0.1.0 │ │ └── infraternal 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 (*) │ └── tokio v1.53.2 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ ├── fs-err v3.3.2 │ │ └── axum-server v0.8.0 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── hyper v1.11.1 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 (*) │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── sqlx-macros v0.8.6 │ │ │ └── sqlx v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 │ │ │ └── sqlx-macros v0.8.6 (*) │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 │ │ └── infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 (*) ├── home v0.5.12 │ └── alacritty_terminal v0.25.1 (*) ├── mio v1.2.4 │ └── tokio v1.53.2 (*) ├── miow v0.6.1 │ └── alacritty_terminal v0.25.1 (*) ├── nu-ansi-term v0.50.3 │ └── tracing-subscriber v0.3.23 │ └── infraternal-server v0.1.0 (*) ├── polling v3.11.0 (*) ├── rustix v1.1.5 (*) ├── socket2 v0.6.5 │ └── tokio v1.53.2 (*) ├── tokio v1.53.2 (*) └── winapi-util v0.1.11 ├── same-file v1.0.6 │ └── walkdir v2.5.0 │ └── criterion v0.7.0 (*) └── walkdir v2.5.0 (*) advisories ok, bans ok, licenses ok, sources ok ==> static builds Compiling cfg-if v1.0.5 Compiling pin-project-lite v0.2.17 Compiling memchr v2.8.3 Compiling libc v0.2.190 Compiling serde_core v1.0.229 Compiling bytes v1.12.1 Compiling log v0.4.34 Compiling itoa v1.0.18 Compiling smallvec v1.16.2 Compiling futures-core v0.3.34 Compiling zerofrom v0.1.8 Compiling stable_deref_trait v1.2.1 Compiling once_cell v1.21.4 Compiling futures-sink v0.3.34 Compiling yoke v0.8.3 Compiling typenum v1.20.1 Compiling zerocopy v0.8.60 Compiling tracing-core v0.1.36 Compiling zerovec v0.11.8 Compiling slab v0.4.12 Compiling tracing v0.1.44 Compiling writeable v0.6.4 Compiling tinystr v0.8.4 Compiling litemap v0.8.3 Compiling potential_utf v0.1.6 Compiling generic-array v0.14.7 Compiling zerotrie v0.2.5 Compiling subtle v2.6.1 Compiling icu_locale_core v2.3.0 Compiling utf8_iter v1.0.4 Compiling openssl-sys v0.9.117 Compiling icu_collections v2.3.0 Compiling num-traits v0.2.19 Compiling errno v0.3.14 Compiling serde v1.0.229 Compiling signal-hook-registry v1.4.8 Compiling mio v1.2.4 Compiling socket2 v0.6.5 Compiling bitflags v2.13.2 Compiling icu_provider v2.3.1 Compiling tokio v1.53.2 Compiling block-buffer v0.10.4 Compiling crypto-common v0.1.7 Compiling http v1.5.0 Compiling equivalent v1.0.2 Compiling percent-encoding v2.3.2 Compiling digest v0.10.7 Compiling icu_normalizer_data v2.3.0 Compiling icu_properties_data v2.3.0 Compiling scopeguard v1.2.0 Compiling lock_api v0.4.14 Compiling icu_normalizer v2.3.0 Compiling icu_properties v2.3.0 Compiling form_urlencoded v1.2.2 Compiling cpufeatures v0.2.17 Compiling hashbrown v0.17.1 Compiling futures-io v0.3.34 Compiling futures-task v0.3.34 Compiling futures-util v0.3.34 Compiling indexmap v2.14.2 Compiling getrandom v0.3.4 Compiling idna_adapter v1.2.2 Compiling minimal-lexical v0.2.1 Compiling parking_lot_core v0.9.12 Compiling rand_core v0.9.5 Compiling nom v7.1.3 Compiling idna v1.1.0 Compiling http-body v1.1.0 Compiling deranged v0.5.8 Compiling foreign-types-shared v0.1.1 Compiling powerfmt v0.2.1 Compiling time-core v0.1.9 Compiling ppv-lite86 v0.2.21 Compiling num-conv v0.2.2 Compiling foreign-types v0.3.2 Compiling rand_chacha v0.9.0 Compiling url v2.5.8 Compiling thiserror v1.0.69 Compiling time v0.3.55 Compiling thiserror v2.0.21 Compiling zmij v1.0.23 Compiling parking_lot v0.12.5 Compiling httparse v1.10.1 Compiling getrandom v0.2.17 Compiling rusticata-macros v4.1.0 Compiling futures-channel v0.3.34 Compiling tower-service v0.3.3 Compiling arrayvec v0.7.8 Compiling data-encoding v2.11.1 Compiling base64 v0.22.1 Compiling rand_core v0.6.4 Compiling serde_json v1.0.151 Compiling rand v0.9.5 Compiling num-integer v0.1.47 Compiling aho-corasick v1.1.5 Compiling base64 v0.21.7 Compiling allocator-api2 v0.2.21 Compiling httpdate v1.0.3 Compiling atomic-waker v1.1.2 Compiling regex-syntax v0.8.11 Compiling foldhash v0.1.5 Compiling fnv v1.0.7 Compiling lazy_static v1.5.1 Compiling hashbrown v0.15.5 Compiling tokio-util v0.7.19 Compiling base64urlsafedata v0.5.5 Compiling num-bigint v0.4.8 Compiling h2 v0.4.19 Compiling crossbeam-utils v0.8.23 Compiling asn1-rs v0.6.2 Compiling regex-automata v0.4.18 Compiling getrandom v0.4.3 Compiling either v1.18.0 Compiling linux-raw-sys v0.12.1 Compiling ryu v1.0.23 Compiling tower-layer v0.3.3 Compiling crc-catalog v2.5.0 Compiling mime v0.3.17 Compiling parking v2.2.1 Compiling event-listener v5.4.2 Compiling crc v3.4.0 Compiling oid-registry v0.7.1 Compiling der-parser v9.0.0 Compiling serde_urlencoded v0.7.1 Compiling rustix v1.1.5 Compiling uuid v1.27.0 Compiling crossbeam-queue v0.3.14 Compiling hashlink v0.10.0 Compiling tokio-stream v0.1.19 Compiling futures-intrusive v0.5.0 Compiling half v2.7.1 Compiling http-body-util v0.1.5 Compiling sha2 v0.10.9 Compiling sha1 v0.10.7 Compiling libsqlite3-sys v0.30.1 Compiling spin v0.9.9 Compiling sync_wrapper v1.0.2 Compiling utf8parse v0.2.2 Compiling anstyle-parse v1.0.0 Compiling flume v0.11.1 Compiling sqlx-core v0.8.6 Compiling tungstenite v0.29.0 Compiling serde_cbor_2 v0.13.0 Compiling hyper v1.11.1 Compiling x509-parser v0.16.0 Compiling memoffset v0.9.1 Compiling webauthn-rs-proto v0.5.5 Compiling hyper-util v0.1.21 Compiling rand_chacha v0.3.1 Compiling hex-conservative v0.2.3 Compiling futures-executor v0.3.34 Compiling atoi v2.0.0 Compiling base64ct v1.8.3 Compiling colorchoice v1.0.5 Compiling anstyle v1.0.14 Compiling anstyle-query v1.1.5 Compiling hex v0.4.3 Compiling cursor-icon v1.2.0 Compiling tinyvec v1.13.3 Compiling unicase v2.10.0 Compiling is_terminal_polyfill v1.70.2 Compiling anstream v1.0.0 Compiling vte v0.15.0 Compiling mime_guess v2.0.5 Compiling password-hash v0.5.0 Compiling unicode-normalization v0.1.25 Compiling sqlx-sqlite v0.8.6 Compiling bitcoin_hashes v0.14.101 Compiling rand v0.8.8 Compiling rustix-openpty v0.2.0 Compiling polling v3.11.0 Compiling nix v0.30.1 Compiling arc-swap v1.9.2 Compiling tokio-tungstenite v0.29.0 Compiling fs-err v3.3.2 Compiling signal-hook v0.3.18 Compiling matchers v0.2.0 Compiling axum-core v0.5.6 Compiling tower v0.5.3 Compiling sharded-slab v0.1.7 Compiling blake2 v0.10.6 Compiling tracing-serde v0.2.0 Compiling serde_path_to_error v0.1.20 Compiling tracing-log v0.2.0 Compiling thread_local v1.1.10 Compiling home v0.5.12 Compiling strsim v0.11.1 Compiling clap_lex v1.1.1 Compiling unicode-width v0.2.2 Compiling nu-ansi-term v0.50.3 Compiling matchit v0.8.4 Compiling http-range-header v0.4.2 Compiling axum v0.8.9 Compiling tracing-subscriber v0.3.23 Compiling tower-http v0.6.11 Compiling alacritty_terminal v0.25.1 Compiling clap_builder v4.6.7 Compiling sqlx v0.8.6 Compiling argon2 v0.5.3 Compiling bip39 v2.2.2 Compiling infraternal-protocol v0.1.0 (/tmp/review-auth-server/crates/infraternal-protocol) Compiling infraternal-shim v0.1.0 (/tmp/review-auth-server/crates/infraternal-shim) Compiling clap v4.6.7 Compiling openssl v0.10.81 Compiling webauthn-attestation-ca v0.5.5 Compiling webauthn-rs-core v0.5.5 Compiling tokio-openssl v0.6.5 Compiling axum-server v0.8.0 Compiling webauthn-rs v0.5.5 Compiling infraternal-server v0.1.0 (/tmp/review-auth-server/crates/infraternal-server) Compiling infraternal v0.1.0 (/tmp/review-auth-server/crates/infraternal) Finished `release` profile [optimized] target(s) in 2m 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: 14661536 bytes Compiling cfg-if v1.0.5 Compiling pin-project-lite v0.2.17 Compiling memchr v2.8.3 Compiling libc v0.2.190 Compiling serde_core v1.0.229 Compiling bytes v1.12.1 Compiling log v0.4.34 Compiling itoa v1.0.18 Compiling futures-core v0.3.34 Compiling smallvec v1.16.2 Compiling zerofrom v0.1.8 Compiling stable_deref_trait v1.2.1 Compiling once_cell v1.21.4 Compiling futures-sink v0.3.34 Compiling yoke v0.8.3 Compiling typenum v1.20.1 Compiling zerocopy v0.8.60 Compiling zerovec v0.11.8 Compiling tracing-core v0.1.36 Compiling litemap v0.8.3 Compiling slab v0.4.12 Compiling tracing v0.1.44 Compiling generic-array v0.14.7 Compiling tinystr v0.8.4 Compiling writeable v0.6.4 Compiling potential_utf v0.1.6 Compiling zerotrie v0.2.5 Compiling utf8_iter v1.0.4 Compiling icu_locale_core v2.3.0 Compiling subtle v2.6.1 Compiling icu_collections v2.3.0 Compiling openssl-sys v0.9.117 Compiling errno v0.3.14 Compiling socket2 v0.6.5 Compiling signal-hook-registry v1.4.8 Compiling mio v1.2.4 Compiling block-buffer v0.10.4 Compiling crypto-common v0.1.7 Compiling tokio v1.53.2 Compiling num-traits v0.2.19 Compiling http v1.5.0 Compiling icu_provider v2.3.1 Compiling serde v1.0.229 Compiling bitflags v2.13.2 Compiling percent-encoding v2.3.2 Compiling equivalent v1.0.2 Compiling icu_normalizer_data v2.3.0 Compiling icu_properties_data v2.3.0 Compiling digest v0.10.7 Compiling scopeguard v1.2.0 Compiling icu_properties v2.3.0 Compiling lock_api v0.4.14 Compiling icu_normalizer v2.3.0 Compiling form_urlencoded v1.2.2 Compiling futures-task v0.3.34 Compiling hashbrown v0.17.1 Compiling futures-io v0.3.34 Compiling getrandom v0.3.4 Compiling futures-util v0.3.34 Compiling cpufeatures v0.2.17 Compiling minimal-lexical v0.2.1 Compiling indexmap v2.14.2 Compiling parking_lot_core v0.9.12 Compiling nom v7.1.3 Compiling ppv-lite86 v0.2.21 Compiling idna_adapter v1.2.2 Compiling rand_core v0.9.5 Compiling idna v1.1.0 Compiling http-body v1.1.0 Compiling deranged v0.5.8 Compiling foreign-types-shared v0.1.1 Compiling powerfmt v0.2.1 Compiling time-core v0.1.9 Compiling num-conv v0.2.2 Compiling url v2.5.8 Compiling foreign-types v0.3.2 Compiling thiserror v1.0.69 Compiling thiserror v2.0.21 Compiling zmij v1.0.23 Compiling time v0.3.55 Compiling rusticata-macros v4.1.0 Compiling rand_chacha v0.9.0 Compiling parking_lot v0.12.5 Compiling httparse v1.10.1 Compiling getrandom v0.2.17 Compiling futures-channel v0.3.34 Compiling arrayvec v0.7.8 Compiling data-encoding v2.11.1 Compiling base64 v0.22.1 Compiling tower-service v0.3.3 Compiling tokio-util v0.7.19 Compiling rand_core v0.6.4 Compiling rand v0.9.5 Compiling serde_json v1.0.151 Compiling num-integer v0.1.47 Compiling aho-corasick v1.1.5 Compiling lazy_static v1.5.1 Compiling base64 v0.21.7 Compiling atomic-waker v1.1.2 Compiling allocator-api2 v0.2.21 Compiling regex-syntax v0.8.11 Compiling httpdate v1.0.3 Compiling foldhash v0.1.5 Compiling asn1-rs v0.6.2 Compiling fnv v1.0.7 Compiling h2 v0.4.19 Compiling hashbrown v0.15.5 Compiling base64urlsafedata v0.5.5 Compiling crossbeam-utils v0.8.23 Compiling num-bigint v0.4.8 Compiling getrandom v0.4.3 Compiling regex-automata v0.4.18 Compiling either v1.18.0 Compiling linux-raw-sys v0.12.1 Compiling tower-layer v0.3.3 Compiling crc-catalog v2.5.0 Compiling mime v0.3.17 Compiling ryu v1.0.23 Compiling parking v2.2.1 Compiling serde_urlencoded v0.7.1 Compiling event-listener v5.4.2 Compiling crc v3.4.0 Compiling rustix v1.1.5 Compiling der-parser v9.0.0 Compiling uuid v1.27.0 Compiling oid-registry v0.7.1 Compiling crossbeam-queue v0.3.14 Compiling hashlink v0.10.0 Compiling tokio-stream v0.1.19 Compiling futures-intrusive v0.5.0 Compiling http-body-util v0.1.5 Compiling half v2.7.1 Compiling sha1 v0.10.7 Compiling sha2 v0.10.9 Compiling spin v0.9.9 Compiling libsqlite3-sys v0.30.1 Compiling sync_wrapper v1.0.2 Compiling utf8parse v0.2.2 Compiling anstyle-parse v1.0.0 Compiling sqlx-core v0.8.6 Compiling serde_cbor_2 v0.13.0 Compiling flume v0.11.1 Compiling tungstenite v0.29.0 Compiling x509-parser v0.16.0 Compiling hyper v1.11.1 Compiling memoffset v0.9.1 Compiling webauthn-rs-proto v0.5.5 Compiling hyper-util v0.1.21 Compiling rand_chacha v0.3.1 Compiling hex-conservative v0.2.3 Compiling futures-executor v0.3.34 Compiling atoi v2.0.0 Compiling anstyle-query v1.1.5 Compiling is_terminal_polyfill v1.70.2 Compiling hex v0.4.3 Compiling cursor-icon v1.2.0 Compiling colorchoice v1.0.5 Compiling anstyle v1.0.14 Compiling tinyvec v1.13.3 Compiling base64ct v1.8.3 Compiling unicase v2.10.0 Compiling anstream v1.0.0 Compiling vte v0.15.0 Compiling mime_guess v2.0.5 Compiling password-hash v0.5.0 Compiling unicode-normalization v0.1.25 Compiling sqlx-sqlite v0.8.6 Compiling bitcoin_hashes v0.14.101 Compiling rand v0.8.8 Compiling nix v0.30.1 Compiling arc-swap v1.9.2 Compiling rustix-openpty v0.2.0 Compiling polling v3.11.0 Compiling tokio-tungstenite v0.29.0 Compiling matchers v0.2.0 Compiling fs-err v3.3.2 Compiling signal-hook v0.3.18 Compiling axum-core v0.5.6 Compiling tower v0.5.3 Compiling sharded-slab v0.1.7 Compiling blake2 v0.10.6 Compiling tracing-serde v0.2.0 Compiling serde_path_to_error v0.1.20 Compiling tracing-log v0.2.0 Compiling thread_local v1.1.10 Compiling http-range-header v0.4.2 Compiling clap_lex v1.1.1 Compiling home v0.5.12 Compiling unicode-width v0.2.2 Compiling nu-ansi-term v0.50.3 Compiling strsim v0.11.1 Compiling matchit v0.8.4 Compiling alacritty_terminal v0.25.1 Compiling axum v0.8.9 Compiling tracing-subscriber v0.3.23 Compiling clap_builder v4.6.7 Compiling tower-http v0.6.11 Compiling argon2 v0.5.3 Compiling sqlx v0.8.6 Compiling bip39 v2.2.2 Compiling infraternal-protocol v0.1.0 (/tmp/review-auth-server/crates/infraternal-protocol) Compiling infraternal-shim v0.1.0 (/tmp/review-auth-server/crates/infraternal-shim) Compiling clap v4.6.7 Compiling openssl v0.10.81 Compiling webauthn-attestation-ca v0.5.5 Compiling webauthn-rs-core v0.5.5 Compiling tokio-openssl v0.6.5 Compiling axum-server v0.8.0 Compiling webauthn-rs v0.5.5 Compiling infraternal-server v0.1.0 (/tmp/review-auth-server/crates/infraternal-server) Compiling infraternal v0.1.0 (/tmp/review-auth-server/crates/infraternal) Finished `release` profile [optimized] target(s) in 2m 43s target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 12272504 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 [6083.47ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [26.21ms] src/codec.test.ts: (pass) wire protocol golden vectors > encodes and decodes each frame exactly as the shared manifest describes [6.58ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.23ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [0.36ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.23ms] (pass) split mux header preserves trailing Close [0.17ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [6.13s] ```
Author
Owner

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 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] ```
Author
Owner

Independent audit FINAL VERDICT: REWORK. Server head 7948ff00fb; client head 639ac27684. Original branches t-server/t-web remain clean; no commits, push or deploy. Disposable /tmp worktrees removed.

Independent audit of #19 / #21

Server 6fa27a3..7948ff0; client 1b4c907..639ac27. Original worktrees read-only.

F1 — P1: failed unwrap can retain a usable session

Input: successful discoverable login, corrupted envelope nonce, logout returns 429 → expected: new session revoked and reload remains signed out → actual: client attempts logout, suppresses its failure; real Rust /auth/session returns 200 and production reload opens terminal.
Evidence: apps/tracer/src/auth.ts:152; main.ts:30 accepts the cookie on startup without unwrap. Failing executable browser test: /tmp/review-auth-browser-test.mjs (copy into scripts/browser-auth/check-audit.mjs in disposable server tree and run with production client dist); /tmp/review-auth-unwrap-red.log. Chromium 149.0.7827.55, real Rust router/SQLite/WebAuthn/PRF/GCM; only logout 429 injected. Real admission reachability tested separately below. Requested fix: make incomplete unlock sessions unusable or ensure authenticated revocation cannot be denied by admission; never silently treat revocation failure as complete.

Audit baseline gap

DECISIONS.md in both exact snapshots ends at 86; decisions 97 and 98 are unavailable. Decision 26 still specifies a log banner, while new contract tail specifies private socket and its opening still authorizes a secret banner. No owner decision was changed by this audit. This is a documentation/baseline gap, not a runtime test failure.

Verified evidence so far

  • Production Chromium 149.0.7827.55 with real Rust router/SQLite: owner registration, recovery acknowledgement, empty-storage discoverable login and native AES-GCM unwrap pass (/tmp/review-auth-paired.log).
  • Actual CLI process SIGKILL/restart: stale private socket replaced, old and spent tokens denied, owner persists on third start with no new token (/tmp/review-auth-restart.log). Runtime logs examined in memory against both actual capabilities before writing safe logs: 1950 bytes, zero token matches; data files zero plaintext-token matches; directory 0700, socket 0600 (/tmp/review-auth-runtime.log and /tmp/review-auth-runtime-check.log).
  • Explicit screenshots of production build without secrets: /tmp/review-auth-setup.png and /tmp/review-auth-signin.png (390x844). Attached as audit evidence; no self-approval of visual quality or physical iPhone claim.

Owner design note: constant PRF input (item 4; no decision changed)

A stable, domain-separated public constant with prf.eval and empty allowCredentials preserves credential separation: WebAuthn PRF is per credential and UV-backed; different passkeys do not produce a shared secret just because their input is identical. HKDF salt plus unchanged info/AAD infraternal/keywrap/v1||passkey still separates users and authenticates the envelope context. Swapping envelopes between users still fails GCM, and RP/origin/challenge/signature/userHandle/counter checks do not depend on PRF input. The signed assertion can supply identity and the PRF output in one prompt, with output removed before transmission. Source: https://www.w3.org/TR/webauthn-3/#prf-extension .
The property lost is input-level separation when the SAME credential/PRF secret is reused across logical accounts or deployments sharing an RP: one exported PRF result at the constant is reusable for those envelopes (with their public HKDF salts/AAD), whereas distinct per-user inputs require distinct PRF evaluations. Current credential primary-key ownership prohibits multiple accounts per credential in one database. The v2 input is derived from a UUID, not a secret: the assertion exposes that UUID as userHandle, so it is not strong defense against code already able to request same-RP WebAuthn assertions. Constant input does not introduce credential enumeration and is not evidence of weaker signature auth or cross-credential key isolation under the present schema.
Existing v2 ciphertext cannot be relabeled to a constant: keep stored input routing and the second-prompt fallback for incompatible envelopes, or rewrap the same DEK while both inputs are available and atomically update envelope/input. Existing NULL/v1 envelopes already use a constant. A per-install constant must survive restarts/restores; rotating it strands wraps. This is concrete reasoning for the owner, not a decision or recommendation to change settled contracts.

  • Storage/traffic probe: localStorage keys exactly tracer.user-id, sessionStorage zero keys, empty URL query; 2 native get calls and exactly 1 server login proof without PRF; second local assertion never transmitted (/tmp/review-auth-storage.log, /tmp/review-auth-storage-test.mjs). The original invalid-account-id path no longer reads storage to start login; real restart and empty-storage login passed.

F2 — P2: retained public identified login discloses credential IDs and account existence

Input: unauthenticated POST /auth/login-start {user_id:known UUID} versus unknown UUID, pinned Origin → expected: no caller can list credentials and no identity oracle → actual: known UUID returns 200 with 1 allowed credential (and PRF input), unknown UUID returns 401.
Evidence: auth/http.rs:199–204, auth/webauthn.rs:188–222. Failing test audit_no_public_credential_listing in /tmp/review-auth-cases.rs; output /tmp/review-auth-server-red.log. Inherited identified endpoint deliberately retained by this change; default discoverable response itself correctly returns an empty list. UUIDs are high entropy, so this is disclosure given a known/leaked UUID, not practical brute-force enumeration of every user. Client stores UUID nonsecretly. Remove the public fallback or bind its credential disclosure to authenticated authorization; direct Auth::login_start tests do not require publishing it over HTTP.

F3 — P2: login challenge is not bound to the initiating browser/session

Input: browser A starts discoverable login; a correctly signed proof and ceremony are finished in cookie-free browser B → expected per checklist: reject B (401), bind ceremony to A → actual: 200 and a fresh session in B; start issues no binding cookie.
Evidence: auth/http.rs:199–217 never supplies a browser binding; auth/mod.rs:82–85 Login holds only state and expiry; auth/webauthn.rs:279–335 keys state only by the bearer ceremony. Failing test audit_ceremony_browser_binding in /tmp/review-auth-cases.rs; output /tmp/review-auth-server-red.log. Signature/challenge/RP/exact-origin/UV remain enforced; this is a missing browser transaction-binding property, not demonstrated forgery or cross-origin JavaScript exploit. Same-Origin policy blocks ordinary cross-site browser requests; stolen or relayed ceremony/proof remains redeemable in another client. Also inherited for identified login. Add an unguessable browser transaction binding or have the owner explicitly resolve the checklist requirement; this audit does not change the contract.

F1 real admission reachability confirmed: audit_logout_survives_admission_exhaustion sends 120 public status actions, then authenticated logout → expected revoked session → actual 429 and live_session=true. This is not only an injected-response scenario. /tmp/review-auth-server-red.log.
Independent defensive regression audit_parallel_discoverable_counters_and_fail_closed_inputs passes: parallel proofs carrying the same nonzero counter permit exactly one finish; wrong origin, UV=false and expired discoverable assertions all deny. The source gates also exercise handle mismatch/unknown/missing/replay, concurrent setup authority and legacy ciphertext.

  • Independent real migration test creates migrations 0001..0004 tables, stores a legacy credential and v1 envelope, then runs Auth::new / migration 0005. prf_input is NULL, encrypted blob is byte-for-byte unchanged, original DEK unwrap succeeds (/tmp/review-auth-migration.log; audit_actual_legacy_migration_preserves_dek in /tmp/review-auth-cases.rs).
  • Native browser gate: 4 isolated Chromium scenarios pass (supported resident PRF/UV, unsupported PRF, nonresident, no UV); actual server rejects hostile no-UV and wrong-origin assertions (/tmp/review-auth-native-browser.log).
  • Production error copy: unavailable status shows no guessed form; real invalid token gives current-token guidance; cancelled prompt displays friendly guidance without browser details (/tmp/review-auth-errors.log; /tmp/review-auth-errors-test.mjs). An initial IPC run saw the old client snapshot's server example due to a shared disposable build directory; rebuilding the server example resolved the harness artifact. It was not counted as a product finding.

Re-measurement on this box (release, n=200 per row)

/tmp/review-auth-scale.log: one owner, two ES256 credentials, 1024 pending cap; load 5.52 / 8.52 / 7.05, other compilation active. Identified challenge p50/p99: 58/194 us at 0..200 pending; 58/198 us at 824..1024. Discoverable: 3/20 us at 0..200; 5/48 us at 824..1024. Signed discoverable finish at 1024: 229/2719 us. Entry 1025 denied. Inline Login 112 bytes, 114688 bytes for 1024, excluding heap/hash-table allocations. Whole-process baseline RSS 12976 KiB, full identified capacity 14312 KiB (+1336 KiB); discovery after reuse stays 14312 KiB. This reproduces the claim with its limitations; it is not an isolated memory measurement, disk benchmark or phone/network latency measurement. A final timing rerun without this audit's compilation is recorded below.

Final measurements and verdict

Final release rerun after this audit's builds finished (/tmp/review-auth-scale-final.log): n=200; load 5.10 / 7.89 / 7.05. Identified challenge p50/p99 85/265 us at 0..200, 66/135 us at 824..1024. Discoverable 1/3 us at 0..200, 2/3 us at 824..1024. Signed finish at 1024 pending: 325/622 us. 1025 denied; inline payload 112 bytes × 1024 = 114688 bytes. Whole-process RSS 12780 → 14096 KiB (+1316 KiB); discovery phase reuses allocated storage. This is a fresh run of the independently rebuilt release test binary. No exact heap, physical iPhone or pinned perf-VM claim.
Normal failed-unwrap control passes: real session returns 401 and reload stays signed out when logout succeeds (/tmp/review-auth-revokes.log).

Verdict: REWORK, ranked:

  1. F1 (P1): revoke/fail closed when local unlock fails, including admission/network failure; client must not reopen terminal from that cookie.
  2. F2 (P2): public identified fallback permits known-UUID credential listing and an existence oracle.
  3. F3 (P2): ceremony/proof transferable between browser contexts; required browser/session binding is absent.
    All three have failing tests; F1 has both production-browser and real admission reproductions. Signature/Origin/UV, single-use/expiry, handle ownership, latest counters, concurrent owner authority, rotation/private socket/stale path, legacy migration/AAD and normal revocation checks pass within stated evidence. Browser binding/identified privacy are inherited properties deliberately retained or extended by this lane; they are findings against the requested audit checklist, not all newly introduced regressions.

Both snapshot fast gates pass. Server test gate: 22 passed, 1 ignored; client snapshot Rust server tests: see complete verbatim log. Rust fmt/clippy/test/cargo-deny/static builds PASS for each; TypeScript protocol 7 pass, 0 fail, 34390 assertions, 134 streams/11439 schedules/zero divergences. Client tsc/build pass; real native browser gate 4 scenarios pass. Independent adversarial tests: 1 pass/3 fail, plus actual legacy migration 1 pass; browser unwrap/logout-429 test fails as expected.
Verbatim fast output preserved at /tmp/review-auth-server-fast.log and /tmp/review-auth-web-fast.log and posted on #19. No source edits or commits in original worktrees. Temporary worktrees are removed after preserving tests/logs/screenshots. DECISIONS 97/98 remain unauditable because absent from the supplied snapshots; decision 26/log contract contradictions need owner reconciliation.

Final release measurement output, verbatim:


running 1 test
auth scale: owners=1 passkeys=2 pending_limit=1024 arch=x86_64 load=5.10 7.89 7.05 3/911 1648733
challenge mode=identified pending=0..200 n=200 p50_us=85 p99_us=265 rss_before_kib=12780 rss_after_kib=13000
challenge mode=identified pending=824..1024 n=200 p50_us=66 p99_us=135 rss_before_kib=13712 rss_after_kib=14096
challenge mode=discoverable pending=0..200 n=200 p50_us=1 p99_us=3 rss_before_kib=14096 rss_after_kib=14096
challenge mode=discoverable pending=824..1024 n=200 p50_us=2 p99_us=3 rss_before_kib=14096 rss_after_kib=14096
pending inline bytes/unit=112 bytes/1024=114688 (excludes heap/hash-table allocations)
signed discoverable finish pending=1024 n=200 p50_us=325 p99_us=622 (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; 26 filtered out; finished in 0.23s


Independent failing server tests, verbatim:

   Compiling infraternal-server v0.1.0 (/tmp/review-auth-server/crates/infraternal-server)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 7.92s
     Running unittests src/lib.rs (target/debug/deps/infraternal_server-a07814ceaeaa2f1c)

running 4 tests
120 browser actions then authenticated logout → expected 200/revoked → actual 429 Too Many Requests live_session=true

thread 'auth::tests::audit_logout_survives_admission_exhaustion' (1582290) panicked at crates/infraternal-server/src/auth/tests.rs:2046:5:
admission exhaustion blocks mandatory revocation
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
test auth::tests::audit_logout_survives_admission_exhaustion ... FAILED
identified UUID → expected uniform non-enumerating response → actual known=200 OK unknown=401 Unauthorized disclosed_credentials=1

thread 'auth::tests::audit_no_public_credential_listing' (1582291) panicked at crates/infraternal-server/src/auth/tests.rs:2013:5:
assertion `left == right` failed: public caller can list a known user's credentials
  left: 1
 right: 0
test auth::tests::audit_no_public_credential_listing ... FAILED
parallel equal counters: exactly 1 success; wrong origin, no UV, expiry: all denied
test auth::tests::audit_parallel_discoverable_counters_and_fail_closed_inputs ... ok
start in A / signed finish in cookie-free B → expected 401 → actual 200 OK; binding cookie issued=false

thread 'auth::tests::audit_ceremony_browser_binding' (1582289) panicked at crates/infraternal-server/src/auth/tests.rs:2028:5:
assertion `left == right` failed: ceremony is a transferable bearer rather than browser-bound
  left: 200
 right: 401
test auth::tests::audit_ceremony_browser_binding ... FAILED

failures:

failures:
    auth::tests::audit_ceremony_browser_binding
    auth::tests::audit_logout_survives_admission_exhaustion
    auth::tests::audit_no_public_credential_listing

test result: FAILED. 1 passed; 3 failed; 0 ignored; 0 measured; 23 filtered out; finished in 1.98s

error: test failed, to rerun pass `-p infraternal-server --lib`

Production-browser failing test, verbatim:

unwrap failure → expected session 401 → actual 200; logout attempted=true
reload after failed unwrap → actual terminal opened
25 |   stdio: ['pipe', 'pipe', 'inherit'],
26 | });
27 | const lines = createInterface({ input: child ? child.stdout : process.stdin })[Symbol.asyncIterator]();
28 | const initial = JSON.parse((await lines.next()).value);
29 | const context = await browser.newContext();
30 | const check = (condition, message) => { if (!condition) throw new Error(message); };
                                                                       ^
error: FAIL: failed unwrap with logout 429 retained authenticated session
      at check (/tmp/review-auth-server/scripts/browser-auth/check-audit.mjs:30:67)
      at /tmp/review-auth-server/scripts/browser-auth/check-audit.mjs:115:3

Bun v1.4.2 (Linux x64)

Independent audit FINAL VERDICT: REWORK. Server head 7948ff00fb6370e0a257a14b9fb00f3d6fc3cf7a; client head 639ac276841832b76828ca09abedf98cca663296. Original branches t-server/t-web remain clean; no commits, push or deploy. Disposable /tmp worktrees removed. # Independent audit of #19 / #21 Server 6fa27a3..7948ff0; client 1b4c907..639ac27. Original worktrees read-only. ## F1 — P1: failed unwrap can retain a usable session Input: successful discoverable login, corrupted envelope nonce, logout returns 429 → expected: new session revoked and reload remains signed out → actual: client attempts logout, suppresses its failure; real Rust /auth/session returns 200 and production reload opens terminal. Evidence: apps/tracer/src/auth.ts:152; main.ts:30 accepts the cookie on startup without unwrap. Failing executable browser test: /tmp/review-auth-browser-test.mjs (copy into scripts/browser-auth/check-audit.mjs in disposable server tree and run with production client dist); /tmp/review-auth-unwrap-red.log. Chromium 149.0.7827.55, real Rust router/SQLite/WebAuthn/PRF/GCM; only logout 429 injected. Real admission reachability tested separately below. Requested fix: make incomplete unlock sessions unusable or ensure authenticated revocation cannot be denied by admission; never silently treat revocation failure as complete. ## Audit baseline gap DECISIONS.md in both exact snapshots ends at 86; decisions 97 and 98 are unavailable. Decision 26 still specifies a log banner, while new contract tail specifies private socket and its opening still authorizes a secret banner. No owner decision was changed by this audit. This is a documentation/baseline gap, not a runtime test failure. ## Verified evidence so far - Production Chromium 149.0.7827.55 with real Rust router/SQLite: owner registration, recovery acknowledgement, empty-storage discoverable login and native AES-GCM unwrap pass (/tmp/review-auth-paired.log). - Actual CLI process SIGKILL/restart: stale private socket replaced, old and spent tokens denied, owner persists on third start with no new token (/tmp/review-auth-restart.log). Runtime logs examined in memory against both actual capabilities before writing safe logs: 1950 bytes, zero token matches; data files zero plaintext-token matches; directory 0700, socket 0600 (/tmp/review-auth-runtime.log and /tmp/review-auth-runtime-check.log). - Explicit screenshots of production build without secrets: /tmp/review-auth-setup.png and /tmp/review-auth-signin.png (390x844). Attached as audit evidence; no self-approval of visual quality or physical iPhone claim. ## Owner design note: constant PRF input (item 4; no decision changed) A stable, domain-separated public constant with prf.eval and empty allowCredentials preserves credential separation: WebAuthn PRF is per credential and UV-backed; different passkeys do not produce a shared secret just because their input is identical. HKDF salt plus unchanged info/AAD infraternal/keywrap/v1|<UUID>|passkey still separates users and authenticates the envelope context. Swapping envelopes between users still fails GCM, and RP/origin/challenge/signature/userHandle/counter checks do not depend on PRF input. The signed assertion can supply identity and the PRF output in one prompt, with output removed before transmission. Source: https://www.w3.org/TR/webauthn-3/#prf-extension . The property lost is input-level separation when the SAME credential/PRF secret is reused across logical accounts or deployments sharing an RP: one exported PRF result at the constant is reusable for those envelopes (with their public HKDF salts/AAD), whereas distinct per-user inputs require distinct PRF evaluations. Current credential primary-key ownership prohibits multiple accounts per credential in one database. The v2 input is derived from a UUID, not a secret: the assertion exposes that UUID as userHandle, so it is not strong defense against code already able to request same-RP WebAuthn assertions. Constant input does not introduce credential enumeration and is not evidence of weaker signature auth or cross-credential key isolation under the present schema. Existing v2 ciphertext cannot be relabeled to a constant: keep stored input routing and the second-prompt fallback for incompatible envelopes, or rewrap the same DEK while both inputs are available and atomically update envelope/input. Existing NULL/v1 envelopes already use a constant. A per-install constant must survive restarts/restores; rotating it strands wraps. This is concrete reasoning for the owner, not a decision or recommendation to change settled contracts. - Storage/traffic probe: localStorage keys exactly tracer.user-id, sessionStorage zero keys, empty URL query; 2 native get calls and exactly 1 server login proof without PRF; second local assertion never transmitted (/tmp/review-auth-storage.log, /tmp/review-auth-storage-test.mjs). The original invalid-account-id path no longer reads storage to start login; real restart and empty-storage login passed. ## F2 — P2: retained public identified login discloses credential IDs and account existence Input: unauthenticated POST /auth/login-start {user_id:known UUID} versus unknown UUID, pinned Origin → expected: no caller can list credentials and no identity oracle → actual: known UUID returns 200 with 1 allowed credential (and PRF input), unknown UUID returns 401. Evidence: auth/http.rs:199–204, auth/webauthn.rs:188–222. Failing test audit_no_public_credential_listing in /tmp/review-auth-cases.rs; output /tmp/review-auth-server-red.log. Inherited identified endpoint deliberately retained by this change; default discoverable response itself correctly returns an empty list. UUIDs are high entropy, so this is disclosure given a known/leaked UUID, not practical brute-force enumeration of every user. Client stores UUID nonsecretly. Remove the public fallback or bind its credential disclosure to authenticated authorization; direct Auth::login_start tests do not require publishing it over HTTP. ## F3 — P2: login challenge is not bound to the initiating browser/session Input: browser A starts discoverable login; a correctly signed proof and ceremony are finished in cookie-free browser B → expected per checklist: reject B (401), bind ceremony to A → actual: 200 and a fresh session in B; start issues no binding cookie. Evidence: auth/http.rs:199–217 never supplies a browser binding; auth/mod.rs:82–85 Login holds only state and expiry; auth/webauthn.rs:279–335 keys state only by the bearer ceremony. Failing test audit_ceremony_browser_binding in /tmp/review-auth-cases.rs; output /tmp/review-auth-server-red.log. Signature/challenge/RP/exact-origin/UV remain enforced; this is a missing browser transaction-binding property, not demonstrated forgery or cross-origin JavaScript exploit. Same-Origin policy blocks ordinary cross-site browser requests; stolen or relayed ceremony/proof remains redeemable in another client. Also inherited for identified login. Add an unguessable browser transaction binding or have the owner explicitly resolve the checklist requirement; this audit does not change the contract. F1 real admission reachability confirmed: audit_logout_survives_admission_exhaustion sends 120 public status actions, then authenticated logout → expected revoked session → actual 429 and live_session=true. This is not only an injected-response scenario. /tmp/review-auth-server-red.log. Independent defensive regression audit_parallel_discoverable_counters_and_fail_closed_inputs passes: parallel proofs carrying the same nonzero counter permit exactly one finish; wrong origin, UV=false and expired discoverable assertions all deny. The source gates also exercise handle mismatch/unknown/missing/replay, concurrent setup authority and legacy ciphertext. - Independent real migration test creates migrations 0001..0004 tables, stores a legacy credential and v1 envelope, then runs Auth::new / migration 0005. prf_input is NULL, encrypted blob is byte-for-byte unchanged, original DEK unwrap succeeds (/tmp/review-auth-migration.log; audit_actual_legacy_migration_preserves_dek in /tmp/review-auth-cases.rs). - Native browser gate: 4 isolated Chromium scenarios pass (supported resident PRF/UV, unsupported PRF, nonresident, no UV); actual server rejects hostile no-UV and wrong-origin assertions (/tmp/review-auth-native-browser.log). - Production error copy: unavailable status shows no guessed form; real invalid token gives current-token guidance; cancelled prompt displays friendly guidance without browser details (/tmp/review-auth-errors.log; /tmp/review-auth-errors-test.mjs). An initial IPC run saw the old client snapshot's server example due to a shared disposable build directory; rebuilding the server example resolved the harness artifact. It was not counted as a product finding. ## Re-measurement on this box (release, n=200 per row) /tmp/review-auth-scale.log: one owner, two ES256 credentials, 1024 pending cap; load 5.52 / 8.52 / 7.05, other compilation active. Identified challenge p50/p99: 58/194 us at 0..200 pending; 58/198 us at 824..1024. Discoverable: 3/20 us at 0..200; 5/48 us at 824..1024. Signed discoverable finish at 1024: 229/2719 us. Entry 1025 denied. Inline Login 112 bytes, 114688 bytes for 1024, excluding heap/hash-table allocations. Whole-process baseline RSS 12976 KiB, full identified capacity 14312 KiB (+1336 KiB); discovery after reuse stays 14312 KiB. This reproduces the claim with its limitations; it is not an isolated memory measurement, disk benchmark or phone/network latency measurement. A final timing rerun without this audit's compilation is recorded below. ## Final measurements and verdict Final release rerun after this audit's builds finished (/tmp/review-auth-scale-final.log): n=200; load 5.10 / 7.89 / 7.05. Identified challenge p50/p99 85/265 us at 0..200, 66/135 us at 824..1024. Discoverable 1/3 us at 0..200, 2/3 us at 824..1024. Signed finish at 1024 pending: 325/622 us. 1025 denied; inline payload 112 bytes × 1024 = 114688 bytes. Whole-process RSS 12780 → 14096 KiB (+1316 KiB); discovery phase reuses allocated storage. This is a fresh run of the independently rebuilt release test binary. No exact heap, physical iPhone or pinned perf-VM claim. Normal failed-unwrap control passes: real session returns 401 and reload stays signed out when logout succeeds (/tmp/review-auth-revokes.log). Verdict: **REWORK**, ranked: 1. F1 (P1): revoke/fail closed when local unlock fails, including admission/network failure; client must not reopen terminal from that cookie. 2. F2 (P2): public identified fallback permits known-UUID credential listing and an existence oracle. 3. F3 (P2): ceremony/proof transferable between browser contexts; required browser/session binding is absent. All three have failing tests; F1 has both production-browser and real admission reproductions. Signature/Origin/UV, single-use/expiry, handle ownership, latest counters, concurrent owner authority, rotation/private socket/stale path, legacy migration/AAD and normal revocation checks pass within stated evidence. Browser binding/identified privacy are inherited properties deliberately retained or extended by this lane; they are findings against the requested audit checklist, not all newly introduced regressions. Both snapshot fast gates pass. Server test gate: 22 passed, 1 ignored; client snapshot Rust server tests: see complete verbatim log. Rust fmt/clippy/test/cargo-deny/static builds PASS for each; TypeScript protocol 7 pass, 0 fail, 34390 assertions, 134 streams/11439 schedules/zero divergences. Client tsc/build pass; real native browser gate 4 scenarios pass. Independent adversarial tests: 1 pass/3 fail, plus actual legacy migration 1 pass; browser unwrap/logout-429 test fails as expected. Verbatim fast output preserved at /tmp/review-auth-server-fast.log and /tmp/review-auth-web-fast.log and posted on #19. No source edits or commits in original worktrees. Temporary worktrees are removed after preserving tests/logs/screenshots. DECISIONS 97/98 remain unauditable because absent from the supplied snapshots; decision 26/log contract contradictions need owner reconciliation. Final release measurement output, verbatim: ```text running 1 test auth scale: owners=1 passkeys=2 pending_limit=1024 arch=x86_64 load=5.10 7.89 7.05 3/911 1648733 challenge mode=identified pending=0..200 n=200 p50_us=85 p99_us=265 rss_before_kib=12780 rss_after_kib=13000 challenge mode=identified pending=824..1024 n=200 p50_us=66 p99_us=135 rss_before_kib=13712 rss_after_kib=14096 challenge mode=discoverable pending=0..200 n=200 p50_us=1 p99_us=3 rss_before_kib=14096 rss_after_kib=14096 challenge mode=discoverable pending=824..1024 n=200 p50_us=2 p99_us=3 rss_before_kib=14096 rss_after_kib=14096 pending inline bytes/unit=112 bytes/1024=114688 (excludes heap/hash-table allocations) signed discoverable finish pending=1024 n=200 p50_us=325 p99_us=622 (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; 26 filtered out; finished in 0.23s ``` Independent failing server tests, verbatim: ```text Compiling infraternal-server v0.1.0 (/tmp/review-auth-server/crates/infraternal-server) Finished `test` profile [unoptimized + debuginfo] target(s) in 7.92s Running unittests src/lib.rs (target/debug/deps/infraternal_server-a07814ceaeaa2f1c) running 4 tests 120 browser actions then authenticated logout → expected 200/revoked → actual 429 Too Many Requests live_session=true thread 'auth::tests::audit_logout_survives_admission_exhaustion' (1582290) panicked at crates/infraternal-server/src/auth/tests.rs:2046:5: admission exhaustion blocks mandatory revocation note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace test auth::tests::audit_logout_survives_admission_exhaustion ... FAILED identified UUID → expected uniform non-enumerating response → actual known=200 OK unknown=401 Unauthorized disclosed_credentials=1 thread 'auth::tests::audit_no_public_credential_listing' (1582291) panicked at crates/infraternal-server/src/auth/tests.rs:2013:5: assertion `left == right` failed: public caller can list a known user's credentials left: 1 right: 0 test auth::tests::audit_no_public_credential_listing ... FAILED parallel equal counters: exactly 1 success; wrong origin, no UV, expiry: all denied test auth::tests::audit_parallel_discoverable_counters_and_fail_closed_inputs ... ok start in A / signed finish in cookie-free B → expected 401 → actual 200 OK; binding cookie issued=false thread 'auth::tests::audit_ceremony_browser_binding' (1582289) panicked at crates/infraternal-server/src/auth/tests.rs:2028:5: assertion `left == right` failed: ceremony is a transferable bearer rather than browser-bound left: 200 right: 401 test auth::tests::audit_ceremony_browser_binding ... FAILED failures: failures: auth::tests::audit_ceremony_browser_binding auth::tests::audit_logout_survives_admission_exhaustion auth::tests::audit_no_public_credential_listing test result: FAILED. 1 passed; 3 failed; 0 ignored; 0 measured; 23 filtered out; finished in 1.98s error: test failed, to rerun pass `-p infraternal-server --lib` ``` Production-browser failing test, verbatim: ```text unwrap failure → expected session 401 → actual 200; logout attempted=true reload after failed unwrap → actual terminal opened 25 | stdio: ['pipe', 'pipe', 'inherit'], 26 | }); 27 | const lines = createInterface({ input: child ? child.stdout : process.stdin })[Symbol.asyncIterator](); 28 | const initial = JSON.parse((await lines.next()).value); 29 | const context = await browser.newContext(); 30 | const check = (condition, message) => { if (!condition) throw new Error(message); }; ^ error: FAIL: failed unwrap with logout 429 retained authenticated session at check (/tmp/review-auth-server/scripts/browser-auth/check-audit.mjs:30:67) at /tmp/review-auth-server/scripts/browser-auth/check-audit.mjs:115:3 Bun v1.4.2 (Linux x64) ```
Author
Owner

Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Server core merged and deployed (t-server 7551ff6/f1b996c and integration acf83c7 are in dev and prod); audit findings fixed under #28/#29. 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: Server core merged and deployed (t-server 7551ff6/f1b996c and integration acf83c7 are in dev and prod); audit findings fixed under #28/#29. Reopen if anything is still missing.
kayg closed this issue 2026-10-28 17:52:11 +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#19
No description provided.