feat(spec): size demoable units to a review-sized floor (ADR 0026)#273
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
🚧 Files skipped from review as they are similar to previous changes (2)
📝 WalkthroughSummary by CodeRabbitRelease Notes
WalkthroughIntroduces a new ChangesDemoable-unit sizing floor
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related issues
Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
decisions/0022-triage-task-sizing.md (1)
51-61:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winBring ADR 0022’s default up to 400 everywhere.
The amendment note says 400, but these sections still document
SDD_TRIAGE_MIN_TASKas 300. That leaves the ADR internally contradictory and out of sync with the updated sizing docs.♻️ Proposed fix
- (default `300`) + (default `400`) ... - passes empty and the agent falls back to 300. + passes empty and the agent falls back to 400. ... - `docs/sdd/install.md` documents `SDD_TRIAGE_MIN_TASK` (default `300`). + `docs/sdd/install.md` documents `SDD_TRIAGE_MIN_TASK` (default `400`). ... - bundles at the 300-line default + bundles at the 400-line defaultAlso applies to: 88-101
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@decisions/0022-triage-task-sizing.md` around lines 51 - 61, The ADR 0022 document has an internal inconsistency where the default value for SDD_TRIAGE_MIN_TASK is documented as 300 in multiple locations, but the amendment note specifies it should be 400. Update all references to the SDD_TRIAGE_MIN_TASK default value in the document from 300 to 400. This includes the explanation at decisions/0022-triage-task-sizing.md lines 51-61 (anchor location) and the related section at lines 88-101 (sibling location) to ensure the ADR is internally consistent and aligned with the updated sizing documentation.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@decisions/0022-triage-task-sizing.md`:
- Around line 51-61: The ADR 0022 document has an internal inconsistency where
the default value for SDD_TRIAGE_MIN_TASK is documented as 300 in multiple
locations, but the amendment note specifies it should be 400. Update all
references to the SDD_TRIAGE_MIN_TASK default value in the document from 300 to
400. This includes the explanation at decisions/0022-triage-task-sizing.md lines
51-61 (anchor location) and the related section at lines 88-101 (sibling
location) to ensure the ADR is internally consistent and aligned with the
updated sizing documentation.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 09593850-3e96-43f3-ae8b-4f80a1d284fa
📒 Files selected for processing (10)
.github/workflows/sdd-spec.lock.yml.github/workflows/sdd-spec.md.github/workflows/sdd-triage.lock.yml.github/workflows/sdd-triage.md.gitignoredecisions/0022-triage-task-sizing.mddecisions/0026-demoable-unit-sizing.mddocs/sdd/install.mdshared/sdd-gates.mdwrappers/sdd-spec.yml
Implements Levers 1 and 3 of #272 — the spec/config-level batch to produce fewer, larger sub-issues. Lever 2 (collapse single-task Units) and Lever 4 (soften fastpath gates) stay as sequenced follow-ups. Lever 1 — unit lower bound in sdd-spec: - step 5 states a ~400 net-line demoable-unit target and a unit-cohesion rule symmetric to ADR 0022's task rule (fold two prospective units when their implementation file sets overlap or they form a produce/consume chain, unless a dependency forces them apart) - new SDD_SPEC_MIN_UNIT floor (default 400), wired through a min_unit workflow_call input on the spec lock; the sdd-spec wrapper maps vars.SDD_SPEC_MIN_UNIT, the prompt reads inputs.min_unit; blank -> 400, 0 disables - spec gate 5 in shared/sdd-gates.md flags an under-sized unit as a Warning (advisory), symmetric to triage gate 5 Lever 3 — retune the task floor: - SDD_TRIAGE_MIN_TASK default raised 300 -> 400 so the unit grain and task grain target the same review size; ADR 0022 carries a forward-link amendment note New ADR 0026 documents both. docs/sdd/install.md gains the SDD_SPEC_MIN_UNIT row and the retuned default. sdd-spec and sdd-triage locks recompiled (gh-aw v0.77.5). sdd-validate.lock is unchanged here: it imports shared/sdd-gates.md@main, so gate 5 lands in that lock post-merge via recompile-locks. Root cause and full lever analysis: #272. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
952e4c2 to
4120736
Compare
# Conflicts: # .github/workflows/sdd-spec.lock.yml # .github/workflows/sdd-triage.lock.yml
Implements Levers 1 and 3 of #272 — the spec/config-level batch that produces fewer, larger sub-issues. Levers 2 and 4 stay as sequenced follow-ups per that issue (Lever 2 touches the Feature→Unit→task walkers; Lever 4 needs its own ADR).
Problem
sdd-spechad no lower bound on demoable-unit size — step 5 said only "split as the work naturally falls" — so units landed at ~100 net lines where an engineer's natural PR is ~500. Sub-issue count is2 + N Units + M tasks; small units inflate N directly and M downstream (sdd-triagedecomposes per unit). ADR 0022 only folded tasks within a Unit, a layer below where the over-decomposition originates.Lever 1 — unit lower bound in
sdd-specSDD_SPEC_MIN_UNITfloor (default 400), wired through amin_unitworkflow_callinput exactly asSDD_TRIAGE_MIN_TASKflows today:wrappers/sdd-spec.ymlmapsvars.SDD_SPEC_MIN_UNIT→ the prompt reads${{ inputs.min_unit }}; blank → 400,0disables.shared/sdd-gates.md): an under-sized unit is a Warning (advisory), symmetric to triage gate 5.Lever 3 — retune the task floor
SDD_TRIAGE_MIN_TASKdefault raised 300 → 400 so the unit grain and task grain target the same review size. ADR 0022 carries a forward-link amendment note; its cohesion mechanism is unchanged.Files
.github/workflows/sdd-spec.md—min_unitinput + step-5 sizing block.github/workflows/sdd-triage.md— task-floor fallback 300 → 400wrappers/sdd-spec.yml— mapvars.SDD_SPEC_MIN_UNIT→min_unitshared/sdd-gates.md— spec gate 5decisions/0026-demoable-unit-sizing.md— new ADRdecisions/0022-triage-task-sizing.md— forward-link amendment notedocs/sdd/install.md—SDD_SPEC_MIN_UNITrow + retuned default.github/workflows/sdd-spec.lock.yml,sdd-triage.lock.yml— recompiled (gh-aw v0.77.5)Lock note
sdd-validate.lock.ymlis intentionally not in this PR. It importsshared/sdd-gates.md@main, so a PR-branch compile resolves the pre-gate-5 remote fragment and produces no drift (the lint compile check passes). Gate 5 lands in that lock post-merge whenrecompile-locksregenerates it from the merged@mainfragment.Acceptance
gh aw compile→ 0 errors, 0 warnings; lint lock-drift check passes (onlysdd-spec/sdd-triagelocks change, both committed)sdd-specstep 5 states the ~400 target + cohesion rule;min_unitflows wrapper → input → prompt; blank → 400,0disablesSDD_TRIAGE_MIN_TASKdefault is 400 in prompt, ADR, and install docsScope
Addresses N (unit count) and the task floor. The structural M reduction — collapsing the single-task Unit grouping sub-issue — is Lever 2 in #272, deferred because it touches
sdd-execute,sdd-cycle-detect, andsdd-validategate 1.Closes none — #272 stays open for Levers 2 and 4.
🤖 Generated with Claude Code