docs(android): M12 phase 8 as landed, and the two defects AC-5 found
Phase 8 was scoped as docs, coverage and the cutover. The AC-5 walk turned it into a phase with code in it, which is the outcome the walk existed to produce - so the record is longer than a phase-8 note would normally be. THEMING_AND_NAV.md gains "Phase 8 as landed": what the walk confirmed, the two defects it found and why they are phase 2's trap repeating, the role sweep that says which Material roles are still unmapped and which of them have a reader, the coverage-glob narrowing, and the adb-reverse rig note for the next walk. The phase 2 note is amended where it claimed the card shadow was the milestone's only visible change to an untouched instance - it is now one of three, and the third (an untouched instance drawing a hero, because brand.hero carries the env default) is a correction to the record with no code behind it. PLAN.md's M12 entry stopped at phase 2; it now runs through 6, records phase 8 including the defects, and drops the same "one deliberate change" claim. COVERAGE_PLAN.md gains an amendment section explaining why the ui/theme/** directory glob became wrong the moment M12 put three pure resolvers behind it, and the general rule it suggests: prefer file globs to directory globs once a directory is mixed. Its own §5 already forbade excluding testable code. Pairs with Android-app phase 8. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1048,9 +1048,42 @@ push, and Play (M6–M8) follow the designed app.
|
||||
the shipped palette reproduces the pre-M12 `ColorScheme` role for role. **Phase 2 landed
|
||||
2026-08-08** (Android-app#35 / docs#114): the four radii scale the app's own dp by their ratio
|
||||
to the `runic-gateway` baseline, and `--shadow-card` maps onto card elevation. The shadow is
|
||||
the milestone's **one deliberate change to an untouched instance** — the app has been flat
|
||||
since M5 while the preset it was drawn from selects a shadow — and is why every `Card(` became
|
||||
a `ShardCard(`: Material takes elevation as a default argument, not from the theme.
|
||||
a **deliberate change to an untouched instance** — the app has been flat since M5 while the
|
||||
preset it was drawn from selects a shadow — and is why every `Card(` became a `ShardCard(`:
|
||||
Material takes elevation as a default argument, not from the theme. **Phase 3 landed
|
||||
2026-08-08** (Android-app#36 / docs#115): seven bundled families beside Cinzel, resolved from
|
||||
the stacks the theme publishes. It **nearly tripled the APK** — 4.80 → 12.94 MiB against a
|
||||
drafted 1.5–2.5 MB estimate, with Merriweather alone 6.08 MiB of the growth because upstream
|
||||
ships it as a barely-compressible three-axis variable font; verbatim bundling was chosen with
|
||||
the cheaper options costed and declined. **Phase 4 landed 2026-08-08** (Android-app#37 /
|
||||
docs#116): logo in the drawer header and top bar, hero on Home, no new dependency and no APK
|
||||
cost. **Phase 5 landed 2026-08-08** (Android-app#38 / docs#117): the public nav's label, order
|
||||
and hiding, keyed by the path→route table — whose sort keys must be indices into the
|
||||
*website's* sixteen-row nav, not the app's nine. **Phase 6 landed 2026-08-08**
|
||||
(Android-app#39 / docs#118): the drawer gains admin-authored sections and added links, a link
|
||||
the app can open natively doing so and one it cannot handing off to a Custom Tab.
|
||||
|
||||
**Phase 8 landed 2026-08-08** (Android-app#40 / docs#119) and did more than its name. Scoped
|
||||
as docs, coverage and the cutover, its **AC-5 on-device walk** — two AVD passes against a local
|
||||
website, the themed one at every role rung — confirmed everything phases 1–6 had deferred to it
|
||||
(including that a Custom Tab really opens, checked in `dumpsys`, and that an anonymous caller
|
||||
sees the reordered, sectioned nav with no player or staff row leaking) **and found two theming
|
||||
defects that 476 passing tests could not see**:
|
||||
|
||||
- every `ShardCard` — 26 sites in 20 files — drew in Material's grey rather than the shard's
|
||||
panel colour, because `CardDefaults.cardColors()` takes its container from
|
||||
`surfaceContainerHighest` and the mapping had `surfaceContainer`, `…High` and `…Low` but not
|
||||
`…Highest`; and
|
||||
- the drawer's selected row ignored `--radius-pill`, because `NavigationDrawerItem` takes
|
||||
`shape` as a default argument.
|
||||
|
||||
Both are **phase 2's trap repeating**: Material takes these as default arguments, not from the
|
||||
theme. Phase 2 found it for depth and swept the call sites; nobody asked whether colour and
|
||||
shape had the same problem. The card fix also **changes the untouched app** — those grey cards
|
||||
predate M12 and go back to M5 — so the milestone ships two deliberate changes to a shard that
|
||||
has set nothing, the shadow and the card container, with AC-1 rewritten to record the second
|
||||
rather than absorb it. Phase 8 also narrowed a stale `ui/theme/**` Sonar coverage glob that was
|
||||
discarding three 98–100%-covered resolvers. **477 tests green.**
|
||||
|
||||
### Deferred (not a milestone)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user