From 224df38598caf0dea0fbaaf8d287dcb9c8cd7f80 Mon Sep 17 00:00:00 2001 From: Avi Date: Thu, 24 Sep 2026 18:27:17 -0500 Subject: [PATCH] docs(checkpoint): e2e flake killed at a6a4e6f (2026-09-24 evening) --- CHECKPOINT-encryption.md | 60 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 6 deletions(-) diff --git a/CHECKPOINT-encryption.md b/CHECKPOINT-encryption.md index 6bba0a7..283a684 100644 --- a/CHECKPOINT-encryption.md +++ b/CHECKPOINT-encryption.md @@ -1,15 +1,63 @@ -# Checkpoint — NIP-46 session restore on startup (2026-09-24) +# Checkpoint — e2e flake killed (2026-09-24 evening) ## Where things are - Project: `/home/avi/Projects/Keynctr` -- Branch: `master` @ **`0982dad`** ("feat(nip46): restore saved signer - sessions on startup/unlock — no fresh scan"). Previous: `73bf17c` - (checkpoint), `f53bc56` (sign timeout leash). +- Branch: `master` @ **`a6a4e6f`** ("test(nip46): kill the e2e flake — + local relay for strict kind-0, poison-tolerant vault lock"). Previous: + `0982dad` (session restore), `73bf17c` (prior checkpoint). - Working tree: clean for tracked files. Untracked intentionally NOT committed: `COSMIC_THEME.md`, `KeynectrAppIconPossibility02.jpeg`, `deferred/` (stays deferred). -- Release binary: **rebuilt at `0982dad`**. Frontend untouched — no - renderer rebuild needed. Restart Electron before retesting. +- Release binary: **rebuilt at `a6a4e6f`** (test-only commit; same code + as `0982dad` for the app itself). Restart Electron before retesting. + +## What was completed this session +1. **Root-caused and killed the intermittent e2e failure** that showed + up as 3–5 simultaneous test failures roughly 1 run in 4: + - REAL flake: `nip46_bunker_connect_params_match_spec_against_strict_amber` + published its kind-0 through the DEFAULT relay set — the real + internet (damus + the known-hanging nostr.band) — so "at least one + relay must accept the signed kind-0" was a network lottery against + the 6s send timeout. The test now pins settings to the in-process + relay like the QR test always did. Suite has zero network + dependency now. + - CASCADE amplifier: a panic while holding the test-only + `VAULT_ENV_LOCK` poisoned the mutex, so every later test died on + `PoisonError`. All four lock sites are now poison-tolerant + (`unwrap_or_else(into_inner)`) — a real failure reports as ONE. +- Verification (all green at `a6a4e6f`): **10/10 consecutive green + e2e runs** (was ~1 in 4 failing), runtime now uniform ~21.5s (was + bimodal — long tail was network waiting). `cargo test` 216 unit + 5 + e2e passed, `cargo clippy --all-targets` 0 warnings, `cargo fmt + --check` clean, `cargo build --release` green. Frontend untouched. + +## Commits added (newest first) +- `a6a4e6f` test(nip46): kill the e2e flake — local relay for strict kind-0, poison-tolerant vault lock + +## How to resume / reproduce +- Restart Electron (new release binary). With the vault already + unlocked/unencrypted, the backend logs `[NIP46] restoring session: + peer=... as npub1...` then `identity check on restored session: + PASS` and the profile goes Connected without showing Amber a new + scan. CLI trace: `~/Tools/keynctr-debug/` logs. +- Flake regression check: `for i in 1..10; do cargo test --test + nip46_e2e; done` — all runs must pass in ~21–22s. +- Then do the still-pending live proof: Publish name / publish a note + and approve in Amber within 2 minutes (120s leash from `f53bc56`). + +## Outstanding / next steps +1. **Live sign/publish through real Amber** (covers the 120s leash and + the restored session in one shot). +2. Prune the 11 stale profileless `nip46_connections` rows (cosmetic; + restore already skips them). + +--- + +# Checkpoint — NIP-46 session restore on startup (2026-09-24) + +## Where things are +- Branch `master` @ `0982dad`; see git for hashes. Details below are + as written when `0982dad` was HEAD. ## What was completed this session 1. **Session restore without a fresh scan (`0982dad`)**: the WIP from