diff --git a/SKILL.md b/SKILL.md index c39e281..a51efff 100644 --- a/SKILL.md +++ b/SKILL.md @@ -43,11 +43,11 @@ grades its own work has lost the point. | Faculty | Runs against | Admits | Must not | |---|---|---|---| -| **Imagination** | the Body (source, docs, probes), plus the target | `question`s and `cut_spec`s specified to `file:line`, and `follow_up`s for work no cut owns; body facts, the model page and rationale go to the prose map | commit code, choose a product fork silently | +| **Imagination** | the Body (source, docs, probes), plus the target | `question`s and `cut_spec`s specified to `file:line`, `follow_up`s for work no cut owns, and an `idea` for every alternative considered that is not a question's option (a rejected one with its Recorded resolution); body facts, the model page and rationale go to the prose map | commit code, choose a product fork silently | | **Hands** | one `cut_spec` | small pushed commits, then one `cut_report` | redesign the spec, work around a fork | | **Soul** | Hands' *executed* commits | one `verdict` and its `finding`s | edit or commit a repo, or review a plan (a pass on a plan is Imagination) | | **Life** | memory surfaces | nothing: named mutations and proposals | touch Body code, restate what an owner records | -| **Eyes** (optional) | history, transcripts, logs | nothing: a facts file with evidence pointers | conclude or recommend | +| **Eyes** (optional) | history, transcripts, logs | `research` only: one note per claim, a source on every note | conclude or recommend (the note has no field for one) | | **Operator** | forks that are hers to hold: her own work, the wallet, the legal root, and what a campaign asks for where she holds it; elsewhere a respected contributor whose word a steward weighs | rulings, which Self admits | (not an agent) | Admitting is a write to the Mind, not to the Body. Soul stays read-only on @@ -219,8 +219,10 @@ Templates are in `references/briefs.md` and `references/campaign-state.md`. goes to the operator, Self stops the line that raised it. Self dispatches an Eyes pass over the research literature and over established implementations of the same problem: papers, the source and design notes of the systems that solved it, -and their known failure modes. The question then cites that evidence, and the -recommendation stands on it. Operator, 2026-10-02: "I feel like the default reflex +and their known failure modes. Self first runs `huginn known` on the question in +plain words and dispatches a fresh pass only for what the notes it returns do not +answer. The question then cites the notes it stands on in `raised_in`, and the +recommendation stands on them. Operator, 2026-10-02: "I feel like the default reflex is to defer to my judgment, and I'm neither a Dijkstra nor a Carmack." The operator holds the decision where the work is hers; in a steward's domain she is a respected contributor and the steward decides. What a project is for is best @@ -232,11 +234,14 @@ one person's judgment is not the only design input. A fork is trivial, and skips default, a naming choice, or a guard against our own code (the proportion rule below). When unsure, run the pass. -**Research is always kept.** A prior-art or literature pass is committed where -it outlives the session: the project's `docs/research/`, or gamecult-ops -`docs/research/` when it spans projects, with a header naming the fork or ruling -it served. Self commits it before putting the fork. A scratchpad facts file dies -with the session, and the next fork in the same field pays for the search again. +**Research is always kept.** The mind keeps it: Eyes admits each claim of a +pass as a `research` note, and `huginn known` finds it again in any campaign, so +the next fork in the same field does not pay for the search twice. Self commits +no research to any repo. A public pass is meant to be rendered to `docs/research/` +by a command as a generated projection, never hand-edited; that renderer is not +built yet, so until it lands a public pass lives in the mind only and nobody +hand-writes the projection. Committed `docs/research/` files already in any repo +stay as they are and are read through `huginn sources`. Operator, 2026-10-09: "Research should always be kept". Put the open questions to the operator together, from the open-questions recipe, diff --git a/agents/eyes.md b/agents/eyes.md index 0fa21cf..37420c2 100644 --- a/agents/eyes.md +++ b/agents/eyes.md @@ -20,4 +20,5 @@ This charter, the Eureka briefs that dispatch it and the Eureka `tools/` improve - If the user points to a specific paper, algorithm, or existing implementation strategy, treat that as the default path and only deviate when local constraints make it impractical. Say so plainly when that happens. ## Boundaries -- Read only. Return facts with evidence pointers. Do not conclude or recommend. +- Read only on the Body. Return facts with evidence pointers. Do not conclude or recommend. +- Record what is so as `research` notes, one per claim with a source on each, through `huginn admit`. Read earlier notes with `huginn known` before searching again. Admit no other kind. A private pass admits nothing. diff --git a/agents/imagination.md b/agents/imagination.md index 4d2a710..170e979 100644 --- a/agents/imagination.md +++ b/agents/imagination.md @@ -51,3 +51,4 @@ Teardown protocol: ## Boundaries - Do not commit code. Do not choose a product fork silently. +- Run `huginn known` on the design question before probing. Admit every alternative considered and not placed on a question as an `idea`, a rejected one with its Recorded resolution. diff --git a/references/briefs.md b/references/briefs.md index b715f4f..67654b1 100644 --- a/references/briefs.md +++ b/references/briefs.md @@ -52,6 +52,9 @@ Campaign state lives in the instance's mind, through the huginn CLI 2. Run the campaigns recipe. If there is no campaign, or is not among them, stop and report which. 3. Run , with root = , and view every id this brief names. + Eyes and Imagination also run `huginn known ` + (research and ideas of every campaign, closed ones shown with their status) + before searching or probing. Eyes admits `research` and no other kind. Admit as faculty , agent , session . A refusal names the rule that refused: fix the batch and admit again. InvalidInput and TooLarge are the same: fix the call (or narrow it) and retry. Retrying an admit @@ -129,6 +132,8 @@ and probe through scripts, one call per question, output at most 150 lines. Wait only through `tools/wait-on.sh` (never `true`, `echo` or `sleep`), write only under `//`, and use `py -3` for Python. +Known-first and an idea per alternative considered: as in the map brief below. + Give one table, a row per persistent kind: - Identity: what names it. Is the namespace stated? Is the name injective? Can two different things collide? Is any part of it derived, and from what? @@ -155,8 +160,17 @@ sibling Self will run beside it> so Hands can go straight to the cut with little reading. Map nothing further ahead (SKILL.md step 1, "Map only what is about to run"): later cuts are one line each in the prose map's cut sequence. -Admit only cut_specs, their superseding resolutions, and questions. In the -prose map at , edit body facts and rationale. Also edit the model page +Admit only cut_specs, their superseding resolutions, questions, and `idea`s. +Before probing, run `huginn known` on the design question and cite what it +returns in `rests_on`. `huginn schema idea` prints the fields: `title`, `idea`, `tradeoffs` and +`proposed_on` are required, and the label is at most 64 bytes. +Admit an `idea` for every real alternative you considered +that is not an option on a question you admit (those are the question's options), +labelled `.