docs(theseus): record the add-on vault-root derivation as decided

bchwallet keys = HKDF(passwords/0 root, silentmode/addons/bchwallet/mainnet/0)
-> m/44'/145'/0'. Confirmed; must not change once funds exist.
This commit is contained in:
Local Dev 2026-09-06 12:36:53 +02:00
parent 7b3b5f7be8
commit a7cbc42dfa

View file

@ -22,6 +22,17 @@ m / 1414' / 0' messenger (Nostr etc.) ← future
Same seed, three purposes, no cross-derivation. See
[DESIGN-password-manager.md](DESIGN-password-manager.md) for the discipline.
**Add-on roots (decided 2026-09-06, do not change).** The vault never stores
the BIP-39 seed, only per-purpose roots, so add-ons cannot get a fresh
seed-level purpose after setup. `api.vault.derive("<addonId>/<path>")`
therefore returns HKDF-SHA256(passwords/0 root, info =
`silentmode/addons/<addonId>/<path>`). The bundled BCH wallet uses
`bchwallet/mainnet/0` as its BIP32 master seed and derives `m/44'/145'/0'`
from it. This is deterministic from the mnemonic (mnemonic → seed →
passwords/0 → wallet) and works for random-seed vaults too. Changing the
info string or the parent root would orphan every wallet's funds; recovery
without Theseus is via the account xprv shown in the wallet's Settings.
## Strand A — Password manager
### A.1 — SHIPPED (0.0.3, 9c09955e)