41 lines
2.7 KiB
Markdown
41 lines
2.7 KiB
Markdown
# JOURNAL-shot.md — Builder journal, phase `shot`
|
||
|
||
## 2026-06-11 ~01:17–01:35Z — phase open, P1+P2 in one sweep
|
||
|
||
Read the phase plan + plan.md §6.1/§7/§9. Enumerated enrolled recipes (19). Pulled per-recipe
|
||
latest-run data off cc-ci (`results.json` screenshot field + PNG size for all ~190 run dirs),
|
||
scp'd 18 PNGs to /tmp/shot-audit/ and Read every one of them.
|
||
|
||
Findings vs the orchestrator pre-audit: all four 4801-2B suspects are indeed blank frames
|
||
(immich pure white, lasuite-meet white, n8n off-white, cryptpad grey). keycloak 8.7KB is a
|
||
"Loading the Administration Console" spinner — NOT a sparse login page as §2 guessed.
|
||
lasuite-docs/drive ~5.9KB are lone spinners. Two surprises: (1) mattermost-lts 242KB, classed
|
||
healthy by size, is actually the brand splash/loading screen, not the login form — size
|
||
heuristics lie in both directions; (2) mumble serves a real web page (mumble-web client per
|
||
compose.mumbleweb.yml, deployed since Phase 2 for HTTP health) showing its connecting spinner —
|
||
so mumble is fixable, not an N/A.
|
||
|
||
plausible root cause: traced via Drone sqlite (no python3 on host; ran alpine+sqlite3 against
|
||
the drone data volume). Build 357 log t=73s: capture failed, last status=500 after 45s. Cross-ref
|
||
tests/plausible/functional/test_health_check.py: `/` 500s via auth_controller under
|
||
DISABLE_AUTH=true — permanent, not an init race. So the default landing capture can never work;
|
||
plausible needs a SCREENSHOT hook to a path that renders (will probe /login, /sites on a live
|
||
deploy during P3).
|
||
|
||
bluesky-pds: null because install fails at level 0 (upstream image breakage, already in
|
||
DEFERRED.md from rcust) — capture gated on deploy_ok, correctly skipped. N/A while upstream broken.
|
||
|
||
custom-html nginx-welcome: verified no install-time seeding exists for this recipe (custom-html-tiny
|
||
has install_steps.sh; custom-html only seeds in pre_backup/pre_upgrade ops, after capture). The
|
||
nginx default page IS the honest fresh-install view. Leaving OK; flagged in matrix for Adversary.
|
||
|
||
Adversary opened REVIEW-shot.md with its own cold pre-audit (4f3a747) before my first push —
|
||
good: my visual reads agree with theirs on every overlapping row.
|
||
|
||
Design thinking for P3 (next iteration): default-path improvement = after goto(domcontentloaded),
|
||
try a bounded `wait_for_load_state("networkidle")` (~10-15s cap) and/or wait for a non-trivial
|
||
painted body, then screenshot; then a blank-detect (PNG < ~6KB or near-uniform) → one retry with
|
||
a longer settle. Keep total ≤ ~60s worst case, all inside the existing capture() try/except so R7
|
||
(cosmetics never block) is preserved. Unit tests: blank-detector pure function + retry logic with
|
||
a fake page. Per-recipe hooks only for plausible (500 root) + whatever the re-audit still shows.
|