The existing rule said evidence.jsonl is an export surface rather than the
direct-write API, which is true but understates the failure. A hand edit does
not fail loudly; it survives until the next add-evidence regenerates the file
from the CultCache evidence document and restores whatever was removed.
An agent compacting the ledger would see a clean result, commit it, and have
it silently undone by the next append. Say so where the rule already lives,
since AGENTS.md is read before anyone reaches the store.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
CultLib owns CultCache, CultNet and CultMesh for every runtime because wire
parity conformance lives only there. Ghostlight's vendor/README.md charters a
locally owned protocol generation, which is duplicate authority over the wire
stack held outside the harness that checks it -- and is why
runtime_authority_contracts.rs forked on whether Present may coexist with a
disagreement.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude Code reads CLAUDE.md, not AGENTS.md, so this repo's doctrine was
invisible to it. This one-line import makes the existing AGENTS.md load
without duplicating or renaming it. Codex is unaffected.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The evidence ledger had drifted from distilled to accumulated at 258 records.
235 were per-release and per-run receipts, self-consuming falsification chains,
and May fixture doctrine already owned by docs/architecture and map
hard_boundaries. They move to state/evidence.archive.jsonl.
evidence.jsonl is a regenerated export, not a writer: _export_evidence rewrites
it from the CultCache evidence document on every append. Compacting the export
alone would resurrect every archived record on the next add-evidence, so the
deletion goes through the store and the export follows.
Twenty-three records remain: the still-binding contracts (CultCache wire
format, agent_state.v0, cognition ceiling, image-geometry authority, sandboxed
coordinator, VoidBot appraisal, multiplayer extension, the Delvehold boundary
set, newspaper-as-Persona) and the whole rebuild era from Run 108 forward. A
multiplayer note recorded twice under different timestamp encodings is reduced
to one.
map.yaml and the handoff carried stale frontiers naming 13d5136 and a0b16b9.
Both now name 6a79cb0 and record what 9256648 and 6a79cb0 landed.
The worktree sheds 87MB of untracked debris: three Git bundles whose commits
are all ancestors of HEAD, ~60 legacy live-fire run scripts and sftp batches,
the forbidden redeploy helpers, downloaded run61-63 acceptance copies whose
authoritative roots remain on Yggdrasil and whose frozen copy stays digest-bound
in output/tex, a redb file created by a stray --help argument, and 71MB of tmp/
legacy campaign caches and newspaper renders. .gitignore now refuses all of it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>