From 4ad75f0970cdd34a86b846627dd6ad759d3361b0 Mon Sep 17 00:00:00 2001 From: teahubxyz Date: Thu, 15 Oct 2026 12:15:48 -0700 Subject: [PATCH] Orgchain v1.11: charters, a ladder of legal forms; agents graduate A new lineage/v0 op, charter, records a node's legal form: sole proprietor, LLC, series LLC, series or corporation, with a jurisdiction (ISO 3166), a legal name, who formed it and a SHA-256 of the filings. Legal form is an attribute, so a node keeps its inscription, keys and history whatever form it takes, and the newest charter counts. A node charters itself; a series is chartered by its master, an ancestor chartered as a series LLC. Whether a charter stands is derived from the tree, never stored: a series lapses if it graduates or its master closes or stops holding series, so charters commute with graduations and closes in any block order. Agents can graduate: a seat goes independent as a holding of its own, with its own root and keys and its money along, and can then birth, award and incorporate. Charter is the tenth verb, and the tree tags each node with its form. Charter hashes a filing from a file in the tab. The sample charters yolopreneur as a Wyoming series LLC with its ventures as series, and lineage graduates into Lineage LLC. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01H4upF5LVwmPDDqrhdUfnXh --- AGENTS.md | 5 +- README.md | 18 +++++-- SPEC.md | 50 ++++++++++++++------ index.html | 26 +++++++++-- src/main.js | 92 +++++++++++++++++++++++++++++++++--- src/orgchain.css | 10 ++++ src/orgchain/actions.js | 22 +++++---- src/orgchain/keys.js | 6 ++- src/orgchain/lineage.js | 61 ++++++++++++++++++++++-- tests/charter.test.js | 101 ++++++++++++++++++++++++++++++++++++++++ tests/lab.test.js | 4 +- tests/lineage.test.js | 8 ++-- tests/money.test.js | 2 +- tests/orgchain.spec.js | 34 +++++++++++++- 14 files changed, 389 insertions(+), 50 deletions(-) create mode 100644 tests/charter.test.js diff --git a/AGENTS.md b/AGENTS.md index b8a1c59..b059f84 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -20,7 +20,10 @@ Orgchain is lineage's app for creating and operating lineage holdings on Super T that predate lab keys. - Deals live in `src/orgchain/offers.js`: the buyer pre-signs the whole transaction and the holder countersigns. An offer is signatures kept in the lab, never chain state, and who holds an item is read off the chain, never - from metadata. Inscription metadata is public and permanent, so never put a secret in it (item notes included). + from metadata. Inscription metadata is public and permanent, so never put a secret in it (item notes included), and a + charter carries a hash of the filings, never the filings. +- Charters (`src/orgchain/lineage.js`): legal form is an attribute of a node, and whether a charter stands is derived + from the tree (`standing`), never stored, so charters commute with graduations and closes. - 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 diff --git a/README.md b/README.md index 9c94306..96de02b 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,10 @@ 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, in any holding: a registry like well-known certifies agents it doesn't hold). **Decide** (a decision on a node's record). **Make** an item (an inscription its maker holds, and can sell). **Keyring** (a node publishes its keys on - each chain, each key signing the same statement). **Graduate** an org: its edge flips from derived to adopted, and it - becomes a holding of its own, with its own tree, timeline and share of the mining, while its parent's tree keeps a row - for it. **Close** a node (derived children close with it; graduated ones hold their own roots and stay open). + each chain, each key signing the same statement). **Charter** (a node's legal form, from sole proprietor to series + LLC). **Graduate** an org or an agent: its edge flips from derived to adopted, and it becomes a holding of its own, + with its own tree, timeline and share of the mining, while its parent's tree keeps a row for it. **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. @@ -46,6 +47,14 @@ chain itself records who did what, and when. check one. The newest keyring counts, no key is bound to two nodes at once, and a graduation retires the keyrings it re-keys, so the graduate publishes its new keys (the sample shows lineage's). Inspect shows each node's keyring and the statement its keys signed (`src/orgchain/keyring.js`). +- **Charters.** **Charter** records a node's legal form, which is an attribute, not an identity: a freelancer's holding + starts with no form, takes one when it needs to (sole proprietor, LLC, series LLC or corporation), and keeps its + inscription, keys and history throughout. A series LLC holds its ventures as series, each chartered by the master; a + series lapses if it graduates or its master closes or stops holding series, which the tree shows by striking its tag. + A graduated venture charters itself as an LLC. An agent can graduate too: a seat goes independent as a holding of its + own, free to birth and award, then incorporate. A charter carries a jurisdiction, a legal name, who formed it and a + SHA-256 of the filings, which Charter can compute from a file without the file leaving the tab. The sample shows + yolopreneur as a Wyoming series LLC with its ventures as series, and lineage graduating into Lineage LLC. - **One interpretation.** `src/orgchain/lineage.js` folds `lineage/v0` events 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. - **Keys.** Each holding gets its own 24-word lab root, and every node has lineage's keys at its place in the tree @@ -84,7 +93,8 @@ keyring's is the statement its keys signed). | `decide` | the deciding node | `title`, `why` | | `make` | the making node, which then holds the item | `name`, `note` | | `keyring` | the node itself; the newest counts, and a graduation retires it | `taproot`, `segwit`, `nostr`, `ethereum`, and `proof` (each key's signature) | -| `graduate` | the child's parent (then the handoff to the child's fresh root); the child becomes a holding | `of` | +| `charter` | the node itself, or a series' master; the newest counts | `form`; `jurisdiction`, `legal`, `provider`, `filing`, or `of` for a series | +| `graduate` | the child's parent (then the handoff to the child's fresh root); the child, org or agent, becomes a holding | `of` | | `close` | the node itself | none | Names are domain labels (lowercase letters, digits, hyphens). Org and agent indices count separately and are never diff --git a/SPEC.md b/SPEC.md index db42bd5..47986bd 100644 --- a/SPEC.md +++ b/SPEC.md @@ -53,28 +53,52 @@ the inscription moves the authority. | op | parent | metadata | effect | | --- | --- | --- | --- | | `found` | none | `name` | a holding; no active holding may already have that name | -| `birth` | an active holding or org | `name`, `kind` (`org` or `agent`, default `org`) | a child; the parent may not already have an active child of that name | -| `award` | an active holding or org | `to`, `skill`, `belt` (`white`, `green` or `black`) | `to` (any other active node, in any holding) holds that belt in that skill, replacing its earlier belt in it | +| `birth` | an active holding, org or graduated agent | `name`, `kind` (`org` or `agent`, default `org`) | a child; the parent may not already have an active child of that name | +| `award` | an active holding, org or graduated agent | `to`, `skill`, `belt` (`white`, `green` or `black`) | `to` (any other active node, in any holding) holds that belt in that skill, replacing its earlier belt in it | | `decide` | an active node | `title` (required), `why` (optional) | a decision on the node's record | | `make` | an active node | `name`, `note` (optional) | an item, made and first held by the node; a node makes one item per name | | `keyring` | the node itself, active | `taproot`, `segwit`, `nostr`, `ethereum`, and `proof`: each key's signature | the node's keys are bound to it, replacing its earlier keyring (section 8) | -| `graduate` | the child's parent, active | `of` (an active org child, not yet adopted) | the edge becomes adopted, and the org becomes a holding of its own (section 5) | +| `charter` | the node itself, active; for a series, its master | `form`; `jurisdiction`, `legal`, `provider` and `filing`, or `of` for a series | the node's legal form, replacing its earlier charter (section 5) | +| `graduate` | the child's parent, active | `of` (an active child, org or agent, not yet adopted) | the edge becomes adopted, and the child becomes a holding of its own (section 5) | | `close` | the node itself, active | none | the node closes, with every active derived descendant; adopted ones stay open | Names (holdings, children, skills, items) are 1 to 40 lowercase letters, digits or hyphens, starting and ending with a -letter or digit, because they become domains. Text fields are trimmed, and only their first characters count: 140 -for a title, 400 for a why, 280 for a note. Agents do not birth or award. An event that -breaks a rule is rejected: it stays on the chain and changes nothing. Any other `op` is rejected. +letter or digit, because they become domains. Text fields are trimmed, and only their first characters count: 140 for a +title, 400 for a why, 280 for a note, 120 for a legal name. Agents birth and award only once they graduate. An event +that breaks a rule is rejected: it stays on the chain and changes nothing. Any other `op` is rejected. -## 5. Holdings and graduation +## 5. Holdings, graduation and charters -A holding is a root: a `found`, or an org that graduated. When an org graduates, it and its descendants still in the -old holding re-root under it, and it joins the holdings. Its parent stays its parent, so where it came from stays on the -record, and its old holding's tree keeps a row for it. A graduation event belongs to both holdings. Its keys change with -its new root, and so do its derived descendants', so their keyrings retire (section 8). +A holding is a root: a `found`, or a child that graduated. When an org graduates, it and its descendants still in the +old holding re-root under it, and it joins the holdings. An agent can graduate too: it goes independent, and as a holding +of its own it can birth and award. A graduate's parent stays its parent, so where it came from stays on the record, and +its old holding's tree keeps a row for it. A graduation event belongs to both holdings. Its keys change with its new +root, and so do its derived descendants', so their keyrings retire (section 8). -In Orgchain a graduation is followed by a handoff: the org's fresh root claims its inscription, and the derived key that -held it countersigns. After that, only the new root can act for the org. +In Orgchain a graduation is followed by a handoff: the graduate's fresh root claims its inscription, and the derived key +that held it countersigns. After that, only the new root can act for it. + +A `charter` records a node's legal form: what it is off chain. Legal form is an attribute, not an identity, so a node +keeps its inscription, history and keys whatever form it takes, and the newest charter counts. + +| `form` | what it is | who may take it | chartered by | +| --- | --- | --- | --- | +| `sole` | a person trading under their own name | a holding or an agent | the node | +| `llc` | a company of its own (for a derived org, one its parent's line controls) | a holding, an org or a graduated agent | the node | +| `series-llc` | an LLC that can hold series | a holding, an org or a graduated agent | the node | +| `series` | a cell of an ancestor's series LLC | an org | that ancestor, its master | +| `corp` | a corporation | a holding, an org or a graduated agent | the node | + +`jurisdiction` is an ISO 3166 code such as `US-WY`, required for an LLC, a series LLC or a corporation and optional for +a sole proprietor; a series takes its master's. `legal` is the legal name, `provider` the name of whoever formed it (by +the name rule), and `filing` the SHA-256 of the filed documents, in hex: metadata is public, so a charter carries a hash, +never the documents. A series charter names the series in `of`; its master must be an ancestor whose charter is a series +LLC at the time. + +Whether a charter stands is read off the tree as it is, not stored: a charter stands while its node is active, and a +series also needs its master active, still a series LLC, and in the same holding as the series. A series that graduates, +or whose master closes or stops holding series, lapses. Because standing is derived, a charter and a graduation in the +same block land the same way in either order. Control follows the inscription, whatever the form. ## 6. Order-sensitive conflicts diff --git a/index.html b/index.html index e2de527..60d3711 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Orgchain · Lineage - + @@ -16,7 +16,7 @@

Lineage /

Orgchain

-

Found a holding, then birth its orgs and agents, award belts, record decisions, make and trade items, publish keyrings, send test BTC, graduate and close. Each act is an inscription whose parent is the node that authorizes it, paid for with the actor's own gas, and each beat is a block whose 50 test BTC the holdings mine. Lineage gives the structure; the chain adds time.

+

Found a holding, then birth its orgs and agents, award belts, record decisions, make and trade items, publish keyrings, charter legal forms, send test BTC, graduate and close. Each act is an inscription whose parent is the node that authorizes it, paid for with the actor's own gas, and each beat is a block whose 50 test BTC the holdings mine. Lineage gives the structure; the chain adds time.

Test coins only @@ -88,7 +88,7 @@

Select a holding, or a node in its tree, to act through it.