Target: prose knowledge made accessible to the mind

Model page per class of prose knowledge, the one earned kind (observation),
voidbot's index as the one retrieval path for prose, sequencing, and the
triage of the census's 49 unmapped items (eureka-body:follow_up:
prose-knowledge-inventory, ruling prose-knowledge-into-mind).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-10-10 05:34:58 +02:00
commit 4d02c50bc2

View file

@ -0,0 +1,470 @@
# Prose knowledge: target
Serves `eureka-body:follow_up:prose-knowledge-inventory` under operator ruling
`eureka-body:ruling:prose-knowledge-into-mind` (2026-10-10). The operator's
words are in the ruling; read them there. Written 2026-10-10 by Imagination
(`imagination-prose-knowledge`, session `self-2026-10-10-eureka`).
Inputs, read this pass:
- Census: `gamecult-ops/docs/research/prose-knowledge-census-2026-10-10.md`
(82 of 2,872 in-scope files opened; cited below as "census §n").
- Prior art: `gamecult-ops/docs/research/agent-knowledge-store-prior-art.md`
(cited as "PA §n" or "PA failure n"; its [V] and [M] tags are carried, and
every [M] claim this target relies on is flagged where it is used).
- The mind's kinds: `~/.claude/skills/eureka/references/campaign-state.md`.
This is a target and a backlog. It is not a migration plan and changes no code.
## 1. Pre-implementation statement
- **Objective.** Rulings, questions, owed work and ideas that live in prose
become findable by any agent of the collective mind, and nothing that decides
a campaign lives in two places.
- **Current mechanism.** The mind holds 13 kinds of typed pipeline documents
(3,344 documents at `whoami` this pass). Everything else is `.md` files in
three places with different reach: committed repo docs, which voidbot indexes
(§4); loose files at `F:\Projects\` root and in worktrees, which nothing
indexes (census §3.1); and Claude Code memory directories, which load only
into sessions whose working directory matches (census §1).
- **Invariants.**
- `one-home`: a ruling, question, owed item or fact lives in exactly one
place. Every other place carries a pointer (a mind id or a path and line),
never a restatement.
- `operator-words-typed`: an operator ruling that steers work is a `ruling`
document carrying the operator's words. Self admits it; no other faculty
admits rulings.
- `prose-is-retrievable`: prose that stays prose is reachable by one search
path that returns the repo, path and line range.
- `no-bulk-extraction`: no unattended extraction pass writes into the mind.
Each item is read, checked against the mind and admitted by a faculty.
- **Intended change.** Ownership becomes simpler: typed kinds own decisions and
owed work; prose owns explanation. Root files and memory files stop being
owners.
- **Cut line.** Root `F:\Projects\*.md` files as a place where knowledge lives;
handoff next-action lists as a store of owed work; memory files as a store of
operator rulings.
- **Subtraction budget.** No new index, store, service or daemon. One new kind
only, the one already owed (`observation`, §2.6). Retrieval reuses voidbot's
existing index; coverage is bought by moving files into indexed repos, not by
indexing more places.
## 2. The model page
One row per class the census found. "Kind" names an existing pipeline kind, a
kind earned under the doctrine's bar (owner, live consumer, invariant, liability
replaced), or "prose, retrievable".
| Class | Identity | Lifecycle | Authority | Home |
|---|---|---|---|---|
| Operator rulings and decisions | `<campaign>:ruling:<label>` | admitted once; superseded, never edited | Self admits; the operator's words in `operator_quote` | `ruling` (exists) |
| Open questions | `<campaign>:question:<label>` | open until a ruling answers it or it is withdrawn | Imagination raises; operator rules | `question` (exists) |
| Follow-ups, TODOs, owed work | `<campaign>:follow_up:<label>` | open until Fixed, Superseded or Withdrawn | Imagination or Self admits; the closer resolves | `follow_up` (exists) |
| Plans and roadmaps | campaign slug | a campaign's target and its cut specs | Self opens; Imagination maps | `campaign`, `target`, `cut_spec` (exist); repo roadmaps without a campaign stay prose |
| Ideas and design sketches | path | edited freely | the repo | prose, retrievable; a `follow_up` points at it once someone directs the work |
| Body facts and probe results | `<campaign>:observation:<label>` (proposed) | admitted with an as-of; superseded by a newer observation | Eyes admits | `observation`, earned (§2.6) |
| Rationale and history | path | postmortems and maps are history once written | the repo | prose, retrievable |
| Reference and how-to | path | maintained with the code it describes | the repo | prose, retrievable |
| Handoffs | path at `F:\Projects\` | one per Self rotation, superseded by the next | Self | a pointer to queries (§2.9); not a kind |
| Memory files | path under `~/.claude/projects/*/memory/` | edited by Life | Life | split four ways (§2.10) |
### 2.1 Operator rulings and decisions
`ruling` fits, including operator directions that answer no question
(`answers: null`, `authority: Operator`). Prose holds rulings in three shapes:
1. **Prose campaigns that finished in prose.** On 2026-09-30 the operator ruled
that campaigns then in flight finish in their prose maps ("how are we going
to move to Huginn mid-campaign? Methinks we don't.",
`~/.claude/projects/F--Projects/memory/eureka-typed-vs-prose-campaigns.md:11-12`).
Their rulings stay in the cut maps (census §4.1 lists the ten largest:
Ghostlight play-agent 65 mentions, CultNet selection 42, fire control 39,
and so on). They are history, and they are retrievable: every one of those
repos is in voidbot's index (census §2). They are not migrated. That
operator ruling is itself only in memory; it is in the list for Self (§6).
2. **Rulings restated in prose beside a typed campaign.** Examples:
`Aetheria/docs/aetheria-release-map.md` names rulings by label in "Demo
scope", and `eureka-site/BRIEF.md:12` lists operator rulings. Where the prose
cites a ruling id it is a pointer and conforms to `one-home`. Where it
restates the ruling's substance without an id, it is a second copy.
3. **Rulings only in memory files or loose doc heads** (census §4.1). These go
to Self to admit with the operator's words (§6). Once a ruling is typed, the
memory file keeps its "how to apply" text and cites the id instead of
restating the ruling. `aetheria-ship-the-game.md:9` already does this.
### 2.2 Open questions
`question` fits when the question is a real fork in a campaign. Prose "Open
questions" sections come in two kinds that look alike:
- **Forks** (an operator choice with options): Asura Q10
(`Asura/docs/cut-map.md:1671`), Fensalir Q-F1
(`Fensalir/docs/planet-work-assimilation.md:392`), Hermodr
(`Odin/docs/hermodr-extraction-plan.md:296`). In a campaign's repo they are
admitted as questions. In a repo with no campaign they wait in prose until a
campaign exists (§5, question `prose-campaign-coverage`).
- **Inquiry** (research questions with no decision attached):
`Ghostlight/docs/research/things-to-steal.md:323`, the `Mimir/research/*`
"Open Questions" sections, the prior-art "Gaps" sections. These stay prose.
A question with no options and no decider is not the `question` kind.
### 2.3 Follow-ups, TODOs, owed work
`follow_up` fits. The prose shapes are postmortem "Open follow-ups" tables,
handoff next-action lists, runbook "follow-up" lines and Soul or Eyes passes
that say "Self admits these" (census §4.3). This is the TODO-list anti-pattern:
owed work in a list no tracker reads and no one closes. The documented
practice is to harvest it into the tracker and replace the text with a
reference (PA §5, [M]: todo-to-issue harvesters; Beads replacing markdown plan
files, [M]). Here the tracker is the mind. §7 is the first harvest.
A postmortem written after this target lists its open follow-ups by id and
does not describe them again. Eureka's `references/postmortem-template.md`
should say so. That is an edit to the Eureka skill, and it rides with
`cut-skill-huginn-cli` or the next skill cut.
### 2.4 Plans and roadmaps
No `plan` kind is earned. A plan with an owner is a campaign: its target holds
the invariants, its cut specs hold the steps, and its prose map holds rationale.
That is already the rule (`campaign-state.md`, "The prose map"). Roadmaps in
repos with no campaign (`Mimir/docs/implementation-plan.md:440`,
`Fensalir/docs/perfect-fensalir-machine-roadmap.md:512`,
`StreamPixels/docs/implementation-plan.md:110` and others, census §4.4) stay
prose and retrievable until a campaign opens. Their next steps then become cut
specs or follow-ups.
`state/map.yaml` and `state/evidence.jsonl` (in 15 and 11 repos; census §4.9)
are Epiphany-era repo state. They are not migrated. They are history, and
`ghostlight-play-agent-postmortem.md:226` records that one of them is not even
parseable YAML.
### 2.5 Ideas and design sketches
These stay prose, retrievable, with no `idea` kind. The bar fails on owner and
consumer. An idea nobody has directed has no owner who would close it and no
consumer who reads it on a schedule. A typed list of ideas would be the
free-text memory block with no status, owner or supersession (PA failure 17,
[M]) with a schema on top. Explanation is the Diataxis kind that holds
rationale and ideas (PA §5, [M]).
An idea crosses into the mind when someone directs work on it. That happens in
one of three ways: the operator says so (`Aetheria/docs/faction-territory-target.md:20-30`,
"slot it in right after fire control"), a campaign's map adopts it, or a ruling
points at it. Then a `follow_up` cites the doc by path and line, and the doc
stays the idea's home.
### 2.6 Body facts and probe results: `observation`, earned
The open follow-up `eureka-body:follow_up:eyes-observation-kind` (operator
2026-10-01: "Shouldn't eyes have write access to typed memory for its
findings?") already proposes this kind. This target confirms it meets the bar
and narrows it:
- **Owner.** `huginn-mind` admission. The leaf now lives in Huginn
(`leaf-into-huginn` landed; verdict `cut-leaf-into-huginn.s2` exists).
- **Admitted by.** Eyes. Today no kind can hold an Eyes report: `finding`
needs a Soul verdict and `follow_up` needs owed work.
- **Shape.** claim (`Line`), scope (repo, path or host), as-of (commit or UTC
time), evidence (`Evidence[]`, the type findings already use), supersedes
(an observation ref), and an optional `DocRef` to the committed report for
anything longer than a `Para`.
- **Live consumers.** Imagination and Soul already cite Eyes facts. Cut specs
cite them by `DocRef` today, which requires the report to be committed in a
repo (`campaign-state.md`, prose map: "Body facts").
- **Invariant.** A fact carries the time it was true and is superseded rather
than edited. This is the bi-temporal invalidation in Zep/Graphiti, where an
older fact is marked invalid and kept, not deleted (PA §2, [V]). It is also
the supersession rule the mind already applies to rulings.
- **Liability replaced.** The stand-in Eyes files at `F:\Projects\` root:
`EYES-*.md`, 17 `aetheria-*` files plus 10 `aetheria-map-addenda-*`, 9
`eureka-*` and others (census §4.6). None of them is version-controlled or
indexed (census §3.1).
The follow-up's owner field still names "cut leaf-into-huginn", which has
landed without the kind. Self should re-own it: an eureka-body Imagination cut
in Huginn, after `huginn-cli` lands so the kind is added once, behind the new
door.
What can happen now, before the kind exists: Eyes writes its reports into the
owning repo's `docs/research/` (or `gamecult-ops/docs/research/` when no repo
owns the topic) and commits them there, never at `F:\Projects\` root. That
alone makes them retrievable (§4). Follow-up `prose-root-files-into-repos`
moves the existing root files.
### 2.7 Rationale and history
These stay prose, retrievable: campaign map Rationale sections, postmortems,
incident logs, superseded cut maps. Retirement uses the supersession rule of
ADRs, PEPs and RFCs: the old document keeps its text and gains a pointer to its
successor (PA §6, [M]). Where a superseded doc would mislead (for example
`Epiphany/notes/fresh-workspace-handoff.md`, "paused", census §5), the fix is a
one-line status header naming the successor, not a rewrite.
Duplicates are the retrieval hazard here. A search over several copies returns
old and new versions together unless the index can filter them (PA failure 18,
[M]). The census found six large cut documents duplicated between
`Epiphany/notes/` and `Huginn/docs/history/`, and `.voidbot/birth/` copies in
CultLib and Fensalir (census §4.6). Follow-up `indexed-duplicate-copies` owns
this.
### 2.8 Reference and how-to
These stay prose: runbooks, READMEs, AGENTS.md, contracts, prompts. Reference
is the one prose kind that tracks code mechanically (Diataxis, PA §5, [M]). It
stays correct only where a generator or test checks it (PA §6, [M]: generated
docs plus a CI diff check). Nothing in this target adds such checks; they
belong to each repo's own campaign.
### 2.9 Handoffs
No kind. The `hand_off` kind exists, but it records a stewardship transfer
between minds (parked, Cut 12), and a Self rotation is not that. A rotation
handoff should hold only what the mind cannot answer:
- the area and the campaigns this Self owns;
- the session label convention;
- pointers to the recipes to run at re-entry.
Owed work goes into the mind before rotation, as follow-ups. Memory
`handoff-is-a-pointer.md` already says to query the mind rather than trust a
handoff's lists. The 2026-10-10 handoff still carries a "Host loose ends"
section and cast-art plans that were in no document (§7 admits them).
When `run-kind` lands (`epiphany.pipeline.run.v2`, eureka-substrate), "who is
working on what" becomes derivable from runs, and the handoff shrinks again.
### 2.10 Memory files
Memory files (100 of them, census §1) hold four different things, and each has
a different home:
| Content | Example | Home |
|---|---|---|
| Operator rulings | `foss-games-monetization.md`, `cultcache-stores-outside-assets.md` | `ruling`, admitted by Self (§6); the memory keeps a pointer and its how-to-apply text |
| Operator context, relationship, lessons and scars that steer judgment | `operator-rapport.md`, `probe-process-spawning.md` | Eureka's Persona state (`gamecult.persona_state.v0` in Huginn) once `cut-huginn-persona-state.r3` lands. The standard puts "hard-won operating lessons, rakes stepped on, relationship context" there (`gamecult-ops/docs/persona-state-standard.md:22-25`) |
| Reference facts about the body | `cultlib-ci-harness.md`, `mcp-server-registration.md` | the owning repo's docs or runbooks (prose, retrievable); the memory keeps a pointer |
| Cross-project pointers and the index | `MEMORY.md` | stays, as Claude Code's harness loads it |
The second row hides a fork. Claude Code auto-loads `MEMORY.md`. Huginn's
Persona state is loaded by nothing in a Claude Code session. If both hold
lessons, they are two copies. The question `memory-persona-projection` (§8)
puts the options. The recommendation is that Persona state is canonical and the
memory index becomes a generated projection, marked `provenance.authority:
projection` as the cut spec already requires of file copies. That follows the
generated-file pattern (PA §6, [M]) and must wait for the persona-state cut.
## 3. Keeping prose and typed state from becoming second copies
**The rule.** When a class is typed, the prose item becomes a pointer: the
mind id, plus at most a one-line gloss. The prose is never deleted when it
holds rationale, and never left restating the decision. This is the
single-source rule as ADR, PEP and RFC indexes practise it: one record, other
places link to it (PA §6, [M]).
**Retirement order.** First admit, then repoint the prose in the same session,
citing the admission receipt. A prose item that is done (§7 found several:
items 4, 14, 33, 39) gets nothing new. It is left as history, with a status
line if it would mislead a reader.
**Who enforces it, and how.**
- **Life** owns memory files and the doctrine surfaces. At phase boundaries it
checks that memory rulings it finds are typed, and repoints them.
- **Soul**, when a cut touches a campaign's prose map, checks it against
`campaign-state.md`'s existing rule ("no progress section, no rulings and no
ledger").
- **No regex tribunal.** Whether a paragraph restates a ruling is a question of
meaning. Published drift detectors reach 72% accuracy or 0.72 precision with
0.48 recall, and their benchmarks contain mislabelled data (PA §6 and
failure 21, [V]). Detection is therefore advisory: an agent reads, proposes,
and a faculty confirms. This is the propose-then-confirm pattern of published
tooling (PA §4, [M]).
**Why no bulk extraction.** Single-prompt extraction over a long document
under-extracts, recovering one or two decisions from an hour of discussion
(PA §4, [V]). Extraction has two silent failures, omission and invention
(PA failure 13, [V]). Constrained decoding guarantees shape, not truth (PA
failure 14, [M]). LLM-driven memory updates overwrite without review (PA
failure 16). So each item is triaged by an agent that reads the cited section,
checks the mind by semantic query (dedupe), checks the file still says it
(staleness), and admits with `locations` citing file and line. §7 is that
procedure run once over the census list.
## 4. Retrieval for prose that stays prose
**One path: voidbot's existing source index. No second index.**
What voidbot is, verified this pass:
- The service is `voidbot-retrieval.service` on Yggdrasil. Its MCP container
serves streamable HTTP on `127.0.0.1:17875/mcp`, with the tool allowlist
`list_indexed_repos, search_history, get_message_context, search_sources,
get_source_context, get_exact_source_document`
(`gamecult-ops/compose/voidbot-retrieval.yggdrasil.yaml:11-27`).
- `search_sources` takes `query`, `limit`, `repoName`, `pathPrefix` and
`language` (`VoidBot/apps/worker/src/mcp-server-shared.ts:93-99`). It
returns `repoName`, `path`, `chunkIndex`, `lineStart`, `lineEnd` and
`lastModifiedAt` for each hit (`mcp-server-shared.ts:309-321`), so an answer
can cite a path and line range. It returns no commit.
- `voidbot-source-refresh.timer` runs hourly. It mirrors the **public GameCult
GitHub catalog** into `/srv/voidbot/source-repos` and re-embeds changed
chunks (`gamecult-ops/runbooks/voidbot-retrieval-recovery-yggdrasil.md:109-121`;
the catalog URL is `scripts/refresh-voidbot-sources.sh:82`).
- Collection `voidbot_repository_source_chunks` lives in Qdrant on
`127.0.0.1:6333`. Huginn's own index uses the same Qdrant and the same
embedder and model, `qwen3-embedding:0.6b` on Raven
(`gamecult-ops/runbooks/huginn-yggdrasil.md:18-27`). The two indexes already
share their substrate. They differ in what they hold: Huginn indexes only
typed documents' named fields (`Huginn/crates/huginn-mind/src/index.rs:42`).
Who can reach it:
- On Starfire, sessions reach it through the Yggdrasil tunnel
(`gamecult-ops/scripts/start-yggdrasil-tunnel.ps1:23`,
`runbooks/yggdrasil-ssh-tunnel.md:88`). It is registered in
`~/.claude.json` as the `voidbot` HTTP MCP server.
- On Yggdrasil, a Self-run unit or the Huginn daemon reaches it on loopback.
What it does not reach, and the fix for each:
| Not indexed | Why | Fix |
|---|---|---|
| `F:\Projects\` root files (56) and non-git dirs | not in any repo | move them into the owning repo's docs and commit (`prose-root-files-into-repos`) |
| memory dirs | outside repos | the §2.10 split: rulings to the mind, reference to repo docs |
| worktrees | duplicates of indexed repos | nothing; excluding them is correct |
| private or forge-only repos, and repos missing from the catalog (`Aetheria-legacy`, `Blueberrichu`) | the catalog is public GitHub only | out of scope until a repo with live work is affected |
Rejected: a second prose index in Huginn. It would duplicate an hourly-refreshed
index over the same Qdrant and embedder, and give the corpus two owners.
Graph and tree indexes (GraphRAG, RAPTOR) were also rejected. They cost an LLM
pass over the corpus at index time and an update strategy on every change (PA
failure 11, [M]), and their reported gains fall under independent audit (PA
failure 10, [V]). Plain retrieval with citations is the baseline this corpus
needs. Letta's report that a filesystem plus grep competes with specialised
memory (PA §2, [M]) points the same way.
Two gaps in the path itself:
- **No commit in the hit.** A `DocRef` needs a commit. The fix is VoidBot's
own: add the indexed commit to the source metadata (follow-up
`voidbot-hit-commit`).
- **Which door.** The operator's direction to replace MCP with plain CLIs is
recorded against eureka-state (`eureka-substrate:follow_up:huginn-cli-replaces-mcp`).
Whether voidbot's door follows is a separate fork, put in question
`prose-retrieval-door` (§8). The recommendation is to keep voidbot's door
now; if it changes, the CLI is VoidBot's own and Huginn never proxies it.
## 5. Sequencing
| Now, with existing kinds | Waits on |
|---|---|
| §7 triage: follow-ups and a question admitted under owning campaigns | none |
| §6: Self admits the memory-only rulings with the operator's words | none |
| Eyes reports committed in repos, not at `F:\Projects\` root; root files moved (`prose-root-files-into-repos`) | none |
| Handoffs as pointers; loose ends admitted before rotation | none |
| Postmortem template lists follow-ups by id | rides the next Eureka skill cut (`cut-skill-huginn-cli`) |
| `observation` kind; then the root Eyes facts are admitted | `cut-huginn-cli` (one door to add the kind behind), then an eureka-body Imagination cut re-owning `eyes-observation-kind` |
| Memory lessons and rapport into Eureka's Persona state | `cut-huginn-persona-state.r3`, then question `memory-persona-projection` |
| Work in repos with no campaign (Kalsa, Fensalir, Mimir, AquaSynth, Odin, Muninn, StreamPixels and others) | question `prose-campaign-coverage`; a campaign spanning existing campaigns' repos waits on `eureka-body:follow_up:body-campaign-repos` (campaigns cannot gain repos) |
| Handoff lists derived from runs | `run-kind` (eureka-substrate) |
| `DocRef` from a voidbot hit | `voidbot-hit-commit` |
## 6. Rulings found only in prose or memory: for Self to admit
Self admits these with the operator's words. Imagination does not type rulings.
Each was checked against the mind by semantic query this pass; "near" names
the nearest typed ruling, which does not carry the same decision.
| Ruling (paraphrase) | Operator's words at | In the mind? |
|---|---|---|
| FOSS games are monetized as games-as-a-service, microtransactions included; the fork is the check | `~/.claude/projects/F--Projects/memory/foss-games-monetization.md:11-14` (the decision is stated in the memory's voice; the correction is narrated at `:21-22`; no verbatim quote) | no; near `eureka-body:ruling:always-open-source` |
| CultCache stores never live under Unity `Assets/`; no Unity serialization for game data | `F--Projects/memory/cultcache-stores-outside-assets.md:10` (verbatim, 2026-09-14), plus the Studio goal at `:19` | no; near `aetheria-release:ruling:ship-data-all-in-cc` |
| Spotiverse and Stonks are wanted small daemons, not corpses | `F--Projects/memory/wanted-small-daemons.md:11-18` (2026-09-06; partly quoted: "a real simple CultMesh bridge") | no |
| Having no consumer does not make code dead: park it with a tag and a restore note | `F--Projects/memory/parked-not-dead.md:11-14`, intent quote `:23` (2026-09-13) | only per instance: `ghostlight-verse:ruling:park-pre-rebuild-tree` |
| The operator's original CultCache.cs is the style bar | `F--Projects/memory/original-cultcache-style-bar.md:10` (verbatim, 2026-09-13) | not checked by query; no near ruling surfaced in the CultCache queries |
| Not going back to Codex/OpenAI as inference supplier, for alignment reasons | `F--Projects/memory/codex-retirement.md:20-23` (verbatim, 2026-09-05) | no; near `eureka-body:ruling:connector-owner` |
| AetheriaEve is preserved for taxidermy | `F--Projects/memory/aetheriaeve-taxidermy.md:10` (verbatim, 2026-09-13) | covered in substance by `variants:ruling:aetheriaeve-not-consumer` (2026-09-30); Self decides whether the quote is worth a ruling |
| Aetheria mods are compiled plugins; no scripting runtime or DSL for modders | `F--Projects-Aetheria/memory/aetheria-mods-are-compiled.md:16-18` (verbatim, 2026-10-03) | no; near `aetheria-release:ruling:modders-share-our-editor` |
| Aetheria's release bar: more ships and gear, UX polish and audio feedback before announcing | `F--Projects-Aetheria/memory/aetheria-release-bar.md:9-11` (verbatim, 2026-10-02) | no |
| The built-in pipeline is chosen; owning shaders is the point | `F--Projects-Aetheria/memory/built-in-pipeline-owned-shaders.md:10` (verbatim, 2026-10-10) | in substance `aetheria-release:ruling:shaders-own-every-pixel` (2026-10-03); the 2026-10-10 words add the reason |
| Campaigns in flight on 2026-09-30 finish in their prose maps | `F--Projects/memory/eureka-typed-vs-prose-campaigns.md:11-12` (verbatim) | no |
| Embedding moves off Nightwing because its availability "is more sporadic nowadays" | `F--Projects/memory/nightwing-embedding-migration-2026-09-26.md:12-16` | not checked |
| Faction territory: "slot it in right after fire control" | `Aetheria/docs/faction-territory-target.md:20-30` (2026-09-19) | no; the follow-up in §7 points at it |
| Negent weapons concept direction | `Aetheria/docs/negent-weapons-concept.md` head (2026-09-18) | no; the follow-up in §7 points at it |
| Asura: rulings on the cut map's questions | `Asura/docs/target.md:150` (2026-09-25) | the prose-campaign rule applies (§2.1); not migrated |
## 7. Triage of the census list (census §6)
Each item was checked in two ways. The file was read at the cited line on the
working tree (Ghostlight on `origin/main`, because local checkouts lag). The
mind was searched by semantic query. Admitted ids are under the campaign named.
"Stays" means no document was admitted, and why.
| # | Item | Result |
|---|---|---|
| 1 | Heimdall secrets exposed; rotate and move to `secret_files` | admitted `eureka-body:follow_up:heimdall-binding-secrets` |
| 2 | Backups unencrypted; key owner | admitted `eureka-body:follow_up:state-backup-encryption` (the weekly tier landed, `3d091c5`; encryption is still open, runbook `gamecult-state-backup.md:103`) |
| 3 | Raven reboot test, ESP, `reagentc`, inventory entry | admitted `eureka-body:follow_up:raven-reboot-esp-inventory` |
| 4 | Stale Raven LAN IP in inventory | done: `inventory.md:56-59` carries the 2026-09-09 IP and marks the old one superseded |
| 5 | Brush-tree campaign | no campaign repo (Brokkr, GameCult.Geometry.Csg); a proposal card exists; in question `prose-campaign-coverage` |
| 6 | Cast art: Flux portraits, shortlist | admitted `site-masthead:follow_up:cast-art-flux-portraits` |
| 7 | Faction territory generative names | admitted `aetheria-release:follow_up:faction-territory-target` |
| 8 | Negent weapons concept | admitted `aetheria-release:follow_up:negent-weapons-concept` |
| 9 | Content batch one §9 forks | admitted `aetheria-release:follow_up:content-batch-one-reconcile` (F1 resolved in the doc; the doc predates the demo rulings) |
| 10 | Asura Q10 switch probabilities | admitted question `asura:question:q10-eroded-aeolian-rate` |
| 11 | Asura dual contouring | stays: a deferred design in the target, rationale |
| 12 | Asura 4b-ii remaining terms | admitted `asura:follow_up:terrain-4b-ii-remaining-terms` |
| 13 | CultMath tape open items | admitted `cultmath-tapes:follow_up:tape-unpark-open-items` |
| 14 | Variants open forks | done: ruled in prose, `CultLib/docs/document-variants-cut.md:77-100` (2026-09-17 and 09-29) |
| 15 | TS schema id literal vs C# fingerprint | superseded by `variants:ruling:wire-id-is-version` and `variants:follow_up:wire-id-cuts` |
| 16 | Mutation testing scope | admitted `cultlib-gaps:follow_up:mutation-testing-scope` |
| 17 | CultNet distributed database next slice | admitted `cultlib-gaps:follow_up:cultnet-distdb-next-slice` (related: `variants:follow_up:golden-path-write-api`) |
| 18 | Muninn has two bodies | no campaign repo; in question `prose-campaign-coverage` |
| 19 | Muninn records out of `odin-core` | no campaign repo; same question |
| 20 | Hermodr extraction and its operator questions | no campaign repo; same question |
| 21 | Mimir next | no campaign repo; same question |
| 22 | Eve remaining work | admitted `thing:follow_up:eve-roadmap-remaining-work` |
| 23 | Heimdall gaps | no campaign repo; same question |
| 24 | Gjallar next questions | no campaign repo; same question |
| 25 | Fensalir Q-F1 | no campaign repo; same question |
| 26 | AquaSynth next pull | no campaign repo; same question |
| 27 | StreamPixels M1 | no campaign repo; same question |
| 28 | Ghostlight play-agent postmortem open follow-ups | admitted `ghostlight-verse:follow_up:play-agent-postmortem-open-items` |
| 29 | Ghostlight stock lenses L1.f1, f13, f14 | admitted `ghostlight-verse:follow_up:stock-lenses-open-items` |
| 30 | Ghostlight multiplayer social policy | stays: `ghostlight-dungeon-multiplayer-intention.md` is gone from `origin/main` (parked by `ghostlight-verse:ruling:park-pre-rebuild-tree`) |
| 31 | Ghostlight research questions | stays: inquiry, not a fork (§2.2) |
| 32 | Soul pass owed, 13 survivors | typed: `ghostlight-verse:follow_up:owed-soul-unpinned-survivors` |
| 33 | Aetheria design review | done: swept by `aetheria-release:follow_up:release-target-is-a-demo` (Fixed, `228f241e`) and `vault-docs-sweep` |
| 34 | Merge checklist open questions | Locomotion Q4 is answered by `aetheria-release:ruling:facing-separate-from-aim`; the rest is admitted as `aetheria-release:follow_up:merge-checklist-residue` |
| 35 | Vault Cleanup Q-08..Q-15 | admitted `aetheria-release:follow_up:vault-cleanup-accepted-queue` |
| 36 | Kalsa deepening queue | no campaign repo; in question `prose-campaign-coverage` |
| 37 | Zyphos next action | no campaign repo; same question |
| 38 | weksa roadmap | no campaign repo; same question (see also `eureka-body:follow_up:weksa-mind`) |
| 39 | Eureka brief lessons | done: all six landed in `references/briefs.md` (`:113`, `:369`, `:401`, `:409`, `:81`) and `SKILL.md:658` |
| 40 | Doctrine de-shout and publish scrub | de-shout landed (Eureka `352165d`); the scrub's application was not checked; both rulings are typed (`doctrine-explains-not-shouts`, `doctrine-publish-scrub`) |
| 41 | Idunn watchdog open findings | stays: the postmortem restates mind documents |
| 42 | Substrate leftovers on Yggdrasil | admitted `eureka-substrate:follow_up:huginn-107552dc-leftovers` |
| 43 | Bifrost first vertical slice | admitted `eureka-body:follow_up:bifrost-context-next-target` |
| 44 | Pomba Branca off Wix | no campaign repo; in question `prose-campaign-coverage` |
| 45 | Notaris brief questions | stays: questions for an outside notary, not forks in the mind |
| 46 | Prior-art gaps sections | stays: Eyes gaps; `observation` will hold them (§2.6) |
| 47 | Repixelizer hygiene | no campaign repo; in question `prose-campaign-coverage` |
| 48 | Spotiverse and Stonks | the ruling is in §6; the work is in question `prose-campaign-coverage` |
| 49 | Memory-only rulings | §6, for Self |
Added from this target's own mechanism, with the source set to the follow-up:
`eureka-body:follow_up:prose-root-files-into-repos`,
`eureka-body:follow_up:indexed-duplicate-copies` and
`eureka-body:follow_up:voidbot-hit-commit`.
## 8. Questions raised
- `eureka-body:question:prose-campaign-coverage`: which repos with no campaign
get one.
- `eureka-body:question:memory-persona-projection`: Persona state or
`MEMORY.md` as the home of lessons.
- `eureka-body:question:prose-retrieval-door`: whether voidbot's MCP door
changes.
Each carries options and a recommendation in the mind.