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>
470 lines
31 KiB
Markdown
470 lines
31 KiB
Markdown
# 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.
|