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

2.7 KiB

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)