2026-10-04 23:03:47 +00:00
|
|
|
# AGENTS.md
|
|
|
|
|
|
2026-10-14 17:28:33 -07:00
|
|
|
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
|
2026-10-14 23:16:03 -07:00
|
|
|
rather than rewriting it, and keep its tests passing. Preserve upstream licenses and provenance. Its local
|
|
|
|
|
changes are P2WPKH payments and a coinbase split across up to 64 outputs, both in `src/adapters/chain.js`
|
|
|
|
|
(PROVENANCE.md); keep them small and tested.
|
|
|
|
|
- Money lives in `src/orgchain/money.js`: beats pay the holdings (split by hashrate, or all to the last act), sends
|
|
|
|
|
spend SegWit coins only, so an inscription can never leave as change, and balances are read off the chain, never
|
|
|
|
|
stored. Gas (`src/orgchain/actions.js`): every act is paid by the actor's own keys and checked before anything is
|
|
|
|
|
signed; the lab wallet pays only for foundings and for holdings that predate lab keys.
|
2026-10-14 18:22:22 -07:00
|
|
|
- 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.
|
2026-10-14 19:49:05 -07:00
|
|
|
- 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
|
2026-10-14 22:25:38 -07:00
|
|
|
account and holds its money. Leaves are HKDF-SHA256 (salt `lineage/v0`) and must stay byte for byte with lineage's key tree page;
|
2026-10-14 19:49:05 -07:00
|
|
|
`tests/keys.test.js` holds values read off that page.
|
2026-10-14 20:14:11 -07:00
|
|
|
- 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).
|
2026-10-14 17:28:33 -07:00
|
|
|
- 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`.
|