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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H4upF5LVwmPDDqrhdUfnXh
This commit is contained in:
teahubxyzandClaude Opus 5.5 committed 2026-10-15 12:15:48 -07:00
1 parent 6998ae47aa
commit 4ad75f0970
14 files changed
+389 -50

No files matched your search

+33 -1
View File
@@ -75,7 +75,7 @@ test('found a holding, then birth, award, decide, graduate and close at the defa
await expect(page.locator('#timeline-list')).toContainText('graduate studio from acme-holdings');
await row(page, 'bot').click();
await verb(page, 'birth');
await expect(page.locator('#act-why')).toHaveText('Agents do not give birth.');
await expect(page.locator('#act-why')).toHaveText('Agents give birth only once they graduate.');
expect(problems).toEqual([]);
});
@@ -357,3 +357,35 @@ test('a node publishes its keyring; a graduation retires it, and the graduate pu
expect(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true);
expect(problems).toEqual([]);
});
test('a holding is a series LLC with its ventures as series, and a seat graduates to go independent', async ({ page }) => {
const problems = await open(page), inspect = page.locator('#inspect-body');
await page.locator('#sample').click();
await expect(say(page)).toContainText('Loaded the yolopreneur sample', { timeout: 20_000 });
await expect(row(page, 'yolopreneur')).toContainText('series llc');
await row(page, 'lineage').click();
await expect(inspect).toContainText('LLC · US-WY · Lineage LLC · via doola');
await row(page, 'docscope').click();
await verb(page, 'charter');
await expect(page.locator('#charter-forms input[value="series"]')).toBeChecked();
await expect(page.locator('#act-key')).toContainText('Signs as yolopreneur');
await submit(page, 'charter');
await expect(say(page)).toHaveText('docscope is a series of yolopreneur, at beat 8.');
await row(page, 'yolopreneur').click();
await expect(inspect.locator('.f', { has: page.locator('dt', { hasText: /^Series$/ }) })).toContainText('well-known, time, docscope');
await row(page, 'sol').click();
await verb(page, 'graduate');
await submit(page, 'graduate');
await expect(say(page)).toContainText('sol graduates from time');
await expect(row(page, 'sol')).toContainText('graduated');
await verb(page, 'charter');
await page.locator('#charter-forms input[value="llc"]').check();
await page.locator('#charter-jurisdiction').fill('US-DE');
await page.locator('#charter-legal').fill('Sol LLC');
await submit(page, 'charter');
await expect(say(page)).toContainText('sol is chartered as an LLC in US-DE');
await verb(page, 'birth');
await expect(page.locator('#f-birth')).toBeVisible();
expect(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true);
expect(problems).toEqual([]);
});