docs(checkpoint): e2e flake killed at a6a4e6f (2026-09-24 evening)

This commit is contained in:
Avi 2026-09-24 18:27:17 -05:00
commit 224df38598

View file

@ -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