# physics.spec.yaml — the runtime, whole. fifteen organs in five groups, zero knowledge. spec: "playground:physics/v0" organs: # ── contact group — from caller/setup to a run ────────────────────────── compile: sig: "compile(bundle, carrier) -> runnable" does: "materialize the bundle into a body; carriers below" land: sig: "land(text, names) -> instances | UNLANDED" does: "caller text into the vocabulary; the NLU seam made an organ — UNLANDED is a first-class outcome, routed to residue" world: sig: "world(setup) -> fixtures" does: "instantiate a scenario's world; deterministic, seeded" run: sig: "run(runnable, fixtures | live_turn) -> trace" does: "execute one contact; trace = every act, value, utterance, at the bytes" # ── truth group — what happened ───────────────────────────────────────── trace: sig: "store(trace) -> trace_id" does: "immutable trace store, addressable by bundle sha + contact" diff: sig: "diff(trace, bundle) -> delta[]" does: "trace vs claims+derive; each delta cites what it contradicts; empty = survived; uncitable delta -> residue" ledger: sig: "append(contact | delta | mint | sha_transition | hatch | death)" does: "the master record, append-only; the delta stream is the seats' gradient" # ── ratchet group — what accumulates ──────────────────────────────────── scenarios: sig: "hold(bundle) -> scenarios[]" does: "custodian of frozen sets; rejects edits and removals; append via mint only" mint: sig: "mint(delta, setup) -> scenario" does: "red delta becomes a scenario file: setup + diff-class, no stored answer" stamp: sig: "stamp(organs) -> sha" does: "content hash over names+claims+derive+scenarios; identity, nothing else" click: sig: "click(candidate) -> sha | nothing" does: "candidate becomes a sha iff delta = [] across FULL scenarios; else it never was — death by identity, not verdict" # ── search group — how candidates exist ───────────────────────────────── hatch: sig: "hatch(parent_sha, bundle_diff) -> candidate" does: "spawn candidates for seats; populations welcome; lineage recorded" floor: sig: "press(candidates[], scenarios) -> deltas[]" does: "the hot loop: batch replay candidates x scenarios; deterministic, cacheable, parallel" graveyard: sig: "bury(candidate, deltas)" does: "dead candidates kept whole with what killed them — the seats' textbook, append-only" # ── edge group — where OOD enters ─────────────────────────────────────── residue: sig: "queue(contact) -> residue_id" does: "UNLANDED landings and uncitable deltas wait here for conjecture; the import channel of ../03" carriers: contract: "compile(bundle) -> runnable" targets: [slot-prompt] law: "the core is the model wearing the constitution; symbols write, measure, ratchet — never execute" demoted: "engine-IR (his ruling 2026-08-26 10:02: let go of the symbolic engine as the core) — the parked runtime stays parked, genealogy not target" invariants: - "every scenario watched by >=1 claim — coverage, the anti-lobotomy tooth (grown from the first refutation, 2026-08-26)" - "scenarios append-only" - "sha lineage extend-only" - "claims die whole" - "traces immutable" - "graveyard and ledger append-only" - "no organ holds knowledge" - "no organ issues verdicts, scores, or permissions" - "every contact lands in the ledger" - "UNLANDED and uncitable are outcomes, never errors" non_organs: [judge_model, error_code_table, validators, thresholds, skill_loader, precedence_resolver] seats: who: "any coding agent; models are furniture" reads: [ledger, deltas, scenarios, graveyard, residue] writes: "bundle diffs via hatch; conjectures over residue" craft: "transfers as artifacts only — schemas, worked examples, presses; never prose" filesystem: "see filesystem.tree — code (physics/) is frozen and small; every store is files" open: - "land quality is the paradigm's known front (estate's landing seam)" - "live-door residue -> mint at scale, unproven" - "craft ratchet cadence (twin builds expensive)"