> **Relayed** to mgf-fed#PAPER-122 by the supervisor (FB-05).

### PAPER — `app-doctor` should catch the supervisor-coverage ↔ `patch = ["subprocess"]` coupling (green suite, red build)

- **Severity:** 🟡 Sharp edge
- **Filed by:** mgf-standard (WF-13 re-render wave; mgf-standard PAPER-121) on 2026-07-10
- **What hurts:** the canonical coverage step runs the suite through
  `mgf.test_supervisor`, which spawns pytest in CHILD processes. Coverage only
  sees them if the repo's `pyproject.toml` carries `[tool.coverage.run]
  patch = ["subprocess"]` (coverage ≥ 7.10). Without it the build reds with
  **every test passing**: "No data was collected" → `coverage combine` → "No
  data to combine" → exit 1. The pipeline template *documents* the requirement;
  nothing enforces it, and the error names neither the key nor pyproject.
- **Why it matters:** hit three repos in a single wave (`mgf-brand-web`,
  `mgf-cloud-web`, `mgf-fed-web`) the moment they were re-rendered onto that
  step. The signature is maximally confusing (all-green tests, red step), so it
  costs a real debugging session each time; every newly-scaffolded or
  re-rendered repo can walk into it.
- **Evidence:** mgf-brand-web pipeline #31 `test-3.12` log: `[mtest] OK: 39
  passed (39 total)` → `CoverageWarning: No data was collected` → `coverage
  combine` → `No data to combine` → exit 1. Green reference with the key:
  `mgf-http/pyproject.toml`. Fixed per-repo in the wave branches.
- **Suggested shape:** `app-doctor` (or `scaffold`/`drift-check`) FAILS when a
  repo's `.woodpecker.yml` contains `-m mgf.test_supervisor` under a `coverage
  run` while its `pyproject.toml` lacks `[tool.coverage.run] patch =
  ["subprocess"]` — they are a coupled pair (DOC-18-style). Ship the key in the
  cookiecutter by default.
- **Status:** OPEN
