Say where instrumented tests run, instead of where they used to not run #73

Merged
JMR-dev merged 2 commits from docs/instrumented-tests-correction into main 2026-08-24 22:17:18 +00:00
JMR-dev commented 2026-08-24 21:26:49 +00:00 (Migrated from github.com)

CLAUDE.md carried three claims about instrumented tests. All three were false, and one contradicted a paragraph forty lines below it in the same file.

claim reality
"Instrumented tests do not run locally" They do, API 33–36, since 22c7914
"Emulators segfault on this host. qemu dies on every AVD" Solved 2026-08-22 — SwiftShader's Reactor JIT vs SELinux execheap, not a broken machine. docs/local-emulator.md is literally titled "Emulators do run on this host"
"CI's matrix therefore stops at API 36" The matrix has been 33/34/35/36/37 since #56 merged

Why this is worth its own PR

A subagent working on #58 hit the contradiction and had to stop and flag it rather than trust the project's own instructions. It's the third to independently rediscover that the advisory API 37 job is red by design.

The self-contradiction is the worst part: the testing-norm section added in #51 says "E2E is runnable locally now", so the file simultaneously told you the emulator works and that it segfaults on every AVD. A reader can't tell which half is current — and the wrong half is the one that stops work. An agent that believes local emulators are impossible doesn't try, which quietly makes the e2e half of #51's definition-of-done unenforceable.

What the replacement says

  • Local emulators work for API 33–36, with the renderer table (-gpu host/angle_indirect/swangle_indirect boot; auto/off/guest/swiftshader_indirect don't).
  • CI runs API 37 and it gates — 55 of 57 tests; the two Media3 hardware-transcode tests carry @FailsOnEmulatorApi37 and run in the continue-on-error advisory job.
  • The advisory job is red on every PR by design — stated explicitly, in both directions: don't read it as your change breaking something, and don't read a green run as evidence those two tests pass.
  • Still true, and why the advisory job isn't just deleted: API 37 needs the manual Pixel 10 Pro XL check before each release.

The norm bullet now points at the section instead of re-arguing it, so there's one place to correct next time rather than two that can drift apart.

Same defect class as R14, R15, R20 and R25 — all documentation claims this repo's own review falsified. The pattern isn't carelessness; it's that docs get written at a moment and the moment moves.

`CLAUDE.md` carried three claims about instrumented tests. **All three were false**, and one contradicted a paragraph forty lines below it in the same file. | claim | reality | |---|---| | "Instrumented tests do not run locally" | They do, API 33–36, since `22c7914` | | "Emulators segfault on this host. qemu dies on every AVD" | Solved 2026-08-22 — SwiftShader's Reactor JIT vs SELinux `execheap`, not a broken machine. `docs/local-emulator.md` is literally titled *"Emulators do run on this host"* | | "CI's matrix therefore stops at API 36" | The matrix has been 33/34/35/36/**37** since #56 merged | ## Why this is worth its own PR **A subagent working on #58 hit the contradiction and had to stop and flag it** rather than trust the project's own instructions. It's the third to independently rediscover that the advisory API 37 job is red by design. The self-contradiction is the worst part: the testing-norm section added in #51 says *"E2E is runnable locally now"*, so the file simultaneously told you the emulator works and that it segfaults on every AVD. A reader can't tell which half is current — and **the wrong half is the one that stops work.** An agent that believes local emulators are impossible doesn't try, which quietly makes the e2e half of #51's definition-of-done unenforceable. ## What the replacement says - Local emulators work for API 33–36, with the renderer table (`-gpu host`/`angle_indirect`/`swangle_indirect` boot; `auto`/`off`/`guest`/`swiftshader_indirect` don't). - CI runs API 37 and it **gates** — 55 of 57 tests; the two Media3 hardware-transcode tests carry `@FailsOnEmulatorApi37` and run in the `continue-on-error` advisory job. - **The advisory job is red on every PR by design** — stated explicitly, in both directions: don't read it as your change breaking something, and don't read a green run as evidence those two tests pass. - Still true, and why the advisory job isn't just deleted: **API 37 needs the manual Pixel 10 Pro XL check before each release.** The norm bullet now points at the section instead of re-arguing it, so there's one place to correct next time rather than two that can drift apart. Same defect class as R14, R15, R20 and R25 — all documentation claims this repo's own review falsified. The pattern isn't carelessness; it's that docs get written at a moment and the moment moves.
Sign in to join this conversation.