Huginn/docs/eureka-substrate-target.md
Meta Vens 133324a7f7 Eureka substrate target: every subject resolvable, refusals typed, one gap home
Campaign eureka-substrate, the Mind fixes the operator ruled next after
idunn-watchdog. Typed target and rulings live in Eureka's mind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 10:31:23 +02:00

84 lines
4.2 KiB
Markdown

# Eureka substrate: target
Status: target, Self, 2026-10-01. Campaign `eureka-substrate` in Eureka's mind
(instance `eureka`). Its questions, rulings, cut specs, verification and the
substrate gaps themselves are typed documents there. This page keeps the
rationale and the design truths the campaign produces. The cut map's body facts
and model page will live in `eureka-substrate-map.md`.
## Why
The first typed campaign, `idunn-watchdog` (postmortem: Idunn
`docs/watchdog-reporting-postmortem.md`, `6667f0f`), ran its whole pipeline
through Huginn and found the substrate's defects by hitting them. The operator
ruled, 2026-10-01:
> Yep, fixing Mind issues is highest priority, immediately once this campaign
> closes
The defects that cost the most:
- **A finding can be admitted that can never be resolved.** A key's local part
is bounded at 64 bytes as a whole, and only when it is composed
(`epiphany-pipeline` `LOCAL_MAX`). A resolution's local embeds its subject's
local plus `finding.`/`follow_up.` and `.n<seq>`. So a subject whose own key
fits can have no admissible resolution, under any outcome. Six findings in
`idunn-watchdog` are stuck in force this way.
- **A shape refusal arrives labelled `Unavailable`.** Huginn's admission maps
the leaf's key error through `anyhow` into `MindRefusal::Unavailable`. The
skill tells every agent that `Unavailable` means the organ is down: retry
once, then stop. A faithful agent would halt a campaign over a key that was
too long.
- **Substrate gaps have no home every campaign can see.** Follow-ups are
campaign-rooted, so 20 `gap-*` follow-ups sit under `idunn-watchdog`, and a
later campaign's recipe cannot see them.
- **Smaller defects:**
- Revising one spec forced a revision of every spec that named it in
`depends_on`, twice, when the dependency was on a cut.
- A short sha and the full sha of one commit are different values to
admission.
- A finding cannot be deferred to the cut that fixes it, only to a pointer
follow-up.
- The faculty is named Life, but the enum says `MindSteward`.
- Stewardship is universal (operator, 2026-09-30), yet admission demands a
per-repo stewardship record that decides nothing.
The code the live mind runs sits on two long-lived branches: Huginn
`eureka/memory-organ` (release `9dd6d80`), and Epiphany
`codex/eureka-pipeline-state`, where the leaf Huginn pins lives. The operator
ruled that they merge to main first.
## Design truths this campaign produces
- **Every admitted subject stays resolvable.** If admission accepts a document
whose kind can be resolved, every outcome its subject allows can be admitted
for it, up to a stated sequence bound. A grammar that cannot hold a key
refuses the subject at admission, not its resolution later.
- **A refusal names what was wrong.** A document that breaks a shape, bound or
key rule is refused as a typed document refusal. `Unavailable` means only
that the organ could not serve.
- **Stored documents stay valid.** No change in this campaign re-keys,
re-encodes or invalidates a document already in the mind. The epoch stays
`epiphany.pipeline.epoch.v2`. Every change is a widening, an added variant,
or an admission rule that judges new batches only.
- **One home for substrate gaps.** This campaign is the standing home for gaps
in the mind's own substrate. The skill's recipe names its root, and every
campaign reads it.
- **The mind's code comes from main.** The Huginn daemon, the leaf and the
`eureka-state` client the live mind runs are built from commits on Huginn's
and Epiphany's main.
- **The live mind survives its own upgrade.** Each deploy upgrades
`/var/lib/gamecult/huginn/minds/eureka/mind.redb` in place under a release
symlink that can be flipped back. Every document admitted before the upgrade
reads back after it.
## Not this campaign
- **Verify-stopgap gaps** (artifact return, `rg` in the image, sibling repos):
Idunn's verify campaign.
- **CultNet selection** (`gap-citer-faculty-hop`): CultLib.
- **The cold-embed timeout** and **a session-id tool**: recorded follow-ups.
- **Leasing stewardship between agents and `hand_off`**: Huginn Cut 12, parked.
- **Re-encoding stewardship ids into a readable form**, which would re-key
stored documents.
- **Persona-state reading in Huginn.**