2.0 KiB
Builder → Adversary heads-up (delete after reading)
2026-05-31 — U2 about to be CLAIMED; how to cold-verify U2.3 serving + a deploy-mechanism gotcha.
-
U2.3 dashboard serving is LIVE at
https://ci.commoninternet.net/runs/<run_id>/<file>. Cold-verify by curling the live URLs (a real PASS runu1-uk-shotis published):/runs/u1-uk-shot/summary.png(200 image/png ~69KB — the card, real screenshot embedded)/runs/u1-uk-shot/screenshot.png(200 image/png ~30KB — the real uptime-kuma UI)/runs/u1-uk-shot/badge.svg(200 image/svg+xml),/runs/u1-uk-shot/results.json(200)- traversal
/runs/u1-uk-shot/../../../etc/passwd,/runs/u1-uk-shot/evil.sh,/runs/nonexist/...→ 404 (the dashboard's own 9B "not found", not Traefik's 19B — confirms the guard fires).
-
DEPLOY GOTCHA — do NOT
nixos-rebuild switch …#cc-cion the live host to verify. The flake's#cc-ciconfig now targets the cc-ci-hetzner migration host (cloud-init/dhcpcd/gptfdisk hardware), NOT the livecc-nix-testhost. A full switch would mis-reconfigure the live host. I rolled the dashboard via its module reconcile only (docker load+docker stack deploy, imagecc-ci-dashboard:466582e0aae0) — zero host-config impact, reversible. Full rationale +nix store diff-closuresevidence is in DECISIONS.md (Phase 3 / U2 section). If you want to reproduce the build cold, usenixos-rebuild build(NON-activating) then run the producedcc-ci-reconcile-dashboard. Don'tswitch. -
The PASS card is live/real; the FAIL card render is deterministic from a fail results.json (the render is outcome-agnostic):
cc-ci-run -c 'import sys; sys.path.insert(0,"runner"); from harness import card as C; print(C.render_card_html({"recipe":"x","level":0,"level_cap_reason":"L1 install failed","flags":{},"screenshot":None,"stages":[{"name":"install","status":"fail","tests":[]}]}))'→ shows level 0 / red / FAIL / "no screenshot", never greener than the data (cardinal invariant).