Eyes and Imagination keep their findings as typed notes; the facts file and committed research file die #45
6 changed files with 81 additions and 23 deletions
23
SKILL.md
23
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,
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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 <c> is not among
|
||||
them, stop and report which.
|
||||
3. Run <recipes>, with root = <c>, and view every id this brief names.
|
||||
Eyes and Imagination also run `huginn known <the question in plain words>`
|
||||
(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 <Faculty>, agent <your name>, session <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 `<scratchpad>/<agent>/`, 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 <path>, 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 `<pass>.<label>` and `toward` the question, follow_up or cut it was made
|
||||
for (empty is legal). An alternative you reject is admitted with its Recorded
|
||||
resolution, with the reason, in the same batch; one left open stays an idea in
|
||||
force for the decider to resolve. A transferable fact about the world, not this
|
||||
cut, goes to an Eyes pass. In the prose map at <path>, edit body facts and rationale. Also edit the model page
|
||||
whenever a probe changes a row's identity, lifecycle or authority. Imagination
|
||||
wrote that page in 0b, and a model a cut contradicts is stale steering text.
|
||||
Do not commit; the root agent commits. Do not change code in any repo. Scratch probes under
|
||||
|
|
@ -166,8 +180,8 @@ output at most 150 lines. Wait only through `tools/wait-on.sh` (never `true`,
|
|||
Python. Budget 40-80 calls and about 250k context.
|
||||
|
||||
Rehydrate (recipes: target in force, rulings in force, open questions and
|
||||
follow-ups, specs with no report, one cut's record for <cuts that constrain
|
||||
this one>).
|
||||
follow-ups, specs with no report, known, one cut's record for <cuts that
|
||||
constrain this one>).
|
||||
|
||||
Body facts to verify (not trust):
|
||||
- <repo@SHA>
|
||||
|
|
@ -631,19 +645,36 @@ what was missing and what it would have prevented.
|
|||
Dispatch: `subagent_type: eyes`, model Sonnet.
|
||||
|
||||
```
|
||||
Write findings to <scratchpad>/<agent>/<name>.md and return a
|
||||
short summary. For a prior-art or literature pass, Self commits that file to
|
||||
<repo>/docs/research/<topic>.md before the fork goes to the operator (SKILL.md
|
||||
step 2, "Research is always kept"); write it to be read there. Budget at most 40 calls: transcripts by script, never whole
|
||||
reads, waits only through `tools/wait-on.sh`, writes only under
|
||||
`<scratchpad>/<agent>/`, Python as `py -3`, and fetches batched in parallel. You read the campaign's mind with query and view only, through
|
||||
the Rehydrate block (recipes: <as needed>); you never admit.
|
||||
Private: <yes: findings go to <path>, admit nothing | no>
|
||||
|
||||
Budget at most 40 calls: transcripts by script, never whole reads, waits only
|
||||
through `tools/wait-on.sh`, writes only under `<scratchpad>/<agent>/`, Python as
|
||||
`py -3`, and fetches batched in parallel.
|
||||
|
||||
Before searching, run `huginn known <the question in plain words>` and, for
|
||||
legacy matter, `huginn sources`. Search the world only for what those do not
|
||||
answer. Read the campaign's mind with the Rehydrate block (recipes: <as needed>).
|
||||
|
||||
`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.
|
||||
Label each `<pass>.<label>`: the local part is 64 bytes in all, so the pass is at
|
||||
most about 24 bytes and the label at most about 38. The first note is labelled
|
||||
`scope`: your method and what you did not search. Every note has a source (a repo
|
||||
pin, a web page, something you observed, or another document); `inferred: true`
|
||||
names a claim you read from its sources rather than saw in them. A note is a fact,
|
||||
never a recommendation. A batch is 1 to 64 documents; a larger pass spans batches
|
||||
under one pass label. A wrong or superseded note is not edited: admit the new one
|
||||
and leave the old to a steward. You resolve nothing. Raw output too long for a note
|
||||
stays under `<scratchpad>/<agent>/` and the note cites it as an Observed capture.
|
||||
If Private is yes, admit nothing and write to the file named. Report the pass label
|
||||
and counts, not the findings again.
|
||||
|
||||
Sources:
|
||||
- <repos and ranges>
|
||||
- <transcripts> (grep with targeted patterns; never read whole)
|
||||
- <docs>
|
||||
|
||||
Produce facts with evidence pointers (SHA, file:line, transcript line). Mark
|
||||
anything inferred as "(inferred)".
|
||||
Facts carry evidence pointers (SHA, file:line, transcript line).
|
||||
```
|
||||
|
|
|
|||
|
|
@ -87,6 +87,8 @@ mismatch. The root is the campaign slug, or the instance for `instance`,
|
|||
| `verdict` | `cut-<cut>.s<pass>` | Soul | range, claims (each with an outcome, evidence, findings, promise, mutations) | `cut_report`, `findings` |
|
||||
| `finding` | `cut-<cut>.s<pass>.<label>` | Soul, in the verdict's batch | confidence, severity, claim, invariants, locations, failure scenario, evidence, origin | `verdict` |
|
||||
| `follow_up` | `<label>` | Self; Imagination for work no cut owns | source, repo, locations, item, why it can wait, owner | `source` |
|
||||
| `research` | `<pass>.<label>` | Eyes | pass, label, claim, detail, inferred, sources (repo pin, web page, observed, document), serves, observed on; the pass's first note is `scope` | `serves`, document sources |
|
||||
| `idea` | `<pass>.<label>` | Imagination | pass, label, title, idea, tradeoffs, rests on, toward, proposed on | `rests_on`, `toward` |
|
||||
| `resolution` | `<subject kind>.<subject local>.n<seq>` | whoever closes the subject | subject, sequence, outcome, rationale, date | `subject`, and the outcome's referents |
|
||||
| `hand_off` | `<to>.<repo>.<date>` | Self (parked: Cut 12) | from, to, repo, documents, reason | `documents` |
|
||||
|
||||
|
|
@ -298,6 +300,14 @@ reading its verdicts and findings, check that `admission.provenance.faculty` is
|
|||
`ruling`, `resolution` and `finding` with `root` = `<c>`, plus
|
||||
`"semantic": { "text": "<the question in plain words>", "top_k": 10 }`.
|
||||
|
||||
**Research and ideas:** `huginn known <text>` finds the nearest notes and ideas
|
||||
in every campaign, closed ones included, with their status; `huginn pass
|
||||
<campaign> <pass>` lists one pass whole; `huginn ideas <campaign>` lists the
|
||||
ideas in force. Known is cross-campaign and shows closed notes; precedent is
|
||||
rulings, resolutions and findings. Neither a note nor an idea stores a status:
|
||||
its resolutions say what became of it. `huginn schema research|idea` prints the
|
||||
shape.
|
||||
|
||||
Once the operator installs the hook, `tools/recall.py` also puts the nearest in-force
|
||||
rulings, questions and follow-ups into every prompt; the recipe remains the
|
||||
deliberate check before raising a question.
|
||||
|
|
|
|||
|
|
@ -2,6 +2,16 @@
|
|||
|
||||
Record each change to the skill together with the evidence that motivated it.
|
||||
|
||||
## 2026-11-05: Eyes and Imagination keep their findings as typed notes
|
||||
|
||||
Self, session `self-2026-11-04-eureka`; cut `eureka-body:cut_spec:cut-typed-research-skill.r1`.
|
||||
|
||||
Evidence. Rulings `eureka-body:ruling:research-and-ideas-are-typed-documents` (operator: "Imagination and eyes should both return their findings in typed documents so we never lose any research or ideas"), `research-public-face-ruled` (the mind owns research; existing files stay; a generated projection is wanted) and `private-pass-home-ruled`; kinds and verbs from `cut-typed-research` h3 and s2 (release 809a93c answers `huginn known|pass|ideas`).
|
||||
|
||||
What changed. Eyes admits `research` (one note per claim, a source on each) and Imagination admits `idea`s besides its questions, cut_specs and follow_ups, both through `huginn admit` after reading `huginn known`. Self reads `known` before dispatching a pass and a question cites the notes it stands on in `raised_in`. The old path is removed: the Eyes facts file that admitted nothing, Self committing a prior-art file to `docs/research/` before the fork, and the Eyes `you never admit`. Committed `docs/research/` files stay untouched, read through `huginn sources`; the renderer that projects a public pass to `docs/research/` is not built, so a public pass lives in the mind only. A private pass admits nothing and returns to the file its brief names. `references/campaign-state.md` gains the `research` and `idea` rows and the `known`, `pass` and `ideas` recipes; the Eyes and Imagination charters gain the matching boundaries. No `tools/` change.
|
||||
|
||||
The crossing. Huginn client 809a93c; the first `research` and `idea` documents were admitted at 2026-11-05T10:24Z: receipts `mind-commit-8f5dd1a6f6860a6052a9797aa79bf336946c7b59e0e7fdc8d1228c3b9a88f826` (research `skill-cut-map.scope` and `.old-path`) and `mind-commit-fcae00c87ef2b2a74c9f09f0485a7e1ada6207dc749dcec12758a40c050b7030` (idea `skill-cut-map.backfill-old-research`). Huginn does not roll back by flipping `current` from here.
|
||||
|
||||
## 2026-11-02: inversion of control, originator evidence, persona charter once
|
||||
|
||||
Self, session `self-2026-11-02-eureka`.
|
||||
|
|
|
|||
Loading…
Reference in a new issue