From 614af3564736f505164fb6d8b8802abc223962a1 Mon Sep 17 00:00:00 2001 From: Jason Ross Date: Sat, 22 Aug 2026 23:01:08 -0500 Subject: [PATCH] Hold the corrections themselves to the standard they impose Three defects in the three preceding commits, found on review. A commit set whose subject is stale dates and inferred status cannot carry either. Dates. Both correction blocks were stamped 2026-08-23. The commits are dated 2026-08-22, as is every other date in these two files and the review that produced them -- a day in the future, in the one place a reader checks to see how fresh a correction is. Corrected to the commit date, and the D6 note now carries one too. Coherence. The Status line was changed to say fix status "tracks main, re-checked at 18c53a3" while "Last verified: 2026-08-22, against main at 903b43c" stood two lines below it, unchanged. A reader would take the whole document as anchored to 903b43c -- exactly the failure being corrected. The two anchors now say what each covers and that they move independently: the as-found bodies are frozen at 903b43c, the status is not. Inferred count. "detekt 0, lint clean" was carried over from the old text on the strength of a BUILD SUCCESSFUL, which means "nothing above threshold", not "nothing found" -- and this project deliberately keeps a real lint finding visible (`informational += "UsableSpace"`), so "clean" was wrong as well as unmeasured. Read off the reports instead: detekt.xml has zero elements, lint-results-debug.txt says 0 errors, 0 warnings, 1 hint. Stated that way, which is also the convention the audit's own opening table already uses. README's correction note is tightened from nine lines to six. It sits on the first screen and nothing load-bearing is dropped. Gate green: ktlintCheck, detekt, lintDebug. Co-Authored-By: Claude Opus 5 (1M context) --- README.md | 14 ++++++-------- docs/defect-audit.md | 25 ++++++++++++++----------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 18516d2..7171ff0 100644 --- a/README.md +++ b/README.md @@ -10,15 +10,13 @@ Android 13+ (API 33). Built with Jetpack Compose and Material 3. > green on a physical Pixel 10 Pro XL (API 37) and on local emulators at API 33–36, and > CI runs the instrumented suite at API 33–36 on every pull request. -*Correction (`R18 / #27`): this line used to say the FFmpeg format tests had "been written but not -yet executed on a device". That was true when written and stopped being true at the first device -pass, which nobody came back to update — so the one line a contributor uses to decide whether the -FFmpeg path is trustworthy understated its own evidence. The nine format tests in -`FFmpegEngineTest` were in every one of those runs, all of which came back with zero failures; -they are recorded under "Verified on real API 37 hardware" in +*Correction (`R18 / #27`, 2026-08-22): this line used to say the FFmpeg format tests had "been +written but not yet executed on a device" — true when written, false from the first device pass, +and never updated. `FFmpegEngineTest`'s nine format tests were in every run named above and none +of them failed; the runs are recorded under "Verified on real API 37 hardware" in [`docs/api-37-emulator-crash.md`](docs/api-37-emulator-crash.md) and "The sweep, run" in -[`docs/local-emulator.md`](docs/local-emulator.md). API 37 has no CI row, because that emulator -image is broken, so it stays a manual Pixel check before each release.* +[`docs/local-emulator.md`](docs/local-emulator.md). API 37 has no CI row — that emulator image is +broken — so it stays a manual Pixel check before each release.* ## Licensing at a glance diff --git a/docs/defect-audit.md b/docs/defect-audit.md index b78d4ac..394d46e 100644 --- a/docs/defect-audit.md +++ b/docs/defect-audit.md @@ -2,13 +2,14 @@ **Status:** twelve fixed and merged, one parked, two open, one no-action. Four numbers, because they have to sum to the sixteen entries below and the previous three did not. Fix status is per -entry in the summary table and -tracks `main`, re-checked at `18c53a3`; the entry bodies below describe each defect *as found* and -are deliberately not rewritten as fixes land — this is the record of what was wrong, not a -changelog. +entry in the summary table and tracks `main`, re-checked at `18c53a3`; the entry bodies below +describe each defect *as found* and are deliberately not rewritten as fixes land — this is the +record of what was wrong, not a changelog. **Scope:** the Android-framework edge of the app, which had no JVM unit tests when this was written — it has them now; see [On testing these](#on-testing-these). -**Last verified:** 2026-08-22, against `main` at `903b43c`. +**Last verified:** as-found evidence 2026-08-22, against `main` at `903b43c`; fix status +re-checked against `main` at `18c53a3`. The two anchors move independently — the bodies are +frozen, the status is not. **Device pass:** 2026-08-22 on a physical Pixel 10 Pro XL, API 37. Four entries were driven on hardware; **D1 did not reproduce and its premise is contradicted** — see its entry. Verdicts are marked per entry. Everything unmarked is still inspection only. @@ -17,7 +18,7 @@ Instrumented baseline taken at the same time: `connectedDebugAndroidTest` on the **49 tests, 0 failures, 0 errors, 2 skipped**, no regression against the 40/0/2 recorded in `api-37-emulator-crash.md`. The 2 skips are the assumption-guarded `RealMediaBenchmark` tests. -> **Correction — 2026-08-23 (`R3 / #12`, `R12 / #21`, `R13 / #22`).** The status metadata in this +> **Correction — 2026-08-22 (`R3 / #12`, `R12 / #21`, `R13 / #22`).** The status metadata in this > document went stale within hours of being written, and this document is read as the work queue, > so the corrections are stated rather than made quietly: > @@ -467,7 +468,7 @@ which is what makes it visibly wrong rather than merely stale. new dependency needed. It is an instrumented test, so it runs on CI, not locally. *Both halves of that last sentence stopped being true, and the fix went the other way (`R14 / -#23`). `compose-ui-test-junit4` is declared for the JVM source set now, and the +#23`, 2026-08-22). `compose-ui-test-junit4` is declared for the JVM source set now, and the `StateRestorationTester` test this entry asked for is `AppRootRestorationTest`, which runs under Robolectric on `:app:testDebugUnitTest` — not an instrumented test at all. Instrumented tests also do run on this host now: `tools/local-emulator/run-e2e.sh`, API 33–36.* @@ -840,9 +841,11 @@ and D14 — are on `main`; there is no integration branch left to check out. *Th send the reader to `feat/defect-fixes-base`, which has no ref at all — not local, not remote, only a reflog entry — because it was deleted when it merged, and to `fix/space-proxy-and-notification` as still "in progress", which is merged too (its branch pointer does survive, at `c2e6344`).* The -JVM suite gates green on `main` at `18c53a3` — **257 tests, 0 failures, 0 errors, 0 skipped, -detekt 0, lint clean**, against the 242 this paragraph used to quote and the 180 before the fixes -began. That total is only as fresh as this commit; the 15 it was short are `UnknownInputSizeTest`, +JVM suite gates green on `main` at `18c53a3` — **257 tests, 0 failures, 0 errors, 0 skipped**, +with detekt reporting 0 findings and lint `0 errors, 0 warnings, 1 hint` (the deferred +`UsableSpace` one, kept informational on purpose), against the 242 this paragraph used to quote +and the 180 before the fixes began. That total is only as fresh as this commit; the 15 it was +short are `UnknownInputSizeTest`, `SpaceCheckTest` and `ProgressNotificationTest`. Re-derive rather than trust it: `./gradlew :app:testDebugUnitTest`, then read `app/build/test-results/`. **D1 is parked unmerged** on `fix/allocatable-space`: the code is sound but the device pass contradicted its stated premise, so @@ -875,7 +878,7 @@ through a PR, never on `main`. ### On testing these -> **Correction — 2026-08-23 (`R14 / #23`, `R15 / #24`).** This section proposed a plan; the +> **Correction — 2026-08-22 (`R14 / #23`, `R15 / #24`).** This section proposed a plan; the > follow-up work then executed it, so four of its load-bearing statements were true at `903b43c` > and false by `18c53a3`. It is re-dated rather than deleted, because the reasoning is *why* the > test stack looks the way it does — but nothing below describes `main` today unless a marked note