LearnNewsExamplesServices
Frontmatter
id15308
titleThe review byte gate has no mechanical guard — dev is already over it
stateOpen
labels
enhancementdeveloper-experienceai
assigneesneo-opus-grace
createdAtJul 16, 2026, 10:50 PM
updatedAtJul 16, 2026, 10:50 PM
githubUrlhttps://github.com/neomjs/neo/issues/15308
authorneo-opus-grace
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]

The review byte gate has no mechanical guard — dev is already over it

Open Backlog/active-chunk-6 enhancementdeveloper-experienceai
neo-opus-grace
neo-opus-grace commented on Jul 16, 2026, 10:50 PM

Problem

#15257 set a merge-eligibility byte gate: combined review-cost-circuit-breaker.md + pr-review-guide.md < 41,357 B. It is an acceptance criterion on one PR and nothing else. Nothing enforces it.

dev is in breach of it right now, and nobody noticed:

surface circuit-breaker guide combined
baseline when the gate was set 4,506 36,851 41,357 ← the gate
dev today 4,506 36,986 41,492135 B over
PR #15307's head 2,207 36,544 38,751 ← passes, 2,606 B headroom

The guide drifted +135 B after the baseline was measured, silently, and put dev past its own boundary. #15307 happens to bring it back under — but nothing stops the next guide edit from re-breaching it, and the next drift will be exactly as invisible as the one that already happened.

Why this is worth machinery

#15257's whole thesis is that voluntary discipline fails under load, and that the fix is a deterministic refusal rather than a documented norm — that is precisely why state-(b) ("semantic blocker, converging") had to be deleted by name: it was a subjective escape that "authorized the loop it was meant to cap."

Leaving that ticket's one measurable boundary as a voluntary per-PR check reproduces the same shape one layer up. The +135 B drift is the proof: the honour system already lost once, quietly.

Verified there is no existing guard: agent-pr-review-body-lint.yml lints review body structure (micro-delta anchors), not file sizes; 41357 appears nowhere in code or CI (git grep '41357' -- ':!*.md' → only coincidental digits in apps/devindex/resources/data/users.jsonl).

Acceptance Criteria

  • CI fails when .agents/skills/pr-review/audits/review-cost-circuit-breaker.md + .agents/skills/pr-review/references/pr-review-guide.md combined exceed the gate — measured in bytes, reported as actual / limit / headroom so a near-miss is visible before it is a breach.
  • The limit lives in one named place, cited by the guide rather than duplicated into it — a second copy of the number is a duplicated primitive that drifts (the failure this ticket is about).
  • Red-then-green: the check fails against a deliberately over-budget fixture and passes at current head. A guard that cannot be shown failing is not a guard.
  • The dev breach is resolved — either by #15307 merging (which lands 38,751 B) or, if that changes, by an explicit re-baseline with the new number recorded and justified.
  • Decide the boundary's scope explicitly: is the gate about these two files or about the pr-review skill's loaded surface? If the latter, SKILL.md belongs in the sum and the number changes. Do not widen it silently.

Out of scope

  • Re-baselining the gate upward to accommodate drift. That inverts the point. If the limit is wrong, that is a decision with a rationale, not a CI edit.
  • A general loaded-surface budget across all skills. Real, and much larger; this ticket only guards the boundary #15257 already set.

Evidence

  • git show origin/dev:.agents/skills/pr-review/references/pr-review-guide.md | wc -c36,986 (baseline 36,851).
  • git show 38018bb539ce:… → circuit-breaker 2,207 + guide 36,544 = 38,751.
  • #15257 AC: "Merge-eligibility byte gate: the combined two-file boundary is < 41,357 B after the replacement."
  • PR #15307 review (approved): the measurement table + this finding.

Provenance

Surfaced while reviewing #15307 as the cross-family gate. I measured the wrong pair first (SKILL.md + guide, a comfortable pass) before reading #15257's AC and finding it names circuit-breaker + guide — both surfaces were green, which is exactly why the gate needs a machine that knows which two files it means.

Related: #15257 (set the gate) · PR #15307 (passes it, and is why the drift became visible)