logicsrc/prd
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
..
0000-template.md Add Tech Stack and Monetization sections to OpenPRD (0.3) (#144) 2026-09-06 16:50:11 -07:00
0001-add-logicsrc-openontology-spec.md docs(prd): add OpenPRD 0001 — LogicSRC OpenOntology specification (#98) 2026-07-26 01:14:33 -07:00
0002-hourly-hire-us-rate.md feat(web): move Hire Us pricing to $400/hour metered billing (PRD 0002) (#102) 2026-07-28 10:34:49 -07:00
0003-add-logicsrc-opencontext-spec.md Add the LogicSRC OpenContext specification (#132) 2026-08-09 11:46:11 -07:00
0004-add-logicsrc-opencreds-spec.md Add the LogicSRC OpenCreds specification (#140) 2026-08-29 04:11:38 -07:00
0005-add-logicsrc-openswarm-spec.md Add the LogicSRC OpenSwarm specification family (#142) 2026-09-05 15:05:57 -07:00
0006-add-pay2seed-spec.md Add pay2seed, paid2seed, pay2stream and paid2stream to the OpenSwarm family (#143) 2026-09-05 19:12:45 -07:00
0007-add-tech-stack-and-monetization-to-openprd.md Add Tech Stack and Monetization sections to OpenPRD (0.3) (#144) 2026-09-06 16:50:11 -07:00
0008-openfleet-reference-implementation.md 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
README.md OpenFleet reference implementation: @logicsrc/openfleet 0.1.0 and logicsrc fleet 2026-09-13 10:06:11 +00:00

LogicSRC PRDs

Numbered OpenPRD product requirements documents for this repo. One file per PRD at prd/<id>-<slug>.md, four-digit ids, no gaps. 0000-template.md is the copy-paste starting point.

Status lives in each file's front-matter and is the source of truth: Draft → Review → Accepted → Final, or Rejected / Withdrawn / Superseded.

ID Title Status Tags
0001 Add the LogicSRC OpenOntology specification Draft openontology, ontology, knowledge-graph, agents, mcp, schemas
0002 Move Hire Us pricing from a weekly retainer to an hourly rate Accepted pricing, site, billing
0003 Add the LogicSRC OpenContext specification Draft opencontext, context, agents, permissions, provenance, schemas
0004 Add the LogicSRC OpenCreds specification Draft opencreds, credentials, vault, encryption, portability, schemas
0005 Add the LogicSRC OpenSwarm specification family Draft openswarm, ipfile, ipdb, ipaudio, ipvideo, iplive, bittorrent, x402, c0mpute
0006 Add pay2seed, paid2seed, pay2stream and paid2stream to the OpenSwarm family Draft openswarm, pay2seed, paid2seed, pay2stream, paid2stream, iplive, hls, ipfile, ippay, ipdb, bittorrent, torlink, bittorrented, c0mpute
0007 Add Tech Stack and Monetization sections to OpenPRD Draft openprd, standards, monetization
0008 Ship the OpenFleet reference implementation Draft openfleet, agents, fleet, swarm, claude-code, moshcode, cli