Skip to content

agents: a blast-radius skill, and no triage fix without a reproduction - #1330

Closed
oddharsh wants to merge 1 commit into
mainfrom
claude/blast-radius-and-repro-gate
Closed

oddharsh wants to merge 1 commit into
mainfrom
claude/blast-radius-and-repro-gate

Conversation

@oddharsh

Copy link
Copy Markdown
Owner

Two pieces adapted from Cursor's pstack plugin (MIT, Lauren Tan): a project skill for checking what a change breaks, and a reproduction gate on the Workers Issues routine.

blast-radius skill

.claude/skills/blast-radius/ finds what a change breaks outside its own diff. Its core rule: find the one fact the change is safe because of, prove it by running code, and run a control that shows the proof can fail. A list of maybes doesn't count.

pstack's version leans on its own why, arena and unslop skills. Here those become gh/git history, /code-review or the Codex agent, and the house voice. The adaptation adds the places grep stops in this repository:

  • content-addressed /a/ and /i/ bytes
  • derived files and the route list
  • KV and D1 shapes an older deploy wrote
  • the public JSON and MCP surfaces
  • the Workers Free caps

The description makes it fire on PRs labelled release-path or hashed-asset. The MIT license ships beside the skill.

Reproduction gate on the triage routine

Before this, docs/routines/workers-issue-triage.md let the routine open a draft fix PR whenever the fix was "small" and it was "confident", working from the stack trace alone. The new step 5 follows the rule from pstack's benny automation: no reproduction, no fix.

A draft now needs all of these:

  • No open PR already covers it. Otherwise the routine links that PR and stops.
  • A contract test reproduces the exact error. It calls the real code and fails with the same message at the same frame, twice. It may stand in for KV, D1 or fetch, but never stub the function that threw.
  • The fix is small. One cause, one place, nothing in config/, .github/ or the release path.

The test ships with the fix. If the routine can't reproduce the error, it says what it tried in the issue.

contract-workers-issues-become-one-github-issue pins four phrases from the gate. None appear in main's prompt, so each new assertion fails there.

Action for you: the routine runs the copy saved at claude.ai/code/routines, so this change only takes effect once you paste the new text in.

Verification

  • bun run lint: clean.
  • bun run test: 1,449 pass, 0 fail.

Two pieces from Cursor's pstack plugin (MIT, Lauren Tan), adapted to this
repository.

- .claude/skills/blast-radius: find what a change breaks outside its diff,
  then prove the one fact it's safe because of by running code, with a
  control that shows the proof can fail. pstack's references to its own
  why/arena/unslop skills become gh and git history, /code-review and
  the codex agent, and the house voice. It adds where grep stops here:
  content-addressed /a/ and /i/ bytes, derived files, KV and D1 shapes an
  older deploy wrote, the public JSON and MCP surfaces, and the Workers
  Free caps. The license ships beside it.
- The Workers Issues routine let a "small and confident" fix become a
  draft PR from the stack trace alone. Step 5 now follows benny's rule:
  no reproduction, no fix. The draft needs a contract test that fails
  with the same error at the same frame through the real code, twice,
  without stubbing the function that threw, and the test ships with the
  fix. It also checks open PRs first so it never writes over another fix.
- contract-workers-issues-become-one-github-issue pins the gate's four
  phrases. None of them appear in main's prompt, so each assertion fails
  there.

The routine runs the prompt saved at claude.ai/code/routines, so this
change reaches it only once the new text is pasted in.
@github-actions

Copy link
Copy Markdown
Contributor

Wire-size diff vs merge base

7632f479c026b7ea79f4a094abc0148dca4df087 → 110a9abf9bd6b01d961100693f804cd297ca801a

Brotli q11, the quality the edge serves. Every number here is deterministic:
an unchanged file produces no row. Advisory — this check fails on nothing.

Client assets

No change. 39 files, 200.41 KiB Brotli total.

Pages

No change. 74 files, 659.03 KiB Brotli total.

Worker bundle

No change. 282.85 KiB gzip.

Dictionary transport

Family dictionary acquisition: no change, 14.50 KiB q11.

pd/: no change. 284 deltas, 442.32 KiB total.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
aadhar-sh bd5b13a Commit Preview URL

Branch Preview URL
Oct 14 2026, 06:20 AM

@oddharsh oddharsh closed this Oct 17, 2026
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