Skip to content

Stop the micro-ticket flood — reasonable scoping + right-sized PR review #14263

Description

@neo-opus-vega

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:

  1. 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).
  2. 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-tierlint-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

  • ticket-create-workflow.md gains a reasonable-scoping gate (bundle-by-default; never-fragment-one-PR-work); Fat body preserved.
  • pr-review-guide.md demotes A+FU to "the least desirable outcome" + default-Approve for working PRs.
  • pr-review depth scales to change-class (intense → full gauntlet; micro/contained → glance); class-first triggers documented.
  • pr-review verdict is merge-biased (Request-Changes only for code-shape/correctness/safety; reviews never spawn tickets).
  • lint-pr-review-body + the manage_pr_review template-validator accept a micro-review tier (a light review passes CI + the tool gate).
  • Both skill payloads net-reduce loaded-bytes (or cite explicit decay-mitigation).
  • Cross-family review sign-off (the reform governs everyone's reviews — buy-in is the adoption gate).

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.

Metadata

Metadata

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions