# STATUS — cc-ci mirror-enroll Builder **Phase:** mirror + enroll ALL recipes **SSOT:** `/srv/cc-ci/cc-ci-plan/plan-mirror-enroll-all-recipes.md` **Started:** 2026-06-02 ## DONE — 2026-06-02T01:16Z All phases (Ph0–Ph5) complete and independently **Adversary-verified PASS** in REVIEW-mirror.md. No standing VETO or open adversary finding. | Phase | Item | Verdict | Evidence | |---|---|---|---| | Ph0 | Pre-flight (abra fetch, mirror survey, POLL_REPOS snapshot) | PASS | Adversary cold-probe @00:18Z | | Ph1 | 3 missing mirrors created + synced (lasuite-drive, mailu, mumble) | PASS | Adversary @00:40Z — HTTP 200, SHA match | | Ph2 | hedgedoc test suite (recipe_meta+functional+PARITY) + !testme build #113 | PASS | Adversary @00:50Z — A-mirror-1 closed | | Ph3 | 9 recipes enrolled in POLL_REPOS (20 total) | PASS | Adversary @00:40Z — all 9 present | | Ph4 | nixos-rebuild switch deployed; bridge watching 20 repos | PASS | Adversary @01:02Z | | Ph5 | !testme on ghost/immich/plausible triggered ≤16s, built, reported back | PASS | Adversary @01:16Z | **Phase 6 deferred findings** (pre-existing, not regressions from this phase): - ghost restore: MySQL reimport bug (Table 'ghost.ci_marker' doesn't exist) - immich restore: PG restore bug (relation "ci_marker" does not exist) - plausible: ClickHouse-backup boot-download robustness (known DECISIONS.md entry) All are Phase 6 per-recipe debugging scope; clean_teardown=true, no_secret_leak=true on all. --- ## Completed phases summary ### Phase 0 — Pre-flight ✓ - abra recipe fetch for lasuite-drive, mailu, mumble: exit 0 (already fetched) - Gitea: lasuite-drive=404, mailu=404, mumble=404 (confirmed missing); 6 others = 200 (exist) - POLL_REPOS: 11 entries; tests/: all 9 unenrolled recipes had tests// already ### Phase 1 — 3 missing mirrors ✓ - Created recipe-maintainers/{lasuite-drive,mailu,mumble} (Gitea API 201) - Force-synced to upstream main: f4135d78, 23309a1a, 9fa5e949 - Adversary: SHA match confirmed, real content verified ### Phase 2 — hedgedoc test suite ✓ - tests/hedgedoc/recipe_meta.py + functional/test_health_check.py + functional/test_branding.py + PARITY.md - Build #113 (hedgedoc@441c411c) PASS: install+upgrade+backup+restore+custom all green; test_hedgedoc_root_serves + test_hedgedoc_has_branding both PASS - A-mirror-1 CLOSED @00:50Z ### Phase 3 — Enroll 9 recipes ✓ - nix/modules/bridge.nix POLL_REPOS: 11 → 20 entries - Added: bluesky-pds,discourse,ghost,immich,lasuite-drive,mailu,mattermost-lts,mumble,plausible ### Phase 4 — Deploy ✓ @00:47Z - Synced /root/builder-clone → HEAD (19747bf); ran `nixos-rebuild switch --flake path:/root/builder-clone#cc-ci` - deploy-bridge.service re-ran; bridge updated; POLL_REPOS=20 confirmed live - System healthy; ssh cc-ci reachable; no rollback ### Phase 5 — !testme triggerability ✓ - ghost PR#2, immich PR#1, plausible PR#1: all triggered within 16s (D1 ≤60s MET) - All 3 ran, reported back via bridge; pre-existing restore failures are Phase 6 scope - Bridge poll log shows all 20 repos; PR comments reflected by bridge ## Blocked - (none) — loop stopped.