FE-1406: Audit the harness-teaching lineage and propose the fixed-key plugin contract (ADR-0007) - #9327
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
3d0a574 to
9ae74f7
Compare
277cae7 to
000d346
Compare
PR SummaryLow Risk Overview It adds ADR-0007 (accepted 2026-08-25), which amends ADR-0006: plugins become A new harness-teaching lineage audit traces fifteen prior restatements of “what the harness teaches” and motivates the ADR (SDCPN runbook mostly generic method, parser/prose pain). Control surfaces gain epicentre E5, strategy S-008 (build teaching as topology/gates) and S-009 (converge the key catalogue by co-authoring both plugins), plus SPEC-LEDGER §11.5 → designed and Reviewed by Cursor Bugbot for commit bed9c08. Bugbot is set up for automated code reviews on this repo. Configure here. |
3999e2b to
e33157a
Compare
92cb856 to
f8d631e
Compare
e33157a to
0224a1e
Compare
0224a1e to
a3724ed
Compare
f8d631e to
27e8638
Compare
The question of who teaches the interviewer how to interview — as distinct from what to notice in a formalism — has been written down fifteen times since 2026-08-06 under eight vocabularies and assigned to five layers, and kernel §11.5's rule that "guidance ownership follows vocabulary ownership" was affirmed at every station and designed at none. The audit (docs/evidence/proofs/audits/harness-teaching-lineage-audit.md) records each form, the words it used, the layer it chose, and its fate, from three full-read sweeps of the corpus plus the Linear record; its findings are that the moves were never enumerated in canon, that the SDCPN construct runbook is mostly harness craft filed in a plugin, and that sequence and selection were always both present and never separated. ADR-0007 (status: proposed, awaiting ratification) pulls the layers into one structure: the plugin splits by nature into schema-validated contract data, a per-job runbook under eight fixed harness-owned move headings, and a harness repertoire of defaults rendered before plugin cells. Headings are typed procedure / repertoire / anchor, which is Principle v2 applied heading by heading; the repertoire headings are where the interviewer selects against the posture kickoff produces. It amends ADR-0006 decisions 2 and 5, preserves ADR-0002 N2, Layer B's derived ordering, and completion rule 15, and restores FE-1406 to its original question. Both documents have INDEX rows; the docs-index and control-surface gates pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ADR-0007 v2: every plugin key follows one principle (the harness defines and teaches the concept and its default; the plugin specialises in harness terms; the rendered text interleaves key, default, cell). Sixteen fixed keys in four groups replace the eight move headings of v1; the repertoire becomes packages/repertoire. S-008 records the decision to build the layer as topology and STEERING gains the fifth epicentre, the authoring lane, the ratification gate, and the anti-rescope trigger. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Lu accepted the record with one caveat: fixing the key catalogue now would repeat the failure the record corrects. Decision 9 makes the set a working one that two plugins converge on in co-authoring cycles; S-009 records the method and STEERING's authoring lane becomes that cycle. The glossary, SPEC-LEDGER, and ADR-0006 carry the amendments acceptance triggers. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
a3724ed to
bed9c08
Compare
27e8638 to
fd7e27d
Compare

🌟 What is the purpose of this PR?
Brunch has always had a clear answer for what to notice in an interview — that is the plugin's job, keyed to the kinds of its target formalism. It has never had a settled answer for how to interview: how to open, when to walk one case and when to sweep, how to probe, how to vary with the expert's appetite, where not to dig, how to close. Kernel §11.5 has said since 2026-08-11 that this craft is harness-owned ("guidance ownership follows vocabulary ownership"), and every design station since then has affirmed it and rescoped it down. This pull request does two things about that: it audits every form the idea took, and it proposes ADR-0007, which fixes the plugin authoring surface as a set of harness-owned keys so that the teaching layer has a home a test fails on when it is missing. It also records the strategy (S-008) and reconciles STEERING, so the frontier shows the authoring lane that builds it.
Draft: documentation only, no code. Opened for Lu's ratification of the ADR; the Linear edits it implies wait on that.
🔗 Related links
libs/@hashintel/brunch-agent/docs/adr/0007-harness-teaching-meets-plugin-content-at-fixed-keys.mdlibs/@hashintel/brunch-agent/docs/evidence/proofs/audits/harness-teaching-lineage-audit.mddocs/archive/planning-inputs/penciled-directions-2026-08-14.mddocs/control/STRATEGY-LOG.mdS-008; frontier:docs/control/STEERING.md(E5)docs/adr/0006-plugins-per-target-formalism.mddecisions 2 and 5🚫 Blocked by
Nothing in code. Stacks on
main; independent of the FE-1404 / FE-1497 stack, which it describes but does not touch.🔍 What does this change?
The audit (
docs/evidence/proofs/audits/harness-teaching-lineage-audit.md) — fifteen dated restatements of the idea from 2026-08-06 to 2026-08-25, the vocabulary each used (lenses, kernel cards, strategy quiver, motions, movements, moves, repertoire…), the layer each assigned it to, what moves it enumerated, and what became of it. Eight findings that never found a home, among them: the split rule was named in canon and designed nowhere; sequence and selection were never separated;rabbit_holes(anti-guidance) was named once and lost; the SDCPNconstructrunbook is mostly harness craft. A strain appendix lists the places the current design pulls against itself.ADR-0007 (proposed) — eight decisions:
ontology,schema,patterns— machine-matchable only), guidance typed by mechanism (lenses,techniques,movementswithslice/sweep,licenses,motifs,smells,rabbit_holes,failure_modes), per-job runbooks (kickoff,trajectory,close), machinery (checks,tools).constructandreview and reviseare harness vocabulary.techniques, P09/P11 becomemovements.sweep; their pattern ids retire.packages/repertoiredepends only on core and is rendered by bindings; plugins never import it. A plugin isplugin.yamlvalidated by a JSON schema in core plussrc/. Gates: unknown key rejected; repertoire fills every guidance and runbook key; a plugin may leave cells blank and may add no key.Control surfaces — S-008 appended (complements S-007; the slice forced the layer, so it is built as code and gates with each layer's intent documented, not as spec). STEERING gains epicentre E5 (the teaching layer), the authoring lane FE-1431 → FE-1406 → FE-1393 running alongside the skeleton run, an ADR-0007 ratification gate owned by Lu, a new belief row, a sequencing cut, and a stop/replan trigger against rescoping the repertoire without run evidence. The "controller read path is small" belief's open probe (is the 378-line parser an argument for data?) is answered yes.
🏗️ Agent notes
Commits
80b8d8dad9Audit the harness-teaching lineage and propose ADR-0007 (v1: eight move headings)376e17da48Fix the harness-teaching layer as keys and steer toward building it (v2: sixteen keys in four groups; S-008; STEERING)Why v2 replaced v1
v1 proposed eight fixed move headings inside the runbook. Lu's re-reading of the 2026-08-14 penciled directions showed the richer key set was already stated there, that most of its keys are job-independent (so they do not belong inside a runbook), and that every key follows the same principle — formalism-specific direction in harness-defined concepts. v2 keeps the two dimensions v1 found (sequence in the runbook keys, selection in the guidance keys) and puts them under one rule.
What waits on ratification
CONTEXT.md(Plugin by keys; Runbook = the three runbook keys; new Repertoire, Key, Mechanism type, Posture; ElicitationPack retired) and SPEC-LEDGER §11.5 → designed.plugin.yaml, SDCPN migration.Gates
packages/corearchitecture tests 119/119 (docs-index, control-surfaces, topology, Flue placement); lefthook pre-commit (oxfmt, markdownlint) passed on both commits. Brunch Markdown is excluded from oxfmt by design.Pre-Merge Checklist 🚀
🚢 Has this modified a publishable library?
This PR:
📜 Does this require a change to the docs?
The changes in this PR:
🕸️ Does this require a change to the Turbo Graph?
The changes in this PR:
proposed; until accepted, FE-1406/FE-1431/FE-1393 keep their S-007 scope in Linear and the glossary still describes the six-heading plugin file.🐾 Next steps
🛡 What tests cover this?
packages/core/test/architecture/docs-index.test.ts— every document indexed, every link resolves (covers the ADR rename).packages/core/test/architecture/control-surfaces.test.ts— S-008 parses with all required fields;Supersedesresolves; STEERING remains the single mutable control.❓ How to test this?
Read the ADR, then the audit's "What never found a home" section against it: every finding there should map to a key or a decision.
📹 Demo
None; documentation only.