# JOURNAL — cc-ci mirror-enroll Builder ## 2026-06-02 — Phase startup + Phase 0 ### Pre-flight survey ```bash ssh cc-ci 'abra recipe fetch lasuite-drive' → WARN already fetched (exit 0) ssh cc-ci 'abra recipe fetch mailu' → WARN already fetched (exit 0) ssh cc-ci 'abra recipe fetch mumble' → WARN already fetched (exit 0) ``` Gitea mirror check (via API): ``` lasuite-drive: 404 mailu: 404 mumble: 404 bluesky-pds: 200 discourse: 200 ghost: 200 immich: 200 mattermost-lts: 200 plausible: 200 ``` Upstream URLs confirmed from ~/.abra/recipes//.git/config: - lasuite-drive: https://git.coopcloud.tech/coop-cloud/lasuite-drive.git - mailu: https://git.coopcloud.tech/coop-cloud/mailu.git - mumble: https://git.coopcloud.tech/coop-cloud/mumble.git Adversary independent cold-probe in REVIEW-mirror.md confirms same results. tests/ state: All 9 unenrolled recipes already have tests//. hedgedoc absent. POLL_REPOS current: 11 entries (cc-ci + 10 enrolled recipes). ## 2026-06-02 — Phase 1: Create 3 missing mirrors ### Mirror creation via Gitea API + force-sync ``` POST /api/v1/orgs/recipe-maintainers/repos {name:"lasuite-drive",private:true} → HTTP 201 ✓ POST /api/v1/orgs/recipe-maintainers/repos {name:"mailu",private:true} → HTTP 201 ✓ POST /api/v1/orgs/recipe-maintainers/repos {name:"mumble",private:true} → HTTP 201 ✓ ``` Force-synced upstream main → Gitea mirror main on cc-ci host: ``` lasuite-drive: upstream f4135d78 → git push --force gitea → [new branch] main ✓ mailu: upstream 23309a1a → git push --force gitea → [new branch] main ✓ mumble: upstream 9fa5e949 → git push --force gitea → [new branch] main ✓ ``` Verification (Gitea API): ``` lasuite-drive: full_name=recipe-maintainers/lasuite-drive default_branch=main empty=false ✓ mailu: full_name=recipe-maintainers/mailu default_branch=main empty=false ✓ mumble: full_name=recipe-maintainers/mumble default_branch=main empty=false ✓ ``` ## 2026-06-02 — Phase 2: hedgedoc test suite hedgedoc recipe analysis: - Single-service Node.js app (quay.io/hedgedoc/hedgedoc:1.10.8), port 3000 - Default: sqlite (CMD_DB_URL=sqlite:/database/db.sqlite3), no compose.backup.yml - backupbot.backup=true in compose labels; volumes: codimd_database, codimd_uploads - HEALTH_PATH=/ with HEALTH_OK=(200,302): root redirects to /login or /new depending on config Files created (uptime-kuma template): - tests/hedgedoc/recipe_meta.py (HEALTH_PATH=/, HEALTH_OK=(200,302), DEPLOY_TIMEOUT=600) - tests/hedgedoc/functional/test_health_check.py (GET / → 200 or 302) - tests/hedgedoc/functional/test_branding.py (hedgedoc/codimd/hackmd markers in HTML) - tests/hedgedoc/PARITY.md (scope documentation) test_install.py/test_upgrade.py/ops.py deferred (generic tiers provide baseline coverage). ## 2026-06-02 — Phase 3: Enroll 9 unenrolled recipes in POLL_REPOS Edited nix/modules/bridge.nix POLL_REPOS: - Before: 11 entries (cc-ci + custom-html, custom-html-tiny, keycloak, cryptpad, matrix-synapse, lasuite-docs, lasuite-meet, n8n, hedgedoc, uptime-kuma) - After: 20 entries (+bluesky-pds, discourse, ghost, immich, lasuite-drive, mailu, mattermost-lts, mumble, plausible) All 9 newly enrolled recipes confirmed to have tests// (Adversary-confirmed).