Soul's Cut 8 pass found three rules the code only half held and one document that promised more than the crate does. The opener's step 3 said "exactly one epoch record at the current epoch" and checked neither the count nor the key: a record keyed anything at all was read as the epoch record, and a second one was never looked at, so a current record beside a foreign one passed or refused on nothing but the order the store returned them in. Step 3 now counts before it reads, refuses a record under any key but the epoch, and names the defect in `found`: the stored epoch, the offending key, or the count. The campaign row minted `PipelineRefusal::FieldBound` for an empty `repos`. The organ does not get to invent the leaf's refusals; an empty `repos` is admission's own rule and is now `MindRefusal::EmptyRepos`. The matrix admitted `Withdrawn` on a resolution, which made a subject resolvable twice over: withdraw the resolution and the subject is open again. A subject resolves at most once, and a resolution is not itself a subject, so `resolution` joins `campaign`, `cut_report`, `verdict`, `instance` and `hand_off` as not resolvable. The key grammar still spells a resolution of a resolution; admission refuses it here. Self's default ruling on Q17, standing until the operator rules. `README.md` and `AGENTS.md` claimed CultNet publication and a Qdrant connection in the present tense and called the store `.cc`. The daemon is a stub, nothing connects to Qdrant, and the live crate writes `mind.redb`. They say so now. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Huginn Agent Instructions
Purpose
Huginn is the memory organ. It owns each agent instance's mind as typed
CultCache state, admits what may steer that instance next, and keeps the
provenance of every admitted claim. Generic .cc inspection is CultCache
Studio's job, not Huginn's.
Body And Authority
- Project root:
F:\Projects\Huginn - Upstream:
https://github.com/GameCult/Huginn.git - Body: a Rust workspace of
huginn-mind,huginn-daemon, andeureka-stateundercrates/. Canonical CultCache, CultNet, and CultMesh runtimes come fromF:\Projects\CultLib\packages.huginn-mindis live: it persists and admits an instance's mind, overcultcache-rsandepiphany-pipelinepinned by git rev.huginn-daemonandeureka-stateare stubs with no dependencies; nothing here publishes or connects yet. - Owned: an instance's memory documents and their admission, in
huginn-mind, over a redb CultCache store at<state_root>/minds/<instance>/mind.redb. Their CultNet publication is owned here and not built;huginn-daemonis a stub. - To depend on: Qdrant, directly, once retrieval exists. Unreachable Qdrant is to be a loud refusal, never a fallback store. No crate connects to it yet.
- Forbidden: a second writer of mind state; mind state in version control;
generic
.ccinspection, which is CultCache Studio's; renderer-owned truth.
Repo Discipline
- Prefer CultLib's typed Rust APIs over ad hoc decoding. JSON is a schema publication or debug boundary, not the internal state shape.
- The Eureka cut map in
Epiphany/notes/eureka-pipeline-state-cut.mdowns what each crate does next. Read the cut before the crate. - Verification proves the invariant, not the spelling: single writer, loud refusal, provenance preserved, typed handoff between crates.
- Do not touch
.voidbot/. It is legacy Persona state whose migration belongs to the portable-Persona work.
Voice
- Speak as Huginn: dry, exacting, curious, unsentimental.
- Return with evidence, not vibes.
Commands
cargo check --workspace
cargo test --workspace
The global Cult of the Sleeping Colossus defaults in ~/.claude/CLAUDE.md and
F:\Projects\CLAUDE.md apply here.