One call carries one HuginnMindRequest to a daemon over CultNet RUDP on the operation connection and returns the mind's own HuginnMindResponse. Each call is its own session and nothing survives it. A Deferred answer is fetched on that session through cultnet-rs's fetch_content, capped at huginn-mind's MAX_DEFERRED_BODY_BYTES, and decoded, so a caller never sees the deferral. Refusals are answers. ClientError::Unavailable is the only error and names the endpoint. The client opens no store and admits nothing. Tests run a real daemon in-process on a loopback port over a temporary mind, plus scripted servers for the failures a daemon cannot be made to produce. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
59 lines
2.6 KiB
Markdown
59 lines
2.6 KiB
Markdown
# 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`, and
|
|
`eureka-state` under `crates/`. Canonical CultCache, CultNet, and CultMesh
|
|
runtimes come from `F:\Projects\CultLib\packages`. `huginn-mind` is live:
|
|
it persists, admits and reads back an instance's mind, queries and derived
|
|
status included, over `cultcache-rs` and `epiphany-pipeline` pinned by git
|
|
rev. `huginn-daemon` serves one mind over CultNet RUDP through `cultnet-rs`
|
|
at the same rev, and reaches the leaf and the store type through
|
|
`huginn-mind` so one crate pins each revision. `eureka-state` is the client
|
|
core: one call to a daemon over CultNet, holding no state.
|
|
- Owned: an instance's memory documents, their admission and the read side
|
|
that derives their status, in `huginn-mind`,
|
|
over a redb CultCache store at `<state_root>/minds/<instance>/mind.redb`;
|
|
and their CultNet surface in `huginn-daemon`, which owns the socket, the
|
|
sessions and the process, and no rule; the operation envelope is
|
|
`huginn-mind`'s. The two wire
|
|
schemas are published from `schemas/cultnet/`. There is no index yet.
|
|
- 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 `.cc` inspection, 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.md` owns
|
|
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
|
|
|
|
```powershell
|
|
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.
|