45 lines
2.7 KiB
Markdown
45 lines
2.7 KiB
Markdown
# STATUS — phase `canon` (canonical sweep, make it real)
|
|
|
|
Gate: M1 IN PROGRESS (not yet claimed).
|
|
|
|
WHAT/HOW/EXPECTED/WHERE for the Adversary. Reasoning lives in JOURNAL-canon.md.
|
|
|
|
## Phase summary
|
|
Make the canonical sweep actually promote canonicals end-to-end (it is currently hollow), add the
|
|
mirror-sync + new-release-tag trigger + tagged-promote gate, enroll all recipes, make the timer
|
|
weekly, and prove it in real CI. DoD = §5 of `cc-ci-plan/plan-phase-canon-canonical-sweep.md`.
|
|
|
|
## Verified starting state (2026-06-17, Builder cold-checked)
|
|
- HOLLOW-SWEEP ROOT CAUSE (confirmed): the deployed `nightly-sweep.timer` fired 03:09 UTC and logged
|
|
`enrolled canonicals = []`. Cause: the unit sets no `CCCI_REPO`; default `/root/cc-ci` does not
|
|
exist; the import falls back to the nix-store harness whose `TESTS_DIR` has no `tests/` →
|
|
`enrolled_recipes()=[]`. Verify: `ssh cc-ci 'journalctl -u nightly-sweep.service | grep "enrolled canonicals"'`.
|
|
- A real canonical DOES exist (made by a manual run, not the timer): `ssh cc-ci 'cat
|
|
/var/lib/ci-warm/custom-html/canonical.json'` → version `1.13.0+1.31.1`, status idle, retained
|
|
volume present (`docker volume ls | grep warm-custom-html`).
|
|
- Enroll set (authoritative) = `cc-ci-plan/used-recipes.md` (21 recipes). Only `custom-html` is
|
|
currently enrolled: `grep -rl 'WARM_CANONICAL = True' tests/*/recipe_meta.py`.
|
|
- Timer is daily: `nix/modules/nightly-sweep.nix` `OnCalendar = "*-*-* 03:00:00"`.
|
|
- Disk `/`: 40G free / 73% used (`ssh cc-ci df -h /`).
|
|
|
|
## M1 progress (code COMPLETE; live proofs in flight — not yet claimed)
|
|
All M1 code landed + unit-tested + lint-clean (full unit suite 295 passed):
|
|
- M1.1 tagged-promote gate (27e0628) + divergence fix (d4cc9e4): `should_promote_canonical` gains
|
|
`tagged`; promote records the TESTED `head_version` (a release tag), not a re-derived latest.
|
|
`warm_reconcile.is_released_version`. Tests: `tests/unit/test_promote.py`, `test_warm_reconcile.py`.
|
|
- M1.2 release-tag trigger + mirror-sync (a20890a): `warm_reconcile.sweep_decision` (pure, version_key
|
|
keyed), `scripts/recipe-mirror-sync.sh` (faithful main+tags sync, closes merged-upstream PRs),
|
|
`nightly_sweep` rewritten (mirror_sync → trigger → run_on_tag = checkout tag + CCCI_SKIP_FETCH).
|
|
- M1.3 all 21 used-recipes enrolled (136100f). M1.4 hollow-sweep fix + M1.5 weekly timer (f8c0e53).
|
|
Mirror-sync smoke-tested live on custom-html (faithful no-op push; closed merged-upstream PR #2; left
|
|
pending PR #5).
|
|
|
|
Live M1(A) proofs in progress on cc-ci from checkout /root/canon-verify @ d4cc9e4:
|
|
- A-promote: `nightly_sweep.run_on_tag('custom-html','1.13.0+1.31.1')` → expect fresh canonical.json.
|
|
|
|
## Claims awaiting verification
|
|
(M1 claim pending live-proof completion)
|
|
|
|
## Blocked
|
|
(none)
|