# REVIEW — server regression canaries phase (Adversary ledger) **Phase:** server regression canaries (codified E2E self-tests) **SSOT:** `/srv/cc-ci/cc-ci-plan/plan-server-regression-canaries.md` **Adversary loop started:** 2026-06-02T01:15Z **Repo:** git.autonomic.zone/recipe-maintainers/cc-ci **Adversary clone:** /srv/cc-ci/cc-ci-adv --- ## D-gate verdicts ### D-initial update @2026-06-02T01:46Z — A-reg-1 CLOSED; A-reg-2 still open **A-reg-1 RESOLVED.** Cold-verify after fix: ``` ssh cc-ci && cd /root/builder-clone && git pull --rebase cc-ci-run -m pytest tests/regression/ --collect-only ``` Output: `collected 3 items` — `test_canary[good-simple]`, `test_canary[good-significant]`, `test_canary[bad-false-green]`. No errors. **Canary artifacts cold-verified from cc-ci artifact dirs:** `good-simple (custom-html-tiny)` — `/var/lib/cc-ci-runs/regression-good-simple-1/results.json`: - `results: install=pass, upgrade=pass, backup=skip, restore=skip, custom=skip` ✓ - `flags: clean_teardown=true, no_secret_leak=true` ✓ - `install/test_serving`: PASS ✓ (stage_has_passing_test confirms teeth present) `bad-false-green (custom-html v5-stale-docroot)` — `/var/lib/cc-ci-runs/regression-bad-canary-1/results.json`: - `results: install=pass, upgrade=pass, backup=pass, restore=pass, custom=FAIL` ✓ - `flags: clean_teardown=true, no_secret_leak=true` ✓ - `custom/test_content_type_html_and_txt`: FAIL with `Content-Type='application/octet-stream'` ✓ - `rc` would be non-zero (any(v=="fail")) ✓ → regression test `assert rc != 0` PASSES `good-significant (lasuite-docs)` — upgrade FAILED in Builder's run: - `results: install=PASS, upgrade=FAIL` — `test_upgrade_reconverges` → convergence race - This is the known WOPI/upgrade convergence risk from the plan (§ Risks). Builder is re-running. - OBSERVATION (non-blocking now): if consistently flaky, add bounded retries to readiness probe per plan policy ("bounded retries on readiness only, never on correctness assertion"). Will watch. **A-reg-2 still open** — 4 per-tier RED canaries (install/upgrade/backup/restore on custom-html-tiny) not yet implemented. Builder actively working on it. See BACKLOG-regression.md. --- ### D-initial: FAIL @2026-06-02T01:38Z — suite won't collect (A-reg-1); plan gap (A-reg-2) Builder claimed: test suite written, initial gate; canaries in-flight. **Cold verification result: FAIL — two blocking issues.** **A-reg-1 (CRITICAL): Relative import fails, 0 tests collected.** ``` ssh cc-ci && cd /root/builder-clone cc-ci-run -m pytest tests/regression/ --collect-only ``` Output (cold, fresh shell): ``` collected 0 items / 1 error ImportError: attempted relative import with no known parent package tests/regression/test_canaries.py:18: from .conftest import run_recipe_ci, ... !!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!! ``` Root cause: `tests/regression/__init__.py` and `tests/__init__.py` missing. Fix: add them or use absolute imports (as other test files in this repo do). **A-reg-2 (HIGH): Plan updated (commit 7bdeb74) — 4 per-tier RED canaries now mandatory (DoD#4).** Updated plan requires RED canaries for install/upgrade/backup/restore tiers on custom-html-tiny, each asserting RED at the intended tier with prior tiers PASS. Current suite: 3 canaries only (2 good + 1 bad-custom-assertion). All four are MISSING. Cannot claim DONE without them. **Other code quality observations (not blocking):** - Canary SHAs all verified present on Gitea ✓ - custom-html-tiny: `435df8fc98ef7598` ✓ (main 2026-06-02 merge commit) - lasuite-docs: `290a8ad72d06232f` ✓ (v0.3.3+v5.1.0 merge) - custom-html v5-stale-docroot: `71e7326a99bbb690` ✓ (confirmed RED via build #81) - `CCCI_RUN_ID` and `CCCI_RUNS_DIR` correctly picked up by `results.py` ✓ - `_assert_red` / `_assert_green` logic sound ✓ - README cadence policy complete ✓ **Verdict: FAIL. Standing issues: A-reg-1 (critical), A-reg-2 (high). Builder must fix both before re-claiming this gate.** --- ## Adversary findings *(See BACKLOG-regression.md § Adversary findings: A-reg-1, A-reg-2)* --- ## Break-it probes log *(Break-it probes will be recorded here as they are run)* --- ## Pre-orientation findings @01:17Z **Known-bad fixture confirmed present and working:** - Branch: `recipe-maintainers/custom-html:v5-stale-docroot` (SHA `71e7326a99bb`) - Build #81 (run 3h ago): confirmed RED — `custom` stage FAIL; specifically: - `test_content_type_html_and_txt`: FAIL — `ccci-e0d6e804.txt Content-Type='application/octet-stream'`, expected `text/plain` - All other tiers (install/upgrade/backup/restore): PASS - `clean_teardown=true`, `no_secret_leak=true` - **Implication for regression suite DoD#3**: the known-bad canary correctly produces RED; the regression test must assert this outcome AND must be shown to fail if the server returns green for it (false-green detection). **Good canaries:** - `custom-html-tiny`: build #45 GREEN (SHA `4bd8416a209f`, 21h ago) — simple, fast - `lasuite-docs`: multi-service stack with DEPS=["keycloak"], DEPLOY_TIMEOUT=900s — test exists at tests/lasuite-docs/ **Infrastructure state:** - Bridge (`ccci-bridge_app`): running, polling 20 repos every 30s ✓ - Drone exec runner: running ✓ - Dashboard: serving at ci.commoninternet.net ✓ - Builder hasn't started regression phase: no STATUS-regression.md yet **Notes:** - Mirror phase (plan-mirror-enroll-all-recipes.md) completed DONE at 2026-06-02T01:16Z. - This phase starts fresh: no STATUS-regression.md or tests/regression/ yet. - Watching for Builder to create STATUS-regression.md and begin work.