Skip to content

feat: second harvest of real-run cascade learnings into the kit - #5

Merged
j4th merged 17 commits into
mainfrom
feat/harvest-from-instance-2
Aug 9, 2026
Merged

j4th merged 17 commits into
mainfrom
feat/harvest-from-instance-2

Conversation

@j4th

@j4th j4th commented Aug 9, 2026

Copy link
Copy Markdown
Owner

Second reconciliation of the kit with the reference instance's continued real-world cascade run (delta since the 2026-07-04 harvest snapshot). Design spec with the settled decisions: docs/superpowers/specs/2026-08-09-cascade-kit-harvest-2-design.md — including the revised framework-not-tooling constraint (per-file merit test replaces the blanket no-new-rule-files decision).

The comparison ran as a 14-agent orchestration (7 surface readers, each adversarially verified against current main and the harvest-1 decisions): 97 classified candidates, ~51 landed after dedup. Thirteen atomic commits, one per cluster:

What lands

  • /finish Step-5 split — research runs executably (current permission mode; read-only probes, step-0 probes for probe-pending assumptions, scratchpad-scoped throwaway spikes; one hard rule: no repo edits) before plan mode, which is entered as the self-disarm gating the plan. Deferred-hardening note pattern included. Both copies byte-parallel.
  • Research grounding — existence/absence claims verified repo-wide; verifiers preferentially attack negative claims; drafts cite the run's grounding corpus. New rough-in failure mode 13.
  • Review pass — optional find-then-adversarially-verify orchestration (shipped as .claude/workflows/review-sweep.js) with direct dispatch as the recorded fallback; triage stays with the caller; a failed review agent is dropped coverage, not zero findings; single-source dispatch roster in pr-review.md.
  • Three new hooks (two-tier vocabulary): hard-deny protect-main-branch; ask-gates guard-pr-state and require-knowledge-backend-ok — each the enforcement companion of a discipline the kit already documents.
  • Reviewer precedent memory — memory: project on the three shipped reviewers + the four-genre precedent discipline and craft rules (verify-by-artifact, guard lists, clean-verdict-valid, sourced-claims-only) in the authoring note.
  • Testing — integration-cadence contract for CI-excluded live suites; frozen-state-pins-over-append-only-stores anti-pattern.
  • Frame/issue lifecycle — additive completeness pass, operator-gated body refresh for un-executed issues, milestone-scoped re-framing (pattern E + mutation row), broadened ledger event vocabulary, and inline [F<N>.AC<M>] examples in the frame template (turns the kit's own trace-ID verification grep green).
  • Decision governance — pre-registration charters with exploratory tier + honest-disclosure refines + recorded re-affirmations; three-outcome spikes; scoped standing authorizations; clause-level Refines narratives in adr-new.
  • Invocation posture — scaffold/blueprint/framing/rough-in are deliberate-invoke-only (disable-model-invocation: true); consultation stays the auto-triggerable funnel entry; CLAUDE.md lockstep.
  • Rule templates (revised-constraint adoptions): workflows.md, tooling.md, orchestration.md in the cbk-conventions template register — bracketed stack sections, dated observations for fast-aging platform claims, cost tables omitted. Plus the Explore cheap-tier search exemplar.
  • CI supply-chain — SHA-pinned the kit's own workflow action; settle-window covers CI actions as an ecosystem; deliverable + exclusion CI traps.
  • Test cases — new framing/rough-in regression cases (including the harvest-1 editorial follow-up).

Verification

  • Portability grep counts identical to pre-harvest main; the trace-ID positive grep flips from silently-failing to green
  • Word-boundary instance denylist clean across the tracked tree
  • All hooks pass bash -n (+ behavioral smoke on the ask-gate and branch guard); settings.json valid
  • Both /finish copies byte-parallel; review-sweep.js parses
  • Cited references resolve; CLAUDE.md layout tree updated

🤖 Generated with Claude Code

j4th and others added 17 commits August 9, 2026 12:17
Records the second reconciliation pass with the reference instance: the
revised framework-not-tooling constraint (per-file merit test replaces the
blanket no-new-rule-files decision), the five operator-settled decisions
(reviewer memory, deliberate phase invocation, light CI items, one-PR
sequencing, tooling-complex templates), the ten cluster summaries, and the
verification battery.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…backend write ask-gate

Three new PreToolUse guards, each the enforcement companion of a discipline
the kit already documents in prose: protect-main-branch.sh hard-denies
git commit on main/master (branch-first per cbk-conventions § Branch naming);
guard-pr-state.sh ask-gates gh pr ready/merge/close/reopen (PR-state changes
are the operator's calls — the permission prompt is the per-action OK; push
and pr-create stay unmatched); require-knowledge-backend-ok.sh ask-gates
knowledge-backend MCP writes, making the HITL write discipline
allowlist-proof (Notion matcher ships as the v1 reference).

settings.json rewires the hook registry around the two-tier vocabulary —
hard-deny for never-legitimate actions vs ask-gate for operator-only one-way
doors — and all guards fail open with warnings that name the surviving
backstop. knowledge-backend.md documents the enforcement layer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… plan (Step 5 split)

Step 5 conflated research with plan mode — plan mode is read-only, so
research could never run a spike, a feasibility probe, or the test suite to
inform the plan. Split into 5a research (executable, operator's current
permission mode: read-only probes, step-0 probes for probe-pending
assumptions, scratchpad-scoped throwaway spikes; one hard rule — no repo
edits) and 5b plan + gate (entering plan mode is the self-disarm; assumption
enumeration, guardrail respect, and the non-negotiable approval gate carry
over; approval restores the prior mode so Step 6 runs under the same
oversight).

Adds the deferred-hardening note pattern (why structural enforcement of the
no-repo-edits rule is shelved, the residual-gap severity, the revisit
trigger), the spikes-are-throwaway rule, the permission-mode expectation
with graceful degradation, and the fan-out grounding pointer. Bundled
template re-synced byte-parallel with its prose updated to match.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…egative claims

Adds the grounding discipline to both research references (canonical
three-rule statement in rough-in's; framing's carries the phase-flavored
form and points at it): existence/absence claims are verified with a
repo-root-wide search covering every source tree, never a single-package
grep; fan-out drafter prompts embed the rule verbatim and verifier passes
preferentially spot-check negative claims (a wrong absence-claim ships
duplicate machinery, a wrong line number is cosmetic); drafts cite the
run's existing grounding corpus instead of re-deriving facts it already
covers. New rough-in failure mode 13 (narrow-scope existence grepping)
names the signal, the cost asymmetry, and the recovery path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… roster, dropped-coverage rule

pr-review.md gains the orchestrated-sweep option (find-then-verify with a
refute-by-default adversarial stage before triage; refuted findings need no
triage; direct dispatch stays the documented fallback and the hand-off
records which path ran) and two invariants that hold either way: triage
judgment stays with the caller, never delegated to dispatched agents; and a
failed review agent is dropped coverage, not zero findings — failed
dimensions and unverified findings are tracked and retried before the pass
is complete. § Project-local agents becomes the single authoritative
dispatch roster (cross-cutting reviewers unconditional with cheap clean
verdicts, domain reviewers path-matched), and the pre-filtered changed-path
list is computed once and shared. /finish Step 9 consults the roster
instead of keeping its own copy; template re-synced byte-parallel.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The three shipped reviewers gain memory: project frontmatter — a
persistent per-project precedent surface that ships empty. pr-review.md's
authoring note documents the discipline: four memory genres (out-of-scope
precedents with the surface split, clean-review calibration baselines that
record the method, de-facto-convention prior art that always names its
self-expiry condition, both-polarity conforming-pattern records) and four
craft rules — verify by artifact never by the diff's self-description,
pair red-flag checklists with maintained do-not-flag guard lists, a clean
verdict on out-of-surface diffs is correct output, and no unsourced claims
about external-platform behavior. When a rule clause changes or retires,
the reviewers that restate it are swept in the same change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…pattern

Suites excluded from the offline CI gate run only when someone runs them,
so they get an explicit cadence contract: event-triggered (any merge that
re-points a live surface) plus periodic; the sweep runs alone against
shared backing services; the sweep task carries its own optional dependency
groups or suites skip cleanly. New anti-pattern: frozen-state pins over
append-only stores — pin the earliest row byte-exactly, constrain later
rows to same-grain content copies, stay direction-agnostic on lifecycle
flags the suite doesn't own.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s, body refresh, milestone-scoped re-frame

Three lifecycle grains between full supersession and doing nothing, all
operator-triggered and ledger-recorded: an additive completeness pass on an
already-roughed-in milestone (classify each instinct present / genuine gap /
deferred / category-error-with-reason; append-only, nothing closes); an
in-place body refresh for un-executed issues carrying factually wrong
mechanisms (provenance comment + ledger row; executed issues never
retro-edited; shape changes still close-and-recreate); and framing pattern E,
milestone-scoped re-framing (supersede one milestone's shape while the prior
frame stays Active with an annotated status and the retired AC set recorded
as retired-un-executed — new conventions mutation row).

The frame template's ledger guidance broadens into a milestone-lifecycle
event vocabulary (completeness passes, body refreshes, capstone-close rows
with verdict + demonstrables + downstream consumer, re-affirmations, count
deviations with operator approval), and its milestone block gains the inline
[F<N>.AC<M>] trace-ID examples the conventions and exit checklist already
required — turning the kit's own trace-ID verification grep green. The
conventions' trace-ID section records the two-level anchor observed in
practice (tests trace to R-issue-local AC numbering; R-issue ACs cite the
F-level IDs).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s, scoped standing authorizations

The charter pattern gains a pre-registration flavor for wide comparative
milestones: rules frozen in an immutable record before any candidate runs
(closed candidate set, named targets, evaluation protocol, expected-outcome
pre-commitments including likely-nulls, inherited limitations), with three
honesty companions — post-freeze arrivals join a surface-only exploratory
tier, deviations land as refining records with honest disclosure, and a
standing gate's no-change verdict is recorded as a re-affirmation event.
Spikes gating risky adoptions pre-declare promote / named fallback /
documented drop.

adr-new documents the clause-level Refines header narrative, Refines
targeting non-decision clauses, and the honest-disclosure refine. The
conventions' HITL heuristics gain the mechanize-absolute-gates guidance
(two-tier hooks + the deferred-hardening note) and the scoped
standing-authorization rule; verify-against-reality gains the event-grain
companion shape and citation-tally verification. The frame template's IC
guidance names the authored hand-off-spec discharge shape with its
audience-assumption header.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…irical rails

scaffold/blueprint/framing/rough-in gain disable-model-invocation: true and
rewritten trigger sentences — each is an expensive HITL one-way-door
workflow, so an accidental auto-trigger mid-conversation costs more than a
missed one. Consultation (the funnel entry, where users don't know the
cascade vocabulary) stays model-invocable. CLAUDE.md's invocation section
rewritten in lockstep to the split posture.

Conventions gain the dated-empirical-rails principle (record operational
constraints as dated measurements with failure signature + re-check trigger,
note retirements inline; contractual limits re-verify instead) and the
tooling-conventions row names model/effort orchestration conventions as a
recordable per-project choice.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Pin the kit's own workflow action to a full commit SHA with a version
comment, and add the policy to the settle-window section: tag refs are
mutable and open to tag-retag compromise, so every uses: pins a SHA,
initial pins resolve through the settle window, and the update bot's
CI-actions ecosystem maintains them. Two CI-trap paragraphs join the
conventions: an unattended CI agent's deliverable is the posted artifact,
not its exit code (assert the side-effect landed); and linter-excluded
surfaces get their own CI gate or the exclusion quietly becomes a standing
exemption.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…lates + review-sweep workflow + Explore exemplar

Under the revised framework-not-tooling constraint (per-file merit test;
harvest-2 spec D11), the tooling complex ships in the kit's template
register. workflows.md: the plan-mode/task-tracking/subagent triad,
when-to-plan-mode, plan-revision signals, TDD-where-merited pointers,
verification-before-completing, dispatch and tracking judgment,
narrate-during-iteration, the workflow anti-patterns table, and a rules
index. tooling.md: the built-ins-first principle and the per-surface
decision-rule table skeleton with bracketed stack sections (distinct from
blueprint's task-runner tooling template — noted inline). orchestration.md:
the ceiling rule with the one-top-tier-agent allowance, the role ladder,
the effort-vs-model heuristic, the dispatch-mechanism decision, and fan-out
discipline — fast-aging platform claims carried only as dated observations
with re-verify pointers, cost tables deliberately omitted.

review-sweep.js is the shipped find-then-adversarially-verify review
orchestration (kit reviewers always-on, bracketed domain-trigger map,
coverage accounting, triage stays with the caller) that pr-review.md § When
to invoke names as the orchestrated path. Explore.md is the mechanical-tier
search exemplar of the role ladder. CLAUDE.md's repo layout and contracts
list updated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ehaviors

Framing gains Test 5 (additive increment — pattern D, closing the
harvest-1 editorial follow-up) and Test 6 (milestone-scoped re-frame —
pattern E, incl. the trace-ID template requirement). Rough-in gains Test 6
(additive completeness pass), Test 7 (in-place body-refresh boundaries),
and Test 8 (grounding existence claims in fanned-out research, pairing
failure mode 13).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ases

Rough-in's intro and cross-test-invariants line still said five tests after
Tests 6-8 landed; framing's intro still said three after Tests 4-6. Flagged
by four independent review dimensions and confirmed by adversarial
verification.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two adversarially-confirmed gaps in protect-main-branch.sh: the regex
required commit to immediately follow git, so any global option between
them (git -c k=v commit, git --no-pager commit) silently defeated a
hard-deny guard; and the branch check queried a fixed project dir instead
of the call's working directory, judging worktree/nested-repo commits
against the wrong repo's branch. The match is now token-anchored and
flag-tolerant (over-matching costs a loud wrongly-blocked call the operator
can override; under-matching was a silent bypass — the wrong direction for
a deny-tier guard), and the branch is read from the payload's cwd with the
project-dir fallback. Behavioral smoke: both former bypasses block; reads,
feature-branch commits, and non-git commands pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…elete verbs

The ask-gate matcher missed notion-convert-page-to-skill — a confirmed
page-mutating tool — so that write would have skipped the forced HITL
prompt. Add convert and (defensively) delete to the verb alternation and
note the widen-on-new-verb obligation in the hook header. Reads stay
unmatched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… the memory version-control call

Three adversarially-confirmed findings on pr-review.md: the three reviewer
bullets still framed dispatch as conditional (runs when the diff touches X)
after the new paragraph declared cross-cutting reviewers unconditional —
bullets now state scope, with the unconditional + cheap-clean-verdict rule
in the section lead; the memory: project platform claim carried no citation
despite the sourced-claims rule added in the same diff — now cites the
sub-agents documentation with a re-verify note; and the memory directory's
version-control question was undecided — commit it (the exercised default)
or gitignore it, and record the choice.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@j4th

j4th commented Aug 9, 2026

Copy link
Copy Markdown
Owner Author

Review-sweep triage audit

Ran the PR's own .claude/workflows/review-sweep.js against this branch (dogfood): 8 finder dimensions (5 toolkit + 3 cross-cutting project reviewers), every finding adversarially verified refute-by-default. 22 findings → 11 confirmed / 11 refuted / 0 unverified / 0 dropped dimensions. The 11 confirmed dedupe to 7 distinct findings; all classified Apply (small, confined, concrete evidence) and landed as atomic commits:

Finding Severity Fix
Stale test counts in both test_cases.md files (found independently by 4 dimensions) medium 395058f
protect-main-branch.sh regex silently bypassed by global git flags (git -c … commit); branch checked against fixed project dir, not the call's cwd high / medium cc2d291 — flag-tolerant token match + payload-cwd; behavioral smoke on both former bypasses
Knowledge-backend write matcher missed notion-convert-page-to-skill (page-mutating) medium e02b3be — convert/delete added to the verb alternation
pr-review.md dispatch contradiction (unconditional rule vs conditional bullets); unsourced memory: project platform claim; undecided version-control call for the memory dir high / low / medium 86bab9e

Refuted (no action, per the refuted-findings-need-no-triage rule) — 11, including: review-sweep.js "fails syntax check" (misread the workflow-script execution model as ESM), TDD-coverage demands on the workflow script and hooks (speculative/no testable-unit path), gh api bypass of the PR-state gate (un-allowlisted gh api still prompts under the shipped permissions), two /finish consistency claims (misread optional-orchestration language / assumed the hand-off bullet list is exhaustive), milestone-template trace-ID drift (pre-existing, not this diff), and a mutation-table scope misread.

Sweep stats: 30 agents, 0 errors. Verification battery re-run post-fixes: portability greps unchanged, denylist clean, hooks bash -n + behavioral smoke green, settings valid, /finish copies byte-parallel.

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant