Context
Operator-directed friction→gold (2026-06-27, v13.1 convergence). V-B-A'd the last 30 v13.1 PRs: 36% are micro (≤75 churn), 83% are ≤250 lines, ~0% are the 1k-line architecture class the review gauntlet was built for. The turn-document de-dup (#14079/#14193) shipped as ~8 stacked slices (#14202/#14207/#14210/#14211/#14218…); the #14132 cutover and #14130 gatherer fragmented the same way; #14228 was split into #14254/#14256. 112 post-epic tickets ≈ ~25 real units atomized into slivers. Each coherent change then pays the per-unit tax N times: a Fat ticket + a 7-minute full CI run + a heavyweight mandatory review + the "Approve + Follow-Up" iteration loop.
Over-fragmentation × per-unit overhead is the single biggest velocity drag on v13.1.
The Problem
Two compounding, process-substrate faults:
ticket-create over-fragments. No reasonable-scoping gate exists — coherent one-PR work gets atomized into 3–8 micro tickets, each carrying the full tax. The fault is the ticket count, not the body (Fat bodies are load-bearing — see Out of Scope).
pr-review is mis-scaled and theater-biased. The Depth Floor (Minimum-One-Challenge), the 7 scored metrics, and the full audit gauntlet apply uniformly — to a stream that is ~0% the intense-architecture class they target. The theater is mechanically enforced: lint-pr-review-body (CI) + the manage_pr_review template-validator reject any review missing the heavy template (it bounced a review this session for a missing heading), so a reviewer cannot approve-light a trivially-correct micro PR. And "Approve + Follow-Up" ("Approve, and f*** you") launders do-more-work + iterate as approval — spawning a fat follow-up ticket → a new lane → CI → ~3 nitpick cycles → another A+FU. The reviews are themselves an unbounded-growth + derailment engine.
Root: friction→gold has run add-only on both skills (50+ review-skill iterations produced the wrong incentives); the Substrate-Accretion-Defense (net-reduce-or-sunset) exists in AGENTS.md but isn't enforced on skills/validators.
The Architectural Reality
.agents/skills/ticket-create/references/ticket-create-workflow.md — §2 six-stage chain has no scoping/bundling gate; §5 Fat-body mandate (KEEP — load-bearing).
.agents/skills/pr-review/references/pr-review-guide.md — §7.1 Depth Floor, §3 seven metrics, §5.3/§5.4 audits, §9 verdict ladder (A+FU as a normal verdict).
.agents/skills/pr-review/assets/pr-review-template.md — the enforced template shape.
- The validators:
lint-pr-review-body (CI) + the manage_pr_review template-check — the mechanical enforcement that must gain a micro-tier.
The Fix
ticket-create — add a REASONABLE-SCOPING gate (the only change; Fat body untouched):
- Bundle by default; never decompose work that lands in a single PR.
- A split must replace scope, not add net scope.
- The unit is a coherent change worth its CI + review — not a 50-line process-slice.
pr-review — four net-reducing changes:
- A+FU demoted — the guide states it is the least desirable outcome; the default for a working PR is Approve.
- Blast-scaled depth — the Depth Floor + metrics + audit gauntlet apply only to intense changes (touches an ADR / new subsystem / consumed contract / security / migration, or large). Micro/contained PRs get a premise + correctness glance. Class-first, size-second (no gaming a 1k diff as "mechanical").
- Merge-biased verdict — Request Changes only for code-shape / correctness / safety. No manufactured nits; reviews never spawn tickets (a finding → inline-fix / comment / same-PR AC).
- Validator micro-tier —
lint-pr-review-body + the manage_pr_review template-check accept a light micro-review shape, or the machine keeps enforcing the theater regardless of prose.
Both skill payloads net-reduce (Substrate-Accretion-Defense).
Acceptance Criteria
Out of Scope
- Dropping or lightening Fat ticket bodies — load-bearing for Native Edge Graph ingestion + release-note mining; explicitly NOT touched. The fault is ticket count, not body size.
- The v13.1 self-healing architecture (separate concern; this is process-substrate).
- CI scope-to-change optimization (the
Classify test scope job) — a complementary follow-up lever, noted but not in this ticket.
Avoided Traps
- "Small ticket = small body" — REJECTED: Fat bodies feed graph + release notes; the fault is count, not size.
- "Just tell reviewers to review lighter" — REJECTED: the theater is mechanically enforced by the validators; the fix must change the machine.
- "Cut scope to v13.2 to look bounded" — REJECTED (the half-hearted move): resolve the real work; bound the growth, not the scope.
- "Small PRs are good decomposition" — REJECTED: in our high-per-PR-overhead context, fragmentation multiplies the tax; the unit is a coherent real ticket.
Related
Decision Record impact
none — no ADR amended; aligned-with the AGENTS.md Substrate-Accretion-Defense value. The skill changes target reference payloads + validators (net-reducing → Progressive-Disclosure-compliant by construction).
Origin Session ID
3f32bbc7-1bfe-4f85-9232-c957de0d22f1 (current) · 09af5f18-b64c-417b-be84-8cb3305005d2 (origin)
Retrieval Hint: query_summaries("pr-review A+FU micro-ticket flood reasonable scoping blast-scaled review theater")
Authored by Vega (Claude Opus 4.8, Claude Code) as v13.1 lead/planner.
Context
Operator-directed friction→gold (2026-06-27, v13.1 convergence). V-B-A'd the last 30 v13.1 PRs: 36% are micro (≤75 churn), 83% are ≤250 lines, ~0% are the 1k-line architecture class the review gauntlet was built for. The turn-document de-dup (#14079/#14193) shipped as ~8 stacked slices (#14202/#14207/#14210/#14211/#14218…); the #14132 cutover and #14130 gatherer fragmented the same way; #14228 was split into #14254/#14256. 112 post-epic tickets ≈ ~25 real units atomized into slivers. Each coherent change then pays the per-unit tax N times: a Fat ticket + a 7-minute full CI run + a heavyweight mandatory review + the "Approve + Follow-Up" iteration loop.
Over-fragmentation × per-unit overhead is the single biggest velocity drag on v13.1.
The Problem
Two compounding, process-substrate faults:
ticket-createover-fragments. No reasonable-scoping gate exists — coherent one-PR work gets atomized into 3–8 micro tickets, each carrying the full tax. The fault is the ticket count, not the body (Fat bodies are load-bearing — see Out of Scope).pr-reviewis mis-scaled and theater-biased. The Depth Floor (Minimum-One-Challenge), the 7 scored metrics, and the full audit gauntlet apply uniformly — to a stream that is ~0% the intense-architecture class they target. The theater is mechanically enforced:lint-pr-review-body(CI) + themanage_pr_reviewtemplate-validator reject any review missing the heavy template (it bounced a review this session for a missing heading), so a reviewer cannot approve-light a trivially-correct micro PR. And "Approve + Follow-Up" ("Approve, and f*** you") launders do-more-work + iterate as approval — spawning a fat follow-up ticket → a new lane → CI → ~3 nitpick cycles → another A+FU. The reviews are themselves an unbounded-growth + derailment engine.Root: friction→gold has run add-only on both skills (50+ review-skill iterations produced the wrong incentives); the Substrate-Accretion-Defense (net-reduce-or-sunset) exists in
AGENTS.mdbut isn't enforced on skills/validators.The Architectural Reality
.agents/skills/ticket-create/references/ticket-create-workflow.md— §2 six-stage chain has no scoping/bundling gate; §5 Fat-body mandate (KEEP — load-bearing)..agents/skills/pr-review/references/pr-review-guide.md— §7.1 Depth Floor, §3 seven metrics, §5.3/§5.4 audits, §9 verdict ladder (A+FU as a normal verdict)..agents/skills/pr-review/assets/pr-review-template.md— the enforced template shape.lint-pr-review-body(CI) + themanage_pr_reviewtemplate-check — the mechanical enforcement that must gain a micro-tier.The Fix
ticket-create— add a REASONABLE-SCOPING gate (the only change; Fat body untouched):pr-review— four net-reducing changes:lint-pr-review-body+ themanage_pr_reviewtemplate-check accept a light micro-review shape, or the machine keeps enforcing the theater regardless of prose.Both skill payloads net-reduce (Substrate-Accretion-Defense).
Acceptance Criteria
ticket-create-workflow.mdgains a reasonable-scoping gate (bundle-by-default; never-fragment-one-PR-work); Fat body preserved.pr-review-guide.mddemotes A+FU to "the least desirable outcome" + default-Approve for working PRs.pr-reviewdepth scales to change-class (intense → full gauntlet; micro/contained → glance); class-first triggers documented.pr-reviewverdict is merge-biased (Request-Changes only for code-shape/correctness/safety; reviews never spawn tickets).lint-pr-review-body+ themanage_pr_reviewtemplate-validator accept a micro-review tier (a light review passes CI + the tool gate).Out of Scope
Classify test scopejob) — a complementary follow-up lever, noted but not in this ticket.Avoided Traps
Related
AGENTS.md§self_evolving_systems — Substrate-Accretion-Defense (the antibody this enforces).Decision Record impact
none— no ADR amended; aligned-with theAGENTS.mdSubstrate-Accretion-Defense value. The skill changes target reference payloads + validators (net-reducing → Progressive-Disclosure-compliant by construction).Origin Session ID
3f32bbc7-1bfe-4f85-9232-c957de0d22f1 (current) · 09af5f18-b64c-417b-be84-8cb3305005d2 (origin)
Retrieval Hint:
query_summaries("pr-review A+FU micro-ticket flood reasonable scoping blast-scaled review theater")Authored by Vega (Claude Opus 4.8, Claude Code) as v13.1 lead/planner.