From e60415dd8fda11f00ef2167daa93f7dd9becbc82 Mon Sep 17 00:00:00 2001 From: autonomic-bot Date: Sun, 31 May 2026 10:04:54 +0000 Subject: [PATCH] status(3): U4 PASS (Adversary @9ca39dc); U5.1 badge + U5.2 docs built, deploying badge next --- machine-docs/BACKLOG-3.md | 14 ++++++++------ machine-docs/STATUS-3.md | 4 +++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/machine-docs/BACKLOG-3.md b/machine-docs/BACKLOG-3.md index 1ba1c8d..2a64305 100644 --- a/machine-docs/BACKLOG-3.md +++ b/machine-docs/BACKLOG-3.md @@ -61,14 +61,16 @@ Milestones U0–U5 (plan §5); each ends with an Adversary gate. DoD items R1– + `_card` (dashboard.py @e1d837e). - [x] U4.2 — Regenerated on build completion; reads results.json artifacts (`_results_for`, `_build_row`; 30s cache + live render over the RO-bind-mounted runs dir). -- GATE U4: **CLAIMED** (awaiting Adversary) — live 2-card grid (custom-html L4 + uptime-kuma L4) + - per-recipe history; mirrors results.json (never greener; honest failure row for uptime-kuma #11); - deployed `cc-ci-dashboard:7b34ec8761df` == source; 9 unit tests. (R3 now fully satisfied — card - embedded in comment (U3) + dashboard (U4); R5 satisfied.) +- GATE U4: **PASS** (Adversary REVIEW-3 @9ca39dc, 2026-05-31) — grid + history cold-verified + never-greener vs results.json; honest uptime-kuma #11 failure row; no secrets; deployed == source; + 9 tests; no VETO. R5 satisfied, **R3 fully satisfied** (card in comment + dashboard). ### U5 — Badges + docs + hardening (R6, R7, R8) -- [ ] U5.1 — Embeddable per-recipe latest-level badge documented for README embedding. -- [ ] U5.2 — `docs/` explains the level ladder, card/screenshot/badge generation, how to embed a badge. +- [x] U5.1 — Embeddable per-recipe latest-level badge endpoint `/badge/.svg` (level-coloured, + status fallback; `render_level_badge`, dashboard.py @91a69b8) + README-embed snippet documented. + Built + unit-tested; pending live deploy+verify. +- [x] U5.2 — `docs/results-ux.md` §1-5 complete: level ladder + tier→rung mapping, results.json schema, + card/screenshot generation, PR-comment shape, badge endpoints + README embed snippet (R8). - [ ] U5.3 — Hardening: render failure degrades to text (R7); secret-scan over published images/screenshots/comments finds nothing; killing the renderer doesn't affect the verdict. - GATE U5: Adversary leak-scan clean; graceful degradation proven; flip STATUS-3 to `## DONE`. diff --git a/machine-docs/STATUS-3.md b/machine-docs/STATUS-3.md index 9c7ba18..1a0e276 100644 --- a/machine-docs/STATUS-3.md +++ b/machine-docs/STATUS-3.md @@ -225,7 +225,9 @@ The cardinal U3 invariant: ONE comment per PR, refreshed in place; the embedded faithful never-greener projection of the run; image-gen failure degrades to text and never blocks the run or the verdict. -## Gate: U4 — CLAIMED, awaiting Adversary (Dashboard polish; R5, + R3 "in dashboard") +## Gate: U4 — PASS (Adversary REVIEW-3 @9ca39dc, 2026-05-31T10:04Z; R5 + R3-full cold-verified, no VETO) (Dashboard polish) +(Grid + history cold-verified never-greener vs results.json; honest #11 failure row (404 results.json +→ failure/level —/no card); no secrets; deployed == source; 9 tests. R5 satisfied, R3 fully satisfied.) **WHAT.** The overview at `https://ci.commoninternet.net/` is now a **YunoHost-CI-style grid**: one card per enrolled recipe showing a **level badge** (coloured by level), latest **pass/fail** status,