Each node lists its Tapkey again beside Taproot and SegWit: the npub as a Taproot address (its nostr key with the BIP-86 tweak), so the npub alone finds it. Its inscription stays at the standard BIP-86 key, since nostr secrets get pasted into clients. Inspect gains a Reveal panel, as on lineage's key tree page: the seed (holdings and orgs), the nsec, Taproot, SegWit and Tapkey descriptors with test-network WIF and BIP-380 checksums, and the leaves' private keys (OpenSSH, DKIM, WireGuard, PKCS#8, Headscale), each with Copy. Tests pin hashes of the key tree page's own output for the NIP-06 vector, BIP-84's WIF and BIP-380's checksum; ssh-keygen reads the keys. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H4upF5LVwmPDDqrhdUfnXh
1.5 KiB
1.5 KiB
AGENTS.md
Orgchain is lineage's app for creating and operating lineage holdings on Super Testnet's toy chain.
- Test-only, always: no mainnet funds, no hidden signing, no custody, and nothing presented as a real key.
- Lineage semantics live in one place,
src/orgchain/lineage.js. The UI never interprets events itself, and every act is vetted by that reducer before it is signed. A new op means a reducer change, its tests and the README's table. - The engine (
src/adapters,src/upstream,src/storage.js,src/miner.js) is Super Testnet's. Compose with it rather than rewriting it, and keep its tests passing. Preserve upstream licenses and provenance. - Keys follow the tree (
src/orgchain/keys.js): store roots only (one per holding, one per graduated org) and derive every other key from its position. Every act is signed by whichever key holds the authorizing inscription. - A node's chain key is its account's BIP-86 Taproot key (
m/86'/1'/account'/0/0); SegWit is BIP-84 at the same account. Leaves are HKDF-SHA256 (saltlineage/v0) and must stay byte for byte with lineage's key tree page;tests/keys.test.jsholds values read off that page. - Secrets show only behind Reveal, reset on every selection, and match the key tree page byte for byte (the tests pin hashes of the page's own output).
- The page makes no network requests; keep it that way (the deployed CSP sets
connect-src 'none'). - Before shipping:
npm test,npm run build,npm run test:e2e.