Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013Hc6Rvdz3DxLucqNtPE2iP
3.5 KiB
Dev D — RESUME Prompt (v0.9.0 keyfile MINORS follow-up)
Paste everything below the --- into a fresh Claude Code terminal.
You are RESUMING the Dev-D keyfile stream for v0.9.0 — but your 5 plan tasks are already MERGED to main (d649203, two-review-clean). Your only remaining job is a small minors follow-up flagged by the merge-time security review, on a fresh branch off current main.
Resume setup
cd /home/alee/Sources/relicario
git fetch origin
git checkout main
git pull # main should be at d649203 (your keyfile core/cli/wasm is here)
git log --oneline -4 # confirm the keyfile merge (588495f) is present
git worktree add /home/alee/Sources/relicario.v0.9.0-dev-d-minors -b fix/v0.9.0-keyfile-minors
cd /home/alee/Sources/relicario.v0.9.0-dev-d-minors
pwd # must print /home/alee/Sources/relicario.v0.9.0-dev-d-minors
(Your ORIGINAL worktree /home/alee/Sources/relicario.v0.9.0-dev-d still holds your merged branch — leave it.) Every subagent prompt MUST start with cd /home/alee/Sources/relicario.v0.9.0-dev-d-minors.
Read for full context
docs/superpowers/coordination/v0.9.0-dev-d-prompt.md— ORIGINAL prompt (ROLE, RELAY, STATUS formats). IGNORE its Setup block and its 5 tasks — they're merged.- Your merged code:
crates/relicario-core/src/keyfile.rs,crates/relicario-cli/src/{session.rs,commands/{init,backup,recovery_qr}.rs},crates/relicario-cli/tests/keyfile_flows.rs,crates/relicario-wasm/src/lib.rs.
Relay up on localhost:7331 (shim: cd /home/alee/Sources/relicario/tools/relay && python3 call.py read_messages '{"for":"dev-d"}'). PM is live.
YOUR WORK — the 3 minors (security-review findings, all non-blocking, now to be closed before the v0.9.0 tag)
- Zeroize
keyfile_encodeoutput —crates/relicario-core/src/keyfile.rs:keyfile_encodereturns a plainVec<u8>whose base64'd secret lands in non-zeroized heap. ReturnZeroizing<Vec<u8>>(derefs fine forfs::write). One-liner, for Zeroizing-discipline consistency. Update callers + the WASM binding if the type change ripples. - Test the backup keyfile-vault error — add a
keyfile_flowscase assertingbackup --include-imageon a key-file vault fails with the clear actionable message (currently correct but untested). - Integration test: malformed vs wrong — add a test locking the two distinct paths: a malformed key file →
invalid_key_fileerror; a well-formed-but-wrong secret → the opaquedecryption failedAEAD error (no which-factor oracle).
Optional (defer if it grows): backup --include-keyfile — a sibling to --include-image that bundles the .relkey into a backup. Flagged as a fast-follow; only do it if quick, else leave it for a later lift and note so.
Validation + ship
cargo test -p relicario-core -p relicario-cli, cargo clippy --all-targets -- -D warnings, cd /home/alee/Sources/relicario.v0.9.0-dev-d-minors/extension && npm run build:all (the Zeroizing change touches a WASM-exported fn — type-check it). Simplify pass. Then git push -u origin fix/v0.9.0-keyfile-minors and post Status: REVIEW-READY. The PM merges it before the tag.
First action
After setup, read_messages(for="dev-d") for my resume directive, post a ## STATUS UPDATE (Status: IN-PROGRESS, Task: keyfile-minors) confirming the minors branch is up, then knock out the 3 minors via superpowers:subagent-driven-development (or directly — they're small).