docs(sdd): correct WU3b estimate after WU3a's realized diff

This commit is contained in:
2026-07-28 21:44:05 +02:00
parent bd2b7d8e02
commit 48ece948ff
+16 -4
View File
@@ -38,8 +38,8 @@
|----|--------|-----------|---------------------|-------------|-----------|
| 1 | `feat(tokens): add design tokens, type scale, push scaffold, and root nav state` | — | 220-330 | Low | No |
| 2 | `test(auto): confirm Android Auto tree matches the redesign, no code changes` | — | 0 | None | No |
| 3a | `refactor(ajustes): split Settings AUDIO/EMISORAS into pushed detail screens` | 1 | **800-1000** | High | **Yes — move-only diff** |
| 3b | `refactor(ajustes): split remaining Settings sections into pushed screens` | 3a | **500-700**\* | Medium-High | **Yes — move-only diff** |
| 3a | `refactor(ajustes): split Settings AUDIO/EMISORAS into pushed detail screens` | 1 | ~~800-1000~~**REALIZED: 4,374** (2,760+ / 1,614-, 35 files) | High | **Yes — move-only diff** |
| 3b | `refactor(ajustes): split remaining Settings sections into pushed screens` | 3a | **~2,500-3,200**\* | Medium-High | **Yes — move-only diff** |
| 4 | `feat(favoritos): replace stacked group panels with chip-filtered reorderable list` | 1 | 300-400 | Medium | Monitor |
| 5 | `feat(escuchar): replace discovery browser with embedded player and favorites grid` | 1, 4 | 350-450 | Medium | Monitor |
| 6 | `feat(buscar): add discovery landing state, filter pills, counter, and sort` | 5 | 350-500 | Medium-High | Monitor |
@@ -55,8 +55,20 @@
| 17 | `feat(bienvenida): add monetization-free welcome screen` | 1 | 150-200 | Low | No |
| 18 | `feat(i18n): add redesign strings and translate Escuchar rename to 11 locales` | all | ~0 eng. / 400-600 data | Medium (data volume, low logic risk) | No |
\* Not an explicit design-stated figure — derived pro-rata from WU3a's verified 800-1000/7-sections ratio, scaled to
WU3b's 5 sections (no new shared widget file needed there, since `fila_ajuste.dart` already exists from WU3a).
\* **Re-derived after WU3a landed.** The original 500-700 figure was scaled pro-rata from WU3a's *estimate*, which
turned out to be wrong by roughly 4x — so the old WU3b number inherited the same error and has been replaced.
WU3a's realized diff was **4,374 changed lines across 35 files** against an 800-1000 estimate. The gap was not
scope creep; the estimate simply never counted (a) the 7 matching new test files strict TDD requires, or (b) the
13 regenerated `lib/l10n/gen/app_localizations*.dart` files that any ARB edit forces. `lib/` alone, excluding
generated l10n, was 1,474+ / 1,214-, and the root shed 1,320 lines — so the "move-only" characterisation held; only
the arithmetic was wrong.
WU3b moves 5 sections rather than 7 and needs no new shared widget (`fila_ajuste.dart` already exists), hence
~2,500-3,200. **Estimating lesson for every remaining work unit: a strict-TDD commit carries its test files, and any
ARB touch drags 13 generated files with it. Estimates that count only `lib/` production code will read ~3-4x low.**
**Root line count, for reference**: `pantalla_ajustes.dart` went 1,897 → **788** in WU3a. The "under 400 lines"
success criterion is the WU3a+WU3b **combined** end state, not WU3a alone — WU3a owns only 7 of the 12 detail
screens. WU3b must take the remaining ~388 lines out.
† Record `size:exception` at apply time only if the realized diff exceeds ~500 lines; justification: "largest single
alarm-card + hero + vacation-summary restyle, not divisible without breaking the one-commit-per-work-unit rule."
‡ The proposal already isolates WU10 as "its own PR, never bundled" — splitting further would leave an unintegrated