Super Testnet's kitchen sink becomes lineage's app. Lineage gives the structure; the chain adds time. - Holdings home, a tree drawn like docs/lineage.md, act and inspect panels, and a timeline grouped by beat. - Verbs: found, birth, award, decide, graduate, close. Each is a lineage/v0 inscription whose parent is the node that authorizes it. - One reducer (src/orgchain/lineage.js) folds the events into trees and vets every act before it is signed. Closing cascades through derived children; graduated (adopted) ones stay open. - Time: tempo each act / 10s / 30s / 60s / manual, Beat now, and a view slider with replay. A beat is a block; cued acts wait in the mempool. - Its own lab (orgchain:lab:v1) with save, load and reset; a yolopreneur sample of six beats. - Removed: the recursive preview, explorer UI, server, Docker and Fly files. The engine (src/adapters, src/upstream, storage, miner) is unchanged. - Tests: reducer and lab (node --test), plus a Playwright spec for desktop and mobile that also runs against a deployed copy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H4upF5LVwmPDDqrhdUfnXh
3.0 KiB
Orgchain
Lineage's app for creating and operating lineage holdings: https://lineage.yolopreneur.lol/orgchain/
Lineage gives an org its structure, a key tree with a place for every org and agent. Orgchain adds time. Every act is an inscription on a private toy chain in your browser, and its parent inscription is the node that authorizes it, so the chain itself records who did what, and when.
- Found a holding (a root: the LLC). Birth orgs and agents under any org. Award a belt (one skill, one seat). Decide (a decision on a node's record). Graduate an org (its edge flips from derived to adopted). Close a node (derived children close with it; graduated ones hold their own roots and stay open).
- Time. A beat is a block. At the default tempo each act is its own beat; at 10, 30 or 60 seconds, acts are cued and land together on the next beat; on manual they wait for Beat now. The slider and Replay show a holding as it stood at any beat.
- One interpretation.
src/orgchain/lineage.jsfoldslineage/v0events into trees, and vets every act before anything is signed. Events it rejects stay on the chain and show as rejected; they just don't change the tree.
Test coins only: one test wallet and one local chain, kept in this browser (localStorage, key orgchain:lab:v1).
Nothing here is a real key; minting a real root is the operator's call.
Events
lineage/v0 is the ord metaprotocol (tag 7); the fields are CBOR metadata (tag 5); the body is a short text label.
| op | parent inscription (spent to authorize) | metadata |
|---|---|---|
found |
none | name |
birth |
the parent | name, kind (org or agent) |
award |
the issuing org or holding | to, skill, belt (white, green, black) |
decide |
the deciding node | title, why |
graduate |
the child's parent | of |
close |
the node itself | none |
Names are domain labels (lowercase letters, digits, hyphens). Org and agent indices count separately and are never reused.
Build and test
npm ci
npm test # engine, reducer and lab (node --test)
npm run build # dist/ is the site; relative paths, so it works at any sub-path
npm run test:e2e # Playwright on vite preview; PW_CHANNEL=chrome uses installed Chrome
ORGCHAIN_URL (plus PW_ARGS, a JSON array of browser flags) points the same end-to-end spec at a deployed copy.
Deploy: copy dist/ to ventures/lineage/orgchain/ on teahubxyz/time gh-pages. Its headers (a strict CSP with
connect-src 'none': the app makes no network requests) come from ventures/lineage/_headers.
Built on Super Testnet
The chain, wallet, inscriptions, metadata and index (src/adapters, src/upstream, with src/storage.js and
src/miner.js) are Super Testnet's, unchanged and with their tests
(tests/adapters.test.js). See PROVENANCE.md and public/licenses/. The full lab (explorer, delegates, recursion and
the Inscriboor extension) lives at supertestnet.lol.