From df301a5917b2b26cbe1a8c707902b09b5dc9f7c7 Mon Sep 17 00:00:00 2001 From: autonomic-bot Date: Thu, 11 Jun 2026 07:22:53 +0000 Subject: [PATCH] =?UTF-8?q?status(lvl5):=20phase=20open=20=E2=80=94=20stat?= =?UTF-8?q?e=20files=20bootstrapped,=20orientation=20done,=20probing=20abr?= =?UTF-8?q?a=20lint=20next?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BACKLOG-lvl5.md | 18 ++++++++++++++++++ JOURNAL-lvl5.md | 8 ++++++++ STATUS-lvl5.md | 6 ++++++ 3 files changed, 32 insertions(+) create mode 100644 BACKLOG-lvl5.md create mode 100644 JOURNAL-lvl5.md create mode 100644 STATUS-lvl5.md diff --git a/BACKLOG-lvl5.md b/BACKLOG-lvl5.md new file mode 100644 index 0000000..b7871ba --- /dev/null +++ b/BACKLOG-lvl5.md @@ -0,0 +1,18 @@ +# BACKLOG — Phase lvl5 + +## Build backlog + +- [ ] B1 (P1) `level.py`: append rung `lint` (L5); new status vocabulary {pass, fail, skip, unver}; `compute_level()` → new formula (level = max i: rung_i pass ∧ ∀j` against the exact tested ref; hard ~60s timeout; rc+full output → `lint.txt` artifact; pass/fail/unver classification (missing abra / timeout / exception → unver, never pass, never skip); mirror-context handling per phase-plan §2.3 (probe abra behavior first; any filtering = named + unit-tested + DECISIONS.md). +- [ ] B3 (P1) `results.py`: wire lint into `derive_rungs` + explicit intentional-vs-unintentional classification of EVERY N/A source; drop level_cap_reason/level_cap_rung from schema; `skips()` reflects new statuses; orchestrator (`run_recipe_ci.py`) runs lint executor at the tested-ref point + passes result through; verdict-neutral (R7 wrap). +- [ ] B4 (P1) unit tests: rewrite test_level.py/test_results.py to new semantics incl. mission worked examples (fail-blocks → L1; intentional-skip climbs → L5; unver-blocks → L2; lint unver → L4; unclassifiable N/A → unver default); lint executor tests; old-artifact rendering compat tests. +- [ ] B5 (P2) `card.py`: 0–5 color ramp; cap line removed ("level N of 5" neutral); rung table renders ✔/✘/intentional-skip/unverified; level_badge_svg loses cap_skip third segment (badge = number+color only); tolerate old artifacts. +- [ ] B6 (P2) `dashboard.py`: _LEVEL_COLOR 5-scale; _level_pill/badge SVG number-only; legend text; old results.json (cap_reason present, lint absent) render without KeyError. +- [ ] B7 (P2) docs: results-ux.md, testing.md, recipe-customization.md §EXPECTED_NA wording — L5 ladder, de-cap semantics. +- [ ] B8 (P1) DECISIONS.md: semantics change record (replaces Phase-3 "N/A caps"); N/A classification table (every derive_rungs N/A source → intentional|unintentional); mirror-filter decision for lint (if any filtering). +- [ ] B9 — gate M1: claim (branch w/ P1+P2; clean tree; cold-verifiable). +- [ ] B10 (P3) lint sweep over ALL enrolled recipes (scratch clones — never touch ~/.abra/recipes during builds); matrix here (pass/fail + rule hits); mechanical fixes → mirror PRs (never push main/never merge); rest → DEFERRED.md. +- [ ] B11 (P4) real-CI proofs: ≥1 genuine L5; ≥1 lint-blocked L4 (synth branch ok); ≥1 N/A-skip climb; 2× drone !testme; canary suite at re-derived designed levels; 1 synthesized unver-blocks run; before/after level table for ALL enrolled recipes; card/dashboard PNG/SVG visually verified. +- [ ] B12 — gate M2: claim; then ## DONE after fresh PASS. + +## Adversary findings diff --git a/JOURNAL-lvl5.md b/JOURNAL-lvl5.md new file mode 100644 index 0000000..f6f9c1b --- /dev/null +++ b/JOURNAL-lvl5.md @@ -0,0 +1,8 @@ +# JOURNAL — Phase lvl5 + +## 2026-06-11 bootstrap +- Read plan-phase-lvl5-lint-rung.md in full + plan.md §6/§6.1/§7/§9. Phase files created. +- Orientation reads: level.py (RUNGS 4, compute_level gap-caps, backup_restore_status, tier_to_rung), results.py derive_rungs/build_results (cap fields at :215-229), card.py (LEVEL_COLOR 0-6!, cap line :246, level_badge_svg cap_skip third segment), dashboard.py (_LEVEL_COLOR :68, _level_pill :245, cap div :277, render_level_badge :363), run_recipe_ci.py build_results call :1248 + badge wiring :1296-1320, bridge.py :224 (badge embed — number-only already, no cap text → likely untouched), docs (results-ux.md has cap language; recipe-customization.md EXPECTED_NA row). +- Notable: card.py LEVEL_COLOR already has keys 0-6 (5=green, 6=bright green) — only 0-4 reachable today; dashboard._LEVEL_COLOR needs checking for the same. +- Lint context: abra.py:105-127 documents the R014/lightweight-tag + origin-repoint/go-git history. Per-run recipe tree = $ABRA_DIR/recipes/, origin = private mirror (SRC) on PR runs, upstream tags fetched in by fetch_recipe. OPEN QUESTION for B2: what does `abra recipe lint` actually touch (origin fetch? auth? R014 against which tags?) — probe on cc-ci host next, in a scratch clone, both origin-shapes (mirror-origin vs canonical-origin). +- Next: probe abra lint behavior on cc-ci (scratch clones, no shared-checkout touch), then B1. diff --git a/STATUS-lvl5.md b/STATUS-lvl5.md new file mode 100644 index 0000000..4189da2 --- /dev/null +++ b/STATUS-lvl5.md @@ -0,0 +1,6 @@ +# STATUS — Phase lvl5 (L5 lint rung + de-cap) + +Phase: lvl5 — OPEN (bootstrapped 2026-06-11) +Gate: none claimed yet +In flight: P1 — level.py new semantics + lint executor design (abra lint behavior probe on CI host first) +Blockers: none