Files
Garry Tanandcapy-ai[bot] c1900088d5 v1.91.272.0 feat(skills): absorb pstack's blast radius, transcript recall, vet-the-number and design-twice as lazy passes (#3500)
* feat(skills): absorb pstack's blast radius, transcript recall, vet-the-number and design-twice as lazy sections

/investigate gains sections/blast-radius.md (the one safety fact, the five-rung
evidence ladder, look where grep stops, confirmed and cleared risks apart) with a
Phase 4 pointer, and the shared-premise red flag before the 3-strike rule.
/context-restore is carved for the first time: on NO_CHECKPOINTS, sections/transcripts.md
mines this workspace's own transcripts (host stores declared in hosts/*.ts and rendered
by TRANSCRIPT_SOURCES / TRANSCRIPT_DISCOVERY), a fixed 7-day window, never another
project's folder, subagents return only findings, redaction before anything leaves,
git and gh verify every artifact, a status-tagged brief. /benchmark is carved for the
first time: sections/vet-the-number.md asks the seven questions before Phase 5 reports
a comparison. /plan-eng-review gains sections/design-twice.md (a second structurally
distinct shape compared on interface depth, the eight design red flags), bound by the
autoplan methodology snapshot alongside review-sections.md.

Ideas from pstack (Lauren Tan, MIT), rewritten in gstack's words; NOTICE.md. Garry,
2026-10-26: "Do it, send". Guards: carve-guards entries and measured lines, eleven
plan-eng-review pins re-measured, periodic carve-section-loading cases for the two new
carves, free tests with a fixture transcript.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix(pstack-c1): fold design-twice into Section 1 of the eng review section, per-host transcript table, fixture and slice-cap repairs

The remote free run reported nine failures in seven files, all from this
branch: four tests encode plan-eng-review's one companion section
(eng-scope-entry-ap, autoplan-methodology-names, plan-review-cases,
review-checklists), so the design-twice pass now lives inside Section 1 of
sections/review-sections.md with the skeleton, manifest and
bin/gstack-autoplan-snapshot.ts back at main; the Codex render of
context-restore named ~/.claude/ through the all-hosts transcript table, so
{{TRANSCRIPT_SOURCES}} renders this host's row only; the transcript fixture
is declared in FREE_FIXTURES; and the two new periodic cases took the census
to 39 slices, so evals-periodic.yml's eval-slices max-parallel goes 38 -> 40.
Pins: 11 plan-eng-review re-pins at +2,896; maxSizeRatio 1.2400 (measured
1.2389); Codex gpt-5.4 overlay 159,588 bytes.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix: pre-landing review fixes

The discovery block takes the none branch from hosts/*.ts's transcripts
declaration instead of a host-name fallthrough, and the resolver header says
where each half lives; the T2 subagent brief frames the transcript as data,
not instructions; the test asserts table/block agreement per host, imports
CAPY_NO_TRANSCRIPTS, and drops the fixture-shape case nothing reads.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* docs: ADDING_A_HOST.md lists the optional transcripts HostConfig field

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

---------

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
2026-10-27 09:59:09 +00:00

2.8 KiB

Blast radius

What a change breaks is rarely inside the diff. Listing the callers is not the job; a symbol search does that in a second. The job is the breakage the search cannot show, and a writeup that sounds right proves nothing either way, so the deliverable is a fact that was run, not a paragraph.

  1. Read the whole change. The diff, every symbol it adds, changes or removes, and what now happens differently, including what the diff does not spell out: a default that moved, an order that changed, a call that is now skipped.
  2. Name the one fact it is safe because of. Most risky-looking changes are safe for a single reason ("this path only ever sees entries that have already expired"). Write that sentence down. If it holds, most of the maybes clear at once, so spend the time here, not on a long list of them.
  3. Look where grep stops. Read the source of the library you call, at the pinned version plus any local patch. Work out when things run: microtask against macrotask, unmount and teardown, an effect that fires twice. Follow what a symbol search misses: the JSON an API returns, a database column, a wire format, another language reading the same bytes, a feature flag, code three hops downstream.
  4. Climb the evidence ladder for each safety fact, as far as is cheap, and say where you stopped:
    1. You said so. Worth nothing on its own.
    2. You pointed at it: a real file:line, or the library's own source.
    3. You walked the failure step by step and it does not reach.
    4. You ran it: a script or test that calls the real code and fails loud if you are wrong. Usually one small file that imports the library the app ships and calls the exact function in question.
    5. You reproduced it in the running app.
  5. Keep confirmed risks and cleared risks apart. A confirmed risk names how it breaks, the file:line, how likely and how costly it is, and the check that would catch it. Cleared risks go in their own list with what you checked. A search that finds nothing is still an answer; never invent a caller or an API.

Report, in this order: what the change does, including the part that is not obvious; the one safety fact, its rung, and the proof or the word "unproven"; confirmed risks; cleared risks; and the cheapest test or reproduction that would catch the real bug, including any script you wrote. Cite real code and strip anything private before the report leaves the machine. Under /ship this is the material for the PR body's ## Blast radius line.