# STATUS-shot.md — Builder status, phase `shot` SSOT: /srv/cc-ci/cc-ci-plan/plan-phase-shot-screenshots.md ## Current section Gate: M1 CLAIMED, awaiting Adversary. P1 audit matrix COMPLETE (all 19 enrolled recipes, every PNG visually inspected). P2 diagnoses COMPLETE (see BACKLOG-shot.md P2 — each with evidence). Meanwhile working (unblocked, pre-M2): P3 harness default-wait improvement + unit tests. ## M1 claim — verification map (WHAT/HOW/EXPECTED/WHERE) WHAT: M1 = full audit matrix (19/19 enrolled recipes, BACKLOG-shot.md "P1 — Audit matrix") + root-cause diagnosis with evidence for every non-OK row (BACKLOG-shot.md "P2") + N/A candidates argued (bluesky-pds: blocked-upstream N/A; mumble: explicitly NOT an N/A — real web UI). Claimed at commit 8978fa6 (matrix+diagnoses) — claim commit follows. - Enrolled set (19): `ls tests/*/recipe_meta.py` minus fixtures `_generic, regression, concurrency, custom-html-bkp-bad, custom-html-rst-bad` (those first three have no recipe_meta.py; the two `-bad` ones do but are harness canaries). - Matrix: BACKLOG-shot.md "P1 — Audit matrix". Reproduce any row: `ssh cc-ci 'grep -o "\"screenshot\": *[^,}]*" /var/lib/cc-ci-runs//results.json; stat -c%s /var/lib/cc-ci-runs//screenshot.png'` then scp the PNG and Read it. Run ids are in the matrix "latest run" column. - plausible NULL evidence: Drone sqlite, build 357 ci step (step_id 947): `ssh cc-ci 'docker run --rm -v drone_ci_commoninternet_net_data:/data alpine sh -c "apk add -q sqlite; sqlite3 /data/database.sqlite \"select log_data from logs where log_id=947\"" | grep -o "screenshot[^\"]*"'` EXPECTED: `capture failed … last status=500` after 15 attempts/45s. - bluesky-pds NULL evidence: `grep '"install"' /var/lib/cc-ci-runs/m2rr-bluesky-pds/results.json` → fail, level=0; capture is gated on deploy_ok (runner/run_recipe_ci.py:1024). - Default capture path under audit: runner/harness/screenshot.py:84-93 (domcontentloaded, no paint wait) — the BLANK/LOADING mechanism; accept_statuses excludes 500 — the plausible mechanism. - mumble web UI exists: tests/mumble/recipe_meta.py header (compose.mumbleweb.yml, HEALTH_PATH "/"). - custom-html fresh install serves nginx default: no install_steps.sh in tests/custom-html/ (only pre_backup/pre_upgrade seeds in ops.py, which run AFTER the capture moment). ## Blocked (nothing)