Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 21 additions & 6 deletions libs/@hashintel/brunch-agent/CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ _Avoid_: kernel, core, elicitor (as a shell name β€” "elicitor" may name the who


**Plugin**:
The innermost shell: target-defining policy, one per **target formalism** (`gherkin`, `sdcpn`) and never per domain β€” the domain is unknown when a conversation starts. Authored as one sectioned Markdown file under the fixed headings `Purpose Β· Kinds Β· Must know Β· Patterns Β· Moves Β· Deliverable`, plus the `project` / `validate` code operations (ADR-0006). Receives harness capabilities by injection; mechanism stays in the harness.
The innermost shell: target-defining policy, one per **target formalism** (`gherkin`, `sdcpn`) and never per domain β€” the domain is unknown when a conversation starts. Authored as cells under the harness-owned **keys** (ADR-0007): contract data (`ontology`, `schema`, `patterns`), guidance cells, runbook cells, and the `checks` / `tools` machinery, with `project` / `validate` as code (ADR-0005, ADR-0006). A plugin fills cells and adds no key; what it leaves blank, the **repertoire** supplies. Receives harness capabilities by injection; mechanism stays in the harness.
_Avoid_: extension, pack (a pack is a unit _within_ a plugin), domain plugin, scenario plugin

**Binding**:
Expand Down Expand Up @@ -114,22 +114,37 @@ _Avoid_: advisory (a different thing, below)
A computed, ephemeral, non-blocking fact the harness surfaces to the agent (unaccounted ask, unswept tail, world-moved delta). Never stored in the capture store; never gates anything.

**Pack**:
A unit within a plugin: **ElicitationPack** (the plugin file's `Purpose`, `Must know`, `Patterns`, `Moves`, and `Deliverable` sections) or **ProjectionPack** (`project` + `validate`, optional `reconcile`, annotated shapes, typed loss reports). Packs are shapes-to-fill plus behavioral guidance, per Principle v2.
A unit within a plugin: **ElicitationPack** (retired as a name under ADR-0007 β€” the guidance and runbook cells replace it) or **ProjectionPack** (`project` + `validate`, optional `reconcile`, annotated shapes, typed loss reports). Packs are shapes-to-fill plus behavioral guidance, per Principle v2.

**Demand row**:
One row of a plugin's `Must know` table: a slot on a kind, its required precision, whether "not applicable" is accepted, and why the model needs it. Kind-level only β€” every node of that kind discovered in conversation is checked against it (ADR-0006).
One row of a plugin's `schema` key (the `Must know` table under ADR-0006): a slot on a kind, its required precision, whether "not applicable" is accepted, and why the model needs it. Kind-level only β€” every node of that kind discovered in conversation is checked against it (ADR-0006).
_Avoid_: demand clause, scope expression, objective row

**Pattern**:
A discretionary, kind-indexed heuristic in a plugin's `Patterns` table: the model situation that triggers it and the question that resolves it. Surfaced by the harness when a node matches the trigger and the relevant slot is unsatisfied; the interviewer decides whether to use it. Never names a domain.
A discretionary, kind-indexed heuristic under a plugin's `patterns` key with a **machine-matchable trigger on node state**: the model situation that triggers it and the question that resolves it. A trigger the harness cannot match against node state (a vague quantifier, an expert who does not know) is guidance β€” a technique or a movement β€” not a pattern (ADR-0007). Surfaced by the harness when a node matches the trigger and the relevant slot is unsatisfied; the interviewer decides whether to use it. Never names a domain.
_Avoid_: card, kernel card (retired β€” ADR-0006 replaced Detects/Goal/Questions/Artifacts cards with pattern rows), technique card

**Runbook**:
The `Moves` for one **job** a plugin supports (`construct`, `review and revise`): kickoff, trajectory, checks, and stopping, over the plugin's one `Kinds` / `Must know` set. A plugin carries one runbook per job.
The three runbook keys β€” `kickoff`, `trajectory`, `close` β€” for one **job** (`construct`, `review and revise`), the harness default for each interleaved with the plugin's cell. The one place procedure is stated; `kickoff` produces a **posture**, `trajectory` names movements by bias, `close` is honest stopping and never the decision to stop (completion rule 15). Jobs are harness vocabulary; a plugin fills one set of runbook cells per job it supports (ADR-0007).
_Avoid_: mandate (as the unit name), mode, workflow

**Key**:
One of the fixed, harness-owned headings of plugin authoring (ADR-0007): the harness defines the concept it names, teaches it, and ships a default; a plugin specialises it in a cell written in the harness's terms and never a domain's. Rendered key β†’ harness default β†’ plugin cell. Keys come in four groups β€” contract data, guidance, runbook, machinery β€” and the catalogue is a working set until a co-authoring cycle changes none (decision 9).
_Avoid_: heading (for the authoring unit), section, property (unqualified)

**Repertoire**:
The harness's own filling of every guidance and runbook key β€” what it teaches every plugin about interviewing β€” shipped as `packages/repertoire`, rendered by bindings, never imported by a plugin. Admitted by evidence, not by plausibility; never rescoped without run evidence.
_Avoid_: quiver (retired name), strategy library, kernel

**Mechanism type**:
How a guidance key works on the interviewer: a **license** permits what the model would otherwise hedge on; a **technique** is a form of question or move; an **attention** key names what to notice; an **anchor** is a stated judgment to check against. Each guidance key has exactly one (ADR-0007 decision 3).

**Posture**:
The interaction stance `kickoff` produces from the expert's appetite, time, intended use, and tolerance for proposed assumptions β€” explore, synthesise-and-invite-correction, or propose-and-question-only-high-impact. Varies the trajectory; continuously re-read; never stored (ADR-0007). Not a state machine.
_Avoid_: mode (as a stored state), appetite (for the stance itself)

**Kernel card**:
Retired (ADR-0006). The pack-content unit of elicitation guidance β€” Detects / Goal / contrastive Questions / Artifacts, brunch `BEHAVIORAL_KERNELS.md` lineage β€” is replaced by **pattern** rows in the plugin file; the harness-shipped **generic strategy quiver** named in spec Β§11.5 becomes harness-generic patterns lifted out of plugin files (FE-1406), still not designed.
Retired (ADR-0006). The pack-content unit of elicitation guidance β€” Detects / Goal / contrastive Questions / Artifacts, brunch `BEHAVIORAL_KERNELS.md` lineage β€” is replaced by **pattern** rows and by guidance cells; the harness-shipped **generic strategy quiver** named in spec Β§11.5 is designed as the **repertoire** (ADR-0007), which is not pattern-shaped.
_Avoid_: card, kernel card (in new writing)

**PluginContext**:
Expand Down
2 changes: 2 additions & 0 deletions libs/@hashintel/brunch-agent/docs/INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ control loop is [`docs/agents/steering.md`](agents/steering.md).
| [ir-worked-examples](evidence/proofs/design/intermediate-representation-worked-examples.md) | active | gisted in FE-1397 | Layer-A validation across Gherkin/CPS/BPMN + assurance: property verdicts, amendments, sublimation findings |
| [ir-design-plain](specs/intermediate-representation-plain.md) | active | strain findings on FE-1401; amended by FE-1480 | Plain-prose rendering of the IR design, including ADR-0005's split between deterministic scaffolding and model-assisted executable realization; notes that `plugin-sdcpn/plugin.md` is now the concrete rendering of Layer B |
| [notes/research-patterns-audit](evidence/proofs/audits/research-patterns-audit.md) | active | FE-1401 / card inputs on FE-1403 | Plain-language audit of ~30 research imports in 7 families, evidence-graded, with an 8-point strain appendix |
| [notes/harness-teaching-lineage-audit](evidence/proofs/audits/harness-teaching-lineage-audit.md) | active | FE-1406 (owning issue); input to ADR-0007 | Audit of every prior form of "what the harness teaches" (2026-08-06 β†’ 08-25): fifteen restatements, the vocabulary each used, the layer each chose, and what became of it; finds the Β§11.5 split rule affirmed at every station and designed at none, the moves never enumerated in canon, and the SDCPN construct runbook mostly harness craft; strain appendix |
| [notes/penciled-directions-2026-08-14](archive/planning-inputs/penciled-directions-2026-08-14.md) | settled | FE-1401 | Penciled directions from the legibility session: 8 items with firming actions + editorial reflections |
| [capture-store-plain](reference/architecture/capture-store.md) | active | strain findings on FE-1401 | STE-leaning rendering of the capture-store semantics (FE-1390/FE-1389) with a load-bearing not-guaranteed section; 8-point strain report incl. two command-reachable unclosable-conflict paths (confirms FE-1419 commits 7/8) and the FE-1405 status-arity answer |
| [notes/deep-read-fe-1389](evidence/proofs/audits/deep-read-fe-1389.md) | active | FE-1401 / findings in FE-1420 | Deep-read of the walking skeleton: builder's account, spec-discharge table (issues 10/13 capabilities discharged; markdown floor contradicted in the UI), 12 findings; source of PR #10's backfilled record |
Expand Down Expand Up @@ -116,6 +117,7 @@ contract requires the spec to carry the new operating truth, in explicitly dated
| [0004-in-petrinaut-staging-and-the-monorepo-import](adr/0004-in-petrinaut-staging-and-the-monorepo-import.md) | accepted | FE-1433; amended by FE-1437; extended by FE-1480 | September demo stages inside demo.petrinaut.org; reusable libraries remain mutually unaware; ADR-0005 extends the application-owned artifact path from projection scaffold and obligations to an executable file through Petrinaut client tools |
| [0005-model-assisted-sdcpn-realization](adr/0005-model-assisted-sdcpn-realization.md) | accepted | FE-1480 | A pure plugin projection emits an SDCPN scaffold, typed code-obligation sidecar, and loss report; the Brunch agent realizes executable TypeScript through Petrinaut client tools and deterministic compile/simulation gates |
| [0006-plugins-per-target-formalism](adr/0006-plugins-per-target-formalism.md) | accepted | design-convergence review 2026-08-25 | Plugins are per target formalism, authored as sectioned Markdown with fixed contract headings and three machine-read tables; domain-neutral by rule; retires the declarative ScopeExpr/firesWhen/DemandTable contract |
| [0007-harness-teaching-meets-plugin-content-at-fixed-keys](adr/0007-harness-teaching-meets-plugin-content-at-fixed-keys.md) | accepted | FE-1406 (owner), FE-1431, FE-1393; accepted 2026-08-25, key catalogue converging (decision 9) | Plugin authoring is a fixed set of harness-owned keys in four groups β€” contract data (`ontology`, `schema`, `patterns`), guidance typed by mechanism (`lenses`, `techniques`, `movements`, `licenses`, `motifs`, `smells`, `rabbit_holes`, `failure_modes`), per-job runbooks (`kickoff`, `trajectory`, `close`), machinery (`checks`, `tools`) β€” each rendered key β†’ harness default β†’ plugin cell; the repertoire is `packages/repertoire`; amends ADR-0006 decisions 2 and 5 |

## External canonical documents

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

Date: 2026-08-25
Status: accepted
Amended by: [ADR-0007](0007-harness-teaching-meets-plugin-content-at-fixed-keys.md) (2026-08-25),
decisions 2 and 5 β€” the machine-read tables become schema-validated data, the prose becomes cells
under harness-owned keys, and the harness-generic lift is designed there
Amends: [ADR-0003](0003-three-register-ir.md), first consequence only β€” the plugin contract's
_form_ (a sectioned Markdown file with three parsed tables replaces the typed model-schema /
proposal-catalog / fold-table / demand-table declaration); the three registers are unchanged
Expand Down
Loading
Loading