You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I searched open and closed issues and did not find a report of this problem.
I reviewed this report and removed credentials, tokens, private paths, hostnames, and other sensitive data, including from logs and screenshots.
Problem
The 400-changed-line review budget that protects reviewer focus is enforced only as prose: nothing measures the diff before PR creation, so PRs created through the default ODD workflow routinely exceed it without asking for a chain strategy or an accepted size:exception. This became much more frequent after ODD became the default workflow: in Gentleman-Programming/engram, 16 of my ~30 PRs since 2026-09-05 exceeded 400 changed lines (additions + deletions), several by a wide margin (examples: #1144 +4692/-3, #1107 +2883/-8, #1164 +2408/-117, #1252 +2102/-22, #1298 +1005/-54). None of them surfaced a pre-PR size decision.
Root-cause chain (references are repo-relative):
skills/chained-pr/SKILL.md has the right hard rule — "Split PRs over 400 changed lines unless a maintainer explicitly accepts size:exception" — but it is advisory: activation requires the agent to estimate the size first. The ODD activation trigger ("an ODD feature's forecast or running authored changed-line count from work-unit commits exceeds about 400") was added only in d1c0067 (2026-09-17); before that, plain ODD sessions had no trigger condition that loads the skill, and ODD produces no size forecast artifact (unlike SDD's Review Workload Forecast in tasks.md).
assets/orchestrator-delegation.md (657e532, 2026-09-15) explicitly downgrades the number: about 400 authored changed lines per ODD task is "a planning heuristic ... not a task acceptance criterion, hard cap, counter-trigger, automatic stop, forced split, or RDD trigger". Combined with the per-task framing, multi-task ODD features legitimately accumulate far past 400 at PR level, with no PR-total check anywhere in the flow.
skills/branch-pr/SKILL.md governs PR creation (issue linkage, branch naming, template) and contains no size check at all.
gentle-ai already documents the underlying gap: internal/cli/review_assess.go states "the ~400-line ODD slice rule was prose only, and it was skipped in practice", which motivated review assess. But assess runs per work-unit commit and its slice_budget_reached consequence is deeper review (full-4R via reviewtransaction.LargeChangeLines = 400, a "review-composition boundary, not a tier input"), never a pre-PR human decision.
Run the default ODD workflow on a multi-task feature in a contributor repository (observed in Gentleman-Programming/engram), implementing with per-task work-unit commits.
Ask the agent to open the PR (the branch-pr path).
Observe: no diff size is measured, chained-pr is not loaded, no chain-strategy/size:exception question is asked, and the PR lands over 400 changed lines.
The first size-related signal arrives only later, if native review runs at all: routing selects full-4R for the oversized candidate.
Expected and actual behavior
Expected: before creating a PR whose diff exceeds 400 changed lines, the workflow stops and asks for a decision (chain strategy or an explicitly accepted size:exception), per chained-pr's Hard Rules and Decision Gates.
Actual: PRs of 423–4695 changed lines are created silently; size only affects review depth after the fact.
Suggested direction: make the gate mechanical rather than more prose — e.g. a branch-pr step 0 that runs git diff --shortstat <base>...HEAD and stops to ask when the total exceeds the budget, re-checked on subsequent pushes of the same PR; the existing review assess changed-line counter could provide the measurement seam.
gentle-pi version
Running from source: gentle-shell commit 5454832 (main, after 3.3.0); gentle-ai dev binary 3.4.1-0.20260920091001-f0782af2803a.
Before submitting
Problem
The 400-changed-line review budget that protects reviewer focus is enforced only as prose: nothing measures the diff before PR creation, so PRs created through the default ODD workflow routinely exceed it without asking for a chain strategy or an accepted
size:exception. This became much more frequent after ODD became the default workflow: in Gentleman-Programming/engram, 16 of my ~30 PRs since 2026-09-05 exceeded 400 changed lines (additions + deletions), several by a wide margin (examples: #1144 +4692/-3, #1107 +2883/-8, #1164 +2408/-117, #1252 +2102/-22, #1298 +1005/-54). None of them surfaced a pre-PR size decision.Root-cause chain (references are repo-relative):
skills/chained-pr/SKILL.mdhas the right hard rule — "Split PRs over 400 changed lines unless a maintainer explicitly acceptssize:exception" — but it is advisory: activation requires the agent to estimate the size first. The ODD activation trigger ("an ODD feature's forecast or running authored changed-line count from work-unit commits exceeds about 400") was added only in d1c0067 (2026-09-17); before that, plain ODD sessions had no trigger condition that loads the skill, and ODD produces no size forecast artifact (unlike SDD'sReview Workload Forecastin tasks.md).assets/orchestrator-delegation.md(657e532, 2026-09-15) explicitly downgrades the number: about 400 authored changed lines per ODD task is "a planning heuristic ... not a task acceptance criterion, hard cap, counter-trigger, automatic stop, forced split, or RDD trigger". Combined with the per-task framing, multi-task ODD features legitimately accumulate far past 400 at PR level, with no PR-total check anywhere in the flow.skills/branch-pr/SKILL.mdgoverns PR creation (issue linkage, branch naming, template) and contains no size check at all.internal/cli/review_assess.gostates "the ~400-line ODD slice rule was prose only, and it was skipped in practice", which motivatedreview assess. But assess runs per work-unit commit and itsslice_budget_reachedconsequence is deeper review (full-4R viareviewtransaction.LargeChangeLines = 400, a "review-composition boundary, not a tier input"), never a pre-PR human decision.Steps to reproduce
size:exceptionquestion is asked, and the PR lands over 400 changed lines.Expected and actual behavior
Expected: before creating a PR whose diff exceeds 400 changed lines, the workflow stops and asks for a decision (chain strategy or an explicitly accepted
size:exception), per chained-pr's Hard Rules and Decision Gates.Actual: PRs of 423–4695 changed lines are created silently; size only affects review depth after the fact.
Suggested direction: make the gate mechanical rather than more prose — e.g. a branch-pr step 0 that runs
git diff --shortstat <base>...HEADand stops to ask when the total exceeds the budget, re-checked on subsequent pushes of the same PR; the existingreview assesschanged-line counter could provide the measurement seam.gentle-pi version
Running from source: gentle-shell commit 5454832 (main, after 3.3.0); gentle-ai dev binary 3.4.1-0.20260920091001-f0782af2803a.
Pi version
0.86.1
Operating system
Linux
Relevant logs or error output (optional)
No response