Repository navigation
feat: harvest 3 P1 — the kit stops being wrong about itself, and routes its instruction budget - #54
Merged
Merged
Conversation
… posture Design spec for harvest pass 3: the 46 open issues (#8–#53) filed from the echosphere and you-are-hear runs plus the uncaptured deltas of three instances, folded into ten dependency-ordered clusters and a page-verified Claude 5-series posture section, with decisions D17–D29 settled with the operator on 2026-09-06 and a four-PR sequencing. Nothing else in the kit changes in this commit. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…he instruction-budget split Eleven tasks in dependency order for clusters C1 and C2 of the harvest-3 spec: baseline, the @-import fix, a two-audience verification suite green on the kit tree, path-scoped logging/testing with the rule-loading model, the rule-file disposition pass and phase-exit checklists, the Linear restamps, the ADR starters, the eighth heading with the executor as authority, the framing defects, a hook and settings audit with crafted-payload dry-runs, the contract/reference split with integrity checks, and the README sweep plus the draft PR. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Every @docs/… site in the four blueprint templates becomes a backticked mention with the memory-docs rationale stated once; the foundation-doc exception paragraph that justified the import is corrected at its source, as is the cross-reference sentence that described CLAUDE.md as @-referencing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… tree (#13) Two labelled sub-blocks (kit-repo / project), a comment per check saying what it catches, six repairs: layout and stub checks rescoped to the project's artifacts, the Deferred-meta-issues ban dropped (live vocabulary), the placeholder-syntax portability grep made an explicit template line with a plugin-directory carve-out, the Notion grep narrowed to a page-id shape, and the @-import grep replaced by a mention check. Adds the always-loaded budget print, the axis-record mirror check, the unfilled-glob check, and citation pins for the template headings skills cite. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ding model (#15) Placeholder paths: globs the operator stamps at install, a callout on each file, and a conventions section that says which rules load every session and why, with the two rules that keep scoping honest. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… for scaffold and blueprint, workflows.md as a portable rule (#16) The bootstrap checklist gains a fourth section that prints the always-loaded set and requires filled / path-scoped / deleted per template rule plus the one-time choices; scaffold and blueprint get the phase-exit checklists the conventions already claimed every phase has, each carrying the restamp-in-the-same-commit item (#30); workflows.md drops its template banner (D17). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Initiative and project creation over the planner MCP were exercised and write-verified on 2026-08-12/13; the flags drop and both files' exercise status says which single call shape (initiative-content update) still has no run behind it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… header (#40) Bundled byte-identical starters under references/adr-starters/, a Stage 3 step that copies them when absent and fills Date and Deciders through the scaffold commit path, an exit grep for leftover placeholders, and a verification pin keeping the bundle equal to the root copy. The kit's own root starter keeps its placeholders (D17). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ions; the executor's parser is the heading authority (#45) Eight headings on every restatement, checked mechanically: the two templates against each other and each heading against commands/finish.md. handoff-to-finish.md and plan-mode-prompts.md restated a six-section list (no Assumptions, no Test plan); corrected to the executor's eight and guarded by a negative grep. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…tooling-research track the scope rule forbids, backend-named descriptions, counted preambles The phase-exit checklist quotes the exact empty-state string; full mode no longer adds MCP/plugin research that § What framing does NOT research forbids; framing and blueprint descriptions name cascade objects; test-case preambles and index lines drop their counts, with greps to keep both. Reference sweep (research-phase.md, hitl-question-bank.md, test_cases.md): the only MCP/plugin mentions are research-phase.md lines 81-82, which route tooling selection to blueprint rather than offer it — left as is. Framing's test_cases.md also dropped its "run all six" count in the same paragraph. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…, the exemplar's stanza shipped beside it, the compound-command trap stated All six hooks pass bash -n and the crafted-payload dry-run (table in the PR body); the formatter exemplar's registration stanza ships as an example key; the default-branch guard's header and § Branch naming say branch creation and the first commit are separate calls; plugin and MCP expectations checked against what ships. Registry: five hooks registered once each, format-on-edit.sh unregistered by design, all executable. Dry-run: 19 probes, every observed exit matched (deny=2 on existing-ADR write/edit and lock-file edit; ask-JSON on gh pr ready and the Notion create tool; silent exit 0 on gh pr create, git push, new-ADR write, index edit, manifest edit; default-branch guard exit 2 on commit and on a compound switch+commit judged at entry, exit 0 on non-commit git and on a feature branch; fail-open exit 0 with a stderr warning when jq is absent). The formatter exemplar's only live arm is the `*)` no-op. Plugin expectations: enabledMcpjsonServers matches .mcp.json.example (five ids). `claude plugin list` shows pr-review-toolkit and commit-commands installed and no `simplify` plugin; the official marketplace has none (only code-simplifier, which ships an agent). The installed CLI bundle (2.1.263) carries the bundled `/simplify` skill's own text, so `/simplify` is a built-in here: dropped from enabledPlugins into a dated comment, with README § Claude Code plugins and simplification.md § Plugin saying the same. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…tract + path-scoped reference pairs (#53) Split by when the content is needed: the contract keeps what an agent obeys in ordinary work, the reference carries verification, calibration tables, traps and applied instances under paths: frontmatter, and every moved section keeps a pointer heading so file § section citations resolve unchanged. The executor reads the review reference by name at triage; testing.md restates the trace-tag pointer; the cascade-rule reviewer derives its scope instead of enumerating it. Moved 15 / 4 / 4 sections (cbk-conventions / orchestration / pr-review), fence-aware so the `## ` lines inside fenced examples stayed with their sections. Integrity against the pre-split snapshot: no lost heading, no lost line, a pointer for every moved section. Always-loaded rules now total 103,737 bytes (174,595 at the P1 baseline). Also: the bootstrap checklist's citation of the verification loop names the reference half, and CLAUDE.md's kit-wide list stops calling workflows.md a template (D17). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… files to edit; test cases cover the new default paths Battery at this commit: suite exit 0 from cbk-conventions-reference.md § Verification (always-loaded 103,737 bytes vs 174,595 at baseline; 15 checks, 6 red → 0); all six hooks pass bash -n; settings.json parses; finish.md is byte-parallel to the bundled template (extracted with the anchored awk the template documents — the plan's unanchored sed matched the marker's first mention, not the marker); adr-starters byte-parallel to docs/adr; no instruction-form @-import remains (the remaining `@docs/` strings are the warnings that forbid them and the blueprint exit check). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…al section-list check, the restamp item on every shipped checklist /simplify pass (four cleanup agents: reuse, simplification, efficiency, altitude). Applied: the @-import explanation lives once (templates/claude-md.md + cbk-conventions.md § Rule loading) and foundation-doc-templates.md points at it with its exception stated in the singular; CLAUDE.md's rules line names orchestration once per role; the default-branch guard's header cross-references § Branch naming; the verification block derives the executor's section list from the issue template and requires it verbatim in the two prose restatements (replacing a grep for one stale phrase — negative-tested red when a section is dropped); the two opinionated-profile checks merge into one self-splitting pattern over the whole tree; framing's phase-exit checklist gains the restamp item and the reference's claim is scoped to the checklists the kit ships. Skipped with reasons: merging the block's five negative greps into one alternated call, and the two test-count greps into one — the block is one check per invariant so a red line names its defect; the eight-iteration finish.md loop and the per-value scaffold.md re-read — files of a few KB, clarity over microseconds; architecture.md's one-clause @ mention — already a pointer, not a re-derivation. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…`!`, so every negated grep in the block was advisory Review finding (silent-failure hunter, Apply): under `bash -e` a `!`-negated command never aborts the script, so all ten must-be-absent checks could print a hit and still end green (the defect predates this branch: main's block had eight such lines; the split and this PR's additions grew it to ten). Now an `absent` helper runs the command and exits 1 with a VIOLATION line when it matches. Every negated check was also run individually before the rewrite: all ten were genuinely clean, so no red had been hiding — only the mechanism was broken. Negative-tested: a planted `## Movement 1` file and a drifted ADR starter each turn the run red with a labeled cause and no completion sentinel. Also from the same review: the starters byte-parallel check is scoped to the kit tree (a target project fills ADR-0000's header and adds ADRs, so its docs/adr legitimately differs) and is loud when docs/adr is missing; the axis-mirror check asserts its extraction found values instead of passing vacuously on zero lines; each sub-block ends with a sentinel echo so an empty or truncated extraction cannot read as an all-green run. `set -o pipefail` was not added: several pipelines in the block legitimately contain a grep that matches nothing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ot split, the licence lives in LICENSE, testing.md now restates the tag form, the hook blocks copy-then-edit Review findings (comment analyzer, Apply): CLAUDE.md's rules line read as if tooling.md had a reference half (only orchestration does); the bootstrap checklist sent the licence to a Cascade-metadata row that does not exist (it lives in LICENSE and README § License); testing.md claimed to restate the test-side trace tag without stating it (now: the test tags the R-issue's own criterion number, the R-issue's AC list cites the parent's F-level IDs); scaffold's ADR-starters step claimed the immutability hook would let a copied starter be filled afterwards, but the hook blocks Edit/Write on any existing docs/adr/NNNN-*.md — the header is now filled in the same write that creates the file, with the pre-existing case routed to the operator or the git-host path. The fifth finding (framing's pointer to the template's § Pre-flight checks) was rejected: the literal empty-state string sits line-wrapped inside that section (lines 220-221, section 190-223). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
j4th
marked this pull request as ready for review
September 7, 2026 02:11
This was referenced Sep 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Harvest 3, PR 1 of 4 — the kit stops being wrong about itself, and routes its instruction budget. Every claim the kit makes about its own tree is now checked mechanically: the verification block in
cbk-conventions-reference.md § Verificationis green on this tree (it was six-red onmain), the bundled/finishand the ADR starters are byte-parallel to their originals, the eight-section issue contract is the same list on every surface (the scaffold-shipped issue template gained its missing## Assumptions), framing no longer offers the tooling-research track its own scope rule forbids, and the blueprint templates stop teaching@docs/…as on-demand loading (it is an import that expands every session).The instruction budget gets a routing model.
cbk-conventions.md,orchestration.mdandpr-review.mdship as an always-loaded contract half plus a path-scoped-reference.mdhalf; every moved section keeps its heading in the contract with a one-line pointer, sofile § sectioncitations resolve unchanged.logging.mdandtesting.mdcarrypaths:frontmatter with placeholder globs the operator stamps at install, and scaffold's bootstrap checklist gains a rule-file disposition pass (fill / path-scope / delete / stamp / keep) so the unfilled-template failure a real run reached is caught at install time. The executor reads the review reference by name at triage, because a triage is not a file read.Closes #13
Closes #14
Closes #15
Closes #16
Closes #30
Closes #40
Closes #45
Closes #53
Instruction budget
main)Verification block on this tree: 15 checks, 6 red → 0 red (kit sub-block; the project sub-block skips itself without
docs/cbk/scaffold.md).Hook and settings audit (Task 9)
Registry ⇔ files: five hooks registered once each,
format-on-edit.shunregistered by design (its stanza now ships as the_example_PostToolUse_formatterkey), all executable, all passbash -n. Crafted-payload dry-run, every observed exit matched:0099-…docs/adr/README.mdpackage-lock.jsonpackage.jsongh pr ready 12gh pr create --draftgit push -u origin HEADmcp__plugin_Notion_notion__notion-create-pagesmain)git commit -m xgit switch -c t && git commit -m xgit status && git logfeat/x)git commit -m x*)no-opThe compound-command trap is now stated in the guard's header and in
cbk-conventions.md § Branch naming: create the branch and make the first commit in separate tool calls.Plugin and MCP expectations:
enabledMcpjsonServersmatches.mcp.json.example(five ids).claude plugin list(Claude Code 2.1.263) showspr-review-toolkitandcommit-commandsinstalled at project and user scope, andcode-simplifierat user scope; there is nosimplifyplugin and the official marketplace has none. The installed CLI bundle carries the bundled/simplifyskill's own text, so/simplifyis a built-in here: it moved out ofenabledPluginsinto a dated comment, and README § Claude Code plugins andsimplification.md § Pluginsay the same.Review path
Direct dispatch, the documented baseline:
/simplify(the bundled skill; four cleanup agents — reuse, simplification, efficiency, altitude — at the mid tier), thenpr-review-toolkit:review-prwith the agents that apply to this diff (code-reviewer,comment-analyzer,silent-failure-hunter; the test, type-design and simplifier agents do not apply — no test code, no types, and/simplifyhad already run), in parallel with the three project reviewers (adr-conformance-reviewer,logging-discipline-reviewer,cascade-rule-reviewer) given the changed-path list. The shippedreview-sweep.jswas deliberately not used: its verify stage is uncapped until P2 (#10). No reviewer failed or returned empty; every clean verdict states what it checked and by what method.Triage
72eb5cf(simplify pass, 8 findings → 6 fixes),6dc2a16(verification block, 4),5896375(4)The headline Apply (
6dc2a16). The silent-failure hunter found that underbash -ea!-negated command never aborts the script, so every must-be-absent check in the verification block (ten lines; eight of them already onmain) was advisory: a hit would print and the run would still end green. Every negated check was run individually before the rewrite and all ten were genuinely clean, so no red had been hiding — only the mechanism was broken. The block now routes them through anabsenthelper that exits with a labeled VIOLATION line, scopes the starters byte-parallel check to the kit tree, asserts the axis-mirror extraction found values, and ends each sub-block with a sentinel so an empty extraction cannot read as green. Negative-tested with a planted violation and a drifted starter.Surface — the operator decides:
grep -rcalls each independently recurse.claude/skills/… for one negative-match pattern apiece. Cheaper: onegrep -rnE 'pat1|pat2|…' .claude/call." Left as is: the block is one check per invariant so a red line names its defect; the tree is ~1 MB.grep -rnEcall listing both globs." Same reason.for h in Context Assumptions …; do grep -q … finish.md; doneopens and re-scans the same small file 8 times." Left: a few KB, clarity over microseconds.docs/cbk/scaffold.mdfrom disk once per value." Left, same reason (the loop now also asserts the extraction was non-empty).pr-review.md's own wording someday." A wording call on the review rule; natural home is P2 alongside review-sweep.js fans out one workhorse-tier verify agent per finding, uncapped and undeduped #10.Reject:
set -o pipefailto the block — several pipelines legitimately contain a grep that matches nothing, so pipefail would manufacture reds.Awareness only: the code reviewer notes it cannot independently verify the claim that
/simplifyships bundled as of 2.1.263; the claim is dated, sourced to the installed CLI bundle, and carries a re-verify-after-upgrade note per the dated-empirical-rails principle.Notes for the operator
plan-mode-prompts.mdline 9 still says/finish"will be defined in CLAUDE.md by the bootstrap-finish skill" — stale prose outside this PR's scope; candidate for P2.pr-review.md§ Triage rubric says "see § Apply/Surface calibration below" — the section is now a pointer to the reference half; the word is still true but reads oddly. Left verbatim per the split's move-don't-edit rule.sed -n '/--- BEGIN TEMPLATE/,$p'matches the marker's first mention (line 26), not the marker line; the template's own anchored awk is the extraction contract and is what the battery used.Spec:
docs/superpowers/specs/2026-09-06-cascade-kit-harvest-3-design.md· Plan:docs/superpowers/plans/2026-09-06-harvest-3-p1-self-consistency.md🤖 Generated with Claude Code