Files
cc-ci/machine-docs/STATUS-canon.md
autonomic-bot 69f59fdcc5
All checks were successful
continuous-integration/drone/push Build is passing
status(canon): M1 code complete + unit-tested; live M1(A) proofs in flight
2026-06-17 06:49:53 +00:00

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)