4.9 KiB
STATUS — Phase lvl5 (L5 lint rung + de-cap)
DONE
Phase complete 2026-06-11: M1 PASS (cfc87fd) + M2 PASS (13cad1f), both <24h, no VETO.
The 5-rung ladder (L5 = abra recipe lint on the exact tested ref) and the de-capped level
semantics (pass/fail/skip/unver; fails AND unverified rungs block, intentional skips climb;
no cap/cap_reason anywhere) are live on main @ a521d43 and verified end-to-end
(results.json schema 2 → card → dashboard → badge → PR comment, drone path included).
Cleanup done: throwaway PR custom-html#4 closed, branch lvl5-lintdemo deleted; WC5
stage-completeness observation filed in machine-docs/DEFERRED.md.
M2 claim — proven in real CI
WHAT: plan-phase-lvl5 §4 M2: P3 matrix complete for ALL 19 enrolled recipes; P4 runs done (genuine L5, lint-blocked L4, N/A-skip climb, drone path ×3, canaries at re-derived designed levels, synthesized unver-blocks run); old artifacts render; durations not inflated; before/after table complete; card/dashboard/badge visually verified.
WHERE: main @ dc924c679b4ae6dd1e21bfe9d231acb28b58ddf8 (implementation merged 08e6cc8 after
M1 + PR-path fix 68c3486). Evidence runs (all artifacts at
https://ci.commoninternet.net/runs/<n>/{results.json,summary.png,badge.svg,lint.txt}):
| run | what it proves | EXPECTED content |
|---|---|---|
| 398 hedgedoc cold | genuine L5, full clean climb | level=5, all 5 rungs pass, schema=2, no cap keys, dur 100s |
| 399 custom-html-tiny cold | N/A-skip climb (was L2 @ #205) | level=5, backup_restore=skip + declared reason in skips.intentional, dur 45s |
| 405 custom-html PR4 (!testme) | lint-blocked L4 + verdict-neutral | level=4, lint=fail rules_failed=[R011], drone build status SUCCESS, dur 61s |
| 406 immich PR2 (!testme) | drone path L5 on real PR | level=5, dur 199s (shot baseline 198-199s — no inflation) |
| 407 plausible PR3 (!testme) | drone path L5 on real PR | level=5, dur 164s (shot baseline 166s) |
| 413 mumble cold | table row (no prior artifact) | level=5, dur 80s |
| 415/416 bkp-bad/rst-bad (SRC+REF) | canaries at re-derived designed level | verdict FAILURE (red), level=1, rungs {install pass, upgrade skip (no version tags on mirror), backup_restore fail, functional unver, lint pass} |
host /var/lib/cc-ci-runs/lvl5-unver-demo/results.json |
synthesized unver-blocks (mission ex. #3) | hand-run STAGES=install,upgrade,custom on custom-html: level=2, backup_restore=unver in skips.unintentional, functional+lint pass above it |
HOW to verify (cold):
- Fresh clone main;
cc-ci-run -m pytest tests/unit/ -q→ EXPECTED 247 passed (new since M1:test_run_lint_detached_pr_tree_lints_exact_ref— PR-path regression, see fix68c3486: abra lint checks out the repo's DEFAULT BRANCH, so run_lint forces localmainAT the tested ref + repoints origin to the scratch itself; found live in builds 400-402 where the rung correctly degraded to unver/level 4 with run verdicts unaffected).nix develop .#lint --command bash scripts/lint.sh→ PASS. - Fetch each run's results.json above and check the EXPECTED column; drone build statuses via API (only 415/416 red — and red by tier failure, not by lint).
- Visuals: Read
summary.pngof 398 (level 5 of 5, lint row PASS, green 5 badge), 399 (backup/restore row "INTENTIONAL SKIP" + reason, level 5), 405 (lint row FAIL red, level 4 of 5, badge #a0b93f); badges are number+colour ONLY. - Old artifacts:
/runs/370/{results.json,summary.png}200 + render (pre-lvl5 schema-1 with cap fields); dashboard/and/recipe/immich200 with mixed-schema rows; unit history-compat tests (test_card/test_dashboard old-schema cases). - lint.txt served:
/runs/398/lint.txt200 (full abra table; rc/status header). - P3 matrix + §2.9 before/after table: BACKLOG-lvl5.md (19/19 lint pass sweep — re-runnable per the documented scratch method; baseline column from latest artifacts; REAL column from the runs above; canary re-derivation note).
- Dashboard runtime is the rolled image
cc-ci-dashboard:15addbc7bf45(reconcile per DECISIONS Phase 3/U2 — no host switch).
Notes for the verdict:
- The throwaway lint-violation PR (custom-html#4, branch lvl5-lintdemo) is left OPEN and marked
do-not-merge so you can re-run
!testmeindependently; Builder will close branch+PR after M2. - Level shifts vs baseline are exactly the rule change (table): formerly-capped intentional-N/A recipes climb; nothing else moved.
- Observation (pre-existing, out of phase scope, noted in JOURNAL): WC5 promote-on-green-cold does not require all stages — the STAGES-filtered green hand-run promoted custom-html's canonical. Filed as a JOURNAL note; flag if you want it as a finding.
(history) M1 claim — implementation complete (pre-merge): PASS @cfc87fd
Branch phase-lvl5 @ 3d8d286 (claim 24baac5); 246 unit tests cold-green, repo lint PASS,
mirror-context decision reviewed, verdict-neutral confirmed. Merged to main 08e6cc8.