Skip to content

docs: correct the #781 release-cause design note after verification - #791

Merged
tobyhede merged 1 commit into
mainfrom
781-design-note-corrections
Aug 17, 2026
Merged

docs: correct the #781 release-cause design note after verification#791
tobyhede merged 1 commit into
mainfrom
781-design-note-corrections

Conversation

@tobyhede

Copy link
Copy Markdown
Owner

Corrects the #781 design note after verifying every claim in it against the code, and after reproducing the defect with a built CLI. The note was previously untracked, so this is its first commit rather than an overwrite of a published dated note.

Five corrections, each marked [revised] in the file:

§ Was Now
5 design C as the base, with three grafts both of C's distinguishing mechanisms rejected; role vocabulary and core placement survive
2 16 call sites, one seam six dispositions never reach SessionService; they project inside the mutation runner
6 popRunbookIfActive loses a live child's bearer that chain cannot occur; two blockers recorded; the asymmetry and its seam stand
7 a repeated release reports not-found it reports released; retained claims count in the not-found test
8 move call sites preserving today's disposition that preserves the defect; the two mode derivations are the load-bearing deletion

New material: §1.3 records the reproduction and narrows the reachable trigger (an already-terminal loop entry, not an ordinary completion), and §9 records the loop releasing non-terminal runs.

The diagnosis in §1–§3 held on every check and is unchanged.

Docs only. pnpm run verify stops at check:md on 44 untracked markdown files under .agents/skills/ and .claude/skills/ — pre-existing, unrelated, and unresolved since before this branch. The changed file passes prettier --check on its own, and docs/superpowers is in cspell.json's ignore list, so no other gate covers it.

Refs #781, #788, #789.

The note was written from reading. Every claim has now been checked against
the code, and the defect reproduced against a built CLI. Five things changed,
each marked [revised] where it appears.

- §5's recommendation. Design C was the base; both of its distinguishing
  mechanisms are rejected. `ReleaseScope` field arity encodes the count of
  addressed runs rather than the disposition, cannot carry a per-run third
  role, and cannot express prune's all-discarded batch. The ESLint ban is an
  admission rather than enforcement: unlike `Error.isError` the identifier is
  repo-owned and deletable, after which the exhaustive union is the
  enforcement. The result-keys graft has no consumer — `ReleaseRunbookResult`
  has exactly one reader in the tree and the value it builds has none.
- §2 was a third too small. Six dispositions never reach `SessionService`;
  they call `projectRunbookRelease` directly inside the mutation runner's
  synchronous in-place session callback. That also tightens the policy
  function's contract from "pure" to "sync and in-place".
- §6 was wrong about `popRunbookIfActive`. The chain it described cannot
  occur: the consume precedes the child's execution loop, so the child cannot
  have delegated while the intent is unconsumed; and push+mint is atomic, so
  in the window where a claim exists the child is already the stack top and
  the gated undo never runs. The asymmetry is still real, and the seam it
  wants is specified.
- §7's idempotence property is false. A repeated retaining release reports
  `released`, not `not-found`, because retained claims count in the
  not-found test.
- §8's step 3 preserved the defect. The stale premise is not the omitted
  option at execution.ts:398 but the two mode derivations upstream of it,
  which would compute the new vocabulary from the same false input.

Adds §1.3 (the reproduction, and the narrower reachable trigger) and §9
(the loop releasing non-terminal runs, filed as #789).

The diagnosis in §1-§3 held on every check and is unchanged.

Refs #781, #788, #789
@coderabbitai

coderabbitai Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 38 minutes

Limit details: You’ve used all 2 included reviews currently available under your plan. You completed 59 included PR reviews in the past 7 days; at that activity level, included reviews refill at 2 reviews per hour.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 5bb2562d-e822-4470-bdfa-c17b484d18b4

📥 Commits

Reviewing files that changed from the base of the PR and between dfc8490 and 4242e80.

📒 Files selected for processing (1)
  • docs/superpowers/notes/2026-08-17-781-claim-retention-release-cause.md

Warning

.coderabbit.yaml has a parsing error

The CodeRabbit configuration file in this repository has a parsing error and default settings were used instead. Please fix the error(s) in the configuration file. You can initialize chat with CodeRabbit to get help with the configuration file.

💥 Parsing errors (1)
Validation error: Too big: expected string to have <=250 characters at "tone_instructions"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

🧬 Mutation score (advisory)

Hybrid mutation analysis: source changes use changed-line scopes (dedicated tests by default; mutation:related opts into related tests), while test-only changes use native incremental comparison with the main baseline. This check is advisory and never blocks merge. Trend & full reports: the Stryker Dashboard. See issue #485.

ℹ️ Mutation scope plan

No eligible source or test changes in this PR.

No mutated source changes in this PR.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying rundown with  Cloudflare Pages  Cloudflare Pages

Latest commit: 4242e80
Status: ✅  Deploy successful!
Preview URL: https://4124f702.rundown-7hl.pages.dev
Branch Preview URL: https://781-design-note-corrections.rundown-7hl.pages.dev

View logs

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