logicsrc/apps/logicsrc-web
Anthony Ettinger ce8fc7c153 OpenFleet fix round: rebuild the ceiling from the ledger, once-markers, rule 6 in tree, lost only for what a roster can hold
The review of the reference implementation against moshcode found the two
readers disagreeing on the same files. This round applies the shared
rulings so both sides read a ledger the same way.

Ceiling (R-A, R-B, R-C, R1, R6, R10, R15, R17): memberCeiling rebuilds the
effective ceiling from the ledger on every read. The latest fleet-target
fleet.cap (else fleet.open, else the implicit fleet's) replaces the copy in
a record, so a sysop's widening cap reaches running members; then each
swarm.spawn narrowing down the path, then swarm caps last. In the implicit
fleet a parentless record's own approvals enters at the root; a ceiling a
writer left without the key is never read as native, and startMember fills
it with the engine's word while the record is unclaimed. A fleet.open or
cap with no hosts means the host it was written on (R23).

Once-markers (R-G, R28): member.start, member.end and swarm.end each take
an exclusive create under fleets/<fleet>/marks/<event>.<id> before the
append; a lost end takes <id>.lost so a real end can still supersede it.
The hooks let a real end follow a lost line (R9).

tree (R-F, R20): run by the sysop it enforces rule 6, stopping a member
past its effective until with state timeout and the members of a swarm or
fleet at its budget with state budget, then writes swarm.end for each swarm
touched once it is complete. An agent's tree stops nothing. lost is written
only for a member its engine's roster can hold: a claude-code background job
(8-hex member or session) or a moshcode pane, never an interactive session
claude agents does not list (R-E, R3, R14). A nested swarm is drawn under
the member that spawned it and its row shows the effective ceiling (R25).

stop and cap (R-D, R-H, R22, R27): swarm.end is written only once every
member and every nested swarm has an end line that counts; an engine that
will not end a member leaves it without an end line and the verb exits
non-zero. claude stop takes the job id: the member of a background job,
else the first eight characters of a session UUID; an interactive session
with no job id cannot be stopped and the tool says so. cap on a swarm
refuses a key that would widen. A derived claude-code job is named by its
job id and carries no pid.

Also: R-I (endMember ends only the engine-minted swarm of one), R35 (a
derived record's guessed approvals corrected at UserPromptSubmit), R32
(the UserPromptSubmit hook passes only exit 2 through), R31 (package
README), R36 (rule 13 says the launcher test is unimplemented in 0.1),
docs and PRD 0008 updated for lost, rule 6 and the markers. 113 openfleet
tests, 93 CLI tests, contract green.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZV4zJ2pDZLNN3kE5jFCmV
2026-09-13 10:45:30 +00:00
..
contract spec-discovery test: accept a landing-page link in llms.txt, still require the docs URL 2026-09-13 08:46:08 +00:00
e2e fix(web): the Top-Level Pages cards led nowhere, and /privacy was not a page (#114) 2026-07-30 14:35:51 -07:00
public Ship OpenFleet contracts and the OpenWall draft proposal (#177) 2026-09-13 00:57:45 -07:00
src OpenFleet fix round: rebuild the ceiling from the ledger, once-markers, rule 6 in tree, lost only for what a roster can hold 2026-09-13 10:45:30 +00:00
.gitignore Migrate logicsrc-web from Vite SPA to Next.js 16 App Router 2026-06-07 03:41:48 +00:00
next.config.ts OpenFleet: agents under a human, the record of who spawned whom, and the ledger the sysop reads 2026-09-13 08:15:03 +00:00
package.json Charge AI training crawlers for access (x402 gateway) (#141) 2026-09-05 14:49:39 -07:00
playwright.config.ts Migrate logicsrc-web from Vite SPA to Next.js 16 App Router 2026-06-07 03:41:48 +00:00
tsconfig.json Migrate logicsrc-web from Vite SPA to Next.js 16 App Router 2026-06-07 03:41:48 +00:00
vitest.config.ts Migrate logicsrc-web from Vite SPA to Next.js 16 App Router 2026-06-07 03:41:48 +00:00