Sign-in: 'use recovery key' replaces 'use a different passkey' #45

Open
opened 2026-10-07 05:27:57 +00:00 by kayg · 112 comments
Owner

Owner (2026-10-07): instead of "use a different passkey…", the sign-in card offers "use recovery key": a sign-in path with the 24 recovery words. The server already supports recovery (recovery-start with a 24 h delay per contracts/keywrap.md; review-auth3 confirmed recovery replacement works through the verifier and SQLite), but there is no production UI.

Flow:

  1. enter the words (paste-friendly, with per-word validation against the BIP-39 list);
  2. the server starts recovery;
  3. show the delay state honestly (the contract's 24 h delay: grill the owner whether that delay is right for a single-user homelab);
  4. register a new passkey that unwraps the original DEK.
    Motion and typography match onboarding. Needs a mockup review first if it differs materially from the onboarding steps.
Owner (2026-10-07): instead of "use a different passkey…", the sign-in card offers **"use recovery key"**: a sign-in path with the 24 recovery words. The server already supports recovery (recovery-start with a 24 h delay per contracts/keywrap.md; review-auth3 confirmed recovery replacement works through the verifier and SQLite), but there is no production UI. Flow: 1. enter the words (paste-friendly, with per-word validation against the BIP-39 list); 2. the server starts recovery; 3. show the delay state honestly (the contract's 24 h delay: grill the owner whether that delay is right for a single-user homelab); 4. register a new passkey that unwraps the original DEK. Motion and typography match onboarding. Needs a mockup review first if it differs materially from the onboarding steps.
Author
Owner

Owner decision D113: recovery is immediate when started from a device with a live session; otherwise it waits 24 h. Implementation follows ui-tweaks.

Owner decision D113: recovery is immediate when started from a device with a live session; otherwise it waits 24 h. Implementation follows ui-tweaks.
Author
Owner

Starting mobile-recovery at base 56bb6f5. D113 is authorized by the owner comment here but absent from this base DECISIONS.md; I will reference the issue without editing owner decisions. Proposed additive keywrap contract: recovery-start accepts optional live cookie, grants delay_seconds=0 only for the same account with a live unlocked session, otherwise 86400, returns ready_at, and supports public username lookup without publishing account IDs. Replacement continues to unwrap and rewrap the original DEK. Will preserve the legacy user_id request and separate auth.ts changes.

Starting mobile-recovery at base 56bb6f5. D113 is authorized by the owner comment here but absent from this base DECISIONS.md; I will reference the issue without editing owner decisions. Proposed additive keywrap contract: recovery-start accepts optional live cookie, grants delay_seconds=0 only for the same account with a live unlocked session, otherwise 86400, returns ready_at, and supports public username lookup without publishing account IDs. Replacement continues to unwrap and rewrap the original DEK. Will preserve the legacy user_id request and separate auth.ts changes.
Author
Owner

D113 regression reproduced before the server fix: recovery_http_live_same_account_is_immediate returned delay_seconds=86400, expected 0 (target/recovery-red.log). The fixed HTTP tests now pass for matching live sessions and delayed other-account, expired, pending-unlock and absent sessions (2 tests, 5.59 s). UI entry regression also reproduced: use recovery key button absent (target/recovery-ui-red.log). Browser recovery keeps all crypto/binary handling in existing auth.ts helpers; only 10 additive lines there.

D113 regression reproduced before the server fix: recovery_http_live_same_account_is_immediate returned delay_seconds=86400, expected 0 (target/recovery-red.log). The fixed HTTP tests now pass for matching live sessions and delayed other-account, expired, pending-unlock and absent sessions (2 tests, 5.59 s). UI entry regression also reproduced: use recovery key button absent (target/recovery-ui-red.log). Browser recovery keeps all crypto/binary handling in existing auth.ts helpers; only 10 additive lines there.
Author
Owner

Native production-adapter verification passes both immediate live-session recovery and sessionless delayed recovery (Chromium 149.0.7827.55, real Rust verifier/SQLite, native PRF/HKDF/AES-GCM). Both preserve the original DEK, consume the recovery capability and sign in with the replacement passkey. Added race coverage for revocation during Argon2 and checks that an active delayed request cannot be accelerated. Targeted recovery tests: 10 passed, 0 failed, 19.13 s. UI doubles enforce available time locally and server readiness independently; captures use public deterministic fixture words only.

Native production-adapter verification passes both immediate live-session recovery and sessionless delayed recovery (Chromium 149.0.7827.55, real Rust verifier/SQLite, native PRF/HKDF/AES-GCM). Both preserve the original DEK, consume the recovery capability and sign in with the replacement passkey. Added race coverage for revocation during Argon2 and checks that an active delayed request cannot be accelerated. Targeted recovery tests: 10 passed, 0 failed, 19.13 s. UI doubles enforce available time locally and server readiness independently; captures use public deterministic fixture words only.
Author
Owner

UI motion regression reproduced: the ready-to-passkey pane jumped immediately; sampled height range was 0 px (target/recovery-motion-red.log). Retargeting a fitted auth viewport now uses the existing 240 ms onboarding glide, with keyboard activation remaining instant. The full-suite first rerun also exposed two fixture issues (palette role=option, APIRequest lacked browser Origin); corrected those without changing production auth. One run under concurrent Rust compilation measured the existing 500-key probe p99=27.7 ms vs its <20 ms local threshold; will rerun without compiler overlap, with no budget changes.

UI motion regression reproduced: the ready-to-passkey pane jumped immediately; sampled height range was 0 px (target/recovery-motion-red.log). Retargeting a fitted auth viewport now uses the existing 240 ms onboarding glide, with keyboard activation remaining instant. The full-suite first rerun also exposed two fixture issues (palette role=option, APIRequest lacked browser Origin); corrected those without changing production auth. One run under concurrent Rust compilation measured the existing 500-key probe p99=27.7 ms vs its <20 ms local threshold; will rerun without compiler overlap, with no budget changes.
Author
Owner

Completed Specify same-device recovery authorization (D113) at 7c9fa51c41. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (777.26 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.85s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.11s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.08s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.08s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.17s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.30s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.75s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 66 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 154.71s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 33.69s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.32s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16096816 bytes
PT_INTERP: absent; size: 13515080 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/01-7c9fa51-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Specify same-device recovery authorization (D113) at 7c9fa51c41fc551c9869e3281e74ffde32d57d25. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (777.26 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.85s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.11s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.08s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.08s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.17s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.30s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.75s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 66 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 154.71s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 33.69s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.32s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16096816 bytes PT_INTERP: absent; size: 13515080 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/01-7c9fa51-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner
Production-build screenshots for owner review. Every recovery step at 393×852 and 1440×900, for immediate and delayed paths. Word captures use public deterministic fixtures and contain no real account recovery key. The delay date is the server ready_at; no progress is fabricated. - [recovery-immediate-create-passkey-1440x900.png](https://git.kayg.org/attachments/7724e0f2-9061-4b58-acfd-8e2011abad23) - [recovery-immediate-create-passkey-393x852.png](https://git.kayg.org/attachments/724f6721-45b2-4bb6-aa98-3992be87aed4) - [recovery-immediate-enter-words-empty-1440x900.png](https://git.kayg.org/attachments/bf75bc48-b31a-44a4-97cb-5ed7e0145f89) - [recovery-immediate-enter-words-empty-393x852.png](https://git.kayg.org/attachments/d23ed248-fa95-428e-80d0-9b7d1176cf42) - [recovery-immediate-enter-words-public-fixture-1440x900.png](https://git.kayg.org/attachments/b9ae9968-b937-4266-8ba4-4efdf22c423e) - [recovery-immediate-enter-words-public-fixture-393x852.png](https://git.kayg.org/attachments/ac87e45f-cf7d-4748-b336-735ef7ae2c88) - [recovery-immediate-ready-now-1440x900.png](https://git.kayg.org/attachments/fba681d3-4dec-49f4-b7d4-9b1f1b328889) - [recovery-immediate-ready-now-393x852.png](https://git.kayg.org/attachments/8e20f765-d4fb-4ea7-aa42-635a08126179) - [recovery-immediate-save-rotated-public-fixture-1440x900.png](https://git.kayg.org/attachments/315f69cb-7def-488f-b556-517207c41697) - [recovery-immediate-save-rotated-public-fixture-393x852.png](https://git.kayg.org/attachments/a8f49767-18fb-4eac-90a4-aa5a6056e768) - [recovery-immediate-welcome-1440x900.png](https://git.kayg.org/attachments/4c6f4e02-d63f-41d1-8fa7-4f8428aed403) - [recovery-immediate-welcome-393x852.png](https://git.kayg.org/attachments/a5bb927c-6af1-48f6-a546-59841fca9b44) - [recovery-delayed-create-passkey-1440x900.png](https://git.kayg.org/attachments/d0ef189b-653b-4383-8d78-60947af2b7ca) - [recovery-delayed-create-passkey-393x852.png](https://git.kayg.org/attachments/a681edfd-aba0-4d18-aac7-5ad4409c634e) - [recovery-delayed-enter-words-empty-1440x900.png](https://git.kayg.org/attachments/cd8c773d-91f6-4fca-8f8e-1edd245322ac) - [recovery-delayed-enter-words-empty-393x852.png](https://git.kayg.org/attachments/2ca7c3eb-f5b6-4346-8af2-c37c9bc01637) - [recovery-delayed-enter-words-public-fixture-1440x900.png](https://git.kayg.org/attachments/b6ad36eb-32eb-4d52-ac35-e7919b7c8fe8) - [recovery-delayed-enter-words-public-fixture-393x852.png](https://git.kayg.org/attachments/04e72adb-4513-4131-906a-ad1b6e6db37f) - [recovery-delayed-save-rotated-public-fixture-1440x900.png](https://git.kayg.org/attachments/8481fe16-7c0b-429e-80c0-b951e582a1a8) - [recovery-delayed-save-rotated-public-fixture-393x852.png](https://git.kayg.org/attachments/45ffeb62-5e9f-4812-b4a8-d9ee790b3548) - [recovery-delayed-wait-24h-1440x900.png](https://git.kayg.org/attachments/92e3be0d-1743-4dee-9ffd-c7975ed18320) - [recovery-delayed-wait-24h-393x852.png](https://git.kayg.org/attachments/0d18938f-b80b-42f8-ae7c-76fbfddc23a7) - [recovery-delayed-welcome-1440x900.png](https://git.kayg.org/attachments/7c7473fc-e607-48f7-97ae-34fcd42086bf) - [recovery-delayed-welcome-393x852.png](https://git.kayg.org/attachments/1ba22ccb-e2c4-46ea-a66c-de5dcc821f23)
Author
Owner

26 production screenshots are now attached across #44/#45; all recovery captures use public deterministic fixtures. D80 checks now prove 44 px targets throughout recovery at both viewports. The existing contract rejects repeated active recovery-start, and browser recovery secrets remain memory-only: after a page discard, its token is unavailable. Keeping the existing deadline safely across reload would require an explicit additive resume operation; I am preserving the existing policy and correcting the generic denial guidance instead of claiming a wrong key. Exact-commit gates are running; contract and touch module snapshots passed.

26 production screenshots are now attached across #44/#45; all recovery captures use public deterministic fixtures. D80 checks now prove 44 px targets throughout recovery at both viewports. The existing contract rejects repeated active recovery-start, and browser recovery secrets remain memory-only: after a page discard, its token is unavailable. Keeping the existing deadline safely across reload would require an explicit additive resume operation; I am preserving the existing policy and correcting the generic denial guidance instead of claiming a wrong key. Exact-commit gates are running; contract and touch module snapshots passed.
Author
Owner

Completed Waive recovery delay only for a matching live session (D113) at b42795b8a1. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (399.25 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.69s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.96s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.79s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.16s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.17s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.15s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 66 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 155.27s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 36.18s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16098320 bytes
PT_INTERP: absent; size: 13516760 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/05-b42795b-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Waive recovery delay only for a matching live session (D113) at b42795b8a11fcf22be9dcf106b8a27d016026c84. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (399.25 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.69s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.96s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.79s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.16s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.17s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.15s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 66 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 155.27s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 36.18s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16098320 bytes PT_INTERP: absent; size: 13516760 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/05-b42795b-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Recovery/onboarding lifecycle finding: after first setup, clicking the terminal capsule produced 3 page errors because the persistent app host retained listeners querying the removed setup card. Regression failed first (target/onboarding-lifecycle-red.log: expected 0, received 3). AbortController cleanup, ResizeObserver disconnect and release of setup token/word references now pass the real browser first-run/login/terminal test (1 passed, 17.9 s; target/onboarding-lifecycle-green.log). Separate atomic fix follows; no auth.ts binary changes.

Recovery/onboarding lifecycle finding: after first setup, clicking the terminal capsule produced 3 page errors because the persistent app host retained listeners querying the removed setup card. Regression failed first (target/onboarding-lifecycle-red.log: expected 0, received 3). AbortController cleanup, ResizeObserver disconnect and release of setup token/word references now pass the real browser first-run/login/terminal test (1 passed, 17.9 s; target/onboarding-lifecycle-green.log). Separate atomic fix follows; no auth.ts binary changes.
Author
Owner

Completed Expose authoritative recovery readiness and username lookup (D113) at 96965fe309. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (428.71 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.67s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.95s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.44s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.14s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.50s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.26s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 66 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 156.00s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 40.52s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.63s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/06-96965fe-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Expose authoritative recovery readiness and username lookup (D113) at 96965fe309a2517785966bae09556e2858584d28. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (428.71 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.67s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.95s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.44s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.14s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.50s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.26s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 66 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 156.00s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 40.52s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.63s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/06-96965fe-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Final source at 3b1cde5; evidence handoff 9907375. Full production Playwright suite: 29 passed (3.4m), including both recovery paths, original-DEK envelope check, authoritative delay, retries, live-session entry, pane motion and touch targets. Native real-verifier recovery scenarios previously both PASS; rerunning at final head after exact-commit gates. docs/verification/mobile-recovery.md records security checklist, 26 attached screenshots, 50-session-row diagnostics and memory-only waiting-page/reload limitation. No push, merge or deploy.

Final source at 3b1cde5; evidence handoff 9907375. Full production Playwright suite: 29 passed (3.4m), including both recovery paths, original-DEK envelope check, authoritative delay, retries, live-session entry, pane motion and touch targets. Native real-verifier recovery scenarios previously both PASS; rerunning at final head after exact-commit gates. docs/verification/mobile-recovery.md records security checklist, 26 attached screenshots, 50-session-row diagnostics and memory-only waiting-page/reload limitation. No push, merge or deploy.
Author
Owner

Production download measurement against base 56bb6f5, same Bun 1.4.2 build: main.js gzip 27911→28328 bytes (+417); all JavaScript gzip 238995→243842 bytes (+4847), including lazy chunks and workers. Raw all-JS 793205→805662 bytes. Recovery imports on demand and reuses existing BIP-39/crypto helpers; no new dependencies. target/evidence/bundle-size.json; evidence-docs commit amended to include these numbers.

Production download measurement against base 56bb6f5, same Bun 1.4.2 build: main.js gzip 27911→28328 bytes (+417); all JavaScript gzip 238995→243842 bytes (+4847), including lazy chunks and workers. Raw all-JS 793205→805662 bytes. Recovery imports on demand and reuses existing BIP-39/crypto helpers; no new dependencies. target/evidence/bundle-size.json; evidence-docs commit amended to include these numbers.
Author
Owner

Completed Prove recovery session isolation, races and unchanged delays (D113) at ece609fa4a. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (254.59 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.74s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.96s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.67s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.20s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.16s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.01s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 164.62s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 39.88s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.60s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/07-ece609f-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Prove recovery session isolation, races and unchanged delays (D113) at ece609fa4a1319f44b0615429fdee0859d766ed8. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (254.59 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.74s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.96s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.67s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.20s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.16s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.01s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 164.62s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 39.88s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.60s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/07-ece609f-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Completed Reuse onboarding recovery-word acknowledgement controls (#45) at 4c691ae366. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (247.21 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.73s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.90s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.74s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.08s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.16s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.41s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.13s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 167.11s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 37.70s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.52s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/08-4c691ae-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Reuse onboarding recovery-word acknowledgement controls (#45) at 4c691ae36625192a1e6878270dc0585e70f99dcf. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (247.21 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.73s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.90s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.74s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.08s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.16s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.41s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.13s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 167.11s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 37.70s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.52s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/08-4c691ae-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Completed Share existing browser ceremony helpers with recovery (#45) at 0bc902e2e1. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (244.94 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.71s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.96s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.46s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.16s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.10s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 159.41s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 36.59s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.02s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/09-0bc902e-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Share existing browser ceremony helpers with recovery (#45) at 0bc902e2e1b2ee95749e1652c1ef4c1861a7d81a. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (244.94 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.71s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.96s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.46s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.16s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.10s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 159.41s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 36.59s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.02s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/09-0bc902e-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Owner (2026-10-07): the sign-in card has more vertical space than its content. Measured on production: below the button, .auth-loading (14px + 14px margin) and .auth-message (16.8px min-height + 12px margin) are reserved but empty, so the bottom has about 93px against a 40px top padding. Fix together with the 'use recovery key' link:

  • the count-up goes inside the button (like setup's busy-count);
  • the recovery link sits under the button;
  • errors appear in place with a height glide instead of reserved empty rows;
  • top and bottom padding match;
  • add a Playwright assertion that the content-to-card bottom gap equals the padding within 1px.
Owner (2026-10-07): the sign-in card has more vertical space than its content. Measured on production: below the button, `.auth-loading` (14px + 14px margin) and `.auth-message` (16.8px min-height + 12px margin) are reserved but empty, so the bottom has about 93px against a 40px top padding. Fix together with the 'use recovery key' link: - the count-up goes inside the button (like setup's busy-count); - the recovery link sits under the button; - errors appear in place with a height glide instead of reserved empty rows; - top and bottom padding match; - add a Playwright assertion that the content-to-card bottom gap equals the padding within 1px.
Author
Owner

Completed Recover passkeys by rewrapping the original browser DEK (D113) at c64de57f16. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (253.77 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.51s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.68s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.61s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.17s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.33s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.31s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.93s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 171.32s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 34.63s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/10-c64de57-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Recover passkeys by rewrapping the original browser DEK (D113) at c64de57f164f95f3a79ac964c81a43d1b540f3df. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (253.77 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.51s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.68s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.61s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.17s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.33s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.31s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.93s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 171.32s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 34.63s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/10-c64de57-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Completed Open the onboarding-style recovery flow from sign-in and live devices (#45) at 0b43b4a998. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (267.24 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.02s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.49s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.16s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.54s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.55s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 175.54s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 37.91s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.53s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/11-0b43b4a-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Open the onboarding-style recovery flow from sign-in and live devices (#45) at 0b43b4a998b0c5d230c870b7cb055bc046a54865. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (267.24 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.02s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.49s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.16s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.54s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.55s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 175.54s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 37.91s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.53s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/11-0b43b4a-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Completed Verify recovery crypto and both delays in native Chromium (D113) at 3e993424d8. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (348.23 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.88s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.72s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 12.73s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.20s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.37s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.38s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.59s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 196.16s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 82.54s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.19s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/12-3e99342-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Verify recovery crypto and both delays in native Chromium (D113) at 3e993424d8c78b7237b91141eaecfcc0b3e0900b. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (348.23 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.88s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.72s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 12.73s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.20s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.37s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.38s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.59s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 196.16s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 82.54s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.19s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/12-3e99342-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Historical gate finding on superseded recovery-test snapshot c427643 (current replacement is 7f02473): Rust test clean_control_close_is_not_an_internal_error failed at auth/tests.rs:1687 with server closed websocket unexpectedly. 70 server tests passed, 1 failed, 6 ignored; fmt/native fmt/clippy/cargo-deny/both static builds passed. target/atomic-gates/14-c427643-fast.log retains the full run. Running the existing WebSocket case in isolation, then validating the six remaining current-branch commits; no threshold or unrelated source change.

Historical gate finding on superseded recovery-test snapshot c427643 (current replacement is 7f02473): Rust test clean_control_close_is_not_an_internal_error failed at auth/tests.rs:1687 with server closed websocket unexpectedly. 70 server tests passed, 1 failed, 6 ignored; fmt/native fmt/clippy/cargo-deny/both static builds passed. target/atomic-gates/14-c427643-fast.log retains the full run. Running the existing WebSocket case in isolation, then validating the six remaining current-branch commits; no threshold or unrelated source change.
Author
Owner

WebSocket follow-up: clean_control_close_is_not_an_internal_error passes in isolation (1 passed; 0 failed; 76 filtered out; 0.49 s), target/control-close-isolated.log. The failure was on off-branch superseded snapshot c427643, not the final source. Retaining both outputs and continuing exact fast gates on current replacement 7f02473 and subsequent commits; no source or threshold changes.

WebSocket follow-up: clean_control_close_is_not_an_internal_error passes in isolation (1 passed; 0 failed; 76 filtered out; 0.49 s), target/control-close-isolated.log. The failure was on off-branch superseded snapshot c427643, not the final source. Retaining both outputs and continuing exact fast gates on current replacement 7f02473 and subsequent commits; no source or threshold changes.
Author
Owner

Completed Exercise recovery steps and finish rejection with production UI screenshots (#45) at 7f024731a4. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (246.1 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.86s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.01s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.16s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.13s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.18s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.51s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.11s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 163.26s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 37.76s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/14-7f02473-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Exercise recovery steps and finish rejection with production UI screenshots (#45) at 7f024731a4891279e1b1499391c944e29649783a. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (246.1 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.86s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.01s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.16s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.13s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.18s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.51s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.11s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 163.26s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 37.76s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/14-7f02473-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Completed Match recovery pane fitting to onboarding motion (#45) at 595ae06ac1. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (245.17 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.77s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.96s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.93s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.08s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.25s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.41s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.32s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 167.65s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 34.28s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/15-595ae06-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Match recovery pane fitting to onboarding motion (#45) at 595ae06ac140820e635cd5250b3335c574b746b9. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (245.17 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.77s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.96s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.93s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.08s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.25s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.41s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.32s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 167.65s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 34.28s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/15-595ae06-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Completed Give recovery actions full mobile touch targets (D80) at 697587b1fd. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (241.48 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.78s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.98s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.45s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.11s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.12s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.44s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.28s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 162.34s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 35.59s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.48s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/16-697587b-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Give recovery actions full mobile touch targets (D80) at 697587b1fd6afad7c224da86f083260994ee5273. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (241.48 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.78s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.98s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.45s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.11s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.12s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.44s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.28s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 162.34s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 35.59s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.48s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/16-697587b-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Completed Explain recovery start denials and existing-device passkeys (#45) at de4179bc7c. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (265.6 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.69s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.44s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.19s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.52s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.67s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 181.82s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 39.81s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.58s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/17-de4179b-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Explain recovery start denials and existing-device passkeys (#45) at de4179bc7cba8e7c43f6e5752ea4e4b87f0d5391. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (265.6 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.69s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.44s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.19s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.52s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.67s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 181.82s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 39.81s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.58s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/17-de4179b-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Completed Release onboarding listeners before terminal interaction (#45) at 3b1cde5f3d. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (312.73 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.70s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.84s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.29s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.15s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.17s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.04s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 167.77s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 72.73s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.17s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.66s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/18-3b1cde5-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Release onboarding listeners before terminal interaction (#45) at 3b1cde5f3d8240ef77b4b2f8b45ffb3fc397408f. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (312.73 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.70s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.84s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.29s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.15s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.17s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.04s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 167.77s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 72.73s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.17s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.66s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/18-3b1cde5-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Completed Record mobile gestures and D113 recovery verification (#44, #45) at 18d5035270. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (303.21 s). Gate output (verbatim summary):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.33s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.03s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.54s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.19s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.23s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.60s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 187.91s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 61.43s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
 7 pass
 0 fail

Full output: target/atomic-gates/19-18d5035-fast.log; will attach gate logs at finish. No push, merge or deploy.

Completed Record mobile gestures and D113 recovery verification (#44, #45) at 18d5035270ca6792e54d7c44e9d7343ffedbff94. Isolated exact-commit scripts/verify fast, tracer TypeScript check and production build passed (303.21 s). Gate output (verbatim summary): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.33s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.03s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.54s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.19s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.23s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.60s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 187.91s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 61.43s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail ``` Full output: target/atomic-gates/19-18d5035-fast.log; will attach gate logs at finish. No push, merge or deploy.
Author
Owner

Final-worktree gate environment finding: runtime setup_token_socket_is_private_and_requires_explicit_request failed with path must be shorter than SUN_LEN. Job TMPDIR + runtime UUID fixture + setup-token.sock was 132 bytes, above AF_UNIX 108 bytes; source is unchanged. All other fast rows passed, and native browser final gate passed (4 existing + 2 recovery scenarios). Full failing output retained as target/final-fast-long-tmpdir.log. Repeating the final fast gate with a live /proc directory-FD alias to the same job scratch directory so fixtures remain inside job scratch and the socket path fits.

Final-worktree gate environment finding: runtime setup_token_socket_is_private_and_requires_explicit_request failed with path must be shorter than SUN_LEN. Job TMPDIR + runtime UUID fixture + setup-token.sock was 132 bytes, above AF_UNIX 108 bytes; source is unchanged. All other fast rows passed, and native browser final gate passed (4 existing + 2 recovery scenarios). Full failing output retained as target/final-fast-long-tmpdir.log. Repeating the final fast gate with a live /proc directory-FD alias to the same job scratch directory so fixtures remain inside job scratch and the socket path fits.
Author
Owner

Implementation finished on mobile-recovery at 18d5035270, base 56bb6f5. 19 atomic commits each pass exact-commit scripts/verify fast, tracer check and production build. Final-head required Nix fast gate and native browser gate pass. Full production Playwright: 29 passed (3.4m), TRACER_TEST_PORT=4551. No push, merge or deploy; issues remain open.

Unedited complete gate logs, final diff, contracts, handoff and machine/scale/bundle metadata (ZIP SHA-256 40ce882f04ef71b94bc448b8249d83c9d57fc6f52f690ff9436dc58f4bd15d8d). Screenshots are attached in the earlier production evidence comment. Reviewer handoff: docs/verification/mobile-recovery.md.

Final fast output (verbatim):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.77s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.09s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.01s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.11s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.27s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.59s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.32s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 189.45s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 38.32s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.55s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099152 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
dist/ghostty-web.js: OK
dist/ghostty-vt.wasm: OK
dist/index.d.ts: OK
stream differential: 134 streams, 11439 schedules, zero divergences
 7 pass
 0 fail
 34390 expect() calls

Native browser output (verbatim PASS lines):

auth browser: PASS (4 isolated scenarios; Chromium 149.0.7827.55)
native recovery same-account live session: PASS (original DEK preserved, capability consumed, replacement passkey signs in)
native recovery no session, enforced delay then elapsed: PASS (original DEK preserved, capability consumed, replacement passkey signs in)
native recovery: PASS (2 real-verifier scenarios; Chromium 149.0.7827.55)

Native recovery covers immediate same-account live session and enforced no-session delay, preserving the original DEK and logging in with the new passkey. Rust tests also cover other-account/expired/pending cookies and revocation during verification. Production main.js gzip +417 bytes; all JS including lazy chunks/workers +4847 bytes. Diagnostic 50 live session rows, n=30/path: no live p50/p99 17436/22332 us; matching live 17548/20062 us (SQLite-memory local run, not perf-VM certification).

How to test:

  1. Choose use recovery key at sign-in, or Account → Use recovery key with a live session.
  2. Enter username and paste 24 words; only the same-account live cookie permits Ready now, otherwise the honest server time is shown.
  3. Keep the waiting page open; create a new passkey, save rotated words and open infraternal.

Known contract limitation: words/capability are memory-only; leaving, closing or reloading the waiting flow loses the capability, and an active request rejects another start until expiry or signed-in cancellation. A resumable endpoint preserving the original deadline is proposed separately on this issue.

Physical iPhone/Safari, independent security and owner screenshot review, and pinned perf-VM budget certification remain review work; local emulation is not a physical-device claim.

Implementation finished on mobile-recovery at 18d5035270ca6792e54d7c44e9d7343ffedbff94, base 56bb6f5. 19 atomic commits each pass exact-commit scripts/verify fast, tracer check and production build. Final-head required Nix fast gate and native browser gate pass. Full production Playwright: 29 passed (3.4m), TRACER_TEST_PORT=4551. No push, merge or deploy; issues remain open. [Unedited complete gate logs, final diff, contracts, handoff and machine/scale/bundle metadata](https://git.kayg.org/attachments/0a7db6f4-4955-4ccb-9c79-d83f214a2e4d) (ZIP SHA-256 40ce882f04ef71b94bc448b8249d83c9d57fc6f52f690ff9436dc58f4bd15d8d). Screenshots are attached in the earlier production evidence comment. Reviewer handoff: docs/verification/mobile-recovery.md. Final fast output (verbatim): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.77s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.09s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.01s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.11s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.27s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.59s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.32s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 189.45s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 38.32s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.55s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099152 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ dist/ghostty-web.js: OK dist/ghostty-vt.wasm: OK dist/index.d.ts: OK stream differential: 134 streams, 11439 schedules, zero divergences 7 pass 0 fail 34390 expect() calls ``` Native browser output (verbatim PASS lines): ```text auth browser: PASS (4 isolated scenarios; Chromium 149.0.7827.55) native recovery same-account live session: PASS (original DEK preserved, capability consumed, replacement passkey signs in) native recovery no session, enforced delay then elapsed: PASS (original DEK preserved, capability consumed, replacement passkey signs in) native recovery: PASS (2 real-verifier scenarios; Chromium 149.0.7827.55) ``` Native recovery covers immediate same-account live session and enforced no-session delay, preserving the original DEK and logging in with the new passkey. Rust tests also cover other-account/expired/pending cookies and revocation during verification. Production main.js gzip +417 bytes; all JS including lazy chunks/workers +4847 bytes. Diagnostic 50 live session rows, n=30/path: no live p50/p99 17436/22332 us; matching live 17548/20062 us (SQLite-memory local run, not perf-VM certification). How to test: 1. Choose use recovery key at sign-in, or Account → Use recovery key with a live session. 2. Enter username and paste 24 words; only the same-account live cookie permits Ready now, otherwise the honest server time is shown. 3. Keep the waiting page open; create a new passkey, save rotated words and open infraternal. Known contract limitation: words/capability are memory-only; leaving, closing or reloading the waiting flow loses the capability, and an active request rejects another start until expiry or signed-in cancellation. A resumable endpoint preserving the original deadline is proposed separately on this issue. Physical iPhone/Safari, independent security and owner screenshot review, and pinned perf-VM budget certification remain review work; local emulation is not a physical-device claim.
Author
Owner

Focused defensive recovery audit started. Read CLAUDE.md, DECISIONS.md, architecture/process, keywrap contract and all 30 issue comments. Branch mobile-recovery, base 56bb6f5, reviewed head 18d5035270. Worktree stays read-only; experiments and gates use an isolated scratch copy. Continuing the documented lost-capability limitation and verifying D113, crypto, timing, cancellation, notifications and admission.

Focused defensive recovery audit started. Read CLAUDE.md, DECISIONS.md, architecture/process, keywrap contract and all 30 issue comments. Branch mobile-recovery, base 56bb6f5, reviewed head 18d5035270ca6792e54d7c44e9d7343ffedbff94. Worktree stays read-only; experiments and gates use an isolated scratch copy. Continuing the documented lost-capability limitation and verifying D113, crypto, timing, cancellation, notifications and admission.
Author
Owner

Audit requirement/contract discrepancy reproduced: browser-only recovery words assertion fails (1 failed; expected false, received true). apps/tracer/src/recovery-auth.ts:10 sends exactly {username,words}, including the readable 24-word phrase, over HTTPS. contracts/keywrap.md:6-7 explicitly requires server-side plaintext words for Argon2id. No DEK or PRF output is sent. This follows the existing contract but does not satisfy the job checklist; an owner contract decision is needed if browser-only words is required. Probe source/log will be attached with the verdict.

Audit requirement/contract discrepancy reproduced: browser-only recovery words assertion fails (1 failed; expected false, received true). apps/tracer/src/recovery-auth.ts:10 sends exactly {username,words}, including the readable 24-word phrase, over HTTPS. contracts/keywrap.md:6-7 explicitly requires server-side plaintext words for Argon2id. No DEK or PRF output is sent. This follows the existing contract but does not satisfy the job checklist; an owner contract decision is needed if browser-only words is required. Probe source/log will be attached with the verdict.
Author
Owner

Audit step complete at unchanged head 18d5035270: production recovery Playwright gate passed, verbatim: 5 passed (26.7s), TRACER_TEST_PORT=4267. Covers immediate/delayed paths, original-DEK envelope check, input validation, rejected finish/retry, live-session entry and pane motion. Native verifier gate and independent expiry/reload/timing/admission probes are running. Sessions have no source/device binding in the existing schema; ceremony-cookie binding is separate, so same-account bearer-cookie replay qualifies for D113.

Audit step complete at unchanged head 18d5035270ca6792e54d7c44e9d7343ffedbff94: production recovery Playwright gate passed, verbatim: 5 passed (26.7s), TRACER_TEST_PORT=4267. Covers immediate/delayed paths, original-DEK envelope check, input validation, rejected finish/retry, live-session entry and pane motion. Native verifier gate and independent expiry/reload/timing/admission probes are running. Sessions have no source/device binding in the existing schema; ceremony-cookie binding is separate, so same-account bearer-cookie replay qualifies for D113.
Author
Owner

Audit finding F1 (P1), head 18d5035: same-account unlocked session expiring at request_time+1 still waives delay after a 2200ms verification-boundary pause. Expected delay_seconds=86400; actual 0. Failing HTTP probe audit_recovery_session_expiring_during_verification_keeps_delay. auth/http.rs:207 samples time before awaits; auth/recovery.rs:48-49 checks expiry against that stale time under the writer lock. Revocation is atomic, elapsed expiry is missed. Test/log will be attached.

Audit finding F1 (P1), head 18d5035: same-account unlocked session expiring at request_time+1 still waives delay after a 2200ms verification-boundary pause. Expected delay_seconds=86400; actual 0. Failing HTTP probe audit_recovery_session_expiring_during_verification_keeps_delay. auth/http.rs:207 samples time before awaits; auth/recovery.rs:48-49 checks expiry against that stale time under the writer lock. Revocation is atomic, elapsed expiry is missed. Test/log will be attached.
Author
Owner

Audit finding F2 (P1), head 18d5035: discard sessionless recovery capability at start, re-enter correct words at 24h => denied. Retry at 48h => new ready time 72h from first start. Expected resumable original 24h deadline without secret persistence/acceleration. Failing test audit_recovery_after_page_discard_can_resume_at_original_deadline. recovery.rs:55 only replaces expired requests; recovery.ts:37 also discards capability on Back. Confirms the prior author limitation; a 24h wait is insufficient after page loss. Test/log will be attached.

Audit finding F2 (P1), head 18d5035: discard sessionless recovery capability at start, re-enter correct words at 24h => denied. Retry at 48h => new ready time 72h from first start. Expected resumable original 24h deadline without secret persistence/acceleration. Failing test audit_recovery_after_page_discard_can_resume_at_original_deadline. recovery.rs:55 only replaces expired requests; recovery.ts:37 also discards capability on Back. Confirms the prior author limitation; a 24h wait is insufficient after page loss. Test/log will be attached.
Author
Owner

Audit finding F3 (P2), head 18d5035: after delayed recovery starts, authenticated session contains no pending-recovery information; no notification is emitted and production browser has no recovery-cancel call/control. Expected owner visibility and signed-in cancellation. Failing test audit_recovery_pending_is_visible_to_signed_in_device. Server cancellation itself passes: two simultaneous starts admit exactly one; cancellation invalidates token and begun replacement ceremony. Sources: auth/sessions.rs:7-13, auth/recovery.rs:55-61, tracer/core-screen.ts:225. Existing server/product gap exposed by this UI.

Audit finding F3 (P2), head 18d5035: after delayed recovery starts, authenticated session contains no pending-recovery information; no notification is emitted and production browser has no recovery-cancel call/control. Expected owner visibility and signed-in cancellation. Failing test audit_recovery_pending_is_visible_to_signed_in_device. Server cancellation itself passes: two simultaneous starts admit exactly one; cancellation invalidates token and begun replacement ceremony. Sources: auth/sessions.rs:7-13, auth/recovery.rs:55-61, tracer/core-screen.ts:225. Existing server/product gap exposed by this UI.
Author
Owner

Audit gate qualification at 18d5035: first scripts/verify fast server tests report 69 passed; 2 failed; 6 ignored (178.31s): unchanged review3_backend_reply_has_a_deadline and server_setup_terminal_echo_and_resume_preserve_offsets_once. Compilation/probes overlapped; no cause attributed yet. Isolated reruns and a repeat gate follow. Native auth gate passes all 4 auth + 2 recovery scenarios; extended native crypto verifies both replacement envelopes contain original DEK, v3 input metadata, and absent PRF finish output.

Audit gate qualification at 18d5035: first scripts/verify fast server tests report 69 passed; 2 failed; 6 ignored (178.31s): unchanged review3_backend_reply_has_a_deadline and server_setup_terminal_echo_and_resume_preserve_offsets_once. Compilation/probes overlapped; no cause attributed yet. Isolated reruns and a repeat gate follow. Native auth gate passes all 4 auth + 2 recovery scenarios; extended native crypto verifies both replacement envelopes contain original DEK, v3 input metadata, and absent PRF finish output.
Author
Owner

Audit gates at unchanged head 18d5035: focused Rust recovery gate verbatim: test result: ok. 12 passed; 0 failed; 1 ignored; 0 measured; 64 filtered out; finished in 24.26s. Rebuilt isolated unchanged WebSocket cases both pass (1 passed, 76 filtered out): deadline 60.51s, echo/resume 0.77s. An initial shared-target follow-up reused the 83-test experiment binary; those stale logs are excluded and retained with that qualification. Full repeat fast gate is running. The three recovery regression probes remain failing against unchanged production code.

Audit gates at unchanged head 18d5035: focused Rust recovery gate verbatim: test result: ok. 12 passed; 0 failed; 1 ignored; 0 measured; 64 filtered out; finished in 24.26s. Rebuilt isolated unchanged WebSocket cases both pass (1 passed, 76 filtered out): deadline 60.51s, echo/resume 0.77s. An initial shared-target follow-up reused the 83-test experiment binary; those stale logs are excluded and retained with that qualification. Full repeat fast gate is running. The three recovery regression probes remain failing against unchanged production code.
Author
Owner

Verdict: REWORK, focused defensive audit of 56bb6f5..18d5035, head 18d5035270ca6792e54d7c44e9d7343ffedbff94. Worktree mobile-recovery remained read-only; no edits, commits, pushes, deployments or issue closure. Read all #45 comments and contextual parent review #40 history; D113 authority is the owner comment here (absent from this head's DECISIONS.md).

Ranked findings, each with a failing test in the attached evidence:

  1. F1 / P1 — expired-during-verification session waives delay. Input: valid same-account unlocked session expires 1 second after request timestamp; pause 2200ms at verification/write boundary. Expected 86400 seconds; actual 0. auth/http.rs:207 samples time before awaits and auth/recovery.rs:48-49 uses that stale timestamp. Test: audit_recovery_session_expiring_during_verification_keeps_delay. Revocation ordering is correctly writer-locked; expiry still needs current authority time.
  2. F2 / P1 — page loss can extend the recovery path to 72 hours. Input: sessionless start at t=0; discard capability; re-enter correct words at t=24h, then t=48h. Expected resumption at the original deadline without persisting secrets/accelerating recovery; actual t=24h denial, t=48h new request ready at t=72h. recovery.ts:37 also discards capability on Back; auth/recovery.rs:55 refuses active restarts. Test: audit_recovery_after_page_discard_can_resume_at_original_deadline. Previously disclosed limitation, independently reproduced. The 72h case assumes no signed-in device is available. Additive resume policy needs owner approval; documentation alone does not make this mobile path usable after a discarded tab.
  3. F3 / P2 — pending recovery has no owner notification or browser cancel control. Input: start delayed recovery, read identity from a signed-in device. Expected pending visibility and a cancellation path; actual no recovery information/notification, and no browser recovery-cancel call/control. Test: audit_recovery_pending_is_visible_to_signed_in_device. Sources: auth/sessions.rs:7-13, auth/recovery.rs:55-61, tracer core-screen.ts:225. The server cancellation API does work, including invalidation of an already-begun replacement. This is an existing server/product gap exposed by this production UI.
  4. F4 / requirement clarification — words are sent as readable JSON over HTTPS. Input: Start recovery with a public 24-word fixture. Expected per audit job: no plaintext application words leave browser; actual exact payload {username,words} at recovery-auth.ts:10. Boolean-only transport test fails (expected false, received true). contracts/keywrap.md:6-7 explicitly requires server plaintext words for Argon2id, and the server also generates rotated words. This follows the current contract and is not a new regression; the owner must reconcile the checklist with that contract before changing the crypto foundation. DEK/PRF never leave the browser as plaintext.

Verified: both replacement passkey and recovery envelopes decrypt to the original DEK in native Chromium with real Rust verifier/SQLite; v3 input metadata and unchanged infraternal/keywrap/v1|UUID|kind AAD; PRF absent from finish proofs. Old passkeys/envelopes, sessions, API keys and approvals are revoked atomically per contract. Server readiness remains authoritative; exactly one concurrent start succeeds; cancellation invalidates tokens and pending replacement ceremonies. Missing/other-account/expired/pending/revoked sessions retain the wait. No session device/source binding exists; existing bearer-cookie replay can qualify for D113, independently of enrollment ceremony binding.

Username measurements (interleaved local debug, 40 samples each, loaded host): identical 401 status/body/no cookie. Valid wrong phrases: known p50 514848 µs / p99 782445 µs; unknown 517385 / 741487 µs. Malformed phrases: known 606 / 1149 µs; unknown 611 / 857 µs. No clear separation demonstrated; this is not a general timing proof. Recovery-start and registration-finish both throttle request 121 with 429 and Retry-After: 60 under the unchanged browser partition. No partial word-guessing response was found.

Complete logs, failing tests, findings, manifest and production screenshots — ZIP SHA256 453bf05d7b429e63e0795b8a0aea5cc2c064d022c04145bba056abcf8af4605f. Logs contain no secret payloads; screenshots use public deterministic fixture words. The scratch directory will be removed after this record is posted. Screenshots are for owner review; no visual-quality verdict is made.

Production delayed recovery, 393×852 · 1440×900

First fast gate output (verbatim result lines and gate table; complete output attached):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.38s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.98s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.62s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.18s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.28s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.62s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.84s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: FAILED. 69 passed; 2 failed; 6 ignored; 0 measured; 0 filtered out; finished in 178.31s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099408 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | FAIL (101)   |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+

Rebuilt isolation output (verbatim):

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

The first fast run failed two unchanged WebSocket cases; both pass in rebuilt isolation. Initial shared-target follow-ups reused the extra-probe binary and are labelled stale-*, excluded from head gate results. No cause is assigned solely from isolation success.

Repeated fast gate output (verbatim result lines and gate table; complete output attached):

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.91s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.11s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.10s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.19s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.61s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.20s
test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 235.27s
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 109.14s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.16s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.56s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
advisories ok, bans ok, licenses ok, sources ok
PT_INTERP: absent; size: 16099408 bytes
PT_INTERP: absent; size: 13519320 bytes
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
dist/ghostty-web.js: OK
dist/ghostty-vt.wasm: OK
dist/index.d.ts: OK
stream differential: 134 streams, 11439 schedules, zero divergences
 7 pass
 0 fail
 34390 expect() calls
Ran 7 tests across 2 files. [2.75s]

Focused existing Rust recovery tests (verbatim):

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

Native auth browser gate (verbatim PASS lines):

auth browser: PASS (4 isolated scenarios; Chromium 149.0.7827.55)
native recovery same-account live session: PASS (original DEK preserved, capability consumed, replacement passkey signs in)
native recovery no session, enforced delay then elapsed: PASS (original DEK preserved, capability consumed, replacement passkey signs in)
native recovery: PASS (2 real-verifier scenarios; Chromium 149.0.7827.55)

Extended native crypto (verbatim PASS lines):

native recovery same-account live session: PASS (both recovery and passkey wraps preserve original DEK, v3 metadata verified, PRF absent from finish proof, capability consumed)
native recovery no session, enforced delay then elapsed: PASS (both recovery and passkey wraps preserve original DEK, v3 metadata verified, PRF absent from finish proof, capability consumed)
native recovery: PASS (2 real-verifier scenarios; Chromium 149.0.7827.55)

Production recovery browser gate (verbatim):

  5 passed (26.7s)

TRACER_TEST_PORT=4267. Separate delayed screenshot run: 1 passed (11.8s), port 4270. Transport regression: 1 failed, port 4268. Independent Rust probes: test result: FAILED. 3 passed; 3 failed; 0 ignored; 0 measured; 77 filtered out; finished in 51.34s.

Verdict: **REWORK**, focused defensive audit of `56bb6f5..18d5035`, head `18d5035270ca6792e54d7c44e9d7343ffedbff94`. Worktree `mobile-recovery` remained read-only; no edits, commits, pushes, deployments or issue closure. Read all #45 comments and contextual parent review #40 history; D113 authority is the owner comment here (absent from this head's DECISIONS.md). Ranked findings, each with a failing test in the attached evidence: 1. **F1 / P1 — expired-during-verification session waives delay.** Input: valid same-account unlocked session expires 1 second after request timestamp; pause 2200ms at verification/write boundary. Expected 86400 seconds; actual 0. `auth/http.rs:207` samples time before awaits and `auth/recovery.rs:48-49` uses that stale timestamp. Test: `audit_recovery_session_expiring_during_verification_keeps_delay`. Revocation ordering is correctly writer-locked; expiry still needs current authority time. 2. **F2 / P1 — page loss can extend the recovery path to 72 hours.** Input: sessionless start at t=0; discard capability; re-enter correct words at t=24h, then t=48h. Expected resumption at the original deadline without persisting secrets/accelerating recovery; actual t=24h denial, t=48h new request ready at t=72h. `recovery.ts:37` also discards capability on Back; `auth/recovery.rs:55` refuses active restarts. Test: `audit_recovery_after_page_discard_can_resume_at_original_deadline`. Previously disclosed limitation, independently reproduced. The 72h case assumes no signed-in device is available. Additive resume policy needs owner approval; documentation alone does not make this mobile path usable after a discarded tab. 3. **F3 / P2 — pending recovery has no owner notification or browser cancel control.** Input: start delayed recovery, read identity from a signed-in device. Expected pending visibility and a cancellation path; actual no recovery information/notification, and no browser `recovery-cancel` call/control. Test: `audit_recovery_pending_is_visible_to_signed_in_device`. Sources: `auth/sessions.rs:7-13`, `auth/recovery.rs:55-61`, tracer `core-screen.ts:225`. The server cancellation API does work, including invalidation of an already-begun replacement. This is an existing server/product gap exposed by this production UI. 4. **F4 / requirement clarification — words are sent as readable JSON over HTTPS.** Input: Start recovery with a public 24-word fixture. Expected per audit job: no plaintext application words leave browser; actual exact payload `{username,words}` at `recovery-auth.ts:10`. Boolean-only transport test fails (expected false, received true). `contracts/keywrap.md:6-7` explicitly requires server plaintext words for Argon2id, and the server also generates rotated words. This follows the current contract and is not a new regression; the owner must reconcile the checklist with that contract before changing the crypto foundation. DEK/PRF never leave the browser as plaintext. Verified: both replacement passkey and recovery envelopes decrypt to the original DEK in native Chromium with real Rust verifier/SQLite; v3 input metadata and unchanged `infraternal/keywrap/v1|UUID|kind` AAD; PRF absent from finish proofs. Old passkeys/envelopes, sessions, API keys and approvals are revoked atomically per contract. Server readiness remains authoritative; exactly one concurrent start succeeds; cancellation invalidates tokens and pending replacement ceremonies. Missing/other-account/expired/pending/revoked sessions retain the wait. No session device/source binding exists; existing bearer-cookie replay can qualify for D113, independently of enrollment ceremony binding. Username measurements (interleaved local debug, 40 samples each, loaded host): identical 401 status/body/no cookie. Valid wrong phrases: known p50 514848 µs / p99 782445 µs; unknown 517385 / 741487 µs. Malformed phrases: known 606 / 1149 µs; unknown 611 / 857 µs. No clear separation demonstrated; this is not a general timing proof. Recovery-start and registration-finish both throttle request 121 with 429 and Retry-After: 60 under the unchanged browser partition. No partial word-guessing response was found. [Complete logs, failing tests, findings, manifest and production screenshots](https://git.kayg.org/attachments/2ba24640-5759-4fe8-8a76-0aeaaec1afe6) — ZIP SHA256 `453bf05d7b429e63e0795b8a0aea5cc2c064d022c04145bba056abcf8af4605f`. Logs contain no secret payloads; screenshots use public deterministic fixture words. The scratch directory will be removed after this record is posted. Screenshots are for owner review; no visual-quality verdict is made. [Production delayed recovery, 393×852](https://git.kayg.org/attachments/c3464a87-ea90-4624-9d0a-c7eb5f1a3a03) · [1440×900](https://git.kayg.org/attachments/3e381acd-4920-4bf5-b980-072d4d4b0440) First fast gate output (verbatim result lines and gate table; complete output attached): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.38s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.98s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.62s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.18s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.28s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.62s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.84s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: FAILED. 69 passed; 2 failed; 6 ignored; 0 measured; 0 filtered out; finished in 178.31s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099408 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | FAIL (101) | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ``` Rebuilt isolation output (verbatim): ```text test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 76 filtered out; finished in 60.51s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 76 filtered out; finished in 0.77s ``` The first fast run failed two unchanged WebSocket cases; both pass in rebuilt isolation. Initial shared-target follow-ups reused the extra-probe binary and are labelled `stale-*`, excluded from head gate results. No cause is assigned solely from isolation success. Repeated fast gate output (verbatim result lines and gate table; complete output attached): ```text test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.91s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.11s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.10s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.19s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.61s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.20s test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s test result: ok. 71 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 235.27s test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 109.14s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.16s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.56s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s advisories ok, bans ok, licenses ok, sources ok PT_INTERP: absent; size: 16099408 bytes PT_INTERP: absent; size: 13519320 bytes +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ dist/ghostty-web.js: OK dist/ghostty-vt.wasm: OK dist/index.d.ts: OK stream differential: 134 streams, 11439 schedules, zero divergences 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.75s] ``` Focused existing Rust recovery tests (verbatim): ```text test result: ok. 12 passed; 0 failed; 1 ignored; 0 measured; 64 filtered out; finished in 24.26s ``` Native auth browser gate (verbatim PASS lines): ```text auth browser: PASS (4 isolated scenarios; Chromium 149.0.7827.55) native recovery same-account live session: PASS (original DEK preserved, capability consumed, replacement passkey signs in) native recovery no session, enforced delay then elapsed: PASS (original DEK preserved, capability consumed, replacement passkey signs in) native recovery: PASS (2 real-verifier scenarios; Chromium 149.0.7827.55) ``` Extended native crypto (verbatim PASS lines): ```text native recovery same-account live session: PASS (both recovery and passkey wraps preserve original DEK, v3 metadata verified, PRF absent from finish proof, capability consumed) native recovery no session, enforced delay then elapsed: PASS (both recovery and passkey wraps preserve original DEK, v3 metadata verified, PRF absent from finish proof, capability consumed) native recovery: PASS (2 real-verifier scenarios; Chromium 149.0.7827.55) ``` Production recovery browser gate (verbatim): ```text 5 passed (26.7s) ``` TRACER_TEST_PORT=4267. Separate delayed screenshot run: `1 passed (11.8s)`, port 4270. Transport regression: 1 failed, port 4268. Independent Rust probes: `test result: FAILED. 3 passed; 3 failed; 0 ignored; 0 measured; 77 filtered out; finished in 51.34s`.
Author
Owner

Recovery fixes started on mobile-recovery at base/head 18d5035270. Read repository contract, architecture/process, all #45 and parent #40 comments, and downloaded audit evidence (comment 30593). Porting audit regressions before fixes. Owner task authorizes additive resumability and browser-only recovery derivation; no new foundational crypto library, push, deployment or merge.

Recovery fixes started on mobile-recovery at base/head 18d5035270ca6792e54d7c44e9d7343ffedbff94. Read repository contract, architecture/process, all #45 and parent #40 comments, and downloaded audit evidence (comment 30593). Porting audit regressions before fixes. Owner task authorizes additive resumability and browser-only recovery derivation; no new foundational crypto library, push, deployment or merge.
Author
Owner

Additive contract proposal before implementation: recovery resume re-verifies authority and reissues a capability while preserving the stored ready deadline, including after capability expiry; cancellation/completion delete pending state. Authenticated sessions disclose only pending ready_at; each signed-in browser shows persistent cancellation notice plus toast. Start/cancel/complete audit rows commit with state changes. Recovery v2 uses existing WebCrypto HKDF-SHA256 with distinct auth/wrap info strings over 256-bit BIP-39 entropy; only auth secret reaches Argon2 storage, words and wrap key stay local. Browser generates setup/rotation words. Existing phrase PHC hashes cannot verify an HKDF output: explicit one-time legacy upgrade is required, writer-locked and permanently disables phrase admission on upgrade; the UI will state this exception. Envelope v1 ciphertext/AAD stays decryptable locally. No additional crypto engine/dependency.

Additive contract proposal before implementation: recovery resume re-verifies authority and reissues a capability while preserving the stored ready deadline, including after capability expiry; cancellation/completion delete pending state. Authenticated sessions disclose only pending ready_at; each signed-in browser shows persistent cancellation notice plus toast. Start/cancel/complete audit rows commit with state changes. Recovery v2 uses existing WebCrypto HKDF-SHA256 with distinct auth/wrap info strings over 256-bit BIP-39 entropy; only auth secret reaches Argon2 storage, words and wrap key stay local. Browser generates setup/rotation words. Existing phrase PHC hashes cannot verify an HKDF output: explicit one-time legacy upgrade is required, writer-locked and permanently disables phrase admission on upgrade; the UI will state this exception. Envelope v1 ciphertext/AAD stays decryptable locally. No additional crypto engine/dependency.
Author
Owner

Audit regressions ported and reproduced at base: 0 passed; 3 failed (6.64s), target/recovery-fixes/audit-red.log. Expiry actual 0 vs expected 86400; discarded page retry at 24h denied, retry at 48h ready offset 72h; session lacked recovery information. Boolean transport regression also failed (readable words in payload). F1 focused green: 11 passed; 0 failed; 1 ignored (33.37s), f1-green.log. Writer-locked expiry now samples the HTTP clock after verification/database waits; no pre-verification session sliding.

Audit regressions ported and reproduced at base: 0 passed; 3 failed (6.64s), target/recovery-fixes/audit-red.log. Expiry actual 0 vs expected 86400; discarded page retry at 24h denied, retry at 48h ready offset 72h; session lacked recovery information. Boolean transport regression also failed (readable words in payload). F1 focused green: 11 passed; 0 failed; 1 ignored (33.37s), f1-green.log. Writer-locked expiry now samples the HTTP clock after verification/database waits; no pre-verification session sliding.
Author
Owner

Completed logical slices (full exact-commit fast gates pending): F1 7c4de14, clock sampled under writer lock; focused 11 passed/1 ignored. Resume contract 129b92e, server f26145b (12 passed/1 ignored, 21.94s), browser 531a781 (6 passed, 21.9s including discarded-page resume). Audit schema 964d16f, notice contract a7a670d, lifecycle/session e8961d3 (14 passed/1 ignored, 37.40s). Verifier/envelope schema 493b66a and browser-only threat/migration contract 8f05d14. Resumption regression now reports retry_at_24h_denied=false; retry_at_48h_ready_offset_hours=24. Logs target/recovery-fixes/. The initial fast run is dependency warmup, not exact-head evidence after subsequent slices; exact source snapshots will be gated before completion.

Completed logical slices (full exact-commit fast gates pending): F1 7c4de14, clock sampled under writer lock; focused 11 passed/1 ignored. Resume contract 129b92e, server f26145b (12 passed/1 ignored, 21.94s), browser 531a781 (6 passed, 21.9s including discarded-page resume). Audit schema 964d16f, notice contract a7a670d, lifecycle/session e8961d3 (14 passed/1 ignored, 37.40s). Verifier/envelope schema 493b66a and browser-only threat/migration contract 8f05d14. Resumption regression now reports retry_at_24h_denied=false; retry_at_48h_ready_offset_hours=24. Logs target/recovery-fixes/. The initial fast run is dependency warmup, not exact-head evidence after subsequent slices; exact source snapshots will be gated before completion.
Author
Owner

Completed v2 slices: crypto ff273a0, authenticated wrap metadata 8bd6140, browser-verifier enrollment 6200deb, resumable verifier authentication/one-time legacy upgrade 839b4f5, local HKDF/entropy eb9070a, recovery UI 8545ffa. Server full: 77 passed/6 ignored (188.49s); final statement-atomic recovery subset: 16 passed/1 ignored (38.30s). Native Chromium: 4 auth + 2 recovery scenarios PASS, both retain original DEK. Browser transport and already-upgraded retry: 2 passed (5.6s). F3 socket e3cc80b and UI 12428cc pass real two-device and production notice/cancel probes. An explicit verifier-first retry guard prevents retransmitting already-upgraded words. Two synchronization/lint fixups will be folded into their logical commits before exact snapshots are gated; updated SHAs and full logs will follow.

Completed v2 slices: crypto ff273a0, authenticated wrap metadata 8bd6140, browser-verifier enrollment 6200deb, resumable verifier authentication/one-time legacy upgrade 839b4f5, local HKDF/entropy eb9070a, recovery UI 8545ffa. Server full: 77 passed/6 ignored (188.49s); final statement-atomic recovery subset: 16 passed/1 ignored (38.30s). Native Chromium: 4 auth + 2 recovery scenarios PASS, both retain original DEK. Browser transport and already-upgraded retry: 2 passed (5.6s). F3 socket e3cc80b and UI 12428cc pass real two-device and production notice/cancel probes. An explicit verifier-first retry guard prevents retransmitting already-upgraded words. Two synchronization/lint fixups will be folded into their logical commits before exact snapshots are gated; updated SHAs and full logs will follow.
Author
Owner

Completed browser test fixtures ea74162 and native-auth fixtures 1c36e68: verifier-only request fields are checked against independently derived HKDF output; native PRF/Rust SQLite coverage preserves the original DEK. Clock-skew finding: with browser time +7 days, Continue enabled despite a server delay of 3600 s (target/recovery-fixes/skew-red.log). Fixed in dbe4385 using server duration + monotonic time and foreground resumption; targeted green: 3 passed (11.6s), TypeScript check passed. Exact-snapshot fast gates are running; no mixed-source gate result is counted. History fixups were folded into their logical modules before verification.

Completed browser test fixtures ea74162 and native-auth fixtures 1c36e68: verifier-only request fields are checked against independently derived HKDF output; native PRF/Rust SQLite coverage preserves the original DEK. Clock-skew finding: with browser time +7 days, Continue enabled despite a server delay of 3600 s (target/recovery-fixes/skew-red.log). Fixed in dbe4385 using server duration + monotonic time and foreground resumption; targeted green: 3 passed (11.6s), TypeScript check passed. Exact-snapshot fast gates are running; no mixed-source gate result is counted. History fixups were folded into their logical modules before verification.
Author
Owner

Production-build screenshots for owner review: every immediate/delayed recovery step, persistent signed-in cancellation notice/toast and explicit older-key disclosure, at 393×852 and 1440×900. Word screenshots use public deterministic fixtures only. I have not judged visual quality. Production recovery subset: 10 passed (26.2s), port 4651; target/recovery-fixes/final-recovery-browser.log.

Production-build screenshots for owner review: every immediate/delayed recovery step, persistent signed-in cancellation notice/toast and explicit older-key disclosure, at 393×852 and 1440×900. Word screenshots use public deterministic fixtures only. I have not judged visual quality. Production recovery subset: 10 passed (26.2s), port 4651; target/recovery-fixes/final-recovery-browser.log. - [recovery-audit-legacy-upgrade-warning-1440x900.png](https://git.kayg.org/attachments/1a98613e-1e29-44f9-b600-30e8b60537e1) - [recovery-audit-legacy-upgrade-warning-393x852.png](https://git.kayg.org/attachments/dd3edcef-c589-49c5-95e6-ed59a75ae43c) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-create-passkey-1440x900.png](https://git.kayg.org/attachments/feba3215-a0ef-4bb1-9480-da7d59a253a8) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-create-passkey-393x852.png](https://git.kayg.org/attachments/82e0d547-8d71-4891-8da9-d8148feababc) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-enter-words-empty-1440x900.png](https://git.kayg.org/attachments/94625656-cc83-4956-8ad2-ffc32886a5ca) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-enter-words-empty-393x852.png](https://git.kayg.org/attachments/020f530c-0d53-4dae-a26a-73206f08c616) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-enter-words-public-fixture-1440x900.png](https://git.kayg.org/attachments/1de08111-4baf-4c51-8c78-44244947d886) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-enter-words-public-fixture-393x852.png](https://git.kayg.org/attachments/3b43cbb4-604c-4f83-b09d-f6c4290c91f9) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-save-rotated-public-fixture-1440x900.png](https://git.kayg.org/attachments/42751613-fbad-4f7c-b30c-9d12b8253a8e) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-save-rotated-public-fixture-393x852.png](https://git.kayg.org/attachments/c0122bfa-ef84-4586-8109-dd8677a1317f) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-wait-24h-1440x900.png](https://git.kayg.org/attachments/128c08f1-3629-45df-b88a-eab12cc40a38) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-wait-24h-393x852.png](https://git.kayg.org/attachments/9018c3b9-1eb4-4e74-9977-b548a3ee001e) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-welcome-1440x900.png](https://git.kayg.org/attachments/e47e48d8-7c75-4a5b-b483-77d29f8dba27) - [recovery-audit-recovery-recovery-delayed-steps-and-original-DEK-welcome-393x852.png](https://git.kayg.org/attachments/ba0154f9-ed33-479f-b27c-9e522aa06284) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-create-passkey-1440x900.png](https://git.kayg.org/attachments/7b6b21f9-ed13-466b-adc7-dbaad5276d8e) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-create-passkey-393x852.png](https://git.kayg.org/attachments/551a24e1-9c1f-47df-8d45-0defa34a3cdd) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-enter-words-empty-1440x900.png](https://git.kayg.org/attachments/4c181abf-8f18-4d85-ad77-0585900c3341) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-enter-words-empty-393x852.png](https://git.kayg.org/attachments/c96816fc-45d8-4803-b17c-8b0ab6360113) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-enter-words-public-fixture-1440x900.png](https://git.kayg.org/attachments/8261fa8b-62d3-4c5a-a785-96027f326b14) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-enter-words-public-fixture-393x852.png](https://git.kayg.org/attachments/e359eb91-c0ef-4aa9-b1b5-0902cfe4fc3d) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-ready-now-1440x900.png](https://git.kayg.org/attachments/5b1ddf63-1013-48d0-83f7-fde9ddd730b0) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-ready-now-393x852.png](https://git.kayg.org/attachments/7d0c0d13-f894-4ec0-8e1d-bed1d34d7491) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-save-rotated-public-fixture-1440x900.png](https://git.kayg.org/attachments/c0012a2f-4d23-4ad2-b536-07abe8cd38ac) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-save-rotated-public-fixture-393x852.png](https://git.kayg.org/attachments/398daff6-184c-452c-94be-0548055922ae) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-welcome-1440x900.png](https://git.kayg.org/attachments/89ecab40-07f9-4981-b449-18793279253d) - [recovery-audit-recovery-recovery-immediate-steps-and-original-DEK-welcome-393x852.png](https://git.kayg.org/attachments/2d45ec72-ed26-4848-a220-0caa54f7caeb) - [recovery-audit-recovery-signed-in-device--2abce-ice-and-can-cancel-recovery-pending-recovery-notice-1440x900.png](https://git.kayg.org/attachments/f0491b9d-f850-4a79-b4bd-b7753f1a6802) - [recovery-audit-recovery-signed-in-device--2abce-ice-and-can-cancel-recovery-pending-recovery-notice-393x852.png](https://git.kayg.org/attachments/9b289624-f042-40d9-b4e7-6a00006bca6d)
Author
Owner

Review finding / additive admission correction proposed before implementation: auth/crypto.rs maps all exhausted two-slot Argon2 admission to Denied (401). An explicitly selected older-key browser treats a 401 verifier probe as permission to attempt legacy phrase migration; transient overload must not trigger that fallback. Keep the two-slot bound and existing generic 429 + Retry-After: 60 by mapping capacity exhaustion to Throttled, independent of account/version. Add a real-semaphore failing regression plus browser 429/503 non-disclosure tests. No new engine or account/version signal.

Review finding / additive admission correction proposed before implementation: auth/crypto.rs maps all exhausted two-slot Argon2 admission to Denied (401). An explicitly selected older-key browser treats a 401 verifier probe as permission to attempt legacy phrase migration; transient overload must not trigger that fallback. Keep the two-slot bound and existing generic 429 + Retry-After: 60 by mapping capacity exhaustion to Throttled, independent of account/version. Add a real-semaphore failing regression plus browser 429/503 non-disclosure tests. No new engine or account/version signal.
Author
Owner

Admission finding reproduced: target/recovery-fixes/capacity-red.log, real two-slot semaphore, 0 passed / 1 failed (0.77 s): exhausted verifier returned Denied, not Throttled. Fixed in the crypto module: 1 passed (0.41 s), target/recovery-fixes/capacity-green.log. Browser non-disclosure probes: 4 passed (7.1 s), including explicit older-key selection with 429 and 503, zero phrase migration requests. Contract commit 816c427 precedes implementation; fixed capacity bound and generic response remain. Production screenshots attached (28); no visual-quality claim.

Admission finding reproduced: target/recovery-fixes/capacity-red.log, real two-slot semaphore, 0 passed / 1 failed (0.77 s): exhausted verifier returned Denied, not Throttled. Fixed in the crypto module: 1 passed (0.41 s), target/recovery-fixes/capacity-green.log. Browser non-disclosure probes: 4 passed (7.1 s), including explicit older-key selection with 429 and 503, zero phrase migration requests. Contract commit 816c427 precedes implementation; fixed capacity bound and generic response remain. Production screenshots attached (28); no visual-quality claim.
Author
Owner

Exact-snapshot gate 7c4de14 (717.75 s), exit 0. Unedited output: target/recovery-fixes/atomic-gates/7c4de14-fast.log.

| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
 7 pass
 0 fail
Ran 7 tests across 2 files. [2.46s]
Exact-snapshot gate 7c4de14 (717.75 s), exit 0. Unedited output: target/recovery-fixes/atomic-gates/7c4de14-fast.log. ```text | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | 7 pass 0 fail Ran 7 tests across 2 files. [2.46s] ```
Author
Owner

Further auth review finding: verify_credential uses one database read for a known identity and two for an unknown identity (fallback owner PHC), despite paying the same Argon2 cost. Proposed correction under the existing no-oracle contract: one indexed owner/candidate join for both, retaining dummy verification and generic denial. A real SQLite acquisition counter regression is running before the fix; no verifier is mocked. No contract/engine replacement is needed. Native browser gate currently passes all 4 auth + 2 recovery scenarios. Scale socket test e1c214e: 16/16 devices see start/cancel, other account 0 events (0.64 s). Core fixture selector 21868f0: focused production check 1 passed (14.6 s).

Further auth review finding: verify_credential uses one database read for a known identity and two for an unknown identity (fallback owner PHC), despite paying the same Argon2 cost. Proposed correction under the existing no-oracle contract: one indexed owner/candidate join for both, retaining dummy verification and generic denial. A real SQLite acquisition counter regression is running before the fix; no verifier is mocked. No contract/engine replacement is needed. Native browser gate currently passes all 4 auth + 2 recovery scenarios. Scale socket test e1c214e: 16/16 devices see start/cancel, other account 0 events (0.64 s). Core fixture selector 21868f0: focused production check 1 passed (14.6 s).
Author
Owner

No-oracle finding reproduced: identity-work-red.log, known/unknown real SQLite acquisitions 1 vs 2, 0 passed/1 failed (2.29 s). Fixed with one indexed owner/candidate join plus unchanged dummy Argon2: identity-work-green.log, 1 passed (2.06 s). New logical auth commit follows e1c214e. Local paired diagnostic repeats had load averages rising from 13.45 to 15.36 on 8 cores and p99 ranging 43.8–190.4 ms for v2; they are retained as loaded evidence, not a regression certification. Browser subset, original-DEK native gate and full-cap socket scope remain green; complete exact-snapshot gates continue after the final-head checks.

No-oracle finding reproduced: identity-work-red.log, known/unknown real SQLite acquisitions 1 vs 2, 0 passed/1 failed (2.29 s). Fixed with one indexed owner/candidate join plus unchanged dummy Argon2: identity-work-green.log, 1 passed (2.06 s). New logical auth commit follows e1c214e. Local paired diagnostic repeats had load averages rising from 13.45 to 15.36 on 8 cores and p99 ranging 43.8–190.4 ms for v2; they are retained as loaded evidence, not a regression certification. Browser subset, original-DEK native gate and full-cap socket scope remain green; complete exact-snapshot gates continue after the final-head checks.
Author
Owner

Threat-note clarification before documentation: the approved one-time legacy phrase exception can reveal the old DEK through its retained v1 envelope. Recovery deliberately preserves that DEK; new recovery words protect the new wrapping material but cannot erase plaintext/key knowledge a server retained from the old protocol. State this explicitly rather than claiming word rotation retroactively secures an already-known DEK. Fresh v2 accounts and normal verifier recovery disclose no unwrap material. No DEK/secret rotation or new proof engine is introduced in this job.

Threat-note clarification before documentation: the approved one-time legacy phrase exception can reveal the old DEK through its retained v1 envelope. Recovery deliberately preserves that DEK; new recovery words protect the new wrapping material but cannot erase plaintext/key knowledge a server retained from the old protocol. State this explicitly rather than claiming word rotation retroactively secures an already-known DEK. Fresh v2 accounts and normal verifier recovery disclose no unwrap material. No DEK/secret rotation or new proof engine is introduced in this job.
Author
Owner

Startup latency finding: be0763b notice wiring made showTerminal unconditionally call session after showAuthState had already fetched it. Startup-read-red.log reproduces failure when only the second read returns 503: signed-in terminal and pending notice never mount. Reuse the existing authenticated startup snapshot; no extra round trip, while socket and foreground authority checks remain. No polling or new component. This is required by D41/D81 and keeps the new recovery notice from increasing reload latency.

Startup latency finding: be0763b notice wiring made showTerminal unconditionally call session after showAuthState had already fetched it. Startup-read-red.log reproduces failure when only the second read returns 503: signed-in terminal and pending notice never mount. Reuse the existing authenticated startup snapshot; no extra round trip, while socket and foreground authority checks remain. No polling or new component. This is required by D41/D81 and keeps the new recovery notice from increasing reload latency.
Author
Owner

Exact-snapshot gate 129b92e (573.51 s), exit 0. Unedited output: target/recovery-fixes/atomic-gates/129b92e-fast.log.

| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
 7 pass
 0 fail
Ran 7 tests across 2 files. [1.99s]
Exact-snapshot gate 129b92e (573.51 s), exit 0. Unedited output: target/recovery-fixes/atomic-gates/129b92e-fast.log. ```text | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | 7 pass 0 fail Ran 7 tests across 2 files. [1.99s] ```
Author
Owner

Exact-snapshot gate f26145b (692.84 s), exit 1. Unedited output: target/recovery-fixes/atomic-gates/f26145b-fast.log.

| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | FAIL (101)   |
| cargo-deny                | PASS         |
| static builds             | PASS         |
Exact-snapshot gate f26145b (692.84 s), exit 1. Unedited output: target/recovery-fixes/atomic-gates/f26145b-fast.log. ```text | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | FAIL (101) | | cargo-deny | PASS | | static builds | PASS | ```
Author
Owner

Checkpoint: source frozen at 955ef5e (32 logical commits after 18d5035). Every exact-commit tracer typecheck and production build passes; evidence atomic-gates/app-results.jsonl and per-SHA app logs. Latest native browser gate: all 4 auth + 2 recovery scenarios PASS (final-native-browser-2.log). Startup fix 735a53e: one identity read, 2 production checks passed (3.8 s). Author checklist and threat/measurement handoff: docs/verification/recovery-audit.md.

Exact fast gates: 7c4de14 and 129b92e PASS. f26145b currently fails two pre-existing real-socket timing checks: busy_logout closed before expected reply, and sequential half-open admission exceeded the five-second Hello window under load ~19 on 8 cores; all other Rust gates/static builds PASS. Required browser gate likewise has a 20 ms latency threshold failure under loaded runs (23.6, 32.2, 67.9 ms), with no threshold change. These are outstanding gate results, not completion. Continuing verification; no push/merge/deploy.

Checkpoint: source frozen at 955ef5e (32 logical commits after 18d5035). Every exact-commit tracer typecheck and production build passes; evidence atomic-gates/app-results.jsonl and per-SHA app logs. Latest native browser gate: all 4 auth + 2 recovery scenarios PASS (final-native-browser-2.log). Startup fix 735a53e: one identity read, 2 production checks passed (3.8 s). Author checklist and threat/measurement handoff: docs/verification/recovery-audit.md. Exact fast gates: 7c4de14 and 129b92e PASS. f26145b currently fails two pre-existing real-socket timing checks: busy_logout closed before expected reply, and sequential half-open admission exceeded the five-second Hello window under load ~19 on 8 cores; all other Rust gates/static builds PASS. Required browser gate likewise has a 20 ms latency threshold failure under loaded runs (23.6, 32.2, 67.9 ms), with no threshold change. These are outstanding gate results, not completion. Continuing verification; no push/merge/deploy.
Author
Owner

Exact-snapshot gate f26145b (260.29 s), exit 1. Unedited output: target/recovery-fixes/atomic-gates/f26145b-fast-attempt2.log.

| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | FAIL (101)   |
| cargo-deny                | PASS         |
| static builds             | PASS         |
Exact-snapshot gate f26145b (260.29 s), exit 1. Unedited output: target/recovery-fixes/atomic-gates/f26145b-fast-attempt2.log. ```text | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | FAIL (101) | | cargo-deny | PASS | | static builds | PASS | ```
Author
Owner

Completion gate condition: shared-host load reached 31.96 on 8 cores. The unchanged 18d5035 production browser fixture also failed to connect within its existing assertion window (baseline-latency-loaded.log), before measuring p99. Current-head browser p99 and socket authority/Hello-window checks remain outstanding under overload. Need a quieter shared-host execution window from the host's job scheduling/other running work; this job does not alter authority or performance limits. Continuing independent exact-snapshot checks and retaining every failed attempt. Native/crypto/browser recovery tests and all 32 archived app checks/builds pass.

Completion gate condition: shared-host load reached 31.96 on 8 cores. The unchanged 18d5035 production browser fixture also failed to connect within its existing assertion window (baseline-latency-loaded.log), before measuring p99. Current-head browser p99 and socket authority/Hello-window checks remain outstanding under overload. Need a quieter shared-host execution window from the host's job scheduling/other running work; this job does not alter authority or performance limits. Continuing independent exact-snapshot checks and retaining every failed attempt. Native/crypto/browser recovery tests and all 32 archived app checks/builds pass.
Author
Owner

Exact-snapshot gate 964d16f (237.39 s), exit 1. Unedited output: target/recovery-fixes/atomic-gates/964d16f-fast-attempt1.log.

| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | FAIL (101)   |
| cargo-deny                | PASS         |
| static builds             | PASS         |
Exact-snapshot gate 964d16f (237.39 s), exit 1. Unedited output: target/recovery-fixes/atomic-gates/964d16f-fast-attempt1.log. ```text | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | FAIL (101) | | cargo-deny | PASS | | static builds | PASS | ```
Author
Owner

Exact-snapshot gate 531a781 (323.64 s), exit 0. Unedited output: target/recovery-fixes/atomic-gates/531a781-fast-attempt1.log.

| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
 7 pass
 0 fail
Ran 7 tests across 2 files. [3.74s]
Exact-snapshot gate 531a781 (323.64 s), exit 0. Unedited output: target/recovery-fixes/atomic-gates/531a781-fast-attempt1.log. ```text | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | 7 pass 0 fail Ran 7 tests across 2 files. [3.74s] ```
Author
Owner

Warm-build finding: migration 0009 exists in exact snapshots 531a781/a7a670d, but the cached real server unit-test binary contains CREATE TABLE users and does not contain CREATE TABLE recovery_audit. Evidence: target/recovery-fixes/migration-embedding-red.json. Pinned SQLx 0.8.6 documents that migrate! cannot watch newly added files without a build.rs rerun-if-changed=migrations directive. Adding directory tracking; immutable gate runner will explicitly refresh the migration macro for pre-fix snapshots so their schema-only gates exercise their actual migrations.

Warm-build finding: migration 0009 exists in exact snapshots 531a781/a7a670d, but the cached real server unit-test binary contains CREATE TABLE users and does not contain CREATE TABLE recovery_audit. Evidence: target/recovery-fixes/migration-embedding-red.json. Pinned SQLx 0.8.6 documents that migrate! cannot watch newly added files without a build.rs rerun-if-changed=migrations directive. Adding directory tracking; immutable gate runner will explicitly refresh the migration macro for pre-fix snapshots so their schema-only gates exercise their actual migrations.
Author
Owner

Exact-snapshot gate a7a670d (197.49 s), exit 1. Unedited output: target/recovery-fixes/atomic-gates/a7a670d-fast-attempt1.log.

| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | FAIL (101)   |
| cargo-deny                | PASS         |
| static builds             | PASS         |
Exact-snapshot gate a7a670d (197.49 s), exit 1. Unedited output: target/recovery-fixes/atomic-gates/a7a670d-fast-attempt1.log. ```text | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | FAIL (101) | | cargo-deny | PASS | | static builds | PASS | ```
Author
Owner

Completed warm migration build fix 9eb13e7 and evidence doc update 7f60cf9. Real Auth::new/SQLite probe: before fix expected=10, applied=9 (assertion failure); directory watch expected=10, applied=10; second newly added SQL file with unchanged Rust expected=11, applied=11. Unedited migration-embedding-{red,green,warm-green}.log and probe retained. Schema-only archive checks will be repeated with actual migrations; prior 531a781 cached pass is invalidated.

Completed warm migration build fix 9eb13e7 and evidence doc update 7f60cf9. Real Auth::new/SQLite probe: before fix expected=10, applied=9 (assertion failure); directory watch expected=10, applied=10; second newly added SQL file with unchanged Rust expected=11, applied=11. Unedited migration-embedding-{red,green,warm-green}.log and probe retained. Schema-only archive checks will be repeated with actual migrations; prior 531a781 cached pass is invalidated.
Author
Owner

Head 7f60cf9 fast test result, verbatim: test result: FAILED. 78 passed; 2 failed; 8 ignored; 0 measured; 0 filtered out; finished in 239.79s. Failures are existing review3_busy_expiry (unexpected websocket close) and review4_ten_second_open_preserves_authority (live ten-second open rejected); all recovery regressions pass. Shared 8-core host load 24.87/24.78/22.48. Full log target/recovery-fixes/final-fast-attempt1.log; static builds still running. Test concurrency was 2; next retry uses 1 without changing assertions, production timeouts, or latency budgets. Completion remains outstanding.

Head 7f60cf9 fast test result, verbatim: test result: FAILED. 78 passed; 2 failed; 8 ignored; 0 measured; 0 filtered out; finished in 239.79s. Failures are existing review3_busy_expiry (unexpected websocket close) and review4_ten_second_open_preserves_authority (live ten-second open rejected); all recovery regressions pass. Shared 8-core host load 24.87/24.78/22.48. Full log target/recovery-fixes/final-fast-attempt1.log; static builds still running. Test concurrency was 2; next retry uses 1 without changing assertions, production timeouts, or latency budgets. Completion remains outstanding.
Author
Owner

Head 7f60cf9 fast retry with one test worker remains red under shared-host load 18.87/20.55/21.34. All recovery regressions pass, including 16-device notifications with account isolation. test result: FAILED. 77 passed; 3 failed; 8 ignored; 0 measured; 0 filtered out; finished in 241.75s
Existing failures: backend reply deadline, busy expiry, busy recovery. Their production authority storage deadline remains 25 ms. No timeout or budget relaxed. Native browser gate now running; remaining exact-snapshot fast checks will wait for a quieter host (load <=8 on 8 cores). Unedited log: target/recovery-fixes/final-fast-attempt2.log

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

Head 7f60cf9 fast retry with one test worker remains red under shared-host load 18.87/20.55/21.34. All recovery regressions pass, including 16-device notifications with account isolation. test result: FAILED. 77 passed; 3 failed; 8 ignored; 0 measured; 0 filtered out; finished in 241.75s Existing failures: backend reply deadline, busy expiry, busy recovery. Their production authority storage deadline remains 25 ms. No timeout or budget relaxed. Native browser gate now running; remaining exact-snapshot fast checks will wait for a quieter host (load <=8 on 8 cores). Unedited log: target/recovery-fixes/final-fast-attempt2.log ```text +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | FAIL (101) | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ```
Author
Owner

Final-head native gate 7f60cf9: TRACER_TEST_PORT=4651 nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl nixpkgs#zig_0_15 -c scripts/verify-auth-browser, exit 0. Verbatim output (capabilities remain in private IPC, no traces):

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

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

  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)
Bundled 23 modules in 26ms

  recovery.js  95.47 KB  (entry point)

native recovery same-account live session: PASS (original DEK preserved, capability consumed, replacement passkey signs in)
native recovery no session, enforced delay then elapsed: PASS (original DEK preserved, capability consumed, replacement passkey signs in)
native recovery: PASS (2 real-verifier scenarios; Chromium 149.0.7827.55)

Final-head native gate 7f60cf9: TRACER_TEST_PORT=4651 nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl nixpkgs#zig_0_15 -c scripts/verify-auth-browser, exit 0. Verbatim output (capabilities remain in private IPC, no traces): ```text Compiling infraternal-server v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/mobile-recovery/crates/infraternal-server) Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.60s bun install v1.4.2 (744846f84) Checked 5 installs across 7 packages (no changes) [6.00ms] Bundled 11 modules in 14ms 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) Bundled 23 modules in 26ms recovery.js 95.47 KB (entry point) native recovery same-account live session: PASS (original DEK preserved, capability consumed, replacement passkey signs in) native recovery no session, enforced delay then elapsed: PASS (original DEK preserved, capability consumed, replacement passkey signs in) native recovery: PASS (2 real-verifier scenarios; Chromium 149.0.7827.55) ```
Author
Owner

Reviewable checkpoint at 7f60cf9 (mobile-recovery, base 18d5035), not completion: recovery-audit-checkpoint-7f60cf9.zip, 2208703 bytes, SHA-256 5722ccada7fd50a9631ea7e752bb980e5448f751d1aa2846e55f1bcdcb8f5aa8. Includes final diff/history, threat/migration note, author checklist, 34/34 app check/build results, full native PASS output, red/green regression proofs, 28 screenshot references/copies and scale measurements. HANDOFF.md/checkpoint.json list outstanding gates and exact reproduction. Only 2 immutable fast snapshots are accepted so far; the stale migration-cache pass is explicitly invalidated. Final fast remains red in existing 25ms authority tests under load; full browser latency remains red against 20ms. Remaining checks are queued for a quiet shared-host window; asked owner/scheduler when it is available. Nothing pushed, deployed, merged or closed.

Reviewable checkpoint at 7f60cf9 (mobile-recovery, base 18d5035), not completion: [recovery-audit-checkpoint-7f60cf9.zip](https://git.kayg.org/attachments/f16e6ea8-2590-43c8-a80b-fe5bde0bf7e0), 2208703 bytes, SHA-256 5722ccada7fd50a9631ea7e752bb980e5448f751d1aa2846e55f1bcdcb8f5aa8. Includes final diff/history, threat/migration note, author checklist, 34/34 app check/build results, full native PASS output, red/green regression proofs, 28 screenshot references/copies and scale measurements. HANDOFF.md/checkpoint.json list outstanding gates and exact reproduction. Only 2 immutable fast snapshots are accepted so far; the stale migration-cache pass is explicitly invalidated. Final fast remains red in existing 25ms authority tests under load; full browser latency remains red against 20ms. Remaining checks are queued for a quiet shared-host window; asked owner/scheduler when it is available. Nothing pushed, deployed, merged or closed.
Author
Owner

Final-head production browser command (port 4651), exit 1: 34 passed, 3 failed (6.7m). Recovery flow, deadline/resume, cancellation and skew checks passed. Failures are motion copy feedback, startup terminal readiness (undefined until renderer initialization), and terminal p99 23.5ms versus <20ms. No own compilation ran alongside browser checks. Shared-host load fell from >26 to 8.29 by completion; running isolated startup and then the full suite again in this quieter window. Unedited output: target/recovery-fixes/final-playwright-3.log

  1) test/motion-audit.spec.ts:39:1 › measure deployed motion at 4x CPU and capture production screens 

    Error: expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

      510 |     return { filter: style.filter, transform: style.transform, strokeDashoffset: Number.parseFloat(style.strokeDashoffset) };
      511 |   }));
    > 512 |   expect(reducedCopy.events.every((event) => event.property === "opacity")).toBe(true);
          |                                                                             ^
      513 |   expect(reducedCopy.events.some((event) => event.property === "opacity")).toBe(true);
      514 |   expect(reducedCopyStyles).toEqual([
      515 |     { filter: "none", transform: "none", strokeDashoffset: 0 },
        at /home/kayg/Developer/infraternal/.worktrees/mobile-recovery/apps/tracer/test/motion-audit.spec.ts:512:77

    attachment #1: production setup (image/png) ────────────────────────────────────────────────────
    test-results/motion-audit-measure-deplo-2b97c--capture-production-screens/attachments/production-setup-66dff19c23a9a173e83756fd92513a1cc4251d1f.png
    ────────────────────────────────────────────────────────────────────────────────────────────────

    attachment #2: production recovery (image/png) ─────────────────────────────────────────────────
    test-results/motion-audit-measure-deplo-2b97c--capture-production-screens/attachments/production-recovery-c363a5464171fca28730b93f64df4df2472d1dfc.png
    ────────────────────────────────────────────────────────────────────────────────────────────────

    Error Context: test-results/motion-audit-measure-deplo-2b97c--capture-production-screens/error-context.md

  2) test/recovery.spec.ts:292:1 › terminal startup reuses its authenticated recovery snapshot ─────

    Error: expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: undefined

    Call Log:
    - Timeout 5000ms exceeded while waiting on the predicate

      303 |   await page.goto("/?mock=1");
      304 |   await expect(page.locator("#recovery-notice")).toBeVisible();
    > 305 |   await expect.poll(() => page.evaluate(() => window.__tracerTestDouble?.isConnected())).toBe(true);
          |                                                                                          ^
      306 |   expect(sessionReads).toBe(1);
      307 | });
      308 |
        at /home/kayg/Developer/infraternal/.worktrees/mobile-recovery/apps/tracer/test/recovery.spec.ts:305:90

    Error Context: test-results/recovery-terminal-startup--28d88-enticated-recovery-snapshot/error-context.md

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

    Error: expect(received).toBeLessThan(expected)

    Expected: < 20
    Received:   23.5

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

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

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

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

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

  3 failed
    test/motion-audit.spec.ts:39:1 › measure deployed motion at 4x CPU and capture production screens 
    test/recovery.spec.ts:292:1 › terminal startup reuses its authenticated recovery snapshot ──────
    test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe ───
  34 passed (6.7m)

Final-head production browser command (port 4651), exit 1: 34 passed, 3 failed (6.7m). Recovery flow, deadline/resume, cancellation and skew checks passed. Failures are motion copy feedback, startup terminal readiness (undefined until renderer initialization), and terminal p99 23.5ms versus <20ms. No own compilation ran alongside browser checks. Shared-host load fell from >26 to 8.29 by completion; running isolated startup and then the full suite again in this quieter window. Unedited output: target/recovery-fixes/final-playwright-3.log ```text 1) test/motion-audit.spec.ts:39:1 › measure deployed motion at 4x CPU and capture production screens Error: expect(received).toBe(expected) // Object.is equality Expected: true Received: false 510 | return { filter: style.filter, transform: style.transform, strokeDashoffset: Number.parseFloat(style.strokeDashoffset) }; 511 | })); > 512 | expect(reducedCopy.events.every((event) => event.property === "opacity")).toBe(true); | ^ 513 | expect(reducedCopy.events.some((event) => event.property === "opacity")).toBe(true); 514 | expect(reducedCopyStyles).toEqual([ 515 | { filter: "none", transform: "none", strokeDashoffset: 0 }, at /home/kayg/Developer/infraternal/.worktrees/mobile-recovery/apps/tracer/test/motion-audit.spec.ts:512:77 attachment #1: production setup (image/png) ──────────────────────────────────────────────────── test-results/motion-audit-measure-deplo-2b97c--capture-production-screens/attachments/production-setup-66dff19c23a9a173e83756fd92513a1cc4251d1f.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: production recovery (image/png) ───────────────────────────────────────────────── test-results/motion-audit-measure-deplo-2b97c--capture-production-screens/attachments/production-recovery-c363a5464171fca28730b93f64df4df2472d1dfc.png ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results/motion-audit-measure-deplo-2b97c--capture-production-screens/error-context.md 2) test/recovery.spec.ts:292:1 › terminal startup reuses its authenticated recovery snapshot ───── Error: expect(received).toBe(expected) // Object.is equality Expected: true Received: undefined Call Log: - Timeout 5000ms exceeded while waiting on the predicate 303 | await page.goto("/?mock=1"); 304 | await expect(page.locator("#recovery-notice")).toBeVisible(); > 305 | await expect.poll(() => page.evaluate(() => window.__tracerTestDouble?.isConnected())).toBe(true); | ^ 306 | expect(sessionReads).toBe(1); 307 | }); 308 | at /home/kayg/Developer/infraternal/.worktrees/mobile-recovery/apps/tracer/test/recovery.spec.ts:305:90 Error Context: test-results/recovery-terminal-startup--28d88-enticated-recovery-snapshot/error-context.md 3) test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe ── Error: expect(received).toBeLessThan(expected) Expected: < 20 Received: 23.5 162 | const measuredP99 = /(?:^|\n)p99: ([\d.]+) ms/.exec(probeReport)?.[1]; 163 | expect(measuredP99).toBeDefined(); > 164 | expect(Number(measuredP99)).toBeLessThan(20); | ^ 165 | console.log(`S1 probe result (${probeCount} keys)\n${probeReport}`); 166 | await testInfo.attach("tracer-probe-results.txt", { 167 | body: probeReport, at /home/kayg/Developer/infraternal/.worktrees/mobile-recovery/apps/tracer/test/terminal.spec.ts:164:31 attachment #1: signin-light (image/png) ──────────────────────────────────────────────────────── test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/attachments/signin-light-f8dca029b9b421e8614295b1637e1afac69eef49.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: signin-dark (image/png) ───────────────────────────────────────────────────────── test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/attachments/signin-dark-ec461410f1ba2a41046e0fd0cf99275f8c9fb9a2.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: tracer-terminal.png (image/png) ───────────────────────────────────────────────── test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/attachments/tracer-terminal-png-fc2cc2cd1ac5d95eeb13d5bd0f96591ac0a2cfd7.png ──────────────────────────────────────────────────────────────────────────────────────────────── Error Context: test-results/terminal-first-run-passkey-29742-esume-and-the-latency-probe/error-context.md 3 failed test/motion-audit.spec.ts:39:1 › measure deployed motion at 4x CPU and capture production screens test/recovery.spec.ts:292:1 › terminal startup reuses its authenticated recovery snapshot ────── test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe ─── 34 passed (6.7m) ```
Author
Owner

Blocked handoff: branch mobile-recovery, base 18d5035, head 7f60cf92b1. 34 atomic commits; tracked worktree clean. recovery-audit-blocked-7f60cf9.zip, 2219034 bytes, SHA-256 4bf8802dea295f3e8fc587f10957ddedba6e6bb2d66cd6a812b2758311e0e889. HANDOFF.md/checkpoint.json include exact state, reproduction, immutable-SHA gate manifest, red/green evidence, 50-session/16-device numbers and screenshot references.

All 34 app check/build snapshots pass; native browser gate passes all 6 real scenarios. Current required fast/full-browser gates are red under loaded shared-host conditions. Only 2 immutable fast snapshots are accepted; 32 remain outstanding, including invalidated stale migration-cache pass. No assertions, authority timeouts or latency budgets were relaxed. An actual CPU sample was 100% busy across the available 8 cores, load 15.49/16.85/19.98. Needed from owner/job scheduler: a quiet host window to rerun strict 25ms authority and <20ms browser checks and complete per-SHA fast validation. Baseline connection failure and all red runs are retained; they do not prove absence of a product regression.

Final-head commands/output, verbatim:
RUST_TEST_THREADS=1 nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl nixpkgs#zig_0_15 -c scripts/verify fast

test result: FAILED. 77 passed; 3 failed; 8 ignored; 0 measured; 0 filtered out; finished in 241.75s
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | FAIL (101)   |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+

TRACER_TEST_PORT=4651 nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl nixpkgs#zig_0_15 -c scripts/verify-auth-browser

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

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

  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)
Bundled 23 modules in 26ms

  recovery.js  95.47 KB  (entry point)

native recovery same-account live session: PASS (original DEK preserved, capability consumed, replacement passkey signs in)
native recovery no session, enforced delay then elapsed: PASS (original DEK preserved, capability consumed, replacement passkey signs in)
native recovery: PASS (2 real-verifier scenarios; Chromium 149.0.7827.55)

cd apps/tracer && TRACER_TEST_PORT=4651 bun x playwright test

  3 failed
    test/motion-audit.spec.ts:39:1 › measure deployed motion at 4x CPU and capture production screens 
    test/recovery.spec.ts:292:1 › terminal startup reuses its authenticated recovery snapshot ──────
    test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe ───
  34 passed (6.7m)

Terminal p99 was 23.5ms versus the unchanged <20ms limit. Isolated startup regression then passed (1.1s scenario, 6.5s harness, one session read); output in startup-final-isolated.log. Complete unedited gate output is in the attachment.

Explicit migration exception: an old phrase PHC cannot authenticate a derived verifier; the selected older-key upgrade sends words once on successful upgrade, verifier-first retries prevent resending after a committed upgrade. Legacy wrap version is preserved until local replacement. No owner live account was touched. No push, deploy, merge or issue close. No background jobs remain; only this job scratch/build targets were deleted, prior target evidence restored, current evidence kept in target/recovery-fixes/. This is not Definition of Done.

Blocked handoff: branch mobile-recovery, base 18d5035, head 7f60cf92b10ded0d6c15011be7c1306d76384180. 34 atomic commits; tracked worktree clean. [recovery-audit-blocked-7f60cf9.zip](https://git.kayg.org/attachments/977aa4f5-7832-4a78-9b53-262700f42351), 2219034 bytes, SHA-256 4bf8802dea295f3e8fc587f10957ddedba6e6bb2d66cd6a812b2758311e0e889. HANDOFF.md/checkpoint.json include exact state, reproduction, immutable-SHA gate manifest, red/green evidence, 50-session/16-device numbers and screenshot references. All 34 app check/build snapshots pass; native browser gate passes all 6 real scenarios. Current required fast/full-browser gates are red under loaded shared-host conditions. Only 2 immutable fast snapshots are accepted; 32 remain outstanding, including invalidated stale migration-cache pass. No assertions, authority timeouts or latency budgets were relaxed. An actual CPU sample was 100% busy across the available 8 cores, load 15.49/16.85/19.98. Needed from owner/job scheduler: a quiet host window to rerun strict 25ms authority and <20ms browser checks and complete per-SHA fast validation. Baseline connection failure and all red runs are retained; they do not prove absence of a product regression. Final-head commands/output, verbatim: RUST_TEST_THREADS=1 nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl nixpkgs#zig_0_15 -c scripts/verify fast ```text test result: FAILED. 77 passed; 3 failed; 8 ignored; 0 measured; 0 filtered out; finished in 241.75s +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | FAIL (101) | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ``` TRACER_TEST_PORT=4651 nix shell nixpkgs#binutils nixpkgs#file nixpkgs#gnumake nixpkgs#perl nixpkgs#zig_0_15 -c scripts/verify-auth-browser ```text Compiling infraternal-server v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/mobile-recovery/crates/infraternal-server) Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.60s bun install v1.4.2 (744846f84) Checked 5 installs across 7 packages (no changes) [6.00ms] Bundled 11 modules in 14ms 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) Bundled 23 modules in 26ms recovery.js 95.47 KB (entry point) native recovery same-account live session: PASS (original DEK preserved, capability consumed, replacement passkey signs in) native recovery no session, enforced delay then elapsed: PASS (original DEK preserved, capability consumed, replacement passkey signs in) native recovery: PASS (2 real-verifier scenarios; Chromium 149.0.7827.55) ``` cd apps/tracer && TRACER_TEST_PORT=4651 bun x playwright test ```text 3 failed test/motion-audit.spec.ts:39:1 › measure deployed motion at 4x CPU and capture production screens test/recovery.spec.ts:292:1 › terminal startup reuses its authenticated recovery snapshot ────── test/terminal.spec.ts:5:1 › first run, passkey login, terminal resume, and the latency probe ─── 34 passed (6.7m) ``` Terminal p99 was 23.5ms versus the unchanged <20ms limit. Isolated startup regression then passed (1.1s scenario, 6.5s harness, one session read); output in startup-final-isolated.log. Complete unedited gate output is in the attachment. Explicit migration exception: an old phrase PHC cannot authenticate a derived verifier; the selected older-key upgrade sends words once on successful upgrade, verifier-first retries prevent resending after a committed upgrade. Legacy wrap version is preserved until local replacement. No owner live account was touched. No push, deploy, merge or issue close. No background jobs remain; only this job scratch/build targets were deleted, prior target evidence restored, current evidence kept in target/recovery-fixes/. This is not Definition of Done.
Author
Owner

Independent defensive review started: read-only mobile-recovery head 7f60cf92b1, diff base 56bb6f51d7 (dev...head). Read #45 and parent #40 history; continuing prior expiry/resumption findings and examining browser-only derivation, legacy exception, transactional races and regression sensitivity. Experiments/gates run in isolated review-recovery scratch; port 4745. No source edits, commits, push or deployment.

Independent defensive review started: read-only mobile-recovery head 7f60cf92b10ded0d6c15011be7c1306d76384180, diff base 56bb6f51d7ed82f21ceea67bfd10d9e8640b42ab (dev...head). Read #45 and parent #40 history; continuing prior expiry/resumption findings and examining browser-only derivation, legacy exception, transactional races and regression sensitivity. Experiments/gates run in isolated review-recovery scratch; port 4745. No source edits, commits, push or deployment.
Author
Owner

Independent R1 / P1 requirement conflict at 7f60cf9: recovery-auth.ts:18 POSTs the complete words to recovery-upgrade after explicit older-key selection and a 401 verifier probe. Public-fixture production-browser reproduction fails the absolute non-disclosure assertion: expected false, received true (1 failed; disclosure.log). auth.ts:357 uses those words as entropy for the v1 envelope; replacement retains that same DEK. Thus the receiving server can retain the original DEK, including after new words/passkey installation. keywrap.md:385-420 explicitly permits/documents this, so it follows the checked-in exception but conflicts with this review job hard never-reaches-server requirement. Successful version upgrade bounds acceptance, not receipt on failed attempts. Requires owner requirement resolution or removal of phrase admission; no real account secrets used. Findings persist in ~/.local/state/codex-jobs/infraternal/review-recovery/findings.md.

Independent R1 / P1 requirement conflict at 7f60cf9: recovery-auth.ts:18 POSTs the complete words to recovery-upgrade after explicit older-key selection and a 401 verifier probe. Public-fixture production-browser reproduction fails the absolute non-disclosure assertion: expected false, received true (1 failed; disclosure.log). auth.ts:357 uses those words as entropy for the v1 envelope; replacement retains that same DEK. Thus the receiving server can retain the original DEK, including after new words/passkey installation. keywrap.md:385-420 explicitly permits/documents this, so it follows the checked-in exception but conflicts with this review job hard never-reaches-server requirement. Successful version upgrade bounds acceptance, not receipt on failed attempts. Requires owner requirement resolution or removal of phrase admission; no real account secrets used. Findings persist in ~/.local/state/codex-jobs/infraternal/review-recovery/findings.md.
Author
Owner

Independent review step at unchanged 7f60cf9: tracer typecheck and production recovery/browser transport subset pass (13 passed, 36.6s, port 4745). Reversing dbe4385 in scratch makes the skew test fail: Continue recovery enabled despite server delay=3600; restored before green rerun. Preserved 42 production screenshots using public fixture words, no visual-quality verdict. Head fast gate is running; expiry/resumption/account-isolation regressions pass so far. Independent multi-connection disk-SQLite restart and cancellation/completion probes are prepared; source worktree remains clean.

Independent review step at unchanged 7f60cf9: tracer typecheck and production recovery/browser transport subset pass (13 passed, 36.6s, port 4745). Reversing dbe4385 in scratch makes the skew test fail: Continue recovery enabled despite server delay=3600; restored before green rerun. Preserved 42 production screenshots using public fixture words, no visual-quality verdict. Head fast gate is running; expiry/resumption/account-isolation regressions pass so far. Independent multi-connection disk-SQLite restart and cancellation/completion probes are prepared; source worktree remains clean.
Author
Owner

Independent R2 / P1 at 7f60cf9: registration-finish accepts an expired recovery capability after writer contention. Real HTTP/software-WebAuthn/Argon2/disk-SQLite WAL probe: capability expires in 1s; begin finish while separate connection holds writer; wait until ceremony consumed, hold 2200ms, release. Actual HTTP 200; expected 401 (independent-races.log: 2 passed, 1 failed, 24.76s). http.rs:219 samples now before awaits; webauthn.rs:110 adds verifier hashing then writer wait; recovery.rs complete expiry predicate still binds the admission time. This violates capability expiry, not the 24h readiness wait. Concurrent cancel/complete (8 races) and disk restart/concurrent resumption probes passed. Recheck actual time under writer lock/statement and ceremony lifetime too. Source/log retained in ~/.local/state/codex-jobs/infraternal/review-recovery/.

Independent R2 / P1 at 7f60cf9: registration-finish accepts an expired recovery capability after writer contention. Real HTTP/software-WebAuthn/Argon2/disk-SQLite WAL probe: capability expires in 1s; begin finish while separate connection holds writer; wait until ceremony consumed, hold 2200ms, release. Actual HTTP 200; expected 401 (independent-races.log: 2 passed, 1 failed, 24.76s). http.rs:219 samples now before awaits; webauthn.rs:110 adds verifier hashing then writer wait; recovery.rs complete expiry predicate still binds the admission time. This violates capability expiry, not the 24h readiness wait. Concurrent cancel/complete (8 races) and disk restart/concurrent resumption probes passed. Recheck actual time under writer lock/statement and ceremony lifetime too. Source/log retained in ~/.local/state/codex-jobs/infraternal/review-recovery/.
Author
Owner

Independent review continuation (run 2): mobile-recovery remains read-only at 7f60cf92b1; diff base 56bb6f51d7. R1/P1, R2/P1 and R3/P2 preserved. Finishing rate/admission and crypto review, remaining disk-SQLite probes and mutation sensitivity; port 4745. Absolute no-words/no-unwrap-material-to-server requirement remains binding; R1 requires a fix. No source commits, push or deployment.

Independent review continuation (run 2): mobile-recovery remains read-only at 7f60cf92b10ded0d6c15011be7c1306d76384180; diff base 56bb6f51d7ed82f21ceea67bfd10d9e8640b42ab. R1/P1, R2/P1 and R3/P2 preserved. Finishing rate/admission and crypto review, remaining disk-SQLite probes and mutation sensitivity; port 4745. Absolute no-words/no-unwrap-material-to-server requirement remains binding; R1 requires a fix. No source commits, push or deployment.
Author
Owner

Independent continuation step at unchanged 7f60cf9: remaining head probes 6 passed/1 failed (48.27s); only failure reconfirms R2 expired finish, HTTP 200 expected 401. Source limits verified at 30 browser/10 device, all five recovery routes covered, untrusted XFF cannot reset budget; global recovery throttles after 120 with Retry-After=60. Six known/unknown/pending denials identical. Eight disk cancel/complete races serialize; 72h disk restart/concurrent resume and concurrent legacy upgrade preserve deadline/audit. R3 server half passes: unchanged ready time, actual remaining 90000s; browser reproduction rejects it. Production crypto helpers: independent HKDF match, six wrong-domain/account/kind/version/tamper denials, 100 unique salts/nonces; 2 bun tests, 312 assertions pass. Findings/logs in ~/.local/state/codex-jobs/infraternal/review-recovery/. Final fast gate still running; no reviewed source changes.

Independent continuation step at unchanged 7f60cf9: remaining head probes 6 passed/1 failed (48.27s); only failure reconfirms R2 expired finish, HTTP 200 expected 401. Source limits verified at 30 browser/10 device, all five recovery routes covered, untrusted XFF cannot reset budget; global recovery throttles after 120 with Retry-After=60. Six known/unknown/pending denials identical. Eight disk cancel/complete races serialize; 72h disk restart/concurrent resume and concurrent legacy upgrade preserve deadline/audit. R3 server half passes: unchanged ready time, actual remaining 90000s; browser reproduction rejects it. Production crypto helpers: independent HKDF match, six wrong-domain/account/kind/version/tamper denials, 100 unique salts/nonces; 2 bun tests, 312 assertions pass. Findings/logs in ~/.local/state/codex-jobs/infraternal/review-recovery/. Final fast gate still running; no reviewed source changes.
Author
Owner

Regression sensitivity complete at 7f60cf9: exact cc92fe4 production patch reversed in scratch makes identity-work test fail (SQLite reads 1 vs 2; 0 passed/1 failed, 2.47s); restored patch passes (1 passed, 1.85s). Together with dbe4385 countdown reversal and pre-71e24fc capacity-signal implementation, three regression checks detect their defects and pass restored. Reviewed source remains clean. Fast workspace gate still progressing; review host 8 vCPU KVM/i9-9900K, loaded 23.43/22.84/24.21 at verification start, so these durations are not performance certification.

Regression sensitivity complete at 7f60cf9: exact cc92fe4 production patch reversed in scratch makes identity-work test fail (SQLite reads 1 vs 2; 0 passed/1 failed, 2.47s); restored patch passes (1 passed, 1.85s). Together with dbe4385 countdown reversal and pre-71e24fc capacity-signal implementation, three regression checks detect their defects and pass restored. Reviewed source remains clean. Fast workspace gate still progressing; review host 8 vCPU KVM/i9-9900K, loaded 23.43/22.84/24.21 at verification start, so these durations are not performance certification.
Author
Owner

Independent defensive review finished at head 7f60cf92b1; diff base 56bb6f51d7. Verdict: do not merge. Counts: P0=0, P1=2, P2=1, P3=0.

R1/P1: recovery-auth.ts:18 sends legacy words that can unwrap the retained original DEK. The owner's absolute never-sent requirement stands; remove phrase admission. Checked-in migration exception does not satisfy this job requirement. R2/P1: recovery.rs:238/webAuthn finish uses admission time after hashing/writer waits; real HTTP/disk-SQLite proof replaces credentials after recovery expiry (200 expected 401). R3/P2: recovery-auth.ts:24 rejects honest remaining wait=90000s after server clock rollback despite preserved deadline. P1 findings already commented individually above.

Completed remaining checklist: production source/global admission and generic-denial probes pass, independent HKDF/AAD/wrong-version/tamper checks pass (2 bun tests/312 assertions), concurrent legacy upgrade commits once, eight cancel/complete races serialize, disk restart/concurrent resumes retain deadline and one live capability. Seven independent Rust probes: 6 passed/1 failed (48.27s); sole failure R2. Three fix-removal sensitivity checks fail when changed and pass restored (countdown dbe4385, Argon2 capacity 71e24fc, identity lookup cc92fe4). Retained native browser coverage: 4 auth + 2 recovery scenarios pass; production recovery subset 13 passed (36.6s). Heap zeroization limits and scope limits recorded in findings.md.

Reviewed worktree unchanged/read-only; no commits, push, deployment or issue closure. Scratch worktrees/build products removed; findings, probe sources, mutation patches, logs and 42 production screenshots retained in ~/.local/state/codex-jobs/infraternal/review-recovery/. Host: 8-vCPU KVM/i9-9900K, starting load 23.43/22.84/24.21; timing evidence is not perf-budget certification.

scripts/verify fast, systemd scope CPUWeight=10000, TRACER_TEST_PORT=4745: exit 0. Full output fast-run2.log; verbatim server/summary/protocol output:

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

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

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

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

A green repository gate does not cover the independently reproduced R1/R2/R3 failures.

Independent defensive review finished at head 7f60cf92b10ded0d6c15011be7c1306d76384180; diff base 56bb6f51d7ed82f21ceea67bfd10d9e8640b42ab. Verdict: **do not merge**. Counts: P0=0, P1=2, P2=1, P3=0. R1/P1: recovery-auth.ts:18 sends legacy words that can unwrap the retained original DEK. The owner's absolute never-sent requirement stands; remove phrase admission. Checked-in migration exception does not satisfy this job requirement. R2/P1: recovery.rs:238/webAuthn finish uses admission time after hashing/writer waits; real HTTP/disk-SQLite proof replaces credentials after recovery expiry (200 expected 401). R3/P2: recovery-auth.ts:24 rejects honest remaining wait=90000s after server clock rollback despite preserved deadline. P1 findings already commented individually above. Completed remaining checklist: production source/global admission and generic-denial probes pass, independent HKDF/AAD/wrong-version/tamper checks pass (2 bun tests/312 assertions), concurrent legacy upgrade commits once, eight cancel/complete races serialize, disk restart/concurrent resumes retain deadline and one live capability. Seven independent Rust probes: 6 passed/1 failed (48.27s); sole failure R2. Three fix-removal sensitivity checks fail when changed and pass restored (countdown dbe4385, Argon2 capacity 71e24fc, identity lookup cc92fe4). Retained native browser coverage: 4 auth + 2 recovery scenarios pass; production recovery subset 13 passed (36.6s). Heap zeroization limits and scope limits recorded in findings.md. Reviewed worktree unchanged/read-only; no commits, push, deployment or issue closure. Scratch worktrees/build products removed; findings, probe sources, mutation patches, logs and 42 production screenshots retained in ~/.local/state/codex-jobs/infraternal/review-recovery/. Host: 8-vCPU KVM/i9-9900K, starting load 23.43/22.84/24.21; timing evidence is not perf-budget certification. scripts/verify fast, systemd scope CPUWeight=10000, TRACER_TEST_PORT=4745: exit 0. Full output fast-run2.log; verbatim server/summary/protocol output: ```text test result: ok. 80 passed; 0 failed; 8 ignored; 0 measured; 0 filtered out; finished in 227.85s +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ stream differential: 134 streams, 11439 schedules, zero divergences (pass) Rust and TypeScript preserve every frame at all boundaries and random multi-splits [3888.81ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [11.45ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [3.93s] ``` A green repository gate does not cover the independently reproduced R1/R2/R3 failures.
Author
Owner

Recovery review fixes started on mobile-recovery at 7f60cf92b1. Read #45 and parent #40 histories and independent review artifacts. Plan: reproduce R2 with retained real HTTP/disk-SQLite probe, remove all phrase admission for R1 and add signed-in local-envelope rotation (no new UI, D162), then validate honest rollback waits for R3. Proposed keywrap correction: delete the legacy migration exception; legacy accounts require an unlocked signed-in device to upload only a v2 envelope plus verifier, with replacement-needed state in authenticated session. Owner task authorizes this contract correction; no decision edits, push or deploy.

Recovery review fixes started on mobile-recovery at 7f60cf92b10ded0d6c15011be7c1306d76384180. Read #45 and parent #40 histories and independent review artifacts. Plan: reproduce R2 with retained real HTTP/disk-SQLite probe, remove all phrase admission for R1 and add signed-in local-envelope rotation (no new UI, D162), then validate honest rollback waits for R3. Proposed keywrap correction: delete the legacy migration exception; legacy accounts require an unlocked signed-in device to upload only a v2 envelope plus verifier, with replacement-needed state in authenticated session. Owner task authorizes this contract correction; no decision edits, push or deploy.
Author
Owner

R1/R3 red evidence reproduced at base: production browser legacy probe disclosed public fixture words (expected false, received true), rollback wait=90000s never reached Recovery started; target/reviewer-browser-red.log (2 failed). New callable-rotation tests also failed first (function absent), target/r1-client-red.log. Client fixes: verifier-only request on every path, legacy control removed, local envelope+verifier rotation after acknowledgement; crypto 2 passed/0 failed (10 assertions). Remaining-wait boundary tests red 7 passed/2 failed, green 9 passed/0 failed; cap is existing 48h recovery capability policy. Retained production probes now 6 passed (1.5m), target/reviewer-browser-green.log. Rust real contention probe still building native dependencies under host load ~28; no Rust success claim yet.

R1/R3 red evidence reproduced at base: production browser legacy probe disclosed public fixture words (expected false, received true), rollback wait=90000s never reached Recovery started; target/reviewer-browser-red.log (2 failed). New callable-rotation tests also failed first (function absent), target/r1-client-red.log. Client fixes: verifier-only request on every path, legacy control removed, local envelope+verifier rotation after acknowledgement; crypto 2 passed/0 failed (10 assertions). Remaining-wait boundary tests red 7 passed/2 failed, green 9 passed/0 failed; cap is existing 48h recovery capability policy. Retained production probes now 6 passed (1.5m), target/reviewer-browser-green.log. Rust real contention probe still building native dependencies under host load ~28; no Rust success claim yet.
Author
Owner

R2 reproduced: reviewer_http_expired_capability_cannot_complete_after_writer_wait returned HTTP 200, expected 401 (0 passed/1 failed, 4.55s; target/r2-red.log). Under-lock live clock plus statement-time capability/ceremony expiry now pass 2/2 (7.29s; r2-green.log). Reverting the fix makes the extra ceremony-expiry contention test return 200 too (r2-ceremony-red.log). R1 independent self-review found callback-after-dismissal and cookie-account-switch gaps in new rotation: delayed callback tests failed 2/4; real HTTP foreign-account rotation returned 200 expected 401. Client now revokes settled callbacks and pins X-Infraternal-User; server compares that identity before hashing and under the writer lock. Client rotation+wait 13 passed/0 failed; retained crypto probes 2 passed/312 assertions. Full production recovery run: 14 passed/1 timeout in immediate retry; CPUWeight=10000 rerun passed 1/1 (11.9s), both logs retained. Exact R2 gate initial clippy rejected transaction function length 107/100; narrow rationale annotation added and full gate restarted.

R2 reproduced: reviewer_http_expired_capability_cannot_complete_after_writer_wait returned HTTP 200, expected 401 (0 passed/1 failed, 4.55s; target/r2-red.log). Under-lock live clock plus statement-time capability/ceremony expiry now pass 2/2 (7.29s; r2-green.log). Reverting the fix makes the extra ceremony-expiry contention test return 200 too (r2-ceremony-red.log). R1 independent self-review found callback-after-dismissal and cookie-account-switch gaps in new rotation: delayed callback tests failed 2/4; real HTTP foreign-account rotation returned 200 expected 401. Client now revokes settled callbacks and pins X-Infraternal-User; server compares that identity before hashing and under the writer lock. Client rotation+wait 13 passed/0 failed; retained crypto probes 2 passed/312 assertions. Full production recovery run: 14 passed/1 timeout in immediate retry; CPUWeight=10000 rerun passed 1/1 (11.9s), both logs retained. Exact R2 gate initial clippy rejected transaction function length 107/100; narrow rationale annotation added and full gate restarted.
Author
Owner

Rotation server tests: 5 passed, 0 failed (27.24s). Tests cover local-DEK retention, metadata state, freshness, account binding, concurrent rotation and old-capability invalidation. No replacement screen was added (D162).

Production screenshots attached for owner review: phone entry, desktop entry, phone ready state. Public fixtures only.

Session-status diagnostic: 50 sessions, disk SQLite WAL 3.53.3, 1,000 samples after 200 warmups; p50 32.68 -> 36.62 us, p99 75.75 -> 78.43 us; zero added network trips or idle queries. 8-core shared KVM host, load 23.80/27.89/26.20; not pinned perf-VM certification. Evidence: target/session-scale.py and target/session-scale.json.

R2 frozen-tree fast gate: native fmt/fmt/clippy passed; unrelated shim attached_backpressure_and_detached_progress failed under load (detached producer deadline). Static builds still running. Will rerun once with CPUWeight=10000 and preserve both results; no unrelated timing-test changes.

Rotation server tests: 5 passed, 0 failed (27.24s). Tests cover local-DEK retention, metadata state, freshness, account binding, concurrent rotation and old-capability invalidation. No replacement screen was added (D162). Production screenshots attached for owner review: [phone entry](https://git.kayg.org/attachments/5aa1fbfd-9fe4-4d39-b44e-839911c94fab), [desktop entry](https://git.kayg.org/attachments/9642811e-d138-41d3-a8b0-a3beba700d79), [phone ready state](https://git.kayg.org/attachments/6bb8b107-47cd-4d74-b7fa-9198acfdf8a2). Public fixtures only. Session-status diagnostic: 50 sessions, disk SQLite WAL 3.53.3, 1,000 samples after 200 warmups; p50 32.68 -> 36.62 us, p99 75.75 -> 78.43 us; zero added network trips or idle queries. 8-core shared KVM host, load 23.80/27.89/26.20; not pinned perf-VM certification. Evidence: target/session-scale.py and target/session-scale.json. R2 frozen-tree fast gate: native fmt/fmt/clippy passed; unrelated shim attached_backpressure_and_detached_progress failed under load (detached producer deadline). Static builds still running. Will rerun once with CPUWeight=10000 and preserve both results; no unrelated timing-test changes.
Author
Owner

Full production-browser run: 36 passed, 3 failed (6.6m): onboarding busy-counter timing, renderer binary-prefix canary, terminal latency. Requested single CPUWeight=10000 --last-failed retry: 2 passed, terminal latency still fails (37.1s); p99 33.6 ms against unchanged <20 ms. Recovery-specific checks all passed in the full run. Logs: target/tracer-full.log and target/tracer-full-retry.log. No unrelated test or threshold changes.

Both static architectures pass the frozen R2 gate; its sole failure was the unrelated shim producer deadline. The full gate is rerunning once under CPUWeight=10000.

Full production-browser run: 36 passed, 3 failed (6.6m): onboarding busy-counter timing, renderer binary-prefix canary, terminal latency. Requested single CPUWeight=10000 --last-failed retry: 2 passed, terminal latency still fails (37.1s); p99 33.6 ms against unchanged <20 ms. Recovery-specific checks all passed in the full run. Logs: target/tracer-full.log and target/tracer-full-retry.log. No unrelated test or threshold changes. Both static architectures pass the frozen R2 gate; its sole failure was the unrelated shim producer deadline. The full gate is rerunning once under CPUWeight=10000.
Author
Owner

Completed R2: b7e76810f5, verified immutable index tree 033db62ed5. Live HTTP clock is resampled under the SQLite writer lock; capability and ceremony consumption check commit-time expiry. Real disk-WAL probe changes expected-401/actual-200 to 401; extra ceremony probe and no-mutation checks pass.

Initial fast gate: unrelated shim attached_backpressure_and_detached_progress failed under load. Requested single CPUWeight=10000 full rerun passes; both outputs retained (target/r2-fast-unweighted.log, target/r2-fast-scoped.log). Verbatim gate summary and TS result:

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

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

Completed R2: b7e76810f5fdc56540306863cb52934d6e41c6da, verified immutable index tree 033db62ed5cea0c0888db0f115c700a9ee346293. Live HTTP clock is resampled under the SQLite writer lock; capability and ceremony consumption check commit-time expiry. Real disk-WAL probe changes expected-401/actual-200 to 401; extra ceremony probe and no-mutation checks pass. Initial fast gate: unrelated shim attached_backpressure_and_detached_progress failed under load. Requested single CPUWeight=10000 full rerun passes; both outputs retained (target/r2-fast-unweighted.log, target/r2-fast-scoped.log). Verbatim gate summary and TS result: ``` +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.36s] ```
Author
Owner

R1 server fast run (unweighted): 6 failures under shared load, including unchanged backend reply deadline, ten-second connection, terminal echo and socket authority tests. Recovery expiry probe failed its setup assertion (recovery-ready 401 vs expected 200 at reviewer_tests.rs:200), before the replacement/writer-contention assertion. Rotations and the ceremony-expiry probe passed. Logs retained verbatim: target/r1-server-fast.log. Static builds still running; the requested single scoped retry will use CPUWeight=10000 plus RUST_TEST_THREADS=1, without changing any test deadline or fixture. Host load currently 35.72/27.01/21.22 on 8 cores.

R1 server fast run (unweighted): 6 failures under shared load, including unchanged backend reply deadline, ten-second connection, terminal echo and socket authority tests. Recovery expiry probe failed its setup assertion (recovery-ready 401 vs expected 200 at reviewer_tests.rs:200), before the replacement/writer-contention assertion. Rotations and the ceremony-expiry probe passed. Logs retained verbatim: target/r1-server-fast.log. Static builds still running; the requested single scoped retry will use CPUWeight=10000 plus RUST_TEST_THREADS=1, without changing any test deadline or fixture. Host load currently 35.72/27.01/21.22 on 8 cores.
Author
Owner

Completed R1 server phrase-path removal and signed-in rotation. Head e8bc3e5437; immutable tree b604fb6ad5. Gate exit 0; full output: target/r1-server-fast-scoped.log. Verbatim summary:

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

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

Completed R1 server phrase-path removal and signed-in rotation. Head e8bc3e54375ba954e9d2aaf18f79f9803c5190de; immutable tree b604fb6ad5f75fb2fdddefca20ed32bf3a234c89. Gate exit 0; full output: target/r1-server-fast-scoped.log. Verbatim summary: ``` +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [3.83s] ```
Author
Owner

Completed R1 client local wrapping, legacy control removal and independent crypto regressions. Head e0930f95d6; immutable tree 039909dd2b. Gate exit 0; full output: target/r1-client-fast.log. Verbatim summary:

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

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

Completed R1 client local wrapping, legacy control removal and independent crypto regressions. Head e0930f95d65e12aa61891d5485758d3fe2360129; immutable tree 039909dd2b2b7140f4b78850e5181d52cf30a036. Gate exit 0; full output: target/r1-client-fast.log. Verbatim summary: ``` +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.12s] ```
Author
Owner

Completed R3 policy-bounded rollback waits, nine boundary checks and independent production-browser probes. Head fd9bbf9b98; immutable tree 4f22a78d7f. Gate exit 0; full output: target/r3-fast.log. Verbatim summary:

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

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

Completed R3 policy-bounded rollback waits, nine boundary checks and independent production-browser probes. Head fd9bbf9b98663091cdd9ef2d08a361e2bda77b30; immutable tree 4f22a78d7f6244d8dc7f6a619f4044fc6de8df71. Gate exit 0; full output: target/r3-fast.log. Verbatim summary: ``` +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.44s] ```
Author
Owner

Finished R1/R2/R3 at c5cf14ca40 (mobile-recovery), tree 25f17c4da0. Five atomic commits:
c5cf14c Record the rejected phrase exception and recovery review evidence (#45)
fd9bbf9 Accept policy-bounded recovery waits after server clock rollback (#45)
e0930f9 Keep recovery replacement wrapping on the unlocked device (#45)
e8bc3e5 Replace phrase admission with signed-in recovery rotation (#45)
b7e7681 Check recovery deadlines when SQLite consumes authority (#45)

No production route or client path sends words. Signed-in local-DEK rotation exposes a callable function, with authenticated replacement state and no new UI (D162). Commit-time SQLite capability/ceremony expiry and policy-bounded rollback waits are enforced. Contract explains rejection of the old phrase exception; DECISIONS.md unchanged.

Final scripts/verify fast: exit 0, CPUWeight=10000, RUST_TEST_THREADS=1, TRACER_TEST_PORT=4746. All seven original reviewer server probes pass (obsolete concurrent phrase-upgrade adapted to signed-in rotation), plus the extra ceremony-expiry probe. Final client checks: 15 passed / 340 assertions; production disclosure + rollback browser probes: 6 passed / 8.9s; native Chromium auth/recovery: 4 + 2 real-verifier scenarios passed. Full client tsc passes. Evidence and B1/S1/S2/N1 checklist: docs/verification/recovery-review-fixes.md, target/final-fast.log, target/client-final-tests.log, target/reviewer-browser-final.log, target/native-auth-browser.log.

Unrelated-load results are retained: initial fast timing failures passed their one scoped retry. Full browser run: 36/39 passed; one scoped retry passed onboarding + renderer, while unchanged terminal probe still measured p99 33.6 ms against <20 ms. No unrelated timing-test changes; this run does not certify pinned performance-VM or physical iPhone budgets. Session-query scale diagnostic: 50 sessions, p50 32.68 -> 36.62 us, p99 75.75 -> 78.43 us, no new round trips or idle queries.

Production screenshots attached for owner review: phone entry, desktop entry, phone ready state. No push/deploy; issue left open. Complete gate output follows verbatim in numbered parts.

Finished R1/R2/R3 at c5cf14ca4088fe2347f55b15f2a8abff982ef810 (mobile-recovery), tree 25f17c4da026abcbc718411b60a52b4833de3a6c. Five atomic commits: c5cf14c Record the rejected phrase exception and recovery review evidence (#45) fd9bbf9 Accept policy-bounded recovery waits after server clock rollback (#45) e0930f9 Keep recovery replacement wrapping on the unlocked device (#45) e8bc3e5 Replace phrase admission with signed-in recovery rotation (#45) b7e7681 Check recovery deadlines when SQLite consumes authority (#45) No production route or client path sends words. Signed-in local-DEK rotation exposes a callable function, with authenticated replacement state and no new UI (D162). Commit-time SQLite capability/ceremony expiry and policy-bounded rollback waits are enforced. Contract explains rejection of the old phrase exception; DECISIONS.md unchanged. Final scripts/verify fast: exit 0, CPUWeight=10000, RUST_TEST_THREADS=1, TRACER_TEST_PORT=4746. All seven original reviewer server probes pass (obsolete concurrent phrase-upgrade adapted to signed-in rotation), plus the extra ceremony-expiry probe. Final client checks: 15 passed / 340 assertions; production disclosure + rollback browser probes: 6 passed / 8.9s; native Chromium auth/recovery: 4 + 2 real-verifier scenarios passed. Full client tsc passes. Evidence and B1/S1/S2/N1 checklist: docs/verification/recovery-review-fixes.md, target/final-fast.log, target/client-final-tests.log, target/reviewer-browser-final.log, target/native-auth-browser.log. Unrelated-load results are retained: initial fast timing failures passed their one scoped retry. Full browser run: 36/39 passed; one scoped retry passed onboarding + renderer, while unchanged terminal probe still measured p99 33.6 ms against <20 ms. No unrelated timing-test changes; this run does not certify pinned performance-VM or physical iPhone budgets. Session-query scale diagnostic: 50 sessions, p50 32.68 -> 36.62 us, p99 75.75 -> 78.43 us, no new round trips or idle queries. Production screenshots attached for owner review: [phone entry](https://git.kayg.org/attachments/5aa1fbfd-9fe4-4d39-b44e-839911c94fab), [desktop entry](https://git.kayg.org/attachments/9642811e-d138-41d3-a8b0-a3beba700d79), [phone ready state](https://git.kayg.org/attachments/6bb8b107-47cd-4d74-b7fa-9198acfdf8a2). No push/deploy; issue left open. Complete gate output follows verbatim in numbered parts.
Author
Owner

Final gate for c5cf14ca40, verbatim output part 1/2:


==> fmt

==> VT native fmt

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

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

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

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

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

running 1 test
test real_binary_preserves_input_and_output_across_24_abrupt_stops ... ok

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

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

running 1 test
test saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok

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

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

running 5 tests
test last_typist_selects_its_own_real_pty_dimensions ... ok
test repeated_tiny_credit_pauses_preserve_shell_progress ... ok
test retained_unwritten_input_survives_interleaved_ack_restart ... ok
test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok
test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok

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

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

running 1 test
test detached_shim_is_discovered_and_replays_from_the_last_observed_offset ... ok

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

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

running 1 test
test one_hertz_wakeup_is_detected_past_the_legacy_half_second_window ... ok

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

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

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

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

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

running 1 test
test unaffordable_repaints_park_until_sufficient_credit ... ok

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

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

running 1 test
test snapshot_limits_never_close_live_reconnect ... ok

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

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

running 15 tests
test relay::tests::expired_credit_resumes_retained_bytes_at_the_same_cursor ... ok
test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok
test relay::tests::output_partial_credit_and_dedup ... ok
test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement
test relay::tests::overflowing_ranges_never_mutate_cursors ... ok
test relay::tests::positive_insufficient_credit_arms_a_one_shot_deadline ... ok
test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok
test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... ok
test sessions::tests::borrowed_reader_payload_uses_reusable_cancel_safe_storage ... ok
test sessions::tests::cancelled_fragmented_shim_read_retains_header_and_body_progress ... ok
test sessions::tests::post_listen_chmod_wakes_a_connection_refused_at_bind ... ok
test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement
test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok
test sessions::tests::sequenced_attach_intersects_caps_and_legacy_attach_stays_zero ... ok
test sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... ok

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

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

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

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

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

running 0 tests

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

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

running 0 tests

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

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

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

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

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

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

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

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

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

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

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

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

     Running tests/mouse.rs (target/debug/deps/mouse-556febae1b88516e)

running 1 test
test faithful_snapshot_preserves_public_mouse_encoder_reports ... ok

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

   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/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:24:1
   │  
24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index
25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index
   │ ╰───────────────────────────────────────────────────────────────────┘ lock entries
   │  
   ├ base64 v0.21.7
     ├── base64urlsafedata v0.5.5
     │   ├── webauthn-attestation-ca v0.5.5
     │   │   └── webauthn-rs-core v0.5.5
     │   │       └── webauthn-rs v0.5.5
     │   │           └── infraternal-server v0.1.0
     │   │               └── infraternal v0.1.0
     │   ├── webauthn-rs v0.5.5 (*)
     │   ├── webauthn-rs-core v0.5.5 (*)
     │   └── webauthn-rs-proto v0.5.5
     │       └── webauthn-rs-core v0.5.5 (*)
     ├── webauthn-rs-core v0.5.5 (*)
     └── webauthn-rs-proto v0.5.5 (*)
   ├ base64 v0.22.1
     ├── axum v0.8.9
     │   └── infraternal-server v0.1.0
     │       └── infraternal v0.1.0
     ├── infraternal-server v0.1.0 (*)
     └── sqlx-core v0.8.6
         ├── sqlx v0.8.6
         │   ├── infraternal v0.1.0 (*)
         │   └── infraternal-server v0.1.0 (*)
         ├── sqlx-macros v0.8.6
         │   └── sqlx v0.8.6 (*)
         ├── sqlx-macros-core v0.8.6
         │   └── sqlx-macros v0.8.6 (*)
         └── sqlx-sqlite v0.8.6
             ├── sqlx v0.8.6 (*)
             └── sqlx-macros-core v0.8.6 (*)

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

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

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

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

warning[duplicate]: found 2 duplicate entries for crate 'rand_chacha'
    ┌─ /home/kayg/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:186:1
    │  
186 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index
187 │ │ 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
Final gate for c5cf14ca4088fe2347f55b15f2a8abff982ef810, verbatim output part 1/2: ```text ==> fmt ==> VT native fmt ==> clippy Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.18s ==> test Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s Running unittests src/main.rs (target/debug/deps/infraternal-14f12797e13d3956) running 2 tests test install::tests::dry_run_prints_a_process_surviving_user_unit ... ok test setup_token_tests::setup_token_command_reads_only_the_expected_socket_response ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/agent_daemon.rs (target/debug/deps/agent_daemon-d1403b19628fad47) running 1 test test real_binary_preserves_input_and_output_across_24_abrupt_stops ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.60s Running tests/agent_queues.rs (target/debug/deps/agent_queues-55641aad5872e227) running 1 test test saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.75s Running tests/agent_review.rs (target/debug/deps/agent_review-dcc4f72875eb105a) running 5 tests test last_typist_selects_its_own_real_pty_dimensions ... ok test repeated_tiny_credit_pauses_preserve_shell_progress ... ok test retained_unwritten_input_survives_interleaved_ack_restart ... ok test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.78s Running tests/agent_sessions.rs (target/debug/deps/agent_sessions-4399395ba0eae8b4) running 1 test test detached_shim_is_discovered_and_replays_from_the_last_observed_offset ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s Running tests/idle_canary.rs (target/debug/deps/idle_canary-edcd503aa0c743e4) running 1 test test one_hertz_wakeup_is_detected_past_the_legacy_half_second_window ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.06s Running tests/shim.rs (target/debug/deps/shim-f263eaac2963467d) running 7 tests test attached_backpressure_and_detached_progress ... ok test disallowed_signal_only_disconnects_peer ... ok test double_fork_survives_parent_death ... ok test real_shell_reconnect_resize_and_retained_exit ... ok test replacement_connection_and_malformed_limit ... ok test ring_wrap_snapshot_repaints_real_vim ... ok test user_scope_survives_parent_unit_stop ... active ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.92s Running tests/vt_credit.rs (target/debug/deps/vt_credit-8f27ef6f017beee5) running 1 test test unaffordable_repaints_park_until_sufficient_credit ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.25s Running tests/vt_reconnect.rs (target/debug/deps/vt_reconnect-774f9eb67a7daeed) running 1 test test snapshot_limits_never_close_live_reconnect ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.17s Running unittests src/lib.rs (target/debug/deps/infraternal_agent-58d2d9e79005355c) running 15 tests test relay::tests::expired_credit_resumes_retained_bytes_at_the_same_cursor ... ok test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok test relay::tests::output_partial_credit_and_dedup ... ok test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement test relay::tests::overflowing_ranges_never_mutate_cursors ... ok test relay::tests::positive_insufficient_credit_arms_a_one_shot_deadline ... ok test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... ok test sessions::tests::borrowed_reader_payload_uses_reusable_cancel_safe_storage ... ok test sessions::tests::cancelled_fragmented_shim_read_retains_header_and_body_progress ... ok test sessions::tests::post_listen_chmod_wakes_a_connection_refused_at_bind ... ok test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok test sessions::tests::sequenced_attach_intersects_caps_and_legacy_attach_stays_zero ... ok test sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... ok test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.06s Running tests/transport.rs (target/debug/deps/transport-1d7d12099b746190) running 2 tests test fragmented_headers_coalesced_frames_and_reusable_transmit ... ok test oversized_header_and_truncated_frame_are_rejected ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (target/debug/deps/infraternal_plugin_api-4480fd7032f11ca2) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (target/debug/deps/infraternal_plugin_ssh-22a9a893799c7f17) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (target/debug/deps/infraternal_protocol-67b9a310ef49abf9) running 7 tests test stream_tests::all_short_frame_splits_match_direct_decoding ... ok test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok test stream_tests::split_mux_header_preserves_trailing_close ... ok test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok test tests::oversized_encode_keeps_the_reusable_output_unchanged ... ok test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (target/debug/deps/infraternal_server-261014e54e89b2d7) running 99 tests test auth::crypto::verifier_tests::browser_secret_hashing_is_canonical_and_bounded ... ok test auth::crypto::verifier_tests::recovery_capacity_denial_is_not_a_legacy_credential_signal ... ok test auth::http::hostname_tests::authenticated_session_response_includes_system_hostname ... ok test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok test auth::tests::account_identity_migration_backfills_legacy_users ... ok test auth::tests::account_identity_schema_has_unique_usernames_and_display_names ... ok test auth::tests::audit_ceremony_browser_binding ... ok test auth::tests::audit_logout_survives_admission_exhaustion ... ok test auth::tests::audit_no_public_credential_listing ... ok test auth::tests::audit_recovery_after_page_discard_can_resume_at_original_deadline ... ok test auth::tests::audit_recovery_pending_is_visible_to_signed_in_device ... ok test auth::tests::audit_recovery_session_expiring_during_verification_keeps_delay ... ok test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok test auth::tests::enrollment_prf_input_matches_discoverable_login ... ok test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok test auth::tests::pending_unlock_expires_without_terminal_authority ... ok test auth::tests::public_status_and_discoverable_http_login ... ok test auth::tests::recovery_audit_commits_once_with_start_cancel_and_complete ... ok test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok test auth::tests::recovery_http_live_same_account_is_immediate ... ok test auth::tests::recovery_http_other_expired_pending_and_missing_sessions_wait ... ok test auth::tests::recovery_live_session_cannot_accelerate_an_active_delayed_request ... ok test auth::tests::recovery_live_session_revoked_during_verification_cannot_waive_delay ... ok test auth::tests::recovery_session_delay_latency_at_capacity ... ignored, release-only recovery measurement at 50 live sessions; run without concurrent compilation test auth::tests::recovery_unknown_identity_pays_the_same_database_and_verifier_work ... ok test auth::tests::recovery_username_identity_is_additive_and_ambiguous_forms_fail ... ok test auth::tests::recovery_verifier_latency_at_capacity ... ignored, release-only v2 diagnostic at 50 live session rows; record host load separately test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok test auth::tests::review3_tests::review3_backend_reply_has_a_deadline ... ok test auth::tests::review3_tests::review3_busy_expiry ... ok test auth::tests::review3_tests::review3_busy_logout ... ok test auth::tests::review3_tests::review3_busy_recovery ... ok test auth::tests::review3_tests::review3_completion_and_cleanup_are_transaction_bound ... ok test auth::tests::review3_tests::review3_expired_handshake_must_not_welcome ... ok test auth::tests::review3_tests::review3_identified_privacy_timing_and_binding_replays ... ok test auth::tests::review3_tests::review3_pending_routes_and_idle_expiry_recovery ... ok test auth::tests::review3_tests::review3_revoked_handshake_must_not_welcome ... ok test auth::tests::review3_tests::review3_revoked_resume_must_not_welcome ... ok test auth::tests::review3_tests::review3_unwrap_cannot_be_skipped ... ok test auth::tests::review3_tests::review3_waiting_handshake_loses_authority ... ok test auth::tests::review3_tests::review4_slow_open_at_user_capacity ... ignored, release-only connect scale measurement; run without concurrent builds test auth::tests::review3_tests::review4_ten_second_open_preserves_authority ... ok test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok test auth::tests::review_old_words_race_rotation ... ok test auth::tests::reviewer_tests::reviewer_disk_cancel_complete_races ... ok test auth::tests::reviewer_tests::reviewer_disk_restart_and_concurrent_resume ... ok test auth::tests::reviewer_tests::reviewer_http_denials_and_recovery_admission ... ok test auth::tests::reviewer_tests::reviewer_http_expired_capability_cannot_complete_after_writer_wait ... ok test auth::tests::reviewer_tests::reviewer_http_expired_ceremony_cannot_complete_after_writer_wait ... ok test auth::tests::reviewer_tests::reviewer_server_clock_rollback_retains_deadline_and_reports_more_than_day ... ok test auth::tests::rotation_tests::recovery_phrase_routes_are_removed_and_words_fail_closed ... ok test auth::tests::rotation_tests::recovery_rotation_cannot_follow_a_cookie_account_switch ... ok test auth::tests::rotation_tests::recovery_rotation_denies_pending_expired_and_stale_sessions ... ok test auth::tests::rotation_tests::recovery_rotation_requires_session_and_replaces_legacy_envelope ... ok test auth::tests::rotation_tests::reviewer_concurrent_signed_in_rotations_commit_once ... ok test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok test auth::tests::setup_check_is_non_consuming_and_closes_after_owner_creation ... ok test auth::tests::setup_identity_validation_and_uniqueness ... ok test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok test auth::tests::setup_start_accepts_username_and_display_name ... ok test auth::tests::socket_tests::authenticated_idle_socket_survives_the_former_read_timeout ... ok test auth::tests::socket_tests::clean_control_close_is_not_an_internal_error ... ok test auth::tests::socket_tests::expired_handshake_releases_user_permits ... ok test auth::tests::socket_tests::fragmented_wire_frame_has_a_completion_deadline ... ok test auth::tests::socket_tests::half_open_sockets_obey_user_limit ... ok test auth::tests::socket_tests::incomplete_rfc_message_still_loses_authority_on_revocation ... ok test auth::tests::socket_tests::recovery_subscription_updates_every_signed_in_socket ... ok test auth::tests::socket_tests::revoked_idle_socket_loses_all_authority ... ok test auth::tests::socket_tests::socket_authority_latency_at_user_capacity ... ignored, release-only measurement without concurrent compilation test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test embedded::regressions::credited_bulk_output_survives_forwarder_io_pause ... ok test embedded::regressions::credited_output_queue_at_stream_capacity ... ignored, debug actor memory/scheduling measurement; run without concurrent builds test embedded::regressions::full_output_queue_must_not_block_shared_actor ... ok test embedded::regressions::healthy_receiver_survives_ready_native_output_burst ... ok test embedded::regressions::healthy_streams_progress_at_user_attachment_capacity ... ok test embedded::regressions::output_and_snapshot_spend_remaining_restart_credit ... ok test embedded::regressions::real_agent_canonical_uuid_result_is_accepted ... ok test embedded::regressions::real_agent_open_uses_uid_and_character_dimensions ... ok test embedded::regressions::reattach_must_restore_output_credit ... ok test embedded::regressions::recovery_event_then_snapshot_keeps_embedded_connection_live ... ok test embedded::regressions::recovery_notices_preserve_order_credit_and_session_isolation ... ok test embedded::regressions::stream_close_must_not_restart_all_sessions ... ok test embedded::regressions::uncredited_output_or_repaint_is_rejected_before_queueing ... ok test runtime::reviewer_admission::reviewer_recovery_source_limit_covers_all_routes_without_forwarding_bypass ... ok test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok test runtime::tests::router_migrates_private_storage_and_serves_health ... ok test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok test websocket::recovery_notification_bench::recovery_notification_state_at_socket_capacity ... ignored, notification state sizing diagnostic, not allocator-inclusive RSS certification test websocket::writer_tests::second_device_does_not_inherit_first_device_input_ack ... ok test websocket::writer_tests::writer_admission_at_user_capacity ... ignored, release-only scale measurement; run without concurrent builds test websocket::writer_tests::writer_ownership_capacity_unsigned_offsets_and_identity_reuse ... ok test result: ok. 91 passed; 0 failed; 8 ignored; 0 measured; 0 filtered out; finished in 223.33s Running unittests src/lib.rs (target/debug/deps/infraternal_shim-20f12ce01dce80ec) running 73 tests test frame::checks::approximate_snapshot_codec_is_bounded_and_canonical ... ok test frame::checks::borrowed_and_owned_decoders_agree_at_every_fragment_boundary ... ok test frame::checks::codec_reuse_measurement ... ignored, release codec and allocation-path measurement test frame::checks::golden::every_frozen_message ... ok test frame::checks::golden::exact_maximum_and_coalesced_frames ... 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 session::inputs::tests::identity_cap_preserves_all_existing_cursors ... ok test session::inputs::tests::partial_writes_credit_only_the_owner_and_replay_trims_per_writer ... ok test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile test session::measurements::poll_storage_measurement ... ignored, release poll-storage allocation measurement test session::resize_checks::native_resize_refusal_preserves_peer_and_pty ... ok test session::resize_checks::resize_refusal_session_probe ... ignored, isolated session probe invoked by its parent with a controlled shell profile test session::sequenced_checks::coalesced_ack_never_overwrites_a_partial_output_and_cursors_survive_peer_loss ... ok test session::sequenced_checks::new_frames_roundtrip_and_refuse_noncanonical_payloads ... ok test session::sequenced_checks::reusable_encoder_retains_capacity_and_refuses_growth_before_mutation ... ok test session::sequenced_checks::trim_duplicates_gaps_overflow_and_capacity_are_transactional ... ok test session::sequenced_checks::writer_selection_has_a_frozen_little_endian_layout ... ok test terminal::checks::approximate_repaint_is_bounded_clips_at_complete_cells_and_preserves_source ... ok test terminal::checks::approximate_repaint_keeps_complete_pending_syntax_or_omits_it_whole ... ok test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok test terminal::checks::tests::byte_budget_prunes_history_and_resize_remains_repaintable ... ok test terminal::checks::tests::fixtures_and_continuations_repaint ... ok test terminal::checks::tests::implicit_hyperlinks_retain_groups_across_rows_and_continuation ... ok test terminal::checks::tests::long_unfinished_hyperlink_and_control_strings_continue ... ok test terminal::checks::tests::margins_tabs_charsets_and_modes_continue ... ok test terminal::checks::tests::partial_csi_and_utf8_continue ... ok test terminal::checks::tests::pending_wrap_and_saved_wrap_continue_with_wide_cells ... ok test terminal::checks::tests::retained_alternate_saved_cursor_and_keyboard_stack_continue ... ok test terminal::checks::tests::saved_origin_survives_changed_margins ... ok test terminal::checks::tests::unfinished_sequence_over_frame_limit_fails_without_losing_runtime_state ... ok test terminal::fidelity::fidelity_charset_mapped_wide_space_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_cursor ... ok test terminal::fidelity::fidelity_diagnostic_fixture ... ignored, diagnostic replay of an explicitly selected fixture file test terminal::fidelity::fidelity_edge ... ok test terminal::fidelity::fidelity_extended_nightly ... ignored, nightly expanded differential corpus: 20,000 deterministic cases test terminal::fidelity::fidelity_extended_smoke ... ok test terminal::fidelity::fidelity_f1_rep ... ok test terminal::fidelity::fidelity_fresh_c_redraw_default_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_handwritten ... ok test terminal::fidelity::fidelity_inherited_protection_off_mode_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_iso_protection_does_not_keep_rep_scratch ... ok test terminal::fidelity::fidelity_iso_protection_erase ... ok test terminal::fidelity::fidelity_mouse_effective_fields_follow_order_independently_of_booleans ... ok test terminal::fidelity::fidelity_oracle_detects_hidden_state ... ok test terminal::fidelity::fidelity_oracle_observes_archived_cells_with_equal_active_screens ... ok test terminal::fidelity::fidelity_orphaned_spacer_head ... ok test terminal::fidelity::fidelity_prompt_resize_requires_explicit_rejection ... ok test terminal::fidelity::fidelity_recorded_corpus ... ok test terminal::fidelity::fidelity_rejects_unrepresentable_rep_without_mutating_source ... ok test terminal::fidelity::fidelity_saved_cursor_over_changed_edge ... ok test terminal::fidelity::fidelity_saved_modes_future_restore ... ok test terminal::fidelity::fidelity_screen_entry_consumes_inherited_shift_before_saving ... ok test terminal::fidelity::fidelity_seeded_nightly ... ignored, nightly differential corpus: 20,000 deterministic cases test terminal::fidelity::fidelity_seeded_smoke ... ok test terminal::fidelity::fidelity_semantic_validation_matches_exported_history_extent ... ok test terminal::fidelity::fidelity_single_shift_survives_rep_seed ... ok test terminal::fidelity::fidelity_snapshot_history_tail_contains_no_padding_rows ... ok test terminal::fidelity::fidelity_snapshot_resets_stale_viewer_color_overrides ... ok test terminal::fidelity::fidelity_spacer_head_attributes ... ok test terminal::fidelity::fidelity_variation_tail_attributes ... ok test terminal::fidelity::fidelity_variation_wrap_attributes ... ok test terminal::fidelity::fresh_captures::fidelity_fresh_real_program_captures ... ignored, manual fresh capture oracle; set VT_CAPTURE_DIR after real program capture test terminal::measurements::budgets::snapshot_200x60 ... ignored, performance measurement; run release on the perf host test terminal::measurements::memory::measured_terminal_rss ... ignored, RSS measurement; run this filter alone in a fresh release process test terminal::measurements::throughput::measured_parser ... ignored, VT observer and history throughput measurement test terminal::recovery_measurements::measured_full_ring_reconstruction ... ignored, release reconstruction measurement; old healthy handles permit repeated cleanup test terminal::resize_recovery::absent_ring_keeps_last_good_size_and_later_output_usable ... ok test terminal::resize_recovery::complete_ring_restores_screens_mouse_and_unfinished_syntax ... ok test terminal::resize_recovery::earlier_geometry_changes_require_approximation_even_with_origin_coverage ... ok test terminal::resize_recovery::ring_gap_requires_clean_approximate_recovery ... ok test terminal_native::allocation::resize_allocation_refusal_retires_native_handle ... ok test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 48.73s Running tests/detach.rs (target/debug/deps/detach-4218a1c714d4176b) 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.75s Running tests/mouse.rs (target/debug/deps/mouse-556febae1b88516e) running 1 test test faithful_snapshot_preserves_public_mouse_encoder_reports ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s 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/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:24:1 │ 24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────┘ lock entries │ ├ base64 v0.21.7 ├── base64urlsafedata v0.5.5 │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── webauthn-rs v0.5.5 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-proto v0.5.5 │ └── webauthn-rs-core v0.5.5 (*) ├── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-proto v0.5.5 (*) ├ base64 v0.22.1 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── infraternal-server v0.1.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 3 duplicate entries for crate 'getrandom' ┌─ /home/kayg/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:88:1 │ 88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ getrandom v0.2.17 └── rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-agent v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) ├── webauthn-attestation-ca v0.5.5 (*) ├── webauthn-rs v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'hashbrown' ┌─ /home/kayg/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:94:1 │ 94 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 95 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ hashbrown v0.15.5 ├── hashlink v0.10.0 │ └── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) └── sqlx-core v0.8.6 (*) ├ hashbrown v0.17.1 └── indexmap v2.14.2 ├── h2 v0.4.19 │ └── hyper v1.11.1 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ └── hyper-util v0.1.21 │ ├── axum v0.8.9 (*) │ └── axum-server v0.8.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 2 duplicate entries for crate 'r-efi' ┌─ /home/kayg/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:182:1 │ 182 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 183 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────┘ lock entries │ ├ r-efi v5.3.0 └── getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ r-efi v6.0.0 └── getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-agent v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) ├── webauthn-attestation-ca v0.5.5 (*) ├── webauthn-rs v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand' ┌─ /home/kayg/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:184:1 │ 184 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index 185 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand v0.9.5 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ └── (dev) infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 └── webauthn-rs v0.5.5 └── infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_chacha' ┌─ /home/kayg/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:186:1 │ 186 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 187 │ │ 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 ```
Author
Owner

Final gate for c5cf14ca40, verbatim output part 2/2:

      │   ├── tungstenite v0.29.0
      │   │   └── tokio-tungstenite v0.29.0
      │   │       ├── axum v0.8.9
      │   │       │   └── infraternal-server v0.1.0 (*)
      │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   └── webauthn-rs-core v0.5.5
      │       └── webauthn-rs v0.5.5
      │           └── infraternal-server v0.1.0 (*)
      └── webauthn-rs-core v0.5.5 (*)

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

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

warning[duplicate]: found 2 duplicate entries for crate 'synstructure'
    ┌─ /home/kayg/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:228:1
    │  
228 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index
229 │ │ 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/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:230:1
    │  
230 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index
231 │ │ 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/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:232:1
    │  
232 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index
233 │ │ 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 (*)

advisories ok, bans ok, licenses ok, sources ok

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

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

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

==> TypeScript protocol compiler

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

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

 7 pass
 0 fail
 34390 expect() calls
Ran 7 tests across 2 files. [2.53s]
Final gate for c5cf14ca4088fe2347f55b15f2a8abff982ef810, verbatim output part 2/2: ```text │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_core' ┌─ /home/kayg/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:188:1 │ 188 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 189 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'syn' ┌─ /home/kayg/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:225:1 │ 225 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 226 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────┘ lock entries │ ├ syn v2.0.119 ├── asn1-rs-derive v0.5.1 │ └── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── asn1-rs-impl v0.2.0 │ └── asn1-rs v0.6.2 (*) ├── openssl-macros v0.1.1 │ └── openssl v0.10.81 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) ├── synstructure v0.13.2 │ └── asn1-rs-derive v0.5.1 (*) ├── thiserror-impl v1.0.69 │ └── thiserror v1.0.69 │ ├── asn1-rs v0.6.2 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── x509-parser v0.16.0 (*) ├── tracing-attributes v0.1.31 │ └── tracing v0.1.44 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-core v0.5.6 │ │ └── axum v0.8.9 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ ├── sqlx-macros v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tracing-subscriber v0.3.23 │ │ └── infraternal-server v0.1.0 (*) │ ├── webauthn-attestation-ca v0.5.5 (*) │ ├── webauthn-rs v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) └── zerocopy-derive v0.8.60 └── zerocopy v0.8.60 ├── half v2.7.1 │ ├── ciborium-ll v0.2.2 │ │ └── ciborium v0.2.2 │ │ └── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-agent v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 (*) │ └── serde_cbor_2 v0.13.0 │ ├── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── ppv-lite86 v0.2.21 ├── rand_chacha v0.3.1 │ └── rand v0.8.8 │ └── bip39 v2.2.2 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 (*) │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ syn v3.0.6 ├── clap_derive v4.6.7 │ └── clap v4.6.7 │ ├── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-agent v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ └── infraternal v0.1.0 (*) ├── displaydoc v0.2.7 │ ├── asn1-rs v0.6.2 │ │ ├── der-parser v9.0.0 │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── x509-parser v0.16.0 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── oid-registry v0.7.1 │ │ │ └── x509-parser v0.16.0 (*) │ │ └── x509-parser v0.16.0 (*) │ ├── der-parser v9.0.0 (*) │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── tinystr v0.8.4 │ │ └── icu_locale_core v2.3.0 (*) │ └── zerotrie v0.2.5 │ ├── icu_properties v2.3.0 (*) │ └── icu_provider v2.3.1 (*) ├── futures-macro v0.3.34 │ └── futures-util v0.3.34 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── futures-executor v0.3.34 │ │ └── sqlx-sqlite v0.8.6 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── js-sys v0.3.106 │ │ └── web-sys v0.3.106 │ │ └── plotters v0.3.7 │ │ └── criterion v0.7.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 │ └── infraternal-server v0.1.0 (*) ├── serde_derive v1.0.229 │ ├── serde v1.0.229 │ │ ├── base64urlsafedata v0.5.5 │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 (*) │ │ ├── bip39 v2.2.2 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── ciborium v0.2.2 │ │ │ └── criterion v0.7.0 (*) │ │ ├── criterion v0.7.0 (*) │ │ ├── either v1.18.0 │ │ │ ├── axum-server v0.8.0 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── itertools v0.13.0 │ │ │ │ ├── criterion v0.7.0 (*) │ │ │ │ └── criterion-plot v0.6.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── rayon v1.12.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── sqlx-core v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ ├── infraternal-agent v0.1.0 (*) │ │ ├── infraternal-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 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ ├── webauthn-rs v0.5.5 (*) │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ └── webauthn-rs-proto v0.5.5 (*) │ └── url v2.5.8 (*) ├── synstructure v0.14.0 │ ├── yoke-derive v0.8.4 │ │ └── yoke v0.8.3 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── zerotrie v0.2.5 (*) │ │ └── zerovec v0.11.8 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_locale_core v2.3.0 (*) │ │ ├── icu_normalizer v2.3.0 (*) │ │ ├── icu_properties v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── potential_utf v0.1.6 │ │ │ └── icu_collections v2.3.0 (*) │ │ └── tinystr v0.8.4 (*) │ └── zerofrom-derive v0.1.8 │ └── zerofrom v0.1.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── yoke v0.8.3 (*) │ ├── zerotrie v0.2.5 (*) │ └── zerovec v0.11.8 (*) ├── thiserror-impl v2.0.21 │ └── thiserror v2.0.21 │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ └── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 (*) ├── tokio-macros v2.7.2 │ └── tokio v1.53.2 │ ├── axum v0.8.9 (*) │ ├── axum-server v0.8.0 (*) │ ├── fs-err v3.3.2 │ │ └── axum-server v0.8.0 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── hyper v1.11.1 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-agent v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 (*) │ ├── tower v0.5.3 (*) │ └── tower-http v0.6.11 (*) ├── wasm-bindgen-macro-support v0.2.129 │ └── wasm-bindgen-macro v0.2.129 │ └── wasm-bindgen v0.2.129 │ ├── js-sys v0.3.106 (*) │ ├── plotters v0.3.7 (*) │ └── web-sys v0.3.106 (*) ├── yoke-derive v0.8.4 (*) ├── zerofrom-derive v0.1.8 (*) └── zerovec-derive v0.11.6 └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'synstructure' ┌─ /home/kayg/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:228:1 │ 228 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 229 │ │ 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/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:230:1 │ 230 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 231 │ │ 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/.cache/codex-scratch/mobile-recovery/target/snapshots/r2/Cargo.lock:232:1 │ 232 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 233 │ │ 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 (*) advisories ok, bans ok, licenses ok, sources ok ==> static builds Finished `release` profile [optimized] target(s) in 0.31s 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: 15900816 bytes Finished `release` profile [optimized] target(s) in 0.26s target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 13371248 bytes server subcommand: exit 2, not implemented agent subcommand: exit 2, not implemented +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ==> Vendored Ghostty artifact checksums dist/ghostty-web.js: OK dist/ghostty-vt.wasm: OK dist/index.d.ts: OK ==> TypeScript protocol compiler ==> 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 [15.37ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.25ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [0.88ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.24ms] (pass) split mux header preserves trailing Close [0.21ms] 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 [2494.24ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [8.74ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.53s] ```
Author
Owner

Cleanup complete at c5cf14ca40: git status is clean, mobile-recovery scratch worktrees/build targets removed, small logs and screenshot originals preserved in worktree target/. Final summary and complete verbatim gate output are in the preceding three comments. Issue remains open; no push or deployment.

Cleanup complete at c5cf14ca4088fe2347f55b15f2a8abff982ef810: git status is clean, mobile-recovery scratch worktrees/build targets removed, small logs and screenshot originals preserved in worktree target/. Final summary and complete verbatim gate output are in the preceding three comments. Issue remains open; no push or deployment.
Author
Owner

Independent re-review (run 3) started: read-only mobile-recovery, fix diff 7f60cf92b10ded0d6c15011be7c1306d76384180..c5cf14ca4088fe2347f55b15f2a8abff982ef810 (5 commits). Read repository rules, prior R1/R2/R3 probes and all #45/#40 comments. Experiments and gates use separate review-recovery scratch, CPUWeight=10000, TRACER_TEST_PORT=4747. Checking non-disclosure, transactional expiry including restart, bounded rollback waits and regressions. No source edits, push or deployment.

Independent re-review (run 3) started: read-only mobile-recovery, fix diff 7f60cf92b10ded0d6c15011be7c1306d76384180..c5cf14ca4088fe2347f55b15f2a8abff982ef810 (5 commits). Read repository rules, prior R1/R2/R3 probes and all #45/#40 comments. Experiments and gates use separate review-recovery scratch, CPUWeight=10000, TRACER_TEST_PORT=4747. Checking non-disclosure, transactional expiry including restart, bounded rollback waits and regressions. No source edits, push or deployment.
Author
Owner

Run-3 completed client review at c5cf14c: whole apps/packages/crates search and request dataflow show no production recovery-upgrade or phrase fallback; remaining server legacy helpers are cfg(test). Local rotation uploads exactly envelope + independent verifier, pins account, revokes dismissed callbacks and preserves caller DEK. Client checks 15 pass/0 fail/340 assertions (103ms); tsc passes. Production-built recovery browser subset 15 passed (40.1s), including phrase_disclosed=false, 429/503 retries, honest 90000s rollback, cancellation notice and retry. Evidence: ~/.local/state/codex-jobs/infraternal/review-recovery/{whole-grep-run3.txt,client-run3.log,browser-run3.log}. Fast gate and independent restart probe outstanding.

Run-3 completed client review at c5cf14c: whole apps/packages/crates search and request dataflow show no production recovery-upgrade or phrase fallback; remaining server legacy helpers are cfg(test). Local rotation uploads exactly envelope + independent verifier, pins account, revokes dismissed callbacks and preserves caller DEK. Client checks 15 pass/0 fail/340 assertions (103ms); tsc passes. Production-built recovery browser subset 15 passed (40.1s), including phrase_disclosed=false, 429/503 retries, honest 90000s rollback, cancellation notice and retry. Evidence: ~/.local/state/codex-jobs/infraternal/review-recovery/{whole-grep-run3.txt,client-run3.log,browser-run3.log}. Fast gate and independent restart probe outstanding.
Author
Owner

Run-3 step at c5cf14c: independent exact-boundary production browser checks 2 passed (4.4s): 172800s accepted with Continue disabled, 172801s rejected. Additional 401/429/503 request/retry and failed-rotation probes 6 passed/63 assertions (57ms), ciphertext/verifier only and no duplicate finish. Session-query remeasurement on 50 disk-WAL sessions, 1000 samples/path after 200 warmups: p50 14.02->14.71us; p99 50.44->51.56us; no added network or idle queries; SQLite 3.53.3, 8-vCPU i9-9900K KVM, load 4.12/8.87/10.27. 52 production screenshots retained for owner review. Fast initial environment run stopped after Zig temporary-file failure caused by invalid self-FD alias; corrected parent-PID alias run continues without source changes. Logs: boundary-browser-run3.log, requests-run3.log, session-scale-run3.log, fast-run3-environment-failed.log under review-recovery findings directory.

Run-3 step at c5cf14c: independent exact-boundary production browser checks 2 passed (4.4s): 172800s accepted with Continue disabled, 172801s rejected. Additional 401/429/503 request/retry and failed-rotation probes 6 passed/63 assertions (57ms), ciphertext/verifier only and no duplicate finish. Session-query remeasurement on 50 disk-WAL sessions, 1000 samples/path after 200 warmups: p50 14.02->14.71us; p99 50.44->51.56us; no added network or idle queries; SQLite 3.53.3, 8-vCPU i9-9900K KVM, load 4.12/8.87/10.27. 52 production screenshots retained for owner review. Fast initial environment run stopped after Zig temporary-file failure caused by invalid self-FD alias; corrected parent-PID alias run continues without source changes. Logs: boundary-browser-run3.log, requests-run3.log, session-scale-run3.log, fast-run3-environment-failed.log under review-recovery findings directory.
Author
Owner

Run-3 server probes at unchanged c5cf14c: 8 passed/0 failed (27.38s), real WebAuthn + Argon2 + four-connection disk SQLite WAL. R2 capability expiry and ceremony expiry both return HTTP 401 after 2200ms writer contention, preserving envelope/verifier/session and no complete audit. Eight cancel/complete races each commit exactly one outcome; 72h reopen preserves ready deadline and concurrent resume has one live capability/start audit. Rotation commits once, invalidates old capability/begun ceremony, retains passkey/session; source middleware preserves 30 browser/10 device limits, rejects XFF reset and exempts logout. server-probes-run3.log contains outcomes verbatim. Extra aborted-finish/reopen probe and final fast output outstanding.

Run-3 server probes at unchanged c5cf14c: 8 passed/0 failed (27.38s), real WebAuthn + Argon2 + four-connection disk SQLite WAL. R2 capability expiry and ceremony expiry both return HTTP 401 after 2200ms writer contention, preserving envelope/verifier/session and no complete audit. Eight cancel/complete races each commit exactly one outcome; 72h reopen preserves ready deadline and concurrent resume has one live capability/start audit. Rotation commits once, invalidates old capability/begun ceremony, retains passkey/session; source middleware preserves 30 browser/10 device limits, rejects XFF reset and exempts logout. server-probes-run3.log contains outcomes verbatim. Extra aborted-finish/reopen probe and final fast output outstanding.
Author
Owner

Run-3 production-build captures at c5cf14c for owner review; public deterministic fixtures only. Focused capture checks: 3 passed (16.6s), 52 screenshots retained. No visual-quality verdict.

enter-words-empty-393x852.png
enter-words-empty-1440x900.png
ready-now-393x852.png

Run-3 production-build captures at c5cf14c for owner review; public deterministic fixtures only. Focused capture checks: 3 passed (16.6s), 52 screenshots retained. No visual-quality verdict. [enter-words-empty-393x852.png](https://git.kayg.org/attachments/0a66c937-9e54-4b43-bc1c-72d47ab9d591) [enter-words-empty-1440x900.png](https://git.kayg.org/attachments/78272bfe-58da-4fc0-919c-3acffdde97d2) [ready-now-393x852.png](https://git.kayg.org/attachments/ea2cfeb1-5f17-40ea-9b7e-8301bd90a08c)
Author
Owner

Run-3 final fast gate at c5cf14ca40, exit 0. Verbatim complete output part 1/3:

Running as unit: run-p157663-i8545439.scope; invocation ID: 56af7836778641809ab7aa120ec14ec4

==> fmt

==> VT native fmt

==> clippy
   Compiling infraternal-shim v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-shim)
    Checking openssl-sys v0.9.117
    Checking infraternal-agent v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-agent)
    Checking infraternal-fuzz v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/fuzz)
    Checking openssl v0.10.81
    Checking webauthn-attestation-ca v0.5.5
    Checking tokio-openssl v0.6.5
    Checking axum-server v0.8.0
    Checking webauthn-rs-core v0.5.5
    Checking webauthn-rs v0.5.5
    Checking infraternal-server v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-server)
    Checking infraternal v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.84s

==> test
   Compiling axum v0.8.9
   Compiling tracing-subscriber v0.3.23
   Compiling infraternal-agent v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-agent)
   Compiling itertools v0.13.0
   Compiling same-file v1.0.6
   Compiling cast v0.3.0
   Compiling criterion-plot v0.6.0
   Compiling walkdir v2.5.0
   Compiling rayon v1.12.0
   Compiling ciborium v0.2.2
   Compiling ghash v0.5.1
   Compiling plotters v0.3.7
   Compiling ctr v0.9.2
   Compiling aes v0.8.4
   Compiling regex v1.13.1
   Compiling hmac v0.12.1
   Compiling tinytemplate v1.2.1
   Compiling aead v0.5.2
   Compiling oorandom v11.1.5
   Compiling anes v0.1.6
   Compiling aes-gcm v0.10.3
   Compiling hkdf v0.12.4
   Compiling infraternal-plugin-ssh v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/plugins/ssh)
   Compiling infraternal-plugin-api v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-plugin-api)
   Compiling infraternal-shim v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-shim)
   Compiling criterion v0.7.0
   Compiling infraternal-server v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-server)
   Compiling infraternal-protocol v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-protocol)
   Compiling infraternal v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 20.93s
     Running unittests src/main.rs (target/debug/deps/infraternal-14f12797e13d3956)

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

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

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

running 1 test
test real_binary_preserves_input_and_output_across_24_abrupt_stops ... ok

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

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

running 1 test
test saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok

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

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

running 5 tests
test last_typist_selects_its_own_real_pty_dimensions ... ok
test repeated_tiny_credit_pauses_preserve_shell_progress ... ok
test retained_unwritten_input_survives_interleaved_ack_restart ... ok
test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok
test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok

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

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

running 1 test
test detached_shim_is_discovered_and_replays_from_the_last_observed_offset ... ok

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

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

running 1 test
test one_hertz_wakeup_is_detected_past_the_legacy_half_second_window ... ok

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

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

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

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

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

running 1 test
test unaffordable_repaints_park_until_sufficient_credit ... ok

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

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

running 1 test
test snapshot_limits_never_close_live_reconnect ... ok

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

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

running 15 tests
test relay::tests::expired_credit_resumes_retained_bytes_at_the_same_cursor ... ok
test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok
test relay::tests::output_partial_credit_and_dedup ... ok
test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement
test relay::tests::overflowing_ranges_never_mutate_cursors ... ok
test relay::tests::positive_insufficient_credit_arms_a_one_shot_deadline ... ok
test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok
test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... ok
test sessions::tests::borrowed_reader_payload_uses_reusable_cancel_safe_storage ... ok
test sessions::tests::cancelled_fragmented_shim_read_retains_header_and_body_progress ... ok
test sessions::tests::post_listen_chmod_wakes_a_connection_refused_at_bind ... ok
test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement
test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok
test sessions::tests::sequenced_attach_intersects_caps_and_legacy_attach_stays_zero ... ok
test sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... ok

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

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

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

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

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

running 0 tests

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

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

running 0 tests

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

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

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

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

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

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

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

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

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

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

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

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

     Running tests/mouse.rs (target/debug/deps/mouse-556febae1b88516e)

running 1 test
test faithful_snapshot_preserves_public_mouse_encoder_reports ... ok

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

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

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

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

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

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

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

warning[duplicate]: found 2 duplicate entries for crate 'rand_core'
    ┌─ /home/kayg/.cache/codex-scratch/review-recovery/head/Cargo.lock:188:1
    │  
188 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index
189 │ │ 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

Run-3 final fast gate at c5cf14ca4088fe2347f55b15f2a8abff982ef810, exit 0. Verbatim complete output part 1/3: ```text Running as unit: run-p157663-i8545439.scope; invocation ID: 56af7836778641809ab7aa120ec14ec4 ==> fmt ==> VT native fmt ==> clippy Compiling infraternal-shim v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-shim) Checking openssl-sys v0.9.117 Checking infraternal-agent v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-agent) Checking infraternal-fuzz v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/fuzz) Checking openssl v0.10.81 Checking webauthn-attestation-ca v0.5.5 Checking tokio-openssl v0.6.5 Checking axum-server v0.8.0 Checking webauthn-rs-core v0.5.5 Checking webauthn-rs v0.5.5 Checking infraternal-server v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-server) Checking infraternal v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal) Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.84s ==> test Compiling axum v0.8.9 Compiling tracing-subscriber v0.3.23 Compiling infraternal-agent v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-agent) Compiling itertools v0.13.0 Compiling same-file v1.0.6 Compiling cast v0.3.0 Compiling criterion-plot v0.6.0 Compiling walkdir v2.5.0 Compiling rayon v1.12.0 Compiling ciborium v0.2.2 Compiling ghash v0.5.1 Compiling plotters v0.3.7 Compiling ctr v0.9.2 Compiling aes v0.8.4 Compiling regex v1.13.1 Compiling hmac v0.12.1 Compiling tinytemplate v1.2.1 Compiling aead v0.5.2 Compiling oorandom v11.1.5 Compiling anes v0.1.6 Compiling aes-gcm v0.10.3 Compiling hkdf v0.12.4 Compiling infraternal-plugin-ssh v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/plugins/ssh) Compiling infraternal-plugin-api v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-plugin-api) Compiling infraternal-shim v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-shim) Compiling criterion v0.7.0 Compiling infraternal-server v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-server) Compiling infraternal-protocol v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-protocol) Compiling infraternal v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal) Finished `test` profile [unoptimized + debuginfo] target(s) in 20.93s Running unittests src/main.rs (target/debug/deps/infraternal-14f12797e13d3956) running 2 tests test install::tests::dry_run_prints_a_process_surviving_user_unit ... ok test setup_token_tests::setup_token_command_reads_only_the_expected_socket_response ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/agent_daemon.rs (target/debug/deps/agent_daemon-d1403b19628fad47) running 1 test test real_binary_preserves_input_and_output_across_24_abrupt_stops ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.63s Running tests/agent_queues.rs (target/debug/deps/agent_queues-55641aad5872e227) running 1 test test saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.16s Running tests/agent_review.rs (target/debug/deps/agent_review-dcc4f72875eb105a) running 5 tests test last_typist_selects_its_own_real_pty_dimensions ... ok test repeated_tiny_credit_pauses_preserve_shell_progress ... ok test retained_unwritten_input_survives_interleaved_ack_restart ... ok test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.98s Running tests/agent_sessions.rs (target/debug/deps/agent_sessions-4399395ba0eae8b4) running 1 test test detached_shim_is_discovered_and_replays_from_the_last_observed_offset ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s Running tests/idle_canary.rs (target/debug/deps/idle_canary-edcd503aa0c743e4) running 1 test test one_hertz_wakeup_is_detected_past_the_legacy_half_second_window ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s Running tests/shim.rs (target/debug/deps/shim-f263eaac2963467d) running 7 tests test attached_backpressure_and_detached_progress ... ok test disallowed_signal_only_disconnects_peer ... ok test double_fork_survives_parent_death ... ok test real_shell_reconnect_resize_and_retained_exit ... ok test replacement_connection_and_malformed_limit ... ok test ring_wrap_snapshot_repaints_real_vim ... ok test user_scope_survives_parent_unit_stop ... active ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.00s Running tests/vt_credit.rs (target/debug/deps/vt_credit-8f27ef6f017beee5) running 1 test test unaffordable_repaints_park_until_sufficient_credit ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.40s Running tests/vt_reconnect.rs (target/debug/deps/vt_reconnect-774f9eb67a7daeed) running 1 test test snapshot_limits_never_close_live_reconnect ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.00s Running unittests src/lib.rs (target/debug/deps/infraternal_agent-58d2d9e79005355c) running 15 tests test relay::tests::expired_credit_resumes_retained_bytes_at_the_same_cursor ... ok test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok test relay::tests::output_partial_credit_and_dedup ... ok test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement test relay::tests::overflowing_ranges_never_mutate_cursors ... ok test relay::tests::positive_insufficient_credit_arms_a_one_shot_deadline ... ok test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... ok test sessions::tests::borrowed_reader_payload_uses_reusable_cancel_safe_storage ... ok test sessions::tests::cancelled_fragmented_shim_read_retains_header_and_body_progress ... ok test sessions::tests::post_listen_chmod_wakes_a_connection_refused_at_bind ... ok test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok test sessions::tests::sequenced_attach_intersects_caps_and_legacy_attach_stays_zero ... ok test sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... ok test result: ok. 13 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.05s Running tests/transport.rs (target/debug/deps/transport-1d7d12099b746190) running 2 tests test fragmented_headers_coalesced_frames_and_reusable_transmit ... ok test oversized_header_and_truncated_frame_are_rejected ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (target/debug/deps/infraternal_plugin_api-4480fd7032f11ca2) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (target/debug/deps/infraternal_plugin_ssh-22a9a893799c7f17) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (target/debug/deps/infraternal_protocol-67b9a310ef49abf9) running 7 tests test stream_tests::all_short_frame_splits_match_direct_decoding ... ok test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok test stream_tests::split_mux_header_preserves_trailing_close ... ok test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok test tests::oversized_encode_keeps_the_reusable_output_unchanged ... ok test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (target/debug/deps/infraternal_server-261014e54e89b2d7) running 99 tests test auth::crypto::verifier_tests::browser_secret_hashing_is_canonical_and_bounded ... ok test auth::crypto::verifier_tests::recovery_capacity_denial_is_not_a_legacy_credential_signal ... ok test auth::http::hostname_tests::authenticated_session_response_includes_system_hostname ... ok test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok test auth::tests::account_identity_migration_backfills_legacy_users ... ok test auth::tests::account_identity_schema_has_unique_usernames_and_display_names ... ok test auth::tests::audit_ceremony_browser_binding ... ok test auth::tests::audit_logout_survives_admission_exhaustion ... ok test auth::tests::audit_no_public_credential_listing ... ok test auth::tests::audit_recovery_after_page_discard_can_resume_at_original_deadline ... ok test auth::tests::audit_recovery_pending_is_visible_to_signed_in_device ... ok test auth::tests::audit_recovery_session_expiring_during_verification_keeps_delay ... ok test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok test auth::tests::enrollment_prf_input_matches_discoverable_login ... ok test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok test auth::tests::pending_unlock_expires_without_terminal_authority ... ok test auth::tests::public_status_and_discoverable_http_login ... ok test auth::tests::recovery_audit_commits_once_with_start_cancel_and_complete ... ok test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok test auth::tests::recovery_http_live_same_account_is_immediate ... ok test auth::tests::recovery_http_other_expired_pending_and_missing_sessions_wait ... ok test auth::tests::recovery_live_session_cannot_accelerate_an_active_delayed_request ... ok test auth::tests::recovery_live_session_revoked_during_verification_cannot_waive_delay ... ok test auth::tests::recovery_session_delay_latency_at_capacity ... ignored, release-only recovery measurement at 50 live sessions; run without concurrent compilation test auth::tests::recovery_unknown_identity_pays_the_same_database_and_verifier_work ... ok test auth::tests::recovery_username_identity_is_additive_and_ambiguous_forms_fail ... ok test auth::tests::recovery_verifier_latency_at_capacity ... ignored, release-only v2 diagnostic at 50 live session rows; record host load separately test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok test auth::tests::review3_tests::review3_backend_reply_has_a_deadline ... ok test auth::tests::review3_tests::review3_busy_expiry ... ok test auth::tests::review3_tests::review3_busy_logout ... ok test auth::tests::review3_tests::review3_busy_recovery ... ok test auth::tests::review3_tests::review3_completion_and_cleanup_are_transaction_bound ... ok test auth::tests::review3_tests::review3_expired_handshake_must_not_welcome ... ok test auth::tests::review3_tests::review3_identified_privacy_timing_and_binding_replays ... ok test auth::tests::review3_tests::review3_pending_routes_and_idle_expiry_recovery ... ok test auth::tests::review3_tests::review3_revoked_handshake_must_not_welcome ... ok test auth::tests::review3_tests::review3_revoked_resume_must_not_welcome ... ok test auth::tests::review3_tests::review3_unwrap_cannot_be_skipped ... ok test auth::tests::review3_tests::review3_waiting_handshake_loses_authority ... ok test auth::tests::review3_tests::review4_slow_open_at_user_capacity ... ignored, release-only connect scale measurement; run without concurrent builds test auth::tests::review3_tests::review4_ten_second_open_preserves_authority ... ok test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok test auth::tests::review_old_words_race_rotation ... ok test auth::tests::reviewer_tests::reviewer_disk_cancel_complete_races ... ok test auth::tests::reviewer_tests::reviewer_disk_restart_and_concurrent_resume ... ok test auth::tests::reviewer_tests::reviewer_http_denials_and_recovery_admission ... ok test auth::tests::reviewer_tests::reviewer_http_expired_capability_cannot_complete_after_writer_wait ... ok test auth::tests::reviewer_tests::reviewer_http_expired_ceremony_cannot_complete_after_writer_wait ... ok test auth::tests::reviewer_tests::reviewer_server_clock_rollback_retains_deadline_and_reports_more_than_day ... ok test auth::tests::rotation_tests::recovery_phrase_routes_are_removed_and_words_fail_closed ... ok test auth::tests::rotation_tests::recovery_rotation_cannot_follow_a_cookie_account_switch ... ok test auth::tests::rotation_tests::recovery_rotation_denies_pending_expired_and_stale_sessions ... ok test auth::tests::rotation_tests::recovery_rotation_requires_session_and_replaces_legacy_envelope ... ok test auth::tests::rotation_tests::reviewer_concurrent_signed_in_rotations_commit_once ... ok test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok test auth::tests::setup_check_is_non_consuming_and_closes_after_owner_creation ... ok test auth::tests::setup_identity_validation_and_uniqueness ... ok test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok test auth::tests::setup_start_accepts_username_and_display_name ... ok test auth::tests::socket_tests::authenticated_idle_socket_survives_the_former_read_timeout ... ok test auth::tests::socket_tests::clean_control_close_is_not_an_internal_error ... ok test auth::tests::socket_tests::expired_handshake_releases_user_permits ... ok test auth::tests::socket_tests::fragmented_wire_frame_has_a_completion_deadline ... ok test auth::tests::socket_tests::half_open_sockets_obey_user_limit ... ok test auth::tests::socket_tests::incomplete_rfc_message_still_loses_authority_on_revocation ... ok test auth::tests::socket_tests::recovery_subscription_updates_every_signed_in_socket ... ok test auth::tests::socket_tests::revoked_idle_socket_loses_all_authority ... ok test auth::tests::socket_tests::socket_authority_latency_at_user_capacity ... ignored, release-only measurement without concurrent compilation test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test embedded::regressions::credited_bulk_output_survives_forwarder_io_pause ... ok test embedded::regressions::credited_output_queue_at_stream_capacity ... ignored, debug actor memory/scheduling measurement; run without concurrent builds test embedded::regressions::full_output_queue_must_not_block_shared_actor ... ok test embedded::regressions::healthy_receiver_survives_ready_native_output_burst ... ok test embedded::regressions::healthy_streams_progress_at_user_attachment_capacity ... ok test embedded::regressions::output_and_snapshot_spend_remaining_restart_credit ... ok test embedded::regressions::real_agent_canonical_uuid_result_is_accepted ... ok test embedded::regressions::real_agent_open_uses_uid_and_character_dimensions ... ok test embedded::regressions::reattach_must_restore_output_credit ... ok test embedded::regressions::recovery_event_then_snapshot_keeps_embedded_connection_live ... ok test embedded::regressions::recovery_notices_preserve_order_credit_and_session_isolation ... ok test embedded::regressions::stream_close_must_not_restart_all_sessions ... ok test embedded::regressions::uncredited_output_or_repaint_is_rejected_before_queueing ... ok test runtime::reviewer_admission::reviewer_recovery_source_limit_covers_all_routes_without_forwarding_bypass ... ok test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok test runtime::tests::router_migrates_private_storage_and_serves_health ... ok test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok test websocket::recovery_notification_bench::recovery_notification_state_at_socket_capacity ... ignored, notification state sizing diagnostic, not allocator-inclusive RSS certification test websocket::writer_tests::second_device_does_not_inherit_first_device_input_ack ... ok test websocket::writer_tests::writer_admission_at_user_capacity ... ignored, release-only scale measurement; run without concurrent builds test websocket::writer_tests::writer_ownership_capacity_unsigned_offsets_and_identity_reuse ... ok test result: ok. 91 passed; 0 failed; 8 ignored; 0 measured; 0 filtered out; finished in 209.93s Running unittests src/lib.rs (target/debug/deps/infraternal_shim-20f12ce01dce80ec) running 73 tests test frame::checks::approximate_snapshot_codec_is_bounded_and_canonical ... ok test frame::checks::borrowed_and_owned_decoders_agree_at_every_fragment_boundary ... ok test frame::checks::codec_reuse_measurement ... ignored, release codec and allocation-path measurement test frame::checks::golden::every_frozen_message ... ok test frame::checks::golden::exact_maximum_and_coalesced_frames ... 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 session::inputs::tests::identity_cap_preserves_all_existing_cursors ... ok test session::inputs::tests::partial_writes_credit_only_the_owner_and_replay_trims_per_writer ... ok test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile test session::measurements::poll_storage_measurement ... ignored, release poll-storage allocation measurement test session::resize_checks::native_resize_refusal_preserves_peer_and_pty ... ok test session::resize_checks::resize_refusal_session_probe ... ignored, isolated session probe invoked by its parent with a controlled shell profile test session::sequenced_checks::coalesced_ack_never_overwrites_a_partial_output_and_cursors_survive_peer_loss ... ok test session::sequenced_checks::new_frames_roundtrip_and_refuse_noncanonical_payloads ... ok test session::sequenced_checks::reusable_encoder_retains_capacity_and_refuses_growth_before_mutation ... ok test session::sequenced_checks::trim_duplicates_gaps_overflow_and_capacity_are_transactional ... ok test session::sequenced_checks::writer_selection_has_a_frozen_little_endian_layout ... ok test terminal::checks::approximate_repaint_is_bounded_clips_at_complete_cells_and_preserves_source ... ok test terminal::checks::approximate_repaint_keeps_complete_pending_syntax_or_omits_it_whole ... ok test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok test terminal::checks::tests::byte_budget_prunes_history_and_resize_remains_repaintable ... ok test terminal::checks::tests::fixtures_and_continuations_repaint ... ok test terminal::checks::tests::implicit_hyperlinks_retain_groups_across_rows_and_continuation ... ok test terminal::checks::tests::long_unfinished_hyperlink_and_control_strings_continue ... ok test terminal::checks::tests::margins_tabs_charsets_and_modes_continue ... ok test terminal::checks::tests::partial_csi_and_utf8_continue ... ok test terminal::checks::tests::pending_wrap_and_saved_wrap_continue_with_wide_cells ... ok test terminal::checks::tests::retained_alternate_saved_cursor_and_keyboard_stack_continue ... ok test terminal::checks::tests::saved_origin_survives_changed_margins ... ok test terminal::checks::tests::unfinished_sequence_over_frame_limit_fails_without_losing_runtime_state ... ok test terminal::fidelity::fidelity_charset_mapped_wide_space_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_cursor ... ok test terminal::fidelity::fidelity_diagnostic_fixture ... ignored, diagnostic replay of an explicitly selected fixture file test terminal::fidelity::fidelity_edge ... ok test terminal::fidelity::fidelity_extended_nightly ... ignored, nightly expanded differential corpus: 20,000 deterministic cases test terminal::fidelity::fidelity_extended_smoke ... ok test terminal::fidelity::fidelity_f1_rep ... ok test terminal::fidelity::fidelity_fresh_c_redraw_default_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_handwritten ... ok test terminal::fidelity::fidelity_inherited_protection_off_mode_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_iso_protection_does_not_keep_rep_scratch ... ok test terminal::fidelity::fidelity_iso_protection_erase ... ok test terminal::fidelity::fidelity_mouse_effective_fields_follow_order_independently_of_booleans ... ok test terminal::fidelity::fidelity_oracle_detects_hidden_state ... ok test terminal::fidelity::fidelity_oracle_observes_archived_cells_with_equal_active_screens ... ok test terminal::fidelity::fidelity_orphaned_spacer_head ... ok test terminal::fidelity::fidelity_prompt_resize_requires_explicit_rejection ... ok test terminal::fidelity::fidelity_recorded_corpus ... ok test terminal::fidelity::fidelity_rejects_unrepresentable_rep_without_mutating_source ... ok test terminal::fidelity::fidelity_saved_cursor_over_changed_edge ... ok test terminal::fidelity::fidelity_saved_modes_future_restore ... ok test terminal::fidelity::fidelity_screen_entry_consumes_inherited_shift_before_saving ... ok test terminal::fidelity::fidelity_seeded_nightly ... ignored, nightly differential corpus: 20,000 deterministic cases test terminal::fidelity::fidelity_seeded_smoke ... ok test terminal::fidelity::fidelity_semantic_validation_matches_exported_history_extent ... ok test terminal::fidelity::fidelity_single_shift_survives_rep_seed ... ok test terminal::fidelity::fidelity_snapshot_history_tail_contains_no_padding_rows ... ok test terminal::fidelity::fidelity_snapshot_resets_stale_viewer_color_overrides ... ok test terminal::fidelity::fidelity_spacer_head_attributes ... ok test terminal::fidelity::fidelity_variation_tail_attributes ... ok test terminal::fidelity::fidelity_variation_wrap_attributes ... ok test terminal::fidelity::fresh_captures::fidelity_fresh_real_program_captures ... ignored, manual fresh capture oracle; set VT_CAPTURE_DIR after real program capture test terminal::measurements::budgets::snapshot_200x60 ... ignored, performance measurement; run release on the perf host test terminal::measurements::memory::measured_terminal_rss ... ignored, RSS measurement; run this filter alone in a fresh release process test terminal::measurements::throughput::measured_parser ... ignored, VT observer and history throughput measurement test terminal::recovery_measurements::measured_full_ring_reconstruction ... ignored, release reconstruction measurement; old healthy handles permit repeated cleanup test terminal::resize_recovery::absent_ring_keeps_last_good_size_and_later_output_usable ... ok test terminal::resize_recovery::complete_ring_restores_screens_mouse_and_unfinished_syntax ... ok test terminal::resize_recovery::earlier_geometry_changes_require_approximation_even_with_origin_coverage ... ok test terminal::resize_recovery::ring_gap_requires_clean_approximate_recovery ... ok test terminal_native::allocation::resize_allocation_refusal_retires_native_handle ... ok test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 40.94s Running tests/detach.rs (target/debug/deps/detach-4218a1c714d4176b) 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.94s Running tests/mouse.rs (target/debug/deps/mouse-556febae1b88516e) running 1 test test faithful_snapshot_preserves_public_mouse_encoder_reports ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s 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/.cache/codex-scratch/review-recovery/head/Cargo.lock:24:1 │ 24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────┘ lock entries │ ├ base64 v0.21.7 ├── base64urlsafedata v0.5.5 │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── webauthn-rs v0.5.5 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-proto v0.5.5 │ └── webauthn-rs-core v0.5.5 (*) ├── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-proto v0.5.5 (*) ├ base64 v0.22.1 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── infraternal-server v0.1.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 3 duplicate entries for crate 'getrandom' ┌─ /home/kayg/.cache/codex-scratch/review-recovery/head/Cargo.lock:88:1 │ 88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ getrandom v0.2.17 └── rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-agent v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) ├── webauthn-attestation-ca v0.5.5 (*) ├── webauthn-rs v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'hashbrown' ┌─ /home/kayg/.cache/codex-scratch/review-recovery/head/Cargo.lock:94:1 │ 94 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 95 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ hashbrown v0.15.5 ├── hashlink v0.10.0 │ └── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) └── sqlx-core v0.8.6 (*) ├ hashbrown v0.17.1 └── indexmap v2.14.2 ├── h2 v0.4.19 │ └── hyper v1.11.1 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ └── hyper-util v0.1.21 │ ├── axum v0.8.9 (*) │ └── axum-server v0.8.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 2 duplicate entries for crate 'r-efi' ┌─ /home/kayg/.cache/codex-scratch/review-recovery/head/Cargo.lock:182:1 │ 182 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 183 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────┘ lock entries │ ├ r-efi v5.3.0 └── getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ r-efi v6.0.0 └── getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-agent v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) ├── webauthn-attestation-ca v0.5.5 (*) ├── webauthn-rs v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand' ┌─ /home/kayg/.cache/codex-scratch/review-recovery/head/Cargo.lock:184:1 │ 184 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index 185 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand v0.9.5 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ └── (dev) infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 └── webauthn-rs v0.5.5 └── infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_chacha' ┌─ /home/kayg/.cache/codex-scratch/review-recovery/head/Cargo.lock:186:1 │ 186 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 187 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_chacha v0.3.1 └── rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_core' ┌─ /home/kayg/.cache/codex-scratch/review-recovery/head/Cargo.lock:188:1 │ 188 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 189 │ │ 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 ```
Author
Owner

Run-3 final fast gate at c5cf14ca40, exit 0. Verbatim complete output part 2/3:

      │   │   │       └── infraternal-server v0.1.0 (*)
      │   │   ├── hmac v0.12.1
      │   │   │   └── hkdf v0.12.4
      │   │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   │   ├── sha1 v0.10.7
      │   │   │   ├── axum v0.8.9
      │   │   │   │   └── infraternal-server v0.1.0 (*)
      │   │   │   └── tungstenite v0.29.0
      │   │   │       └── tokio-tungstenite v0.29.0
      │   │   │           ├── axum v0.8.9 (*)
      │   │   │           └── (dev) infraternal-server v0.1.0 (*)
      │   │   └── sha2 v0.10.9
      │   │       ├── infraternal-server v0.1.0 (*)
      │   │       ├── sqlx-core v0.8.6
      │   │       │   ├── sqlx v0.8.6
      │   │       │   │   ├── infraternal v0.1.0 (*)
      │   │       │   │   └── infraternal-server v0.1.0 (*)
      │   │       │   ├── sqlx-macros v0.8.6
      │   │       │   │   └── sqlx v0.8.6 (*)
      │   │       │   ├── sqlx-macros-core v0.8.6
      │   │       │   │   └── sqlx-macros v0.8.6 (*)
      │   │       │   └── sqlx-sqlite v0.8.6
      │   │       │       ├── sqlx v0.8.6 (*)
      │   │       │       └── sqlx-macros-core v0.8.6 (*)
      │   │       └── sqlx-macros-core v0.8.6 (*)
      │   └── universal-hash v0.5.1
      │       └── polyval v0.6.2
      │           └── ghash v0.5.1
      │               └── aes-gcm v0.10.3 (*)
      ├── password-hash v0.5.0
      │   └── argon2 v0.5.3 (*)
      ├── rand v0.8.8
      │   └── bip39 v2.2.2 (*)
      └── rand_chacha v0.3.1
          └── rand v0.8.8 (*)
    ├ rand_core v0.9.5
      ├── rand v0.9.5
      │   ├── infraternal-server v0.1.0
      │   │   └── infraternal v0.1.0
      │   ├── tungstenite v0.29.0
      │   │   └── tokio-tungstenite v0.29.0
      │   │       ├── axum v0.8.9
      │   │       │   └── infraternal-server v0.1.0 (*)
      │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   └── webauthn-rs-core v0.5.5
      │       └── webauthn-rs v0.5.5
      │           └── infraternal-server v0.1.0 (*)
      └── rand_chacha v0.9.0
          ├── rand v0.9.5 (*)
          └── webauthn-rs-core v0.5.5 (*)

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

warning[duplicate]: found 2 duplicate entries for crate 'synstructure'
    ┌─ /home/kayg/.cache/codex-scratch/review-recovery/head/Cargo.lock:228:1
    │  
228 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index
229 │ │ 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/.cache/codex-scratch/review-recovery/head/Cargo.lock:230:1
    │  
230 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index
231 │ │ 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/.cache/codex-scratch/review-recovery/head/Cargo.lock:232:1
    │  
232 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index
233 │ │ 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 (*)

advisories ok, bans ok, licenses ok, sources ok

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

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

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

==> TypeScript protocol compiler
Saved lockfile

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

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


Run-3 final fast gate at c5cf14ca4088fe2347f55b15f2a8abff982ef810, exit 0. Verbatim complete output part 2/3: ```text │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'syn' ┌─ /home/kayg/.cache/codex-scratch/review-recovery/head/Cargo.lock:225:1 │ 225 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 226 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────┘ lock entries │ ├ syn v2.0.119 ├── asn1-rs-derive v0.5.1 │ └── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── asn1-rs-impl v0.2.0 │ └── asn1-rs v0.6.2 (*) ├── openssl-macros v0.1.1 │ └── openssl v0.10.81 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) ├── synstructure v0.13.2 │ └── asn1-rs-derive v0.5.1 (*) ├── thiserror-impl v1.0.69 │ └── thiserror v1.0.69 │ ├── asn1-rs v0.6.2 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── x509-parser v0.16.0 (*) ├── tracing-attributes v0.1.31 │ └── tracing v0.1.44 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-core v0.5.6 │ │ └── axum v0.8.9 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ ├── sqlx-macros v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tracing-subscriber v0.3.23 │ │ └── infraternal-server v0.1.0 (*) │ ├── webauthn-attestation-ca v0.5.5 (*) │ ├── webauthn-rs v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) └── zerocopy-derive v0.8.60 └── zerocopy v0.8.60 ├── half v2.7.1 │ ├── ciborium-ll v0.2.2 │ │ └── ciborium v0.2.2 │ │ └── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-agent v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 (*) │ └── serde_cbor_2 v0.13.0 │ ├── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── ppv-lite86 v0.2.21 ├── rand_chacha v0.3.1 │ └── rand v0.8.8 │ └── bip39 v2.2.2 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 (*) │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ syn v3.0.6 ├── clap_derive v4.6.7 │ └── clap v4.6.7 │ ├── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-agent v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ └── infraternal v0.1.0 (*) ├── displaydoc v0.2.7 │ ├── asn1-rs v0.6.2 │ │ ├── der-parser v9.0.0 │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── x509-parser v0.16.0 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── oid-registry v0.7.1 │ │ │ └── x509-parser v0.16.0 (*) │ │ └── x509-parser v0.16.0 (*) │ ├── der-parser v9.0.0 (*) │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── tinystr v0.8.4 │ │ └── icu_locale_core v2.3.0 (*) │ └── zerotrie v0.2.5 │ ├── icu_properties v2.3.0 (*) │ └── icu_provider v2.3.1 (*) ├── futures-macro v0.3.34 │ └── futures-util v0.3.34 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── futures-executor v0.3.34 │ │ └── sqlx-sqlite v0.8.6 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── js-sys v0.3.106 │ │ └── web-sys v0.3.106 │ │ └── plotters v0.3.7 │ │ └── criterion v0.7.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 │ └── infraternal-server v0.1.0 (*) ├── serde_derive v1.0.229 │ ├── serde v1.0.229 │ │ ├── base64urlsafedata v0.5.5 │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 (*) │ │ ├── bip39 v2.2.2 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── ciborium v0.2.2 │ │ │ └── criterion v0.7.0 (*) │ │ ├── criterion v0.7.0 (*) │ │ ├── either v1.18.0 │ │ │ ├── axum-server v0.8.0 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── itertools v0.13.0 │ │ │ │ ├── criterion v0.7.0 (*) │ │ │ │ └── criterion-plot v0.6.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── rayon v1.12.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── sqlx-core v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ ├── infraternal-agent v0.1.0 (*) │ │ ├── infraternal-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 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ ├── webauthn-rs v0.5.5 (*) │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ └── webauthn-rs-proto v0.5.5 (*) │ └── url v2.5.8 (*) ├── synstructure v0.14.0 │ ├── yoke-derive v0.8.4 │ │ └── yoke v0.8.3 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── zerotrie v0.2.5 (*) │ │ └── zerovec v0.11.8 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_locale_core v2.3.0 (*) │ │ ├── icu_normalizer v2.3.0 (*) │ │ ├── icu_properties v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── potential_utf v0.1.6 │ │ │ └── icu_collections v2.3.0 (*) │ │ └── tinystr v0.8.4 (*) │ └── zerofrom-derive v0.1.8 │ └── zerofrom v0.1.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── yoke v0.8.3 (*) │ ├── zerotrie v0.2.5 (*) │ └── zerovec v0.11.8 (*) ├── thiserror-impl v2.0.21 │ └── thiserror v2.0.21 │ ├── infraternal v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ └── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 (*) ├── tokio-macros v2.7.2 │ └── tokio v1.53.2 │ ├── axum v0.8.9 (*) │ ├── axum-server v0.8.0 (*) │ ├── fs-err v3.3.2 │ │ └── axum-server v0.8.0 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── hyper v1.11.1 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-agent v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 (*) │ ├── tower v0.5.3 (*) │ └── tower-http v0.6.11 (*) ├── wasm-bindgen-macro-support v0.2.129 │ └── wasm-bindgen-macro v0.2.129 │ └── wasm-bindgen v0.2.129 │ ├── js-sys v0.3.106 (*) │ ├── plotters v0.3.7 (*) │ └── web-sys v0.3.106 (*) ├── yoke-derive v0.8.4 (*) ├── zerofrom-derive v0.1.8 (*) └── zerovec-derive v0.11.6 └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'synstructure' ┌─ /home/kayg/.cache/codex-scratch/review-recovery/head/Cargo.lock:228:1 │ 228 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 229 │ │ 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/.cache/codex-scratch/review-recovery/head/Cargo.lock:230:1 │ 230 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 231 │ │ 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/.cache/codex-scratch/review-recovery/head/Cargo.lock:232:1 │ 232 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 233 │ │ 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 (*) advisories ok, bans ok, licenses ok, sources ok ==> static builds Compiling proc-macro2 v1.0.107 Compiling unicode-ident v1.0.26 Compiling quote v1.0.47 Compiling libc v0.2.190 Compiling cfg-if v1.0.5 Compiling autocfg v1.5.1 Compiling serde v1.0.229 Compiling pin-project-lite v0.2.17 Compiling version_check v0.9.5 Compiling find-msvc-tools v0.1.14 Compiling generic-array v0.14.7 Compiling shlex v2.0.1 Compiling cc v1.6.0 Compiling syn v3.0.6 Compiling syn v2.0.119 Compiling serde_core v1.0.229 Compiling pkg-config v0.3.34 Compiling vcpkg v0.2.15 Compiling synstructure v0.14.0 Compiling displaydoc v0.2.7 Compiling zerovec-derive v0.11.6 Compiling zerofrom-derive v0.1.8 Compiling yoke-derive v0.8.4 Compiling serde_derive v1.0.229 Compiling memchr v2.8.3 Compiling itoa v1.0.18 Compiling bytes v1.12.1 Compiling icu_properties_data v2.3.0 Compiling icu_normalizer_data v2.3.0 Compiling tracing-attributes v0.1.31 Compiling futures-core v0.3.34 Compiling zerofrom v0.1.8 Compiling stable_deref_trait v1.2.1 Compiling yoke v0.8.3 Compiling errno v0.3.14 Compiling smallvec v1.16.2 Compiling once_cell v1.21.4 Compiling log v0.4.34 Compiling tracing-core v0.1.36 Compiling signal-hook-registry v1.4.8 Compiling socket2 v0.6.5 Compiling mio v1.2.4 Compiling tokio-macros v2.7.2 Compiling zerovec v0.11.8 Compiling futures-sink v0.3.34 Compiling zerocopy v0.8.60 Compiling tokio v1.53.2 Compiling zmij v1.0.23 Compiling parking_lot_core v0.9.12 Compiling tracing v0.1.44 Compiling zerocopy-derive v0.8.60 Compiling thiserror v2.0.21 Compiling typenum v1.20.1 Compiling tinystr v0.8.4 Compiling openssl-src v300.6.1+3.6.3 Compiling num-traits v0.2.19 Compiling slab v0.4.12 Compiling writeable v0.6.4 Compiling litemap v0.8.3 Compiling crossbeam-utils v0.8.23 Compiling icu_locale_core v2.3.0 Compiling openssl-sys v0.9.117 Compiling potential_utf v0.1.6 Compiling zerotrie v0.2.5 Compiling thiserror-impl v2.0.21 Compiling utf8_iter v1.0.4 Compiling subtle v2.6.1 Compiling icu_collections v2.3.0 Compiling icu_provider v2.3.1 Compiling crypto-common v0.1.7 Compiling block-buffer v0.10.4 Compiling http v1.5.0 Compiling equivalent v1.0.2 Compiling percent-encoding v2.3.2 Compiling digest v0.10.7 Compiling ppv-lite86 v0.2.21 Compiling scopeguard v1.2.0 Compiling bitflags v2.13.2 Compiling getrandom v0.3.4 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 libsqlite3-sys v0.30.1 Compiling futures-macro v0.3.34 Compiling cpufeatures v0.2.17 Compiling futures-task v0.3.34 Compiling hashbrown v0.17.1 Compiling futures-io v0.3.34 Compiling futures-util v0.3.34 Compiling idna_adapter v1.2.2 Compiling indexmap v2.14.2 Compiling minimal-lexical v0.2.1 Compiling num-conv v0.2.2 Compiling thiserror v1.0.69 Compiling serde_json v1.0.151 Compiling time-core v0.1.9 Compiling httparse v1.10.1 Compiling time-macros v0.2.32 Compiling nom v7.1.3 Compiling rand_core v0.9.5 Compiling idna v1.1.0 Compiling http-body v1.1.0 Compiling thiserror-impl v1.0.69 Compiling synstructure v0.13.2 Compiling foreign-types-shared v0.1.1 Compiling allocator-api2 v0.2.21 Compiling deranged v0.5.8 Compiling foldhash v0.1.5 Compiling getrandom v0.4.3 Compiling powerfmt v0.2.1 Compiling openssl v0.10.81 Compiling hashbrown v0.15.5 Compiling foreign-types v0.3.2 Compiling url v2.5.8 Compiling time v0.3.55 Compiling asn1-rs-derive v0.5.1 Compiling rusticata-macros v4.1.0 Compiling rand_chacha v0.9.0 Compiling parking_lot v0.12.5 Compiling tokio-util v0.7.19 Compiling futures-channel v0.3.34 Compiling getrandom v0.2.17 Compiling asn1-rs-impl v0.2.0 Compiling openssl-macros v0.1.1 Compiling arrayvec v0.7.8 Compiling parking v2.2.1 Compiling tower-service v0.3.3 Compiling crc-catalog v2.5.0 Compiling data-encoding v2.11.1 Compiling crc v3.4.0 Compiling event-listener v5.4.2 Compiling asn1-rs v0.6.2 Compiling sha2 v0.10.9 Compiling rand_core v0.6.4 Compiling futures-intrusive v0.5.0 Compiling rand v0.9.5 Compiling crossbeam-queue v0.3.14 Compiling tokio-stream v0.1.19 Compiling hashlink v0.10.0 Compiling either v1.18.0 Compiling spin v0.9.9 Compiling num-integer v0.1.47 Compiling memoffset v0.9.1 Compiling lazy_static v1.5.1 Compiling atomic-waker v1.1.2 Compiling httpdate v1.0.3 Compiling oid-registry v0.7.1 Compiling heck v0.5.0 Compiling pastey v0.1.1 Compiling ryu v1.0.23 Compiling cfg_aliases v0.2.2 Compiling fnv v1.0.7 Compiling base64 v0.22.1 Compiling base64 v0.21.7 Compiling sqlx-core v0.8.6 Compiling base64urlsafedata v0.5.5 Compiling h2 v0.4.19 Compiling nix v0.30.1 Compiling serde_urlencoded v0.7.1 Compiling num-bigint v0.4.8 Compiling flume v0.11.1 Compiling uuid v1.27.0 Compiling atoi v2.0.0 Compiling futures-executor v0.3.34 Compiling rustversion v1.0.23 Compiling webauthn-attestation-ca v0.5.5 Compiling mime v0.3.17 Compiling unicase v2.10.0 Compiling tower-layer v0.3.3 Compiling mime_guess v2.0.5 Compiling sqlx-sqlite v0.8.6 Compiling der-parser v9.0.0 Compiling hyper v1.11.1 Compiling http-body-util v0.1.5 Compiling sha1 v0.10.7 Compiling half v2.7.1 Compiling fs-err v3.3.2 Compiling webauthn-rs-core v0.5.5 Compiling utf8parse v0.2.2 Compiling hex v0.4.3 Compiling regex-syntax v0.8.11 Compiling sync_wrapper v1.0.2 Compiling tokio-openssl v0.6.5 Compiling dotenvy v0.15.7 Compiling sqlx-macros-core v0.8.6 Compiling anstyle-parse v1.0.0 Compiling serde_cbor_2 v0.13.0 Compiling regex-automata v0.4.18 Compiling tungstenite v0.29.0 Compiling hyper-util v0.1.21 Compiling x509-parser v0.16.0 Compiling webauthn-rs-proto v0.5.5 Compiling rand_chacha v0.3.1 Compiling hex-conservative v0.2.3 Compiling is_terminal_polyfill v1.70.2 Compiling infraternal-shim v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-shim) Compiling base64ct v1.8.3 Compiling tinyvec v1.13.3 Compiling colorchoice v1.0.5 Compiling anstyle v1.0.14 Compiling anstyle-query v1.1.5 Compiling anstream v1.0.0 Compiling unicode-normalization v0.1.25 Compiling password-hash v0.5.0 Compiling bitcoin_hashes v0.14.101 Compiling rand v0.8.8 Compiling arc-swap v1.9.2 Compiling matchers v0.2.0 Compiling tokio-tungstenite v0.29.0 Compiling sqlx-macros v0.8.6 Compiling axum-core v0.5.6 Compiling tower v0.5.3 Compiling sharded-slab v0.1.7 Compiling vte v0.15.0 Compiling blake2 v0.10.6 Compiling tracing-serde v0.2.0 Compiling tracing-log v0.2.0 Compiling serde_path_to_error v0.1.20 Compiling thread_local v1.1.10 Compiling strsim v0.11.1 Compiling infraternal-protocol v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-protocol) Compiling http-range-header v0.4.2 Compiling nu-ansi-term v0.50.3 Compiling clap_lex v1.1.1 Compiling matchit v0.8.4 Compiling infraternal-server v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-server) Compiling axum v0.8.9 Compiling clap_builder v4.6.7 Compiling tracing-subscriber v0.3.23 Compiling tower-http v0.6.11 Compiling argon2 v0.5.3 Compiling bip39 v2.2.2 Compiling clap_derive v4.6.7 Compiling clap v4.6.7 Compiling sqlx v0.8.6 Compiling infraternal-agent v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-agent) Compiling axum-server v0.8.0 Compiling webauthn-rs v0.5.5 Compiling infraternal v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal) Finished `release` profile [optimized] target(s) in 5m 39s 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: 15900816 bytes Compiling libc v0.2.190 Compiling cfg-if v1.0.5 Compiling pin-project-lite v0.2.17 Compiling serde_core v1.0.229 Compiling memchr v2.8.3 Compiling bytes v1.12.1 Compiling itoa v1.0.18 Compiling futures-core v0.3.34 Compiling serde v1.0.229 Compiling zerofrom v0.1.8 Compiling stable_deref_trait v1.2.1 Compiling log v0.4.34 Compiling yoke v0.8.3 Compiling errno v0.3.14 Compiling smallvec v1.16.2 Compiling once_cell v1.21.4 Compiling signal-hook-registry v1.4.8 Compiling socket2 v0.6.5 Compiling tracing-core v0.1.36 Compiling mio v1.2.4 Compiling zerovec v0.11.8 Compiling futures-sink v0.3.34 Compiling tokio v1.53.2 Compiling zerocopy v0.8.60 Compiling tracing v0.1.44 Compiling generic-array v0.14.7 Compiling typenum v1.20.1 Compiling tinystr v0.8.4 Compiling litemap v0.8.3 Compiling slab v0.4.12 Compiling writeable v0.6.4 Compiling icu_locale_core v2.3.0 Compiling num-traits v0.2.19 Compiling potential_utf v0.1.6 Compiling zerotrie v0.2.5 Compiling utf8_iter v1.0.4 Compiling subtle v2.6.1 Compiling icu_collections v2.3.0 Compiling icu_provider v2.3.1 Compiling openssl-sys v0.9.117 Compiling block-buffer v0.10.4 Compiling crypto-common v0.1.7 Compiling http v1.5.0 Compiling icu_properties_data v2.3.0 Compiling icu_normalizer_data v2.3.0 Compiling equivalent v1.0.2 Compiling percent-encoding v2.3.2 Compiling digest v0.10.7 Compiling ppv-lite86 v0.2.21 Compiling bitflags v2.13.2 Compiling getrandom v0.3.4 Compiling icu_properties v2.3.0 Compiling icu_normalizer v2.3.0 Compiling form_urlencoded v1.2.2 Compiling hashbrown v0.17.1 Compiling futures-io v0.3.34 Compiling futures-task v0.3.34 Compiling futures-util v0.3.34 Compiling idna_adapter v1.2.2 Compiling indexmap v2.14.2 Compiling zmij v1.0.23 Compiling cpufeatures v0.2.17 Compiling scopeguard v1.2.0 Compiling minimal-lexical v0.2.1 Compiling nom v7.1.3 Compiling serde_json v1.0.151 Compiling httparse v1.10.1 Compiling lock_api v0.4.14 Compiling thiserror v1.0.69 Compiling rand_core v0.9.5 Compiling idna v1.1.0 Compiling http-body v1.1.0 Compiling thiserror v2.0.21 Compiling deranged v0.5.8 Compiling powerfmt v0.2.1 Compiling time-core v0.1.9 Compiling num-conv v0.2.2 Compiling foreign-types-shared v0.1.1 Compiling url v2.5.8 Compiling foreign-types v0.3.2 Compiling getrandom v0.4.3 Compiling rusticata-macros v4.1.0 Compiling time v0.3.55 Compiling rand_chacha v0.9.0 Compiling tokio-util v0.7.19 Compiling futures-channel v0.3.34 Compiling parking_lot_core v0.9.12 Compiling getrandom v0.2.17 Compiling arrayvec v0.7.8 Compiling data-encoding v2.11.1 Compiling tower-service v0.3.3 Compiling rand_core v0.6.4 Compiling asn1-rs v0.6.2 Compiling rand v0.9.5 Compiling num-integer v0.1.47 Compiling crossbeam-utils v0.8.23 Compiling allocator-api2 v0.2.21 Compiling fnv v1.0.7 Compiling base64 v0.21.7 Compiling lazy_static v1.5.1 Compiling httpdate v1.0.3 Compiling atomic-waker v1.1.2 Compiling foldhash v0.1.5 Compiling base64urlsafedata v0.5.5 Compiling oid-registry v0.7.1 Compiling h2 v0.4.19 Compiling hashbrown v0.15.5 Compiling num-bigint v0.4.8 Compiling memoffset v0.9.1 Compiling uuid v1.27.0 Compiling parking_lot v0.12.5 Compiling either v1.18.0 Compiling parking v2.2.1 Compiling tower-layer v0.3.3 Compiling base64 v0.22.1 Compiling crc-catalog v2.5.0 Compiling mime v0.3.17 Compiling ryu v1.0.23 Compiling crc v3.4.0 Compiling serde_urlencoded v0.7.1 Compiling event-listener v5.4.2 Compiling der-parser v9.0.0 Compiling futures-intrusive v0.5.0 Compiling crossbeam-queue v0.3.14 Compiling hashlink v0.10.0 Compiling nix v0.30.1 Compiling http-body-util v0.1.5 Compiling spin v0.9.9 Compiling sha2 v0.10.9 Compiling sha1 v0.10.7 Compiling hyper v1.11.1 Compiling tokio-stream v0.1.19 Compiling libsqlite3-sys v0.30.1 Compiling half v2.7.1 Compiling regex-syntax v0.8.11 Compiling utf8parse v0.2.2 Compiling sync_wrapper v1.0.2 Compiling anstyle-parse v1.0.0 Compiling serde_cbor_2 v0.13.0 Compiling fs-err v3.3.2 Compiling hyper-util v0.1.21 Compiling sqlx-core v0.8.6 Compiling tungstenite v0.29.0 Compiling regex-automata v0.4.18 Compiling flume v0.11.1 Compiling x509-parser v0.16.0 Compiling mime_guess v2.0.5 Compiling webauthn-rs-proto v0.5.5 Compiling rand_chacha v0.3.1 Compiling hex-conservative v0.2.3 Compiling futures-executor v0.3.34 Compiling atoi v2.0.0 Compiling colorchoice v1.0.5 Compiling anstyle v1.0.14 Compiling anstyle-query v1.1.5 Compiling hex v0.4.3 Compiling base64ct v1.8.3 Compiling tinyvec v1.13.3 Compiling is_terminal_polyfill v1.70.2 Compiling unicase v2.10.0 Compiling anstream v1.0.0 Compiling unicode-normalization v0.1.25 Compiling password-hash v0.5.0 Compiling infraternal-shim v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-shim) Compiling sqlx-sqlite v0.8.6 Compiling bitcoin_hashes v0.14.101 Compiling rand v0.8.8 Compiling arc-swap v1.9.2 Compiling matchers v0.2.0 Compiling tokio-tungstenite v0.29.0 Compiling axum-core v0.5.6 Compiling tower v0.5.3 Compiling sharded-slab v0.1.7 Compiling vte v0.15.0 Compiling blake2 v0.10.6 Compiling tracing-log v0.2.0 Compiling tracing-serde v0.2.0 Compiling serde_path_to_error v0.1.20 Compiling thread_local v1.1.10 Compiling nu-ansi-term v0.50.3 Compiling http-range-header v0.4.2 Compiling strsim v0.11.1 Compiling matchit v0.8.4 Compiling clap_lex v1.1.1 Compiling infraternal-protocol v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-protocol) Compiling clap_builder v4.6.7 Compiling axum v0.8.9 Compiling infraternal-server v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-server) Compiling tower-http v0.6.11 Compiling tracing-subscriber v0.3.23 Compiling argon2 v0.5.3 Compiling sqlx v0.8.6 Compiling bip39 v2.2.2 Compiling clap v4.6.7 Compiling infraternal-agent v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal-agent) Compiling openssl v0.10.81 Compiling webauthn-attestation-ca v0.5.5 Compiling tokio-openssl v0.6.5 Compiling webauthn-rs-core v0.5.5 Compiling axum-server v0.8.0 Compiling webauthn-rs v0.5.5 Compiling infraternal v0.1.0 (/home/kayg/.cache/codex-scratch/review-recovery/head/crates/infraternal) Finished `release` profile [optimized] target(s) in 6m 14s target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 13371248 bytes server subcommand: exit 2, not implemented agent subcommand: exit 2, not implemented +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ==> Vendored Ghostty artifact checksums dist/ghostty-web.js: OK dist/ghostty-vt.wasm: OK dist/index.d.ts: OK ==> TypeScript protocol compiler Saved lockfile ==> Rust stream oracle (for the differential test) ==> TypeScript protocol tests bun test v1.4.2 (744846f84) ```
Author
Owner

Run-3 final fast gate at c5cf14ca40, exit 0. Verbatim complete output part 3/3:

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

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

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

Run-3 final fast gate at c5cf14ca4088fe2347f55b15f2a8abff982ef810, exit 0. Verbatim complete output part 3/3: ```text src/codec.test.ts: (pass) wire protocol golden vectors > encodes and decodes each frame exactly as the shared manifest describes [8.49ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.22ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [1.02ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.24ms] (pass) split mux header preserves trailing Close [0.44ms] 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 [2684.94ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [7.13ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.71s] ```
Author
Owner

Independent re-review (run 3) finished. Verdict: merge the five-commit fix diff 7f60cf92b10ded0d6c15011be7c1306d76384180..c5cf14ca4088fe2347f55b15f2a8abff982ef810, branch mobile-recovery. R1/P1, R2/P1 and R3/P2 resolved; no new actionable finding in this diff.

R1: no production phrase route/fallback; local wrapping uploads only envelope + independent verifier, pins account and expires dismissed callbacks. Whole client/server grep, real server phrase denial, crypto and 401/429/503 retry probes pass; contract now matches.
R2: live expiry checked under the SQLite writer and in the consuming statement. Both retained contention probes return HTTP 401 instead of prior 200, with no envelope/verifier/session/audit mutation. Added queued-finish abort + disk reopen/auth-state restart rejects old ceremony and expired capability, preserves the deadline and permits one fresh completion. This is auth-state recreation, not an OS process-stop test.
R3: 90000s rollback accepted; exact 172800s maximum accepted with Continue disabled, malicious 172801s rejected.

Results: retained server probes 8/8 (27.38s); extra restart/admission/notification probes 3/3 (11.93s); client tests 15/15, 340 assertions; added request probes 6/6, 63 assertions; production recovery browser 15/15 (40.1s); extra boundary browser 2/2 (4.4s); native Chromium four auth + two recovery scenarios PASS; tsc PASS. Existing cancellation, audit, notifications, source/global limits, KDF capacity and original-DEK continuity remain covered.

50-session disk-WAL diagnostic, 1000 samples/path: p50 14.02->14.71us, p99 50.44->51.56us, zero added network/idle queries. Eight-vCPU i9-9900K KVM, load 4.12/8.87/10.27. All runs scoped CPUWeight=10000; TRACER_TEST_PORT=4747. No perf VM/other host used; no physical-iPhone or unrelated terminal-budget certification. 52 production public-fixture screenshots retained; three attached above for owner judgment.

Complete findings, unedited logs, probe sources, measurements and all screenshots; ZIP SHA256 c14abb29b5d9fe88279aa2218908710d8e8899b7f7690206c6544a466e882cfc. Findings appended under Re-review (run 3) in ~/.local/state/codex-jobs/infraternal/review-recovery/findings.md. Reviewed worktree clean/read-only at head c5cf14ca40; scratch worktree/build products removed. No commits, push, merge, deployment or issue closure.

scripts/verify fast exit 0; complete verbatim output posted immediately above and attached. Server result (verbatim):

test result: ok. 91 passed; 0 failed; 8 ignored; 0 measured; 0 filtered out; finished in 209.93s
+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| fmt                       | PASS         |
| VT native fmt             | PASS         |
| clippy                    | PASS         |
| test                      | PASS         |
| cargo-deny                | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+

Protocol result (verbatim):

stream differential: 134 streams, 11439 schedules, zero divergences
 7 pass
 0 fail
 34390 expect() calls
Ran 7 tests across 2 files. [2.71s]

Static artifacts: x86_64 15900816 bytes; aarch64 13371248 bytes; PT_INTERP absent for both. Initial Zig temporary-directory failure is retained separately; successful gate used corrected parent-PID directory-FD alias, with no source or threshold change.

Independent re-review (run 3) finished. **Verdict: merge** the five-commit fix diff 7f60cf92b10ded0d6c15011be7c1306d76384180..c5cf14ca4088fe2347f55b15f2a8abff982ef810, branch mobile-recovery. R1/P1, R2/P1 and R3/P2 resolved; no new actionable finding in this diff. R1: no production phrase route/fallback; local wrapping uploads only envelope + independent verifier, pins account and expires dismissed callbacks. Whole client/server grep, real server phrase denial, crypto and 401/429/503 retry probes pass; contract now matches. R2: live expiry checked under the SQLite writer and in the consuming statement. Both retained contention probes return HTTP 401 instead of prior 200, with no envelope/verifier/session/audit mutation. Added queued-finish abort + disk reopen/auth-state restart rejects old ceremony and expired capability, preserves the deadline and permits one fresh completion. This is auth-state recreation, not an OS process-stop test. R3: 90000s rollback accepted; exact 172800s maximum accepted with Continue disabled, malicious 172801s rejected. Results: retained server probes 8/8 (27.38s); extra restart/admission/notification probes 3/3 (11.93s); client tests 15/15, 340 assertions; added request probes 6/6, 63 assertions; production recovery browser 15/15 (40.1s); extra boundary browser 2/2 (4.4s); native Chromium four auth + two recovery scenarios PASS; tsc PASS. Existing cancellation, audit, notifications, source/global limits, KDF capacity and original-DEK continuity remain covered. 50-session disk-WAL diagnostic, 1000 samples/path: p50 14.02->14.71us, p99 50.44->51.56us, zero added network/idle queries. Eight-vCPU i9-9900K KVM, load 4.12/8.87/10.27. All runs scoped CPUWeight=10000; TRACER_TEST_PORT=4747. No perf VM/other host used; no physical-iPhone or unrelated terminal-budget certification. 52 production public-fixture screenshots retained; three attached above for owner judgment. [Complete findings, unedited logs, probe sources, measurements and all screenshots](https://git.kayg.org/attachments/89ba75f8-813f-41f8-9010-4d52c810d114); ZIP SHA256 c14abb29b5d9fe88279aa2218908710d8e8899b7f7690206c6544a466e882cfc. Findings appended under Re-review (run 3) in ~/.local/state/codex-jobs/infraternal/review-recovery/findings.md. Reviewed worktree clean/read-only at head c5cf14ca4088fe2347f55b15f2a8abff982ef810; scratch worktree/build products removed. No commits, push, merge, deployment or issue closure. scripts/verify fast exit 0; complete verbatim output posted immediately above and attached. Server result (verbatim): ```text test result: ok. 91 passed; 0 failed; 8 ignored; 0 measured; 0 filtered out; finished in 209.93s ``` ```text +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ``` Protocol result (verbatim): ```text stream differential: 134 streams, 11439 schedules, zero divergences 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [2.71s] ``` Static artifacts: x86_64 15900816 bytes; aarch64 13371248 bytes; PT_INTERP absent for both. Initial Zig temporary-directory failure is retained separately; successful gate used corrected parent-PID directory-FD alias, with no source or threshold change.
Author
Owner

Starting integration on merge-recovery, base/dev 9c62448a32; reviewed mobile-recovery c5cf14ca40. Reading prior findings and parent #5; merge conflicts in auth client, session/WebAuthn/socket server and terminal tests. Backend stays enabled; D162 UI hold will be a separate atomic flag commit. TRACER_TEST_PORT=4786; no push/deploy.

Starting integration on merge-recovery, base/dev 9c62448a32a75a1365c4004c982abf3336ca4883; reviewed mobile-recovery c5cf14ca4088fe2347f55b15f2a8abff982ef810. Reading prior findings and parent #5; merge conflicts in auth client, session/WebAuthn/socket server and terminal tests. Backend stays enabled; D162 UI hold will be a separate atomic flag commit. TRACER_TEST_PORT=4786; no push/deploy.
Author
Owner

Merge findings: dev terminal-touch.ts is byte-identical to the merged result; terminal.ts adds only recovery Subscribe/Event handling (12 lines). No conflicting touch changes dropped. Kept provider metadata/AAGUID persistence, setup_consumed notification (#51), deterministic handshake_timeout (#65), local themes (#75), mesh crate (#80). Recovery socket fixture required insert_session(..., None) after dev provider signature; initial merge-fast.log fails E0061 at auth/socket_tests.rs:346. Adapted the provider enrollment fixture to cfg(test) legacy_setup, matching existing legacy fixtures; production remains verifier-only. Native recovery harness used hard-coded target/; corrected it to honor CARGO_TARGET_DIR. UI hold regression before flag: mobile and desktop #use-recovery count expected 0, actual 1 (hold-red.log). Captured dev 9c62448 production baseline at 393x852 and 1440x900; card rectangles mobile (20,274.375,353,303.234375), desktop (500,290.625,440,318.734375). Only time-dependent backdrop canvas excluded from pixel comparison; auth content/geometry retained.

Merge findings: dev terminal-touch.ts is byte-identical to the merged result; terminal.ts adds only recovery Subscribe/Event handling (12 lines). No conflicting touch changes dropped. Kept provider metadata/AAGUID persistence, setup_consumed notification (#51), deterministic handshake_timeout (#65), local themes (#75), mesh crate (#80). Recovery socket fixture required insert_session(..., None) after dev provider signature; initial merge-fast.log fails E0061 at auth/socket_tests.rs:346. Adapted the provider enrollment fixture to cfg(test) legacy_setup, matching existing legacy fixtures; production remains verifier-only. Native recovery harness used hard-coded target/; corrected it to honor CARGO_TARGET_DIR. UI hold regression before flag: mobile and desktop #use-recovery count expected 0, actual 1 (hold-red.log). Captured dev 9c62448 production baseline at 393x852 and 1440x900; card rectangles mobile (20,274.375,353,303.234375), desktop (500,290.625,440,318.734375). Only time-dependent backdrop canvas excluded from pixel comparison; auth content/geometry retained.
Author
Owner

Migration integration finding: dev already owns version 0009_passkey_provider.sql; recovery carried 0009_recovery_audit.sql and 0010_recovery_derivation.sql. Kept dev v9 checksum/name intact and renumbered new recovery migrations to v10 audit and v11 derivation before accepting a gate. Interrupted the initial warmup/compile-failure gate; it is not counted as merge verification. The provider migration regression builds a real v8 database and upgrades through all merged migrations. Fresh frozen merge gate follows.

Migration integration finding: dev already owns version 0009_passkey_provider.sql; recovery carried 0009_recovery_audit.sql and 0010_recovery_derivation.sql. Kept dev v9 checksum/name intact and renumbered new recovery migrations to v10 audit and v11 derivation before accepting a gate. Interrupted the initial warmup/compile-failure gate; it is not counted as merge verification. The provider migration regression builds a real v8 database and upgrades through all merged migrations. Fresh frozen merge gate follows.
Author
Owner

Frozen merge gate environment failure: initial_attach_requires_explicit_credit_before_replay could not create target/ac469391 (FileNotFoundError); the unchanged dev Python fixture assumes target/ exists even with CARGO_TARGET_DIR elsewhere. Created ignored worktree target -> /home/kayg/.cache/codex-scratch/merge-recovery/target so all build/fixture writes remain in job scratch. No timeout/assertion/source change. Initial gate output retained in merge-fast-final.log; repeating full gate after static cache warmup.

Frozen merge gate environment failure: initial_attach_requires_explicit_credit_before_replay could not create target/ac469391 (FileNotFoundError); the unchanged dev Python fixture assumes target/ exists even with CARGO_TARGET_DIR elsewhere. Created ignored worktree target -> /home/kayg/.cache/codex-scratch/merge-recovery/target so all build/fixture writes remain in job scratch. No timeout/assertion/source change. Initial gate output retained in merge-fast-final.log; repeating full gate after static cache warmup.
Author
Owner

Integration checkpoint (merge pending, frozen tree): native-auth-final.log passes 4 isolated auth + 2 real-verifier recovery Chromium 149.0.7827.55 scenarios; original DEK/capability consumption/replacement login verified. Initial native harness lacked make; repeated with documented Nix make/perl/Zig shell, no source change. Recovery client checks: 15 pass / 340 assertions. 50-device disk SQLite WAL 3.53.3 projection comparison, 1000 samples/path after 200 warmups: dev p50/p99 15.472/53.642 us; merged 17.193/52.273 us. Machine infraternal-dev, 8 cores, load [18.47119140625, 17.41552734375, 14.75927734375]; no added network trips or idle queries; loaded local diagnostic, not pinned certification. Corrected account-entry red probe expected 0 palette recovery controls, actual 1 (hold-account-red.log). x86_64 static build 15961168 bytes, PT_INTERP absent; ARM + full gate retry still running.

Integration checkpoint (merge pending, frozen tree): native-auth-final.log passes 4 isolated auth + 2 real-verifier recovery Chromium 149.0.7827.55 scenarios; original DEK/capability consumption/replacement login verified. Initial native harness lacked make; repeated with documented Nix make/perl/Zig shell, no source change. Recovery client checks: 15 pass / 340 assertions. 50-device disk SQLite WAL 3.53.3 projection comparison, 1000 samples/path after 200 warmups: dev p50/p99 15.472/53.642 us; merged 17.193/52.273 us. Machine infraternal-dev, 8 cores, load [18.47119140625, 17.41552734375, 14.75927734375]; no added network trips or idle queries; loaded local diagnostic, not pinned certification. Corrected account-entry red probe expected 0 palette recovery controls, actual 1 (hold-account-red.log). x86_64 static build 15961168 bytes, PT_INTERP absent; ARM + full gate retry still running.
Author
Owner

Completed no-ff merge 4f8b737dbf (parents dev 9c62448 and mobile-recovery c5cf14c). Integration choices recorded above; v9 provider migration preserved, recovery v10/v11. scripts/verify fast exit 0, CPUWeight=10000/TRACER_TEST_PORT=4786/RUST_TEST_THREADS=1. Server: 100 passed/9 ignored; static x86_64 15961168, ARM64 13426064 bytes, PT_INTERP absent. Native 4 auth + 2 recovery PASS; client 15 pass/340 assertions. UI flag step now in progress; no push/deploy. Verbatim gate summary:

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

Full output retained: target/merge-recovery-evidence/merge-fast-green.log (will post final full gate verbatim).

Completed no-ff merge 4f8b737dbf570e80ad143ad8c654ef14e0235a35 (parents dev 9c62448 and mobile-recovery c5cf14c). Integration choices recorded above; v9 provider migration preserved, recovery v10/v11. scripts/verify fast exit 0, CPUWeight=10000/TRACER_TEST_PORT=4786/RUST_TEST_THREADS=1. Server: 100 passed/9 ignored; static x86_64 15961168, ARM64 13426064 bytes, PT_INTERP absent. Native 4 auth + 2 recovery PASS; client 15 pass/340 assertions. UI flag step now in progress; no push/deploy. Verbatim gate summary: ```text +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ``` Full output retained: target/merge-recovery-evidence/merge-fast-green.log (will post final full gate verbatim).
Author
Owner

D162 production proof: default build ignores ?mock=1&proto=recovery, no sign-in recovery button/screen or account controls. Strict screenshot diff against dev 9c62448: 0 differing pixels at 393x852 and 1440x900 (production-browser.log); only time-dependent shader canvas excluded, full auth layout/content retained. Production browser run 9 passed/1 failed: onboarding, core materials/themes/font, mobile gestures and hold tests pass. Supplementary terminal-theme test fails at mobile cursor pixel (background #0d0e10 vs cursor #7a9cff), while 50 theme switches p99 14.2ms passes 16.67ms budget and history/repaint checks pass. No terminal theme code changed; retaining artifacts and repeating that test to classify before handoff.

D162 production proof: default build ignores ?mock=1&proto=recovery, no sign-in recovery button/screen or account controls. Strict screenshot diff against dev 9c62448: 0 differing pixels at 393x852 and 1440x900 (production-browser.log); only time-dependent shader canvas excluded, full auth layout/content retained. Production browser run 9 passed/1 failed: onboarding, core materials/themes/font, mobile gestures and hold tests pass. Supplementary terminal-theme test fails at mobile cursor pixel (background #0d0e10 vs cursor #7a9cff), while 50 theme switches p99 14.2ms passes 16.67ms budget and history/repaint checks pass. No terminal theme code changed; retaining artifacts and repeating that test to classify before handoff.
Author
Owner

Supplementary theme classification: scoped merged retry and untouched dev 9c62448 production build both fail terminal-theme.spec.ts:302 with cursor pixel #eff1f5 instead of #8839ef (Latte, mobile matrix); theme-dev-baseline.log and theme-retry.log retain identical diffs. terminal-theme.spec.ts and terminal touch/theme implementation are unchanged versus dev; merged terminal.ts adds only recovery Subscribe/Event handling. This is inherited, not a green full-browser-suite claim; no unrelated fix or assertion/budget relaxation. Required production hold tests pass with zero screenshot differences. Preview suite (explicit preview flag, ?mock=1&proto=recovery) and final fast gate are running.

Supplementary theme classification: scoped merged retry and untouched dev 9c62448 production build both fail terminal-theme.spec.ts:302 with cursor pixel #eff1f5 instead of #8839ef (Latte, mobile matrix); theme-dev-baseline.log and theme-retry.log retain identical diffs. terminal-theme.spec.ts and terminal touch/theme implementation are unchanged versus dev; merged terminal.ts adds only recovery Subscribe/Event handling. This is inherited, not a green full-browser-suite claim; no unrelated fix or assertion/budget relaxation. Required production hold tests pass with zero screenshot differences. Preview suite (explicit preview flag, ?mock=1&proto=recovery) and final fast gate are running.
Author
Owner

Final scripts/verify fast at 1c12295c6a, exit 0; CPUWeight=10000, TRACER_TEST_PORT=4786, RUST_TEST_THREADS=1. Complete verbatim output part 1/2:

Running as unit: run-p683146-i9070918.scope; invocation ID: 8c3c27544d9e47a5b06c8ee203feff14
METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=304.87 p99_ms=311.87 result=PASS

==> fmt

==> VT native fmt

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

==> test
    Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s
     Running unittests src/main.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/infraternal-2c06fb1e08b40f8f)

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

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

     Running tests/agent_daemon.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/agent_daemon-e5ef77258cbf600a)

running 1 test
test real_binary_preserves_input_and_output_across_24_abrupt_stops ... ok

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

     Running tests/agent_queues.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/agent_queues-57c449079990d909)

running 1 test
test saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok

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

     Running tests/agent_review.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/agent_review-f08a739d87080819)

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

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

     Running tests/agent_sessions.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/agent_sessions-dac341911fe4ca5b)

running 1 test
test detached_shim_is_discovered_and_replays_from_the_last_observed_offset ... ok

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

     Running tests/idle_canary.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/idle_canary-9930563708e7154e)

running 1 test
test one_hertz_wakeup_is_detected_past_the_legacy_half_second_window ... ok

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

     Running tests/shim.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/shim-282e2bf3b629b4b1)

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

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

     Running tests/vt_credit.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/vt_credit-bb3623465253747d)

running 1 test
test unaffordable_repaints_park_until_sufficient_credit ... ok

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

     Running tests/vt_reconnect.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/vt_reconnect-d5a72f7c3162f374)

running 1 test
test snapshot_limits_never_close_live_reconnect ... ok

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

     Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/infraternal_agent-396a49ee47a2dca8)

running 16 tests
test relay::tests::attachment_has_no_implicit_output_or_snapshot_credit ... ok
test relay::tests::expired_credit_resumes_retained_bytes_at_the_same_cursor ... ok
test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok
test relay::tests::output_partial_credit_and_dedup ... ok
test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement
test relay::tests::overflowing_ranges_never_mutate_cursors ... ok
test relay::tests::positive_insufficient_credit_arms_a_one_shot_deadline ... ok
test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok
test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... ok
test sessions::tests::borrowed_reader_payload_uses_reusable_cancel_safe_storage ... ok
test sessions::tests::cancelled_fragmented_shim_read_retains_header_and_body_progress ... ok
test sessions::tests::post_listen_chmod_wakes_a_connection_refused_at_bind ... ok
test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement
test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok
test sessions::tests::sequenced_attach_intersects_caps_and_legacy_attach_stays_zero ... ok
test sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... ok

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

     Running tests/transport.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/transport-ef669c6e5837f1df)

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

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

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

running 0 tests

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

     Running tests/default_arrow.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/default_arrow-312553ba19630584)

running 1 test
test omitted_arrow_ports_default_to_all_services ... ok

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

     Running tests/properties.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/properties-78f35bbe1b57dcd5)

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

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

     Running tests/rotation_time.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/rotation_time-a58dd287253d611d)

running 1 test
test unrepresentable_rotation_overlap_rejects_before_mutation ... ok

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

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

running 0 tests

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

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

running 0 tests

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

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

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

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

     Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/infraternal_server-7b0058424c5209fd)

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

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

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

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

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

     Running tests/detach.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/detach-c502cd554fb112ce)

running 1 test
test closed_standard_descriptors_become_dev_null ... ok

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

     Running tests/mouse.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/mouse-523bfdef43cc46cb)

running 1 test
test faithful_snapshot_preserves_public_mouse_encoder_reports ... ok

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

   Doc-tests infraternal_agent

running 0 tests

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

   Doc-tests infraternal_mesh

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

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

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

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

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

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

warning[duplicate]: found 2 duplicate entries for crate 'rand'
    ┌─ /home/kayg/Developer/infraternal/.worktrees/merge-recovery/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
Final scripts/verify fast at 1c12295c6ad24a97c4f6083262675407ec1adbaa, exit 0; CPUWeight=10000, TRACER_TEST_PORT=4786, RUST_TEST_THREADS=1. Complete verbatim output part 1/2: ```text Running as unit: run-p683146-i9070918.scope; invocation ID: 8c3c27544d9e47a5b06c8ee203feff14 METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=304.87 p99_ms=311.87 result=PASS ==> fmt ==> VT native fmt ==> clippy Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.25s ==> test Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s Running unittests src/main.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/infraternal-2c06fb1e08b40f8f) running 2 tests test install::tests::dry_run_prints_a_process_surviving_user_unit ... ok test setup_token_tests::setup_token_command_reads_only_the_expected_socket_response ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/agent_daemon.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/agent_daemon-e5ef77258cbf600a) running 1 test test real_binary_preserves_input_and_output_across_24_abrupt_stops ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 40.59s Running tests/agent_queues.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/agent_queues-57c449079990d909) running 1 test test saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 37.86s Running tests/agent_review.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/agent_review-f08a739d87080819) running 6 tests test initial_attach_requires_explicit_credit_before_replay ... ok test last_typist_selects_its_own_real_pty_dimensions ... ok test repeated_tiny_credit_pauses_preserve_shell_progress ... ok test retained_unwritten_input_survives_interleaved_ack_restart ... ok test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 59.67s Running tests/agent_sessions.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/agent_sessions-dac341911fe4ca5b) running 1 test test detached_shim_is_discovered_and_replays_from_the_last_observed_offset ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s Running tests/idle_canary.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/idle_canary-9930563708e7154e) running 1 test test one_hertz_wakeup_is_detected_past_the_legacy_half_second_window ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.10s Running tests/shim.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/shim-282e2bf3b629b4b1) running 7 tests test attached_backpressure_and_detached_progress ... ok test disallowed_signal_only_disconnects_peer ... ok test double_fork_survives_parent_death ... ok test real_shell_reconnect_resize_and_retained_exit ... ok test replacement_connection_and_malformed_limit ... ok test ring_wrap_snapshot_repaints_real_vim ... ok test user_scope_survives_parent_unit_stop ... active ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.58s Running tests/vt_credit.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/vt_credit-bb3623465253747d) running 1 test test unaffordable_repaints_park_until_sufficient_credit ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 12.94s Running tests/vt_reconnect.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/vt_reconnect-d5a72f7c3162f374) running 1 test test snapshot_limits_never_close_live_reconnect ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.81s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/infraternal_agent-396a49ee47a2dca8) running 16 tests test relay::tests::attachment_has_no_implicit_output_or_snapshot_credit ... ok test relay::tests::expired_credit_resumes_retained_bytes_at_the_same_cursor ... ok test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok test relay::tests::output_partial_credit_and_dedup ... ok test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement test relay::tests::overflowing_ranges_never_mutate_cursors ... ok test relay::tests::positive_insufficient_credit_arms_a_one_shot_deadline ... ok test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... ok test sessions::tests::borrowed_reader_payload_uses_reusable_cancel_safe_storage ... ok test sessions::tests::cancelled_fragmented_shim_read_retains_header_and_body_progress ... ok test sessions::tests::post_listen_chmod_wakes_a_connection_refused_at_bind ... ok test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok test sessions::tests::sequenced_attach_intersects_caps_and_legacy_attach_stays_zero ... ok test sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... ok test result: ok. 14 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.06s Running tests/transport.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/transport-ef669c6e5837f1df) running 2 tests test fragmented_headers_coalesced_frames_and_reusable_transmit ... ok test oversized_header_and_truncated_frame_are_rejected ... ok test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/infraternal_mesh-3f967587718407e9) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/default_arrow.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/default_arrow-312553ba19630584) running 1 test test omitted_arrow_ports_default_to_all_services ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running tests/properties.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/properties-78f35bbe1b57dcd5) running 14 tests test addresses_are_unique_stable_and_not_recycled ... ok test arrow_replacement_is_atomic_and_unrelated_nodes_keep_their_versions ... ok test checkpoint_after_suffix_change_restores_without_reallocating_addresses ... ok test directional_grants_union_and_minimal_updates ... ok test exhausted_versions_reject_mutations_without_changing_state ... ok test join_to_same_tag_grants_both_initiation_directions ... ok test names_versions_and_backend_status ... ok test overlaps_are_reported_without_silent_range_changes ... ok test private_material_never_enters_debug_or_coordination_serialization ... ok test protocol_port_unions_never_grant_an_unlisted_service ... ok test public_checkpoint_preserves_addresses_rules_versions_and_overlap ... ok test rotation_waits_for_overlap_and_delivery_and_removal_drops_every_key ... ok test seeded_random_sequences_equal_full_compile_and_deny_without_grants ... ok test server_rotation_has_continuous_keys_for_every_node_during_delivery ... ok test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.50s Running tests/rotation_time.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/rotation_time-a58dd287253d611d) running 1 test test unrepresentable_rotation_overlap_rejects_before_mutation ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/infraternal_plugin_api-4480fd7032f11ca2) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/infraternal_plugin_ssh-22a9a893799c7f17) running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/infraternal_protocol-67b9a310ef49abf9) running 7 tests test stream_tests::all_short_frame_splits_match_direct_decoding ... ok test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok test stream_tests::split_mux_header_preserves_trailing_close ... ok test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok test tests::oversized_encode_keeps_the_reusable_output_unchanged ... ok test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/infraternal_server-7b0058424c5209fd) running 109 tests test auth::crypto::verifier_tests::browser_secret_hashing_is_canonical_and_bounded ... ok test auth::crypto::verifier_tests::recovery_capacity_denial_is_not_a_legacy_credential_signal ... ok test auth::http::hostname_tests::authenticated_session_response_includes_system_hostname ... ok test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok test auth::tests::aaguid_migration_preserves_legacy_credentials_and_sessions ... ok test auth::tests::aaguid_projection_rejects_malformed_cbor_corpus ... ok test auth::tests::account_identity_migration_backfills_legacy_users ... ok test auth::tests::account_identity_schema_has_unique_usernames_and_display_names ... ok test auth::tests::audit_ceremony_browser_binding ... ok test auth::tests::audit_logout_survives_admission_exhaustion ... ok test auth::tests::audit_no_public_credential_listing ... ok test auth::tests::audit_recovery_after_page_discard_can_resume_at_original_deadline ... ok test auth::tests::audit_recovery_pending_is_visible_to_signed_in_device ... ok test auth::tests::audit_recovery_session_expiring_during_verification_keeps_delay ... ok test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok test auth::tests::enrollment_prf_input_matches_discoverable_login ... ok test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok test auth::tests::pending_unlock_expires_without_terminal_authority ... ok test auth::tests::provider_labels_cover_the_cited_registry_without_guessing ... ok test auth::tests::provider_session_latency_at_50_devices ... ignored, local auth session scale measurement; run without concurrent builds test auth::tests::public_status_and_discoverable_http_login ... ok test auth::tests::recovery_audit_commits_once_with_start_cancel_and_complete ... ok test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok test auth::tests::recovery_http_live_same_account_is_immediate ... ok test auth::tests::recovery_http_other_expired_pending_and_missing_sessions_wait ... ok test auth::tests::recovery_live_session_cannot_accelerate_an_active_delayed_request ... ok test auth::tests::recovery_live_session_revoked_during_verification_cannot_waive_delay ... ok test auth::tests::recovery_session_delay_latency_at_capacity ... ignored, release-only recovery measurement at 50 live sessions; run without concurrent compilation test auth::tests::recovery_unknown_identity_pays_the_same_database_and_verifier_work ... ok test auth::tests::recovery_username_identity_is_additive_and_ambiguous_forms_fail ... ok test auth::tests::recovery_verifier_latency_at_capacity ... ignored, release-only v2 diagnostic at 50 live session rows; record host load separately test auth::tests::redacted_unknown_and_failed_registrations_do_not_claim_a_provider ... ok test auth::tests::registration_aaguid_survives_none_attestation_and_binds_session_provider ... ok test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok test auth::tests::review3_tests::review3_backend_reply_has_a_deadline ... ok test auth::tests::review3_tests::review3_busy_expiry ... ok test auth::tests::review3_tests::review3_busy_logout ... ok test auth::tests::review3_tests::review3_busy_recovery ... ok test auth::tests::review3_tests::review3_completion_and_cleanup_are_transaction_bound ... ok test auth::tests::review3_tests::review3_expired_handshake_must_not_welcome ... ok test auth::tests::review3_tests::review3_identified_privacy_timing_and_binding_replays ... ok test auth::tests::review3_tests::review3_pending_routes_and_idle_expiry_recovery ... ok test auth::tests::review3_tests::review3_revoked_handshake_must_not_welcome ... ok test auth::tests::review3_tests::review3_revoked_resume_must_not_welcome ... ok test auth::tests::review3_tests::review3_unwrap_cannot_be_skipped ... ok test auth::tests::review3_tests::review3_waiting_handshake_loses_authority ... ok test auth::tests::review3_tests::review4_open_reply_and_revocation_preserve_authority ... ok test auth::tests::review3_tests::review4_slow_open_at_user_capacity ... ignored, release-only connect scale measurement; run without concurrent builds test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok test auth::tests::review_old_words_race_rotation ... ok test auth::tests::reviewer_tests::reviewer_disk_cancel_complete_races ... ok test auth::tests::reviewer_tests::reviewer_disk_restart_and_concurrent_resume ... ok test auth::tests::reviewer_tests::reviewer_http_denials_and_recovery_admission ... ok test auth::tests::reviewer_tests::reviewer_http_expired_capability_cannot_complete_after_writer_wait ... ok test auth::tests::reviewer_tests::reviewer_http_expired_ceremony_cannot_complete_after_writer_wait ... ok test auth::tests::reviewer_tests::reviewer_server_clock_rollback_retains_deadline_and_reports_more_than_day ... ok test auth::tests::rotation_tests::recovery_phrase_routes_are_removed_and_words_fail_closed ... ok test auth::tests::rotation_tests::recovery_rotation_cannot_follow_a_cookie_account_switch ... ok test auth::tests::rotation_tests::recovery_rotation_denies_pending_expired_and_stale_sessions ... ok test auth::tests::rotation_tests::recovery_rotation_requires_session_and_replaces_legacy_envelope ... ok test auth::tests::rotation_tests::reviewer_concurrent_signed_in_rotations_commit_once ... ok test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok test auth::tests::setup_check_is_non_consuming_and_closes_after_owner_creation ... ok test auth::tests::setup_identity_validation_and_uniqueness ... ok test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok test auth::tests::setup_start_accepts_username_and_display_name ... ok test auth::tests::socket_tests::authenticated_idle_socket_survives_the_former_read_timeout ... ok test auth::tests::socket_tests::clean_control_close_is_not_an_internal_error ... ok test auth::tests::socket_tests::expired_handshake_releases_user_permits ... ok test auth::tests::socket_tests::fragmented_wire_frame_has_a_completion_deadline ... ok test auth::tests::socket_tests::half_open_sockets_obey_user_limit ... ok test auth::tests::socket_tests::incomplete_rfc_message_still_loses_authority_on_revocation ... ok test auth::tests::socket_tests::recovery_subscription_updates_every_signed_in_socket ... ok test auth::tests::socket_tests::revoked_idle_socket_loses_all_authority ... ok test auth::tests::socket_tests::socket_authority_latency_at_user_capacity ... ignored, release-only measurement without concurrent compilation test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok test embedded::regressions::credited_bulk_output_survives_forwarder_io_pause ... ok test embedded::regressions::credited_output_queue_at_stream_capacity ... ignored, debug actor memory/scheduling measurement; run without concurrent builds test embedded::regressions::full_output_queue_must_not_block_shared_actor ... ok test embedded::regressions::healthy_receiver_survives_ready_native_output_burst ... ok test embedded::regressions::healthy_streams_progress_at_user_attachment_capacity ... ok test embedded::regressions::output_and_snapshot_spend_remaining_restart_credit ... ok test embedded::regressions::real_agent_canonical_uuid_result_is_accepted ... ok test embedded::regressions::real_agent_open_uses_uid_and_character_dimensions ... ok test embedded::regressions::reattach_must_restore_output_credit ... ok test embedded::regressions::recovery_event_then_snapshot_keeps_embedded_connection_live ... ok test embedded::regressions::recovery_notices_preserve_order_credit_and_session_isolation ... ok test embedded::regressions::stream_close_must_not_restart_all_sessions ... ok test embedded::regressions::uncredited_output_or_repaint_is_rejected_before_queueing ... ok test runtime::reviewer_admission::reviewer_recovery_source_limit_covers_all_routes_without_forwarding_bypass ... ok test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok test runtime::tests::router_migrates_private_storage_and_serves_health ... ok test runtime::tests::setup_socket_cleanup_preserves_symlinks_and_regular_files ... ok test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok test runtime::tests::startup_with_owner_unlinks_stale_setup_token_socket ... ok test web_assets::tests::encodings_and_identity_have_correct_headers_and_sizes ... ok test web_assets::tests::spa_and_mutable_assets_revalidate_and_missing_brotli_uses_gzip ... ok test websocket::recovery_notification_bench::recovery_notification_state_at_socket_capacity ... ignored, notification state sizing diagnostic, not allocator-inclusive RSS certification test websocket::writer_tests::second_device_does_not_inherit_first_device_input_ack ... ok test websocket::writer_tests::writer_admission_at_user_capacity ... ignored, release-only scale measurement; run without concurrent builds test websocket::writer_tests::writer_ownership_capacity_unsigned_offsets_and_identity_reuse ... ok test result: ok. 100 passed; 0 failed; 9 ignored; 0 measured; 0 filtered out; finished in 136.81s Running unittests src/lib.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/infraternal_shim-67ffc9c8d51fcf5c) running 73 tests test frame::checks::approximate_snapshot_codec_is_bounded_and_canonical ... ok test frame::checks::borrowed_and_owned_decoders_agree_at_every_fragment_boundary ... ok test frame::checks::codec_reuse_measurement ... ignored, release codec and allocation-path measurement test frame::checks::golden::every_frozen_message ... ok test frame::checks::golden::exact_maximum_and_coalesced_frames ... 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 session::inputs::tests::identity_cap_preserves_all_existing_cursors ... ok test session::inputs::tests::partial_writes_credit_only_the_owner_and_replay_trims_per_writer ... ok test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile test session::measurements::poll_storage_measurement ... ignored, release poll-storage allocation measurement test session::resize_checks::native_resize_refusal_preserves_peer_and_pty ... ok test session::resize_checks::resize_refusal_session_probe ... ignored, isolated session probe invoked by its parent with a controlled shell profile test session::sequenced_checks::coalesced_ack_never_overwrites_a_partial_output_and_cursors_survive_peer_loss ... ok test session::sequenced_checks::new_frames_roundtrip_and_refuse_noncanonical_payloads ... ok test session::sequenced_checks::reusable_encoder_retains_capacity_and_refuses_growth_before_mutation ... ok test session::sequenced_checks::trim_duplicates_gaps_overflow_and_capacity_are_transactional ... ok test session::sequenced_checks::writer_selection_has_a_frozen_little_endian_layout ... ok test terminal::checks::approximate_repaint_is_bounded_clips_at_complete_cells_and_preserves_source ... ok test terminal::checks::approximate_repaint_keeps_complete_pending_syntax_or_omits_it_whole ... ok test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok test terminal::checks::tests::byte_budget_prunes_history_and_resize_remains_repaintable ... ok test terminal::checks::tests::fixtures_and_continuations_repaint ... ok test terminal::checks::tests::implicit_hyperlinks_retain_groups_across_rows_and_continuation ... ok test terminal::checks::tests::long_unfinished_hyperlink_and_control_strings_continue ... ok test terminal::checks::tests::margins_tabs_charsets_and_modes_continue ... ok test terminal::checks::tests::partial_csi_and_utf8_continue ... ok test terminal::checks::tests::pending_wrap_and_saved_wrap_continue_with_wide_cells ... ok test terminal::checks::tests::retained_alternate_saved_cursor_and_keyboard_stack_continue ... ok test terminal::checks::tests::saved_origin_survives_changed_margins ... ok test terminal::checks::tests::unfinished_sequence_over_frame_limit_fails_without_losing_runtime_state ... ok test terminal::fidelity::fidelity_charset_mapped_wide_space_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_cursor ... ok test terminal::fidelity::fidelity_diagnostic_fixture ... ignored, diagnostic replay of an explicitly selected fixture file test terminal::fidelity::fidelity_edge ... ok test terminal::fidelity::fidelity_extended_nightly ... ignored, nightly expanded differential corpus: 20,000 deterministic cases test terminal::fidelity::fidelity_extended_smoke ... ok test terminal::fidelity::fidelity_f1_rep ... ok test terminal::fidelity::fidelity_fresh_c_redraw_default_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_handwritten ... ok test terminal::fidelity::fidelity_inherited_protection_off_mode_is_explicitly_rejected ... ok test terminal::fidelity::fidelity_iso_protection_does_not_keep_rep_scratch ... ok test terminal::fidelity::fidelity_iso_protection_erase ... ok test terminal::fidelity::fidelity_mouse_effective_fields_follow_order_independently_of_booleans ... ok test terminal::fidelity::fidelity_oracle_detects_hidden_state ... ok test terminal::fidelity::fidelity_oracle_observes_archived_cells_with_equal_active_screens ... ok test terminal::fidelity::fidelity_orphaned_spacer_head ... ok test terminal::fidelity::fidelity_prompt_resize_requires_explicit_rejection ... ok test terminal::fidelity::fidelity_recorded_corpus ... ok test terminal::fidelity::fidelity_rejects_unrepresentable_rep_without_mutating_source ... ok test terminal::fidelity::fidelity_saved_cursor_over_changed_edge ... ok test terminal::fidelity::fidelity_saved_modes_future_restore ... ok test terminal::fidelity::fidelity_screen_entry_consumes_inherited_shift_before_saving ... ok test terminal::fidelity::fidelity_seeded_nightly ... ignored, nightly differential corpus: 20,000 deterministic cases test terminal::fidelity::fidelity_seeded_smoke ... ok test terminal::fidelity::fidelity_semantic_validation_matches_exported_history_extent ... ok test terminal::fidelity::fidelity_single_shift_survives_rep_seed ... ok test terminal::fidelity::fidelity_snapshot_history_tail_contains_no_padding_rows ... ok test terminal::fidelity::fidelity_snapshot_resets_stale_viewer_color_overrides ... ok test terminal::fidelity::fidelity_spacer_head_attributes ... ok test terminal::fidelity::fidelity_variation_tail_attributes ... ok test terminal::fidelity::fidelity_variation_wrap_attributes ... ok test terminal::fidelity::fresh_captures::fidelity_fresh_real_program_captures ... ignored, manual fresh capture oracle; set VT_CAPTURE_DIR after real program capture test terminal::measurements::budgets::snapshot_200x60 ... ignored, performance measurement; run release on the perf host test terminal::measurements::memory::measured_terminal_rss ... ignored, RSS measurement; run this filter alone in a fresh release process test terminal::measurements::throughput::measured_parser ... ignored, VT observer and history throughput measurement test terminal::recovery_measurements::measured_full_ring_reconstruction ... ignored, release reconstruction measurement; old healthy handles permit repeated cleanup test terminal::resize_recovery::absent_ring_keeps_last_good_size_and_later_output_usable ... ok test terminal::resize_recovery::complete_ring_restores_screens_mouse_and_unfinished_syntax ... ok test terminal::resize_recovery::earlier_geometry_changes_require_approximation_even_with_origin_coverage ... ok test terminal::resize_recovery::ring_gap_requires_clean_approximate_recovery ... ok test terminal_native::allocation::resize_allocation_refusal_retires_native_handle ... ok test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 42.72s Running tests/detach.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/detach-c502cd554fb112ce) running 1 test test closed_standard_descriptors_become_dev_null ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s Running tests/mouse.rs (/home/kayg/.cache/codex-scratch/merge-recovery/target/debug/deps/mouse-523bfdef43cc46cb) running 1 test test faithful_snapshot_preserves_public_mouse_encoder_reports ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s Doc-tests infraternal_agent running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests infraternal_mesh running 1 test test crates/infraternal-mesh/src/model.rs - model::LocalPrivateKey (line 20) - compile fail ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s 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/merge-recovery/Cargo.lock:24:1 │ 24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index 25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────┘ lock entries │ ├ base64 v0.21.7 ├── base64urlsafedata v0.5.5 │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── webauthn-rs v0.5.5 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-proto v0.5.5 │ └── webauthn-rs-core v0.5.5 (*) ├── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-proto v0.5.5 (*) ├ base64 v0.22.1 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── infraternal-server v0.1.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 3 duplicate entries for crate 'getrandom' ┌─ /home/kayg/Developer/infraternal/.worktrees/merge-recovery/Cargo.lock:88:1 │ 88 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index 89 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index 90 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ getrandom v0.2.17 └── rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-agent v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) ├── webauthn-attestation-ca v0.5.5 (*) ├── webauthn-rs v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'hashbrown' ┌─ /home/kayg/Developer/infraternal/.worktrees/merge-recovery/Cargo.lock:94:1 │ 94 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index 95 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ hashbrown v0.15.5 ├── hashlink v0.10.0 │ └── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) └── sqlx-core v0.8.6 (*) ├ hashbrown v0.17.1 └── indexmap v2.14.2 ├── h2 v0.4.19 │ └── hyper v1.11.1 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ └── hyper-util v0.1.21 │ ├── axum v0.8.9 (*) │ └── axum-server v0.8.0 (*) └── sqlx-core v0.8.6 ├── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) └── sqlx-sqlite v0.8.6 ├── sqlx v0.8.6 (*) └── sqlx-macros-core v0.8.6 (*) warning[duplicate]: found 2 duplicate entries for crate 'r-efi' ┌─ /home/kayg/Developer/infraternal/.worktrees/merge-recovery/Cargo.lock:183:1 │ 183 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index 184 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────┘ lock entries │ ├ r-efi v5.3.0 └── getrandom v0.3.4 └── rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ r-efi v6.0.0 └── getrandom v0.4.3 ├── jobserver v0.1.35 │ └── cc v1.6.0 │ ├── (build) libfuzzer-sys v0.4.13 │ │ └── infraternal-fuzz v0.1.0 │ ├── (build) libsqlite3-sys v0.30.1 │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 │ │ │ ├── infraternal v0.1.0 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ └── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── openssl-src v300.6.1+3.6.3 │ │ └── (build) openssl-sys v0.9.117 │ │ ├── axum-server v0.8.0 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── openssl v0.10.81 │ │ │ ├── axum-server v0.8.0 (*) │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── tokio-openssl v0.6.5 │ │ │ │ └── axum-server v0.8.0 (*) │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── tokio-openssl v0.6.5 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ └── webauthn-rs-core v0.5.5 (*) │ └── (build) openssl-sys v0.9.117 (*) └── uuid v1.27.0 ├── infraternal-agent v0.1.0 │ └── infraternal v0.1.0 (*) ├── infraternal-server v0.1.0 (*) ├── webauthn-attestation-ca v0.5.5 (*) ├── webauthn-rs v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand' ┌─ /home/kayg/Developer/infraternal/.worktrees/merge-recovery/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 ```
Author
Owner

Final scripts/verify fast at 1c12295c6a, exit 0; CPUWeight=10000, TRACER_TEST_PORT=4786, RUST_TEST_THREADS=1. Complete verbatim output part 2/2:

    │ ╰────────────────────────────────────────────────────────────────┘ 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/merge-recovery/Cargo.lock:187:1
    │  
187 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index
188 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index
    │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries
    │  
    ├ rand_chacha v0.3.1
      └── rand v0.8.8
          └── bip39 v2.2.2
              └── infraternal-server v0.1.0
                  └── infraternal v0.1.0
    ├ rand_chacha v0.9.0
      ├── rand v0.9.5
      │   ├── infraternal-server v0.1.0
      │   │   └── infraternal v0.1.0
      │   ├── tungstenite v0.29.0
      │   │   └── tokio-tungstenite v0.29.0
      │   │       ├── axum v0.8.9
      │   │       │   └── infraternal-server v0.1.0 (*)
      │   │       └── (dev) infraternal-server v0.1.0 (*)
      │   └── webauthn-rs-core v0.5.5
      │       └── webauthn-rs v0.5.5
      │           └── infraternal-server v0.1.0 (*)
      └── webauthn-rs-core v0.5.5 (*)

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

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

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

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

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

advisories ok, bans ok, licenses ok, sources ok

==> static builds
    Finished `release` profile [optimized] target(s) in 0.27s
/home/kayg/.cache/codex-scratch/merge-recovery/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: 15961168 bytes (baseline 16142672 + allowance 262144 = max 16404816)
    Finished `release` profile [optimized] target(s) in 0.14s
/home/kayg/.cache/codex-scratch/merge-recovery/target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped
PT_INTERP: absent; size: 13426064 bytes (baseline 13555672 + allowance 262144 = max 13817816)
server subcommand: exit 2, not implemented
agent subcommand: exit 2, not implemented

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

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

==> TypeScript protocol compiler

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

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

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

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

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

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

test/recovery-wait.test.ts:
(pass) server remaining wait 0s is accepted through the capability policy maximum [1.45ms]
(pass) server remaining wait 86400s is accepted through the capability policy maximum [0.71ms]
(pass) server remaining wait 90000s is accepted through the capability policy maximum [0.56ms]
(pass) server remaining wait 172800s is accepted through the capability policy maximum [0.51ms]
(pass) malformed or excessive remaining wait -1 is denied [0.69ms]
(pass) malformed or excessive remaining wait 0.5 is denied [0.70ms]
(pass) malformed or excessive remaining wait 172801 is denied [0.52ms]
(pass) malformed or excessive remaining wait 9007199254740992 is denied [0.69ms]
(pass) malformed or excessive remaining wait 90000 is denied [0.67ms]

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

 20 pass
 0 fail
 376 expect() calls
Ran 20 tests across 6 files. [90.00ms]
$ bun run build.ts
built main.js, chunk-0gjma2ke.js, chunk-ng92vxbz.js, backdrop.worker.js, faulty-terminal.worker.js, chunk-3a6syy3h.js, chunk-0gghysbz.js, chunk-xwxx1hy7.js, chunk-axbkkqp1.js, chunk-n06fymxc.js
faulty-terminal.worker.js: identity=1021 gzip=534 brotli=459 bytes
backdrop.worker.js: identity=241 gzip=210 brotli=159 bytes
chunk-3a6syy3h.js: identity=9549 gzip=3881 brotli=3348 bytes
chunk-n06fymxc.js: identity=688399 gzip=199878 brotli=161932 bytes
chunk-axbkkqp1.js: identity=90 gzip=90 brotli=78 bytes
chunk-ng92vxbz.js: identity=6464 gzip=3110 brotli=2826 bytes
chunk-0gjma2ke.js: identity=7799 gzip=3331 brotli=2978 bytes
chunk-xwxx1hy7.js: identity=26414 gzip=9463 brotli=8307 bytes
main.js: identity=78447 gzip=29412 brotli=25664 bytes
chunk-0gghysbz.js: identity=185 gzip=148 brotli=132 bytes
JavaScript transfer: identity=818609 gzip=250057/307200 brotli=205883/256000 bytes

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

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

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

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

 7 pass
 0 fail
 34390 expect() calls
Ran 7 tests across 2 files. [1.76s]
Final scripts/verify fast at 1c12295c6ad24a97c4f6083262675407ec1adbaa, exit 0; CPUWeight=10000, TRACER_TEST_PORT=4786, RUST_TEST_THREADS=1. Complete verbatim output part 2/2: ```text │ ╰────────────────────────────────────────────────────────────────┘ 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/merge-recovery/Cargo.lock:187:1 │ 187 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index 188 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_chacha v0.3.1 └── rand v0.8.8 └── bip39 v2.2.2 └── infraternal-server v0.1.0 └── infraternal v0.1.0 ├ rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'rand_core' ┌─ /home/kayg/Developer/infraternal/.worktrees/merge-recovery/Cargo.lock:189:1 │ 189 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index 190 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries │ ├ rand_core v0.6.4 ├── bip39 v2.2.2 │ └── infraternal-server v0.1.0 │ └── infraternal v0.1.0 ├── crypto-common v0.1.7 │ ├── aead v0.5.2 │ │ └── aes-gcm v0.10.3 │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── cipher v0.4.4 │ │ ├── aes v0.8.4 │ │ │ └── aes-gcm v0.10.3 (*) │ │ ├── aes-gcm v0.10.3 (*) │ │ └── ctr v0.9.2 │ │ └── aes-gcm v0.10.3 (*) │ ├── digest v0.10.7 │ │ ├── blake2 v0.10.6 │ │ │ └── argon2 v0.5.3 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── hmac v0.12.1 │ │ │ └── hkdf v0.12.4 │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ ├── sha1 v0.10.7 │ │ │ ├── axum v0.8.9 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── tungstenite v0.29.0 │ │ │ └── tokio-tungstenite v0.29.0 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── (dev) infraternal-server v0.1.0 (*) │ │ └── sha2 v0.10.9 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── sqlx-core v0.8.6 │ │ │ ├── sqlx v0.8.6 │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ ├── sqlx v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ └── universal-hash v0.5.1 │ └── polyval v0.6.2 │ └── ghash v0.5.1 │ └── aes-gcm v0.10.3 (*) ├── password-hash v0.5.0 │ └── argon2 v0.5.3 (*) ├── rand v0.8.8 │ └── bip39 v2.2.2 (*) └── rand_chacha v0.3.1 └── rand v0.8.8 (*) ├ rand_core v0.9.5 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 │ │ │ └── infraternal-server v0.1.0 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 │ └── webauthn-rs v0.5.5 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 (*) └── webauthn-rs-core v0.5.5 (*) warning[duplicate]: found 2 duplicate entries for crate 'syn' ┌─ /home/kayg/Developer/infraternal/.worktrees/merge-recovery/Cargo.lock:226:1 │ 226 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index 227 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────┘ lock entries │ ├ syn v2.0.119 ├── asn1-rs-derive v0.5.1 │ └── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── asn1-rs-impl v0.2.0 │ └── asn1-rs v0.6.2 (*) ├── openssl-macros v0.1.1 │ └── openssl v0.10.81 │ ├── axum-server v0.8.0 │ │ └── infraternal-server v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── webauthn-attestation-ca v0.5.5 │ │ └── webauthn-rs-core v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) ├── sqlx-macros v0.8.6 │ └── sqlx v0.8.6 │ ├── infraternal v0.1.0 (*) │ └── infraternal-server v0.1.0 (*) ├── sqlx-macros-core v0.8.6 │ └── sqlx-macros v0.8.6 (*) ├── synstructure v0.13.2 │ └── asn1-rs-derive v0.5.1 (*) ├── thiserror-impl v1.0.69 │ └── thiserror v1.0.69 │ ├── asn1-rs v0.6.2 (*) │ ├── webauthn-rs-core v0.5.5 (*) │ └── x509-parser v0.16.0 (*) ├── tracing-attributes v0.1.31 │ └── tracing v0.1.44 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── axum-core v0.5.6 │ │ └── axum v0.8.9 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ ├── sqlx-macros v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ └── sqlx-sqlite v0.8.6 │ │ ├── sqlx v0.8.6 (*) │ │ └── sqlx-macros-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tracing-subscriber v0.3.23 │ │ └── infraternal-server v0.1.0 (*) │ ├── webauthn-attestation-ca v0.5.5 (*) │ ├── webauthn-rs v0.5.5 (*) │ └── webauthn-rs-core v0.5.5 (*) └── zerocopy-derive v0.8.60 └── zerocopy v0.8.60 ├── half v2.7.1 │ ├── ciborium-ll v0.2.2 │ │ └── ciborium v0.2.2 │ │ └── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-agent v0.1.0 │ │ │ └── infraternal v0.1.0 (*) │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 (*) │ └── serde_cbor_2 v0.13.0 │ ├── infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── ppv-lite86 v0.2.21 ├── rand_chacha v0.3.1 │ └── rand v0.8.8 │ └── bip39 v2.2.2 │ └── infraternal-server v0.1.0 (*) └── rand_chacha v0.9.0 ├── rand v0.9.5 │ ├── infraternal-server v0.1.0 (*) │ ├── tungstenite v0.29.0 │ │ └── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── webauthn-rs-core v0.5.5 (*) └── webauthn-rs-core v0.5.5 (*) ├ syn v3.0.6 ├── clap_derive v4.6.7 │ └── clap v4.6.7 │ ├── criterion v0.7.0 │ │ └── (dev) infraternal-protocol v0.1.0 │ │ ├── infraternal-agent v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ ├── infraternal-fuzz v0.1.0 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 (*) │ └── infraternal v0.1.0 (*) ├── displaydoc v0.2.7 │ ├── asn1-rs v0.6.2 │ │ ├── der-parser v9.0.0 │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ └── x509-parser v0.16.0 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── oid-registry v0.7.1 │ │ │ └── x509-parser v0.16.0 (*) │ │ └── x509-parser v0.16.0 (*) │ ├── der-parser v9.0.0 (*) │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── tinystr v0.8.4 │ │ └── icu_locale_core v2.3.0 (*) │ └── zerotrie v0.2.5 │ ├── icu_properties v2.3.0 (*) │ └── icu_provider v2.3.1 (*) ├── futures-macro v0.3.34 │ └── futures-util v0.3.34 │ ├── axum v0.8.9 │ │ └── infraternal-server v0.1.0 (*) │ ├── futures-executor v0.3.34 │ │ └── sqlx-sqlite v0.8.6 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── js-sys v0.3.106 │ │ └── web-sys v0.3.106 │ │ └── plotters v0.3.7 │ │ └── criterion v0.7.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ ├── tower v0.5.3 │ │ ├── axum v0.8.9 (*) │ │ └── (dev) infraternal-server v0.1.0 (*) │ └── tower-http v0.6.11 │ └── infraternal-server v0.1.0 (*) ├── serde_derive v1.0.229 │ ├── serde v1.0.229 │ │ ├── base64urlsafedata v0.5.5 │ │ │ ├── webauthn-attestation-ca v0.5.5 │ │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ │ ├── webauthn-rs v0.5.5 (*) │ │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 (*) │ │ ├── bip39 v2.2.2 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── ciborium v0.2.2 │ │ │ └── criterion v0.7.0 (*) │ │ ├── criterion v0.7.0 (*) │ │ ├── either v1.18.0 │ │ │ ├── axum-server v0.8.0 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── itertools v0.13.0 │ │ │ │ ├── criterion v0.7.0 (*) │ │ │ │ └── criterion-plot v0.6.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── rayon v1.12.0 │ │ │ │ └── criterion v0.7.0 (*) │ │ │ ├── sqlx-core v0.8.6 (*) │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ ├── infraternal-agent v0.1.0 (*) │ │ ├── infraternal-mesh v0.1.0 │ │ ├── infraternal-server v0.1.0 (*) │ │ ├── serde_cbor_2 v0.13.0 │ │ │ ├── infraternal-server v0.1.0 (*) │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ ├── serde_urlencoded v0.7.1 │ │ │ ├── axum v0.8.9 (*) │ │ │ └── sqlx-sqlite v0.8.6 (*) │ │ ├── sqlx-core v0.8.6 (*) │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ ├── tinytemplate v1.2.1 │ │ │ └── criterion v0.7.0 (*) │ │ ├── tracing-serde v0.2.0 │ │ │ └── tracing-subscriber v0.3.23 │ │ │ └── infraternal-server v0.1.0 (*) │ │ ├── tracing-subscriber v0.3.23 (*) │ │ ├── url v2.5.8 (*) │ │ ├── webauthn-attestation-ca v0.5.5 (*) │ │ ├── webauthn-rs v0.5.5 (*) │ │ ├── webauthn-rs-core v0.5.5 (*) │ │ └── webauthn-rs-proto v0.5.5 (*) │ └── url v2.5.8 (*) ├── synstructure v0.14.0 │ ├── yoke-derive v0.8.4 │ │ └── yoke v0.8.3 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── zerotrie v0.2.5 (*) │ │ └── zerovec v0.11.8 │ │ ├── icu_collections v2.3.0 (*) │ │ ├── icu_locale_core v2.3.0 (*) │ │ ├── icu_normalizer v2.3.0 (*) │ │ ├── icu_properties v2.3.0 (*) │ │ ├── icu_provider v2.3.1 (*) │ │ ├── potential_utf v0.1.6 │ │ │ └── icu_collections v2.3.0 (*) │ │ └── tinystr v0.8.4 (*) │ └── zerofrom-derive v0.1.8 │ └── zerofrom v0.1.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── yoke v0.8.3 (*) │ ├── zerotrie v0.2.5 (*) │ └── zerovec v0.11.8 (*) ├── thiserror-impl v2.0.21 │ └── thiserror v2.0.21 │ ├── infraternal v0.1.0 (*) │ ├── infraternal-mesh v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-sqlite v0.8.6 (*) │ └── tungstenite v0.29.0 │ └── tokio-tungstenite v0.29.0 (*) ├── tokio-macros v2.7.2 │ └── tokio v1.53.2 │ ├── axum v0.8.9 (*) │ ├── axum-server v0.8.0 (*) │ ├── fs-err v3.3.2 │ │ └── axum-server v0.8.0 (*) │ ├── h2 v0.4.19 │ │ └── hyper v1.11.1 │ │ ├── axum v0.8.9 (*) │ │ ├── axum-server v0.8.0 (*) │ │ └── hyper-util v0.1.21 │ │ ├── axum v0.8.9 (*) │ │ └── axum-server v0.8.0 (*) │ ├── hyper v1.11.1 (*) │ ├── hyper-util v0.1.21 (*) │ ├── infraternal v0.1.0 (*) │ ├── infraternal-agent v0.1.0 (*) │ ├── infraternal-server v0.1.0 (*) │ ├── sqlx-core v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 (*) │ ├── tokio-openssl v0.6.5 │ │ └── axum-server v0.8.0 (*) │ ├── tokio-stream v0.1.19 │ │ └── sqlx-core v0.8.6 (*) │ ├── tokio-tungstenite v0.29.0 (*) │ ├── tokio-util v0.7.19 │ │ ├── h2 v0.4.19 (*) │ │ └── tower-http v0.6.11 (*) │ ├── tower v0.5.3 (*) │ └── tower-http v0.6.11 (*) ├── wasm-bindgen-macro-support v0.2.129 │ └── wasm-bindgen-macro v0.2.129 │ └── wasm-bindgen v0.2.129 │ ├── js-sys v0.3.106 (*) │ ├── plotters v0.3.7 (*) │ └── web-sys v0.3.106 (*) ├── yoke-derive v0.8.4 (*) ├── zerofrom-derive v0.1.8 (*) └── zerovec-derive v0.11.6 └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'synstructure' ┌─ /home/kayg/Developer/infraternal/.worktrees/merge-recovery/Cargo.lock:229:1 │ 229 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index 230 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index │ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ synstructure v0.13.2 └── asn1-rs-derive v0.5.1 └── asn1-rs v0.6.2 ├── der-parser v9.0.0 │ ├── webauthn-rs-core v0.5.5 │ │ └── webauthn-rs v0.5.5 │ │ └── infraternal-server v0.1.0 │ │ └── infraternal v0.1.0 │ └── x509-parser v0.16.0 │ └── webauthn-rs-core v0.5.5 (*) ├── oid-registry v0.7.1 │ └── x509-parser v0.16.0 (*) └── x509-parser v0.16.0 (*) ├ synstructure v0.14.0 ├── yoke-derive v0.8.4 │ └── yoke v0.8.3 │ ├── icu_collections v2.3.0 │ │ ├── icu_normalizer v2.3.0 │ │ │ └── idna_adapter v1.2.2 │ │ │ └── idna v1.1.0 │ │ │ └── url v2.5.8 │ │ │ ├── infraternal-server v0.1.0 │ │ │ │ └── infraternal v0.1.0 │ │ │ ├── sqlx-core v0.8.6 │ │ │ │ ├── sqlx v0.8.6 │ │ │ │ │ ├── infraternal v0.1.0 (*) │ │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ │ ├── sqlx-macros v0.8.6 │ │ │ │ │ └── sqlx v0.8.6 (*) │ │ │ │ ├── sqlx-macros-core v0.8.6 │ │ │ │ │ └── sqlx-macros v0.8.6 (*) │ │ │ │ └── sqlx-sqlite v0.8.6 │ │ │ │ ├── sqlx v0.8.6 (*) │ │ │ │ └── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-macros-core v0.8.6 (*) │ │ │ ├── sqlx-sqlite v0.8.6 (*) │ │ │ ├── webauthn-rs v0.5.5 │ │ │ │ └── infraternal-server v0.1.0 (*) │ │ │ ├── webauthn-rs-core v0.5.5 │ │ │ │ └── webauthn-rs v0.5.5 (*) │ │ │ └── webauthn-rs-proto v0.5.5 │ │ │ └── webauthn-rs-core v0.5.5 (*) │ │ └── icu_properties v2.3.0 │ │ └── idna_adapter v1.2.2 (*) │ ├── icu_provider v2.3.1 │ │ ├── icu_normalizer v2.3.0 (*) │ │ └── icu_properties v2.3.0 (*) │ ├── zerotrie v0.2.5 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ └── zerovec v0.11.8 │ ├── icu_collections v2.3.0 (*) │ ├── icu_locale_core v2.3.0 │ │ ├── icu_properties v2.3.0 (*) │ │ └── icu_provider v2.3.1 (*) │ ├── icu_normalizer v2.3.0 (*) │ ├── icu_properties v2.3.0 (*) │ ├── icu_provider v2.3.1 (*) │ ├── potential_utf v0.1.6 │ │ └── icu_collections v2.3.0 (*) │ └── tinystr v0.8.4 │ └── icu_locale_core v2.3.0 (*) └── zerofrom-derive v0.1.8 └── zerofrom v0.1.8 ├── icu_collections v2.3.0 (*) ├── icu_provider v2.3.1 (*) ├── yoke v0.8.3 (*) ├── zerotrie v0.2.5 (*) └── zerovec v0.11.8 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror' ┌─ /home/kayg/Developer/infraternal/.worktrees/merge-recovery/Cargo.lock:231:1 │ 231 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index 232 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰──────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-mesh v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl' ┌─ /home/kayg/Developer/infraternal/.worktrees/merge-recovery/Cargo.lock:233:1 │ 233 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index 234 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index │ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries │ ├ thiserror-impl v1.0.69 └── thiserror v1.0.69 ├── asn1-rs v0.6.2 │ ├── der-parser v9.0.0 │ │ ├── webauthn-rs-core v0.5.5 │ │ │ └── webauthn-rs v0.5.5 │ │ │ └── infraternal-server v0.1.0 │ │ │ └── infraternal v0.1.0 │ │ └── x509-parser v0.16.0 │ │ └── webauthn-rs-core v0.5.5 (*) │ ├── oid-registry v0.7.1 │ │ └── x509-parser v0.16.0 (*) │ └── x509-parser v0.16.0 (*) ├── webauthn-rs-core v0.5.5 (*) └── x509-parser v0.16.0 (*) ├ thiserror-impl v2.0.21 └── thiserror v2.0.21 ├── infraternal v0.1.0 ├── infraternal-mesh v0.1.0 ├── infraternal-server v0.1.0 │ └── infraternal v0.1.0 (*) ├── sqlx-core v0.8.6 │ ├── sqlx v0.8.6 │ │ ├── infraternal v0.1.0 (*) │ │ └── infraternal-server v0.1.0 (*) │ ├── sqlx-macros v0.8.6 │ │ └── sqlx v0.8.6 (*) │ ├── sqlx-macros-core v0.8.6 │ │ └── sqlx-macros v0.8.6 (*) │ └── sqlx-sqlite v0.8.6 │ ├── sqlx v0.8.6 (*) │ └── sqlx-macros-core v0.8.6 (*) ├── sqlx-sqlite v0.8.6 (*) └── tungstenite v0.29.0 └── tokio-tungstenite v0.29.0 ├── axum v0.8.9 │ └── infraternal-server v0.1.0 (*) └── (dev) infraternal-server v0.1.0 (*) advisories ok, bans ok, licenses ok, sources ok ==> static builds Finished `release` profile [optimized] target(s) in 0.27s /home/kayg/.cache/codex-scratch/merge-recovery/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: 15961168 bytes (baseline 16142672 + allowance 262144 = max 16404816) Finished `release` profile [optimized] target(s) in 0.14s /home/kayg/.cache/codex-scratch/merge-recovery/target/aarch64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped PT_INTERP: absent; size: 13426064 bytes (baseline 13555672 + allowance 262144 = max 13817816) server subcommand: exit 2, not implemented agent subcommand: exit 2, not implemented +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ ==> Vendored Ghostty artifact checksums dist/ghostty-web.js: OK dist/ghostty-vt.wasm: OK dist/index.d.ts: OK ==> TypeScript protocol compiler ==> Tracer compiler, precompression and bundle transfer budget bun install v1.4.2 (744846f84) Checked 38 installs across 69 packages (no changes) [3.00ms] $ bun x tsc --project tsconfig.json bun test v1.4.2 (744846f84) browser-build.test.ts: (pass) the browser renderer has no unresolved Vite Node-file shim request [13.41ms] precompress.test.ts: (pass) text sidecars round-trip deterministically; compressed formats remain identity [14.55ms] test/recovery-ui.test.ts: (pass) compiled recovery UI mode off obeys its URL boundary [2.56ms] (pass) compiled recovery UI mode preview obeys its URL boundary [1.87ms] (pass) compiled recovery UI mode 1 obeys its URL boundary [1.90ms] test/recovery-crypto.test.ts: (pass) HKDF siblings match independent implementation and bind unwrap to domain, account, kind and version [6.49ms] (pass) 100 repeated wrapping operations generate independent salts and nonces [13.97ms] test/recovery-wait.test.ts: (pass) server remaining wait 0s is accepted through the capability policy maximum [1.45ms] (pass) server remaining wait 86400s is accepted through the capability policy maximum [0.71ms] (pass) server remaining wait 90000s is accepted through the capability policy maximum [0.56ms] (pass) server remaining wait 172800s is accepted through the capability policy maximum [0.51ms] (pass) malformed or excessive remaining wait -1 is denied [0.69ms] (pass) malformed or excessive remaining wait 0.5 is denied [0.70ms] (pass) malformed or excessive remaining wait 172801 is denied [0.52ms] (pass) malformed or excessive remaining wait 9007199254740992 is denied [0.69ms] (pass) malformed or excessive remaining wait 90000 is denied [0.67ms] test/recovery-rotation.test.ts: (pass) signed-in rotation sends only a local envelope and verifier after acknowledgement [3.64ms] (pass) abandoned word acknowledgement uploads nothing [1.29ms] (pass) settled acknowledgement cannot upload later (dismissed) [1.24ms] (pass) settled acknowledgement cannot upload later (no acknowledgement) [1.15ms] 20 pass 0 fail 376 expect() calls Ran 20 tests across 6 files. [90.00ms] $ bun run build.ts built main.js, chunk-0gjma2ke.js, chunk-ng92vxbz.js, backdrop.worker.js, faulty-terminal.worker.js, chunk-3a6syy3h.js, chunk-0gghysbz.js, chunk-xwxx1hy7.js, chunk-axbkkqp1.js, chunk-n06fymxc.js faulty-terminal.worker.js: identity=1021 gzip=534 brotli=459 bytes backdrop.worker.js: identity=241 gzip=210 brotli=159 bytes chunk-3a6syy3h.js: identity=9549 gzip=3881 brotli=3348 bytes chunk-n06fymxc.js: identity=688399 gzip=199878 brotli=161932 bytes chunk-axbkkqp1.js: identity=90 gzip=90 brotli=78 bytes chunk-ng92vxbz.js: identity=6464 gzip=3110 brotli=2826 bytes chunk-0gjma2ke.js: identity=7799 gzip=3331 brotli=2978 bytes chunk-xwxx1hy7.js: identity=26414 gzip=9463 brotli=8307 bytes main.js: identity=78447 gzip=29412 brotli=25664 bytes chunk-0gghysbz.js: identity=185 gzip=148 brotli=132 bytes JavaScript transfer: identity=818609 gzip=250057/307200 brotli=205883/256000 bytes ==> Rust stream oracle (for the differential test) ==> TypeScript protocol tests bun test v1.4.2 (744846f84) src/codec.test.ts: (pass) wire protocol golden vectors > encodes and decodes each frame exactly as the shared manifest describes [4.16ms] (pass) wire protocol golden vectors > returns borrowed payload views and writes into reusable buffers [0.21ms] (pass) wire protocol golden vectors > decodes muxed messages split across WebSocket messages [0.82ms] (pass) wire protocol golden vectors > rejects oversized, non-canonical, unknown, and malformed frame bytes [0.18ms] (pass) split mux header preserves trailing Close [0.13ms] 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 [1742.74ms] (pass) maximum frame size and fragmented oversized prefix obey the allocation boundary [6.20ms] 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [1.76s] ```
Author
Owner

Finished integration on merge-recovery at 1c12295c6a. Atomic merge 4f8b737 preserves reviewed c5cf14c history; separate UI-hold commit 1c12295. No push/deploy or dev-ref change outside the assigned worktree; issue stays open.

D162: INFRATERNAL_RECOVERY_UI defaults off. Preview builds require ?mock=1&proto=recovery; =1 is the explicit production build opt-in after approval. All new sign-in/account recovery controls, screens, notices and toast use one predicate. Signed-in rotation, server endpoints, deadlines, socket state and recovery_words_need_replacing API metadata stay enabled. Dev touch behavior is unchanged; no conflicting touch change needed dropping. Dev migration v9 retained, new recovery migrations v10/v11.

Evidence: final production hold 3/3 (10.0s), zero differing pixels versus dev 9c62448 at 393x852 and 1440x900 (only dynamic shader canvas excluded). Preview recovery + URL boundary suite 21/21 (1.3m); client/compiled flag tests in fast: 20 pass, 376 assertions. Native Chromium 149.0.7827.55: four auth + two recovery real-verifier/SQLite scenarios PASS, original DEK retained. Server fast: 100 passed, 9 ignored. Static binaries x86_64 15961168 and ARM64 13426064 bytes; PT_INTERP absent.

Production JS transfer: gzip 250057/307200, Brotli 205883/256000 bytes. Against identical Bun 1.4.2 dev build, main gzip 28525 -> 29412 (+887); all JS incl lazy chunks/workers 244618 -> 250057 (+5439). Recovery metadata/crypto stays integrated; no new dependency/network round trip/idle query. Loaded 50-device SQLite WAL comparison and machine/load recorded above; not pinned perf certification.

Self-review B1/S1/S2/N1 completed: writer/statement expiry and provider/user bindings preserved; middleware/Argon2 bounds unchanged; no phrase admission/DEK/PRF transmission; flag does not gate authority or crypto; disabled UI adds no notice timer/listener; existing shared controls reused. Supplementary theme cursor-pixel check fails identically on untouched dev and merged retry at terminal-theme.spec.ts:302; retained, no unrelated behavior/assertion change. Initial environment and browser fixture failures retained; this is not a claim that the entire browser suite passes. Final preview run was sequential after fast to avoid shared dist artifacts.

Screenshots/logs/capture script/measurements retained locally under target/merge-recovery-evidence/: production-signin-mobile.png, production-signin-desktop.png, production-hold-final.log, preview-browser-clean.log, flag-fast.log, native-auth-final.log, session-scale.json and theme-dev-baseline.log. Immutable dev reference PNGs are committed in apps/tracer/test/recovery-ui-hold.spec.ts-snapshots/. Scratch archives/build targets removed after copying evidence; worktree clean.

How to test:

  1. Default bun run build, open sign-in even with ?mock=1&proto=recovery: one Continue with passkey button, no recovery entry.
  2. INFRATERNAL_RECOVERY_UI=preview bun run build, open mock preview with ?mock=1&proto=recovery: recovery flow enabled; other URLs keep it held.
  3. TRACER_TEST_PORT=4786 INFRATERNAL_RECOVERY_UI=preview bun x playwright test recovery.spec.ts audit-recovery.spec.ts reviewer-recovery.spec.ts recovery-preview-gate.spec.ts.

scripts/verify fast exit 0, CPUWeight=10000/TRACER_TEST_PORT=4786/RUST_TEST_THREADS=1. Complete verbatim output is in the preceding two comments. Verbatim summary:

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

 20 pass
 0 fail
 376 expect() calls
Ran 20 tests across 6 files. [90.00ms]

stream differential: 134 streams, 11439 schedules, zero divergences
 7 pass
 0 fail
 34390 expect() calls
Ran 7 tests across 2 files. [1.76s]
Finished integration on merge-recovery at 1c12295c6ad24a97c4f6083262675407ec1adbaa. Atomic merge 4f8b737 preserves reviewed c5cf14c history; separate UI-hold commit 1c12295. No push/deploy or dev-ref change outside the assigned worktree; issue stays open. D162: INFRATERNAL_RECOVERY_UI defaults off. Preview builds require ?mock=1&proto=recovery; =1 is the explicit production build opt-in after approval. All new sign-in/account recovery controls, screens, notices and toast use one predicate. Signed-in rotation, server endpoints, deadlines, socket state and recovery_words_need_replacing API metadata stay enabled. Dev touch behavior is unchanged; no conflicting touch change needed dropping. Dev migration v9 retained, new recovery migrations v10/v11. Evidence: final production hold 3/3 (10.0s), zero differing pixels versus dev 9c62448 at 393x852 and 1440x900 (only dynamic shader canvas excluded). Preview recovery + URL boundary suite 21/21 (1.3m); client/compiled flag tests in fast: 20 pass, 376 assertions. Native Chromium 149.0.7827.55: four auth + two recovery real-verifier/SQLite scenarios PASS, original DEK retained. Server fast: 100 passed, 9 ignored. Static binaries x86_64 15961168 and ARM64 13426064 bytes; PT_INTERP absent. Production JS transfer: gzip 250057/307200, Brotli 205883/256000 bytes. Against identical Bun 1.4.2 dev build, main gzip 28525 -> 29412 (+887); all JS incl lazy chunks/workers 244618 -> 250057 (+5439). Recovery metadata/crypto stays integrated; no new dependency/network round trip/idle query. Loaded 50-device SQLite WAL comparison and machine/load recorded above; not pinned perf certification. Self-review B1/S1/S2/N1 completed: writer/statement expiry and provider/user bindings preserved; middleware/Argon2 bounds unchanged; no phrase admission/DEK/PRF transmission; flag does not gate authority or crypto; disabled UI adds no notice timer/listener; existing shared controls reused. Supplementary theme cursor-pixel check fails identically on untouched dev and merged retry at terminal-theme.spec.ts:302; retained, no unrelated behavior/assertion change. Initial environment and browser fixture failures retained; this is not a claim that the entire browser suite passes. Final preview run was sequential after fast to avoid shared dist artifacts. Screenshots/logs/capture script/measurements retained locally under target/merge-recovery-evidence/: production-signin-mobile.png, production-signin-desktop.png, production-hold-final.log, preview-browser-clean.log, flag-fast.log, native-auth-final.log, session-scale.json and theme-dev-baseline.log. Immutable dev reference PNGs are committed in apps/tracer/test/recovery-ui-hold.spec.ts-snapshots/. Scratch archives/build targets removed after copying evidence; worktree clean. How to test: 1. Default bun run build, open sign-in even with ?mock=1&proto=recovery: one Continue with passkey button, no recovery entry. 2. INFRATERNAL_RECOVERY_UI=preview bun run build, open mock preview with ?mock=1&proto=recovery: recovery flow enabled; other URLs keep it held. 3. TRACER_TEST_PORT=4786 INFRATERNAL_RECOVERY_UI=preview bun x playwright test recovery.spec.ts audit-recovery.spec.ts reviewer-recovery.spec.ts recovery-preview-gate.spec.ts. scripts/verify fast exit 0, CPUWeight=10000/TRACER_TEST_PORT=4786/RUST_TEST_THREADS=1. Complete verbatim output is in the preceding two comments. Verbatim summary: ```text +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | fmt | PASS | | VT native fmt | PASS | | clippy | PASS | | test | PASS | | cargo-deny | PASS | | static builds | PASS | +---------------------------+--------------+ 20 pass 0 fail 376 expect() calls Ran 20 tests across 6 files. [90.00ms] stream differential: 134 streams, 11439 schedules, zero divergences 7 pass 0 fail 34390 expect() calls Ran 7 tests across 2 files. [1.76s] ```
Author
Owner

Deployed dev 5ed4f29 to monitor01: reviewed recovery backend with the recovery UI held (live sign-in verified: no recovery entry, text "Welcome back / Your passkey is all you need / Continue with passkey"), palette keyboard selection stays in view (#85), deterministic recovery expiry tests (#65). Gate: scripts/verify fast exit 0. Rollback: web.prev / infraternal.prev.

Deployed dev 5ed4f29 to monitor01: reviewed recovery backend with the recovery UI held (live sign-in verified: no recovery entry, text "Welcome back / Your passkey is all you need / Continue with passkey"), palette keyboard selection stays in view (#85), deterministic recovery expiry tests (#65). Gate: scripts/verify fast exit 0. Rollback: web.prev / infraternal.prev.
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#45
No description provided.