diff --git a/docs/lineage.md b/docs/lineage.md new file mode 100644 index 0000000..bfe919e --- /dev/null +++ b/docs/lineage.md @@ -0,0 +1,53 @@ +# Lineage — one tree + +The factory, its ventures and their agents form one tree. Every node is read three ways, at the same path: + +- **key** — lineage: each org has its own seed, standard paths inside it, and births signed by its parent. +- **context** — the meta repo: `AGENTS.md` · `SKILLS.md` · `DESIGN.md`, inherited down the path. +- **presence** — pages and names: `.yolopreneur.lol`, and `@` as both NIP-05 name and mailr + address. + +``` +● yolopreneur legal · treasury · id · agents · orgs root: offline, with the operator +└─ orgs + ├─ 0' well-known the same five + │ └─ orgs 0' mailr · 1' lineage + └─ 1' time the same five + ├─ agents luna · sol · astra the clock's seats + └─ orgs 0' docscope · 1' dollhouse · … each one the same five again +``` + +**Status (2026-10-14):** model agreed with the operator. Minting a real root is the operator's call; until it exists, +this tree is a drawing, and nothing derived from it may be presented as a real key. + +## Rules +1. **One template, every depth.** An org is legal key · treasury · identity · agents · orgs. The factory's own org and + a venture three levels down run the same spec. +2. **A seed per org.** A child org's seed is derived from its parent's root (BIP-85), and lineage spec v0 runs on that + seed unchanged, so every org gets standard wallet paths and NIP-06 accounts for its agents. The parent can re-derive + a child; a child can never derive its parent. Indices are never reused. +3. **Two kinds of edge.** *Derived*: the parent holds the child's seed — agents and young ventures. *Adopted*: the child + holds its own root, and the parent signs a birth certificate vouching for it — graduated ventures and outside orgs. +4. **Graduation flips an edge.** The venture mints its own root; the parent signs an adopted birth; the derived birth + is revoked and its keys retired. Later, lineage.llc can adopt the whole yolopreneur tree the same way. +5. **Context flows down like keys.** A child inherits its ancestors' `AGENTS.md` · `SKILLS.md` · `DESIGN.md`, adds its + own, and cannot rewrite upward. Every fact lives on exactly one level. Skill names are global: no shadowing. +6. **Names nest as domains.** Each org serves its own `/.well-known/nostr.json`; `@` is NIP-05 and mail. +7. **Clocks nest.** Each org runs its own Time, seats and spend cap; a child's cap is carved out of its parent's. +8. **Belts are badges.** A belt is a badge awarded to one seat for one skill — per seat × skill, never per seat alone. + Kata belts and the `.well-known.online` badge are the same mechanism. + +## Proposed for lineage spec v0.1 +- `org seed` — BIP-85, BIP-39 application, from the parent root: `m/83696968'/39'/0'/24'/'`, j = the child org's + index. +- `birth` — gains an `edge` tag, `derived` or `adopted`; an adopted birth names the child's own org key. +- `graduate` — the child's new org key signs its keyring; the parent signs an adopted birth; the parent revokes the + derived birth (kind 5). +- `badge` — NIP-58: the org that runs the dojo publishes a badge definition per skill × belt (kind 30009) and awards it + to a seat's npub (kind 8); the seat lists what it holds in its profile badges (kind 10008). + +## Not built yet +- The root (operator's decision). +- The `lineage` CLI: spec → keys, so Time's seats get real identities and sign their commits with the git leaf. +- The meta repo's layout generated from `lineage.json`: one manifest for keys, context and pages. +- Badge issuance from the kata runner (see `SKILLS.md`).