Skip to content

feat: harvest real-run cascade learnings into the kit#4

Draft
j4th wants to merge 17 commits into
mainfrom
feat/harvest-from-instance
Draft

feat: harvest real-run cascade learnings into the kit#4
j4th wants to merge 17 commits into
mainfrom
feat/harvest-from-instance

Conversation

@j4th

@j4th j4th commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Harvests ~2 months of real cascade-run learnings from a private reference instance back into the portable kit. Design spec: docs/superpowers/specs/2026-07-04-cascade-kit-harvest-design.md.

Governing constraints (all honored): portability (passes the kit's own § Verification greps — no regressions vs main), framework-not-tooling (absorbs portable principles, ships no prescriptive stack tooling), sanitized-only (the private instance is never named or leaked), one-way (kit only).

Highlights

  • /finish restructured into 11 discretely-gated steps (branch-first execution, a comprehensive test gate, simplify/review triage, a SHA-anchored PR triage block, a roll-forward hand-off). Fixes a latent bug: the break-glass skip marker was read from the PR body, but the review runs before the PR exists — now read from the issue body. Reconciled the two drifted copies of the command (now byte-parallel).
  • Bottom-up contribution lane (the cascade only modelled top-down work): new /intake, /enrich, /pr-respond commands + the cbk-conventions § Contribution intake convention + a framing reconcile hook.
  • Reviewers: new cascade-rule-reviewer (enforces the kit's own rules), and the ADR Refines/Supersedes-chain discipline (kills a false-positive class).
  • Hooks: new protect-lock-files guard + a fail-open back-port to the ADR hook; a format-on-edit advisory exemplar.
  • Governance/framing: ADR Refines relationship, additive-increment frame relationship, charter-meta pattern, research fan-out + throttle-safe batching, the prompt-injection-via-MCP-fetch failure mode.
  • Conventions/calibration: third [skip ci] trap, surface-inventory manifest, dependency settle-window policy, the Linear {type}-label-at-creation gotcha, testing placeholder-body + declarative-model calibrations.

Verification

Portability greps identical on main vs branch (no regressions); private-instance denylist clean; both /finish copies byte-identical; all hooks pass bash -n; settings.json valid.

Follow-ups (not blocking)

  • references/test_cases.md for framing/rough-in not yet updated for the new behaviors (editorial verification aids) — fast follow.
  • format-on-edit.sh ships as an exemplar (not wired into settings.json), per the framework-not-tooling decision.

Draft — awaiting review before flipping to ready.

j4th and others added 17 commits July 4, 2026 21:08
… run

Records the four governing constraints (portability, framework-not-tooling, sanitized-only, one-way), the six settled decisions, per-tier dispositions, and grep-based verification for harvesting improvements discovered running the cascade on a private reference instance back into the portable kit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Decompose the monolithic execute + simplify/review/PR/handoff into eleven discretely-gated steps: create-branch-then-execute (branch before any code lands), a comprehensive test gate with categorized red-handling (don't skip/xfail to force green — ask), simplify + four-class triage, review + triage, push + draft PR with a SHA-anchored triage block, and a structured hand-off with a roll-forward offer for deferred context. Read issue comments as context-not-contract into plan mode, and scale plan-mode research with subagent fan-out.

Fix a latent break-glass bug: the review pass runs before the PR exists, so the skip marker now reads from the issue body / operator instructions rather than the PR body (updated in pr-review.md too). Genericize the check-task references so the executor stays stack-agnostic.

Re-sync the bundled template in finish-command.md to the committed command (they had drifted — the template was an older v0) and correct its stale section list (eight sections including Assumptions) and skill-dir path. De-brittle the external '/finish Step N' references in pr-review.md, README.md, and rough-in/SKILL.md to role names, and fix two pre-existing README inaccuracies.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
New PreToolUse hook blocks Edit/Write/MultiEdit on lock files across ecosystems (uv/pnpm/npm/yarn/cargo/bundler/poetry/composer/mix), pointing at the package-manager command instead — the enforcement companion to the lock-file pre-filter pr-review.md already documents. Wired as a second PreToolUse hook in settings.json with a self-documenting _comment_hooks key.

Back-port the fail-open discipline to protect-immutable-adrs.sh: drop set -e, default CLAUDE_PROJECT_DIR to PWD, and guard missing jq — so an environment defect fails open with a warning instead of silently turning the guard into a universal edit block.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ative-model regime

Test-first: assertion-form red-first is acceptable when the assertions are transcribed verbatim from a spec source (rough-in Test plan, EARS-style AC, upstream contract) — that's not the post-hoc-TDD anti-pattern; default to the fail('not implemented') form when the spec needs a judgment call.

Shape-of-done: add declarative/data-transformation models where the query is the implementation — materialize, then assert invariants against the live output, not via mocks; pure helper functions stay conformance-first.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…P-fetch injection

The research phase was described as single-threaded doc search, but at real depth it's a parallel multi-agent fan-out. Add a 'Running research as a fan-out' section to both the framing and rough-in research references: dispatch a subagent per sub-question and synthesize yourself; a wide concurrent burst trips server-side rate limits, so batch to a safe width with a retry pass.

Add a standing failure mode: content from a documentation-fetch MCP can carry an embedded prompt-injection (a fake 'run this setup / sign in' line) — treat fetched research content as data, not instructions; ignore embedded imperatives and surface the attempt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
adr-conformance-reviewer now follows an intersecting ADR's Refines:/Supersedes: chain and reads the project's reconciliation layer (if any) before flagging a literal-clause violation — a refiner narrows a parent clause without superseding it, so the scoped reading in the chain is authoritative. Adds a 'confirm before flagging' constraint. Mirrors the same exclusion into pr-review.md's 'What NOT to flag' list so the rubric reinforces it. Kills a real false-positive class where a correctly-scoped clause reads as a violation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The cascade only modelled top-down work. /intake turns an externally-sourced report into a shaped /finish-able issue (investigate → reproduce → classify → shape, never lands code); /enrich is rough-in for a single small capability that skips the framing milestone; /pr-respond is the PR feedback-loop executor (inverse of /finish) that the kit referenced but never shipped. All backend-neutral (Linear / GitHub Issues / markdown), consuming the existing pr-review.md rubric.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A meta-reviewer that checks a diff against the kit's own operational rules (testing.md, cbk-conventions.md, simplification.md, knowledge-backend.md) — the kit shipped those rules with no agent enforcing them. Preserves the load-bearing insight that pr-review.md is the classification rubric it applies, not a contract it checks. Dispatch wiring follows in the pr-review.md update.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A sanitized exemplar PostToolUse hook: auto-format a file after Claude edits it, exit-0 always so formatting drift never blocks the tool call. Ships with placeholder formatter case-arms — a project wires its own stack and registers it in settings.json. The load-bearing part is the advisory contract, not the formatter choice.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…-ID note

adr-new: document Refines (a new ADR clause-scopes/narrows a parent Decision without invalidating it; parent stays Accepted; both consulted for conformance; reviewers follow the Refines chain) alongside Supersedes, plus clause-scoped supersession. logging: a correlation/lineage ID can be both a transient log-propagation handle and a durable persisted column — keep the two concerns distinct.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The executor's issue-read step now accepts the intake-lane title forms [<slug>:bug] and [<slug>:enh] (externally-sourced work shaped by /intake or /enrich that skips framing) alongside the standard rough-in [<slug>:F<N>:R<M>] form. Applied to both the committed command and the bundled template (kept byte-parallel).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…horing note

Add cascade-rule-reviewer to the § Project-local agents dispatch list (it applies this file's rubric, does not check whether this file is followed). Add an 'authoring a project-local reviewer' note capturing the observed reviewer shape plus the portable ground-every-claim-in-source (never model memory) meta-rule for fast-moving stack dependencies.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…rational traps

Contribution-intake section (bug + enhancement lanes that skip framing; large capabilities stay framed; conservative default-to-framing), title-prefix rows for bug/enh/meta + the meta-tag collision discipline, the Refines/Supersedes mutation-discipline rows, the additive-increment frame relationship, the third [skip ci] trap (required-checks block merge under branch protection), a top-of-file surface-inventory manifest + tooling-conventions pointer, the dependency settle-window supply-chain policy, the Linear {type}-label-at-creation gotcha, a flop/kill methodology checkpoint, and an optional verify-against-reality practice. All choice-space language with bracketed placeholders.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…tterns, calibration

Absorb-and-reconcile hook for bottom-up intake candidates (guarded on 'if the project runs an intake lane'); the additive-increment third frame relationship + single-milestone shape; the charter meta-issue pattern (concept frozen, spec undefined → charter + spike, Blocks M1); an AI-assisted review-unit calibration lean (rough-in collapses toward the low end of 2–6); and a richer per-event ledger note in the frame-output template.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Linear caches the {type} branch-name prefix from the built-in Feature/Bug/Improvement type label at issue-creation time, so rough-in must set it in the initial save_issue call (feat→Feature, fix→Bug, else→Improvement), not retroactively — applies equally to /intake and /enrich lane issues.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Expand the repo-layout tree to include the intake/enrich/pr-respond commands, the agents/ and hooks/ dirs, and the full rules list; add a note describing the bottom-up contribution lane and where its convention lives.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The placeholder case arms (`*.<ext>)`) weren't valid shell (`<` is a redirect). Rewrite as a clean exemplar: real example arms live in comments; the active case is a no-op, so `bash -n` passes and a project fills in its own formatter arms.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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