# 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 (salt `lineage/v0`) and must stay byte for byte with lineage's key tree page; `tests/keys.test.js` holds 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`.