A node's chain key is now its tapkey: its NIP-06 npub with the BIP-86 tweak, so one secret signs its nostr events and its chain spends, and its address follows from its npub. Its leaves hang off the same tree, byte for byte as on lineage's key tree page: an agent's ssh, git, dkim and wg keys from its nostr secret, an org's ssh-ca, mtls and noise keys from its seed. Inspect shows the tapkey, npub, derivation and leaves, with the public lines to paste. Labs keyed by v1.1 keep their separate m/86' chain keys until they are reset. PROVENANCE.md and public/licenses now carry @scure/base, bip32 and bip39, which came in with v1.1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H4upF5LVwmPDDqrhdUfnXh
1.3 KiB
1.3 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 tapkey: its npub with the BIP-86 tweak. Leaves are HKDF-SHA256 (salt
lineage/v0) and must stay byte for byte with lineage's key tree page;tests/keys.test.jsholds values read off that page. - 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.