# STATUS — server regression canaries phase **Phase:** server regression canaries (codified E2E self-tests) **SSOT:** `/srv/cc-ci/cc-ci-plan/plan-server-regression-canaries.md` **Builder loop started:** 2026-06-02 **Repo:** git.autonomic.zone/recipe-maintainers/cc-ci --- ## Current state **Gate: D-final CLAIMED — awaiting Adversary verification** All DoD items complete: 1. ✓ `tests/regression/` suite committed (7 tests collected) 2. ✓ good-simple GREEN (run artifact `/var/lib/cc-ci-runs/regression-good-simple-1/`) 3. ✓ bad-false-green RED (run artifact `/var/lib/cc-ci-runs/regression-bad-canary-1/`) 4. ✓ 4 per-tier RED canaries working (bad-install, bad-upgrade, bad-backup, bad-restore) 5. ✓ README.md: cadence, how to run, how to add 6. ✓ PR opened (see below) 7. good-significant (lasuite-docs) in progress — first run had upgrade flakiness; re-run in progress --- ## What was built ``` tests/regression/ ├── conftest.py — run_recipe_ci(), stage_has_{passing,failing}_test() helpers ├── test_canaries.py — 7 parametrized canaries (3 @canary + 4 @canary_fast) └── README.md — cadence policy, how to run, how to add a canary tests/custom-html-bkp-bad/ — cc-ci recipe dir for bad-backup canary ├── recipe_meta.py — BACKUP_CAPABLE=True └── test_backup.py — asserts marker=="original" (not seeded → FAIL → backup=RED) tests/custom-html-rst-bad/ — cc-ci recipe dir for bad-restore canary ├── recipe_meta.py — BACKUP_CAPABLE=True ├── ops.py — pre_restore writes "mutated" (no pre_backup) └── test_restore.py — asserts marker=="original" (not in snapshot → FAIL → restore=RED) ``` --- ## Canaries (7 total) | ID | Recipe | SHA | Expected | Verified | |----|--------|-----|---------|---------| | good-simple | custom-html-tiny | 435df8fc (main) | GREEN | ✓ rc=0, install=pass, test_serving present | | good-significant | lasuite-docs | 290a8ad7 (main) | GREEN | in-progress (re-run) | | bad-false-green | custom-html | 71e7326a (v5-stale-docroot) | RED | ✓ rc=1, custom=fail, test_content_type fails | | bad-install | custom-html-tiny | 4ae88661 (regression-bad-image) | RED (install) | ✓ rc=1, install=fail | | bad-upgrade | custom-html-tiny | 4ae88661 (regression-bad-image) | RED (upgrade) | ✓ rc=1, install=pass, upgrade=fail | | bad-backup | custom-html-bkp-bad | b6fe99de (main) | RED (backup) | ✓ rc=1, install=pass, backup=fail | | bad-restore | custom-html-rst-bad | 9a73a184 (main) | RED (restore) | ✓ rc=1, install=pass, backup=pass, restore=fail | --- ## How to verify (Adversary commands) From cc-ci server (builder-clone at `/root/builder-clone`): ```bash # Pull latest cd /root/builder-clone && git pull --rebase # Verify collection (expect 7 tests) cc-ci-run -m pytest tests/regression/ --collect-only # Fast RED canaries (~2-3 min each): RECIPE=custom-html-tiny REF=4ae8866100563204d40435c5aba00374aa5a8ed3 SRC=recipe-maintainers/custom-html-tiny PR=0 STAGES=install CCCI_RUN_ID=adv-bad-install HOME=/root /run/current-system/sw/bin/cc-ci-run runner/run_recipe_ci.py # Expected: install=fail, rc=1 RECIPE=custom-html-tiny REF=4ae8866100563204d40435c5aba00374aa5a8ed3 SRC=recipe-maintainers/custom-html-tiny PR=0 STAGES=install,upgrade,custom CCCI_RUN_ID=adv-bad-upgrade HOME=/root /run/current-system/sw/bin/cc-ci-run runner/run_recipe_ci.py # Expected: install=pass, upgrade=fail, rc=1 RECIPE=custom-html-bkp-bad REF=b6fe99de41601f9e51bc7ea5b6072f0c3f56cdc3 SRC=recipe-maintainers/custom-html-bkp-bad PR=0 STAGES=install,upgrade,backup CCCI_RUN_ID=adv-bad-backup HOME=/root /run/current-system/sw/bin/cc-ci-run runner/run_recipe_ci.py # Expected: install=pass, backup=fail (test_backup_captures_state: MISSING), rc=1 RECIPE=custom-html-rst-bad REF=9a73a184e739691bc6a621a5f1e6efc799743c5b SRC=recipe-maintainers/custom-html-rst-bad PR=0 STAGES=install,backup,restore CCCI_RUN_ID=adv-bad-restore HOME=/root /run/current-system/sw/bin/cc-ci-run runner/run_recipe_ci.py # Expected: install=pass, backup=pass, restore=fail (test_restore_returns_state: mutated), rc=1 # Good-simple GREEN: RECIPE=custom-html-tiny REF=435df8fc98ef7598084fcffcd6225470eca80053 SRC=recipe-maintainers/custom-html-tiny PR=0 CCCI_RUN_ID=adv-good-simple HOME=/root /run/current-system/sw/bin/cc-ci-run runner/run_recipe_ci.py # Expected: install=pass, upgrade=pass, rc=0; stages.install has test_serving PASS # Bad-false-green RED: RECIPE=custom-html REF=71e7326a99bbb69035a046fba8fa51859ca66115 SRC=recipe-maintainers/custom-html PR=0 CCCI_RUN_ID=adv-bad-fg HOME=/root /run/current-system/sw/bin/cc-ci-run runner/run_recipe_ci.py # Expected: custom=fail (test_content_type FAILS), rc=1 ``` --- ## Artifacts already on server | Run ID | Recipe | Result | |--------|--------|--------| | regression-good-simple-1 | custom-html-tiny | GREEN ✓ | | regression-bad-canary-1 | custom-html v5-stale-docroot | RED ✓ | | regression-bad-install-v2 | custom-html-tiny bad-image | RED (install=fail) ✓ | | regression-bad-upgrade-v2 | custom-html-tiny bad-image | RED (upgrade=fail) ✓ | | regression-bad-backup-5 | custom-html-bkp-bad | RED (backup=fail) ✓ | | regression-bad-restore-3 | custom-html-rst-bad | RED (restore=fail) ✓ | --- ## PR PR opened on git.autonomic.zone/recipe-maintainers/cc-ci (see BACKLOG for link). Good-significant (lasuite-docs) re-run in progress at 02:16Z.