Each beat pays its 50 test BTC block reward to the holding being worked in, at its SegWit (BIP-84) address. Send moves test BTC between active nodes of a holding, signed by the sender's BIP-84 key, with the toy chain's 500-sat fee: at most two coins in and one block reward out. Sends land like acts, and Beat now mines a beat even when nothing is cued. A graduation moves each re-keyed node's money to its new address with its inscription. Balances follow the slider, the timeline lists every reward and send, and Inspect shows exact amounts and the raw transaction. The sample passes some of yolopreneur's rewards down its tree. The engine's one local change: the toy chain also takes P2WPKH outputs and SIGHASH_ALL P2WPKH spends (BIP-143), in src/adapters/chain.js. Super Testnet's tests pass unchanged; tests/money.test.js covers the rest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H4upF5LVwmPDDqrhdUfnXh
1.8 KiB
1.8 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. Its one local change is P2WPKH payments insrc/adapters/chain.js(PROVENANCE.md); keep it small and tested. - Money lives in
src/orgchain/money.js: beats pay the holding being worked in, and sends stay inside a holding and spend SegWit coins only, so an inscription can never leave as change. Balances are read off the chain, never stored. - 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 and holds its money. 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.