84 lines
4.3 KiB
Markdown
84 lines
4.3 KiB
Markdown
# Claude QA Report — Privacy: Period Tracker
|
|
|
|
```
|
|
Status: Current
|
|
Owner: _null
|
|
Last reviewed: 2026-08-18
|
|
Governs: the QA verdict — build SHAs, round summaries, the overall judgment
|
|
Review trigger: Any QA round run
|
|
```
|
|
|
|
> The QA verdict. Companion to [`ClaudeQACoverage.md`](ClaudeQACoverage.md)
|
|
> (what each pass reached) and [`ClaudeQAPlan.md`](ClaudeQAPlan.md) (the
|
|
> playbook).
|
|
>
|
|
> **Defects are issues, not entries here.** A defect found in a round is filed
|
|
> in the tracker with a severity label, where it can be assigned, closed by a
|
|
> commit, and counted. This file keeps the part a tracker is bad at: a judgment
|
|
> about whether the thing is fit to ship.
|
|
|
|
## Current run-state
|
|
|
|
- **Last QA round:** Round 4 — 2026-08-18, partial (A and B pass; C, D, E, F, G and H partial)
|
|
- **Last verified build SHA:** `f43e1c2`
|
|
- **Last tested device / environment:** emulator `PeriodMinSdk26`, API 26, Pixel 6 profile, debug build, at font scales 1.0, 1.3 and 2.0
|
|
- **Overall status:** Five of eight batches are done and Batch 06 has begun:
|
|
Settings is now the screen §36 describes, and Delete My Data is reachable,
|
|
confirmed and irreversible. The app has run at its minimum Android version and
|
|
at the largest accessibility font scale, and both found defects that had been
|
|
shipping unnoticed — a navigation bar that wrapped its labels mid-word, and a
|
|
privacy option whose label was not clickable at all, so the control deciding
|
|
what a lock screen shows could only be changed by hitting the radio button
|
|
exactly. Both are fixed. The pattern is now four rounds old and unchanged:
|
|
**every defect of consequence in this project has been found by a person using
|
|
the app, and none by a test.** The tests are what stop them coming back. The
|
|
standing gaps are the same shape — nobody has yet looked at an actual locked
|
|
screen, and TalkBack has still never been run, which is now the single most
|
|
valuable unspent hour.
|
|
|
|
## Open defects
|
|
|
|
**Do not list them here, and do not read a defect count out of this file.** The
|
|
Command Center's docs report parses this document for open `P0` / `P1` / `P2`
|
|
counts, and under this convention they are always zero — the defects are in the
|
|
tracker, which is the whole point. The zeros here mean *this file does not hold
|
|
them*, never *there are none*.
|
|
|
|
Filed as issues in this repository's tracker, labelled by what they cost:
|
|
|
|
- **P0** — ships broken, or loses data
|
|
- **P1** — materially wrong, but shippable
|
|
- **P2** — cosmetic or low impact
|
|
- **release-blocker** — a release built today would be *wrong*, not merely
|
|
incomplete
|
|
|
|
Severity is what it costs, not how annoying it is to fix. Every defect needs the
|
|
build SHA it was found at — a finding that cannot be re-tested cannot be closed
|
|
— so put it in the issue body.
|
|
|
|
## Round notes
|
|
|
|
One entry per round, the verdict only. What each pass reached, and what it could
|
|
not, lives in [`ClaudeQACoverage.md`](ClaudeQACoverage.md) and is deliberately
|
|
not repeated here.
|
|
|
|
- **Round 4 — 2026-08-18 at `f43e1c2`, partial.** Batch 06 began, and driving
|
|
it found two defects in controls that already looked finished: navigation
|
|
labels wrapping mid-word at font scale 2.0, and a privacy option whose row was
|
|
inert because only its radio button was clickable. Verdict: the privacy
|
|
controls now behave as their own dialog promises — checked by setting a
|
|
preference, deleting all data, and confirming the preference survived.
|
|
- **Round 3 — 2026-08-18 at `0451fbe`, partial.** Fertility and reminders landed
|
|
and pass F became runnable for the first time. Verdict: fit to keep building,
|
|
not fit to ship — the privacy promise is proved against the notification
|
|
object and never against a locked screen. Two defects, both in how Android
|
|
behaves rather than in the app's logic, and both found by running on a device.
|
|
- **Round 2 — 2026-08-18 at `19edf4c`, partial.** Every screen Batch 03 built
|
|
was driven by hand. Verdict: the product became coherent, and three defects
|
|
surfaced that no unit test would have caught — one of them dark mode, broken
|
|
since Batch 01.
|
|
- **Round 1 — 2026-08-18 at `adc5075`, partial.** Two passes were all the first
|
|
build could support. Verdict: sound enough to keep going, and the first thing
|
|
tried by hand crashed the app with 70 unit tests green — which is the argument
|
|
for driving it at all.
|