diff --git a/README.md b/README.md index 92640f4..96d043c 100644 --- a/README.md +++ b/README.md @@ -96,8 +96,7 @@ admission. The committed prose keeps only body facts, the model page and rationale. The skill needs the `huginn` CLI on PATH, with `EUREKA_INSTANCE` and -`HUGINN_ENDPOINT` in the environment, and a reachable daemon. A client without a -shell may use the `eureka-state` MCP until a native `huginn` is installed there. Without one, +`HUGINN_ENDPOINT` in the environment, and a reachable daemon. Without one, the pipeline stops rather than keeping state anywhere else. Maps and postmortems are public artifacts from the first cut, with the scars diff --git a/SKILL.md b/SKILL.md index e90ed31..dc532c9 100644 --- a/SKILL.md +++ b/SKILL.md @@ -107,9 +107,7 @@ specialized for their task." - **Check that `huginn` runs in this session** (`huginn --version`; on Yggdrasil it is `/opt/gamecult/huginn/current/huginn`, and `EUREKA_INSTANCE` and `HUGINN_ENDPOINT` name the mind). If it is absent, stop and tell the - operator. Never fall back to prose. A client without a shell (such as the - operator's Windows desktop session) may use the `eureka-state` MCP until a - native `huginn` is installed there. + operator. Never fall back to prose. - **Run `huginn whoami`.** If it does not answer, follow "When the organ does not answer" in `references/campaign-state.md`: one retry, then stop. Pick a session label and give it in every brief; it attributes every admission. diff --git a/doctrine/gamecult.md b/doctrine/gamecult.md index 8172ad7..6f8ddd1 100644 --- a/doctrine/gamecult.md +++ b/doctrine/gamecult.md @@ -80,7 +80,7 @@ Odin-class architecture doctrine: ## Persona State Standard -Persona state uses `gamecult.persona_state.v0`. Huginn holds each Mind's canonical Persona state; Persona turns read it with `persona_get`, and the eureka-state MCP's `persona_put` is the shell-side writer until the `huginn` CLI has a persona verb (`eureka-body:ruling:cli-over-mcp-agent-surface`); VoidBot keeps only its projection and repo Personas until it is retired (`eureka-body:follow_up:voidbot-retirement`). Read `F:\Projects\gamecult-ops\docs\persona-state-standard.md` before any Persona-state work. +Persona state uses `gamecult.persona_state.v0`. Huginn holds each Mind's canonical Persona state; Persona turns read it through HuginnClient, and `huginn persona get|put` is the shell-side door; VoidBot keeps only its projection and repo Personas until it is retired (`eureka-body:follow_up:voidbot-retirement`). Read `F:\Projects\gamecult-ops\docs\persona-state-standard.md` before any Persona-state work. diff --git a/references/briefs.md b/references/briefs.md index 19d83da..51f5a2e 100644 --- a/references/briefs.md +++ b/references/briefs.md @@ -61,9 +61,9 @@ TooLarge are the same: fix the call (or narrow it) and retry. Retrying an admit is safe (AlreadyAdmitted). Unavailable after one retry, any other isError, or the mind going away mid-pass: stop where you are and report the step; never send your record as prose. -A denial headed "This is a deliberate hold" is the near-neighbour check, not a -refusal: read the listed records; if none is the same decision send the identical -call again, otherwise revise the batch. +Exit 6 Held is the near-neighbour check, not a refusal: it lists the neighbours +and a `--seen `. Read them; rerun with `--seen ` only if none is +the same decision, otherwise revise the batch. ``` ## Self: open a campaign, rule, triage @@ -200,8 +200,9 @@ The cut_spec's fields are the spec standard. Beyond filling them: - file_changes are Hands' context pack. Each range is exact at base and is the window Hands needs for that change, at most 100 lines (split a longer site). A new file goes in adds, never as a line-1 anchor. Write no prose about lines - moving. After admitting, run `py -3 tools/context-pack.py `: every anchor must read SAME and each window must show what its + moving. After admitting, save the spec with `huginn view --raw > + /spec.json` and run `py -3 tools/context-pack.py + /spec.json `: every anchor must read SAME and each window must show what its change names, or admit a revision. - code Hands must see but not change goes in `reads` (path and line range at base, at most 100 lines, a `why` of at most 200 bytes, at most 16 per spec), @@ -250,8 +251,8 @@ ends there: report the question id and its receipt, and admit no cut_report Repo/branch: at HEAD . Check that git status is clean first. Pinned siblings: . Do not change them. -Before any grep or Read, expand the pack: `py -3 tools/context-pack.py `. An anchor that reads NEW for a path the spec does not create, +Before any grep or Read, expand the pack: `huginn view --raw > /spec.json`, +then `py -3 tools/context-pack.py /spec.json `. An anchor that reads NEW for a path the spec does not create, OUT_OF_RANGE, UNRESOLVED, a MISSING read, SYMBOL_MISSING, or GONE outside deletes is a spec discrepancy: record it in deviations. The pack lists the callers of every symbol; grep beyond them only for what the pack names as cut. @@ -341,12 +342,12 @@ one head (SKILL.md, step 3); keep it fitting: the final sweep will not. One job carries the build, the scoped tests and the mutation run, so the queue and the compile are paid once. - **Orient in one script.** One Bash call prints git status, the base and the - pack (`tools/context-pack.py`). Independent + pack (`tools/context-pack.py` on the saved spec file). Independent reads, views and greps go in one parallel message. - **Bound every observation.** No command prints more than about 150 lines. Logs go to a file; read `tail -n 60` or `grep -n -m`, and read windows of a file, never the whole of anything over about 300 lines. After editing, - `py -3 tools/context-pack.py --since /spec.json --since ` reprints only the changed windows; re-read only files you edited. - **Read the spec by id, not the map.** The cut_spec is bounded and holds only @@ -528,8 +529,8 @@ below. Admit one verdict and its findings, and nothing else. Scope: . Rehydrate (recipes: target in force, rulings in force, one cut's record for ), then view the report (its range and its promises), the cut_spec it -cites, and every ruling the spec cites. `py -3 tools/context-pack.py -` prints the cut's sites at that head. Admitting your verdict is a write to +cites, and every ruling the spec cites. `huginn view --raw > /spec.json`, then +`py -3 tools/context-pack.py /spec.json ` prints the cut's sites at that head. Admitting your verdict is a write to the mind, not to a repo. Hands' promises are one input, not the boundary of the pass. Falsify every @@ -664,8 +665,7 @@ answer. Read the campaign's mind with the Rehydrate block (recipes: ) `huginn schema research` prints the fields and bounds: `claim` (1000 bytes), `detail` (4000), `sources` (16), and required `serves`, `detail`, `observed_on`. -Admit what you find as `research` notes through `huginn admit` (the strict door, -not the MCP tool), faculty Eyes: one document per claim, nothing else admitted. +Admit what you find as `research` notes through `huginn admit`, faculty Eyes: one document per claim, nothing else admitted. Label each `.