Files
cc-ci/machine-docs/STATUS-regression.md
autonomic-bot ef65d898ed
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
status(regression): ## DONE — D-final PASS @03:36Z; all 7 canaries verified; phase complete
Adversary verdict: D-final PASS @2026-06-02T03:36Z. All 6 DoD items Adversary-verified:
DoD#1 suite committed, DoD#2 good-simple+good-significant GREEN, DoD#3 false-green caught,
DoD#4 4 per-tier RED canaries, DoD#5 README, DoD#6 PR#5 open for operator review.

PR#5: #5 — do not merge.
Builder loop stopped.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 03:38:24 +00:00

7.1 KiB

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


DONE

Adversary PASS: @2026-06-02T03:36Z — D-final PASS. All 7 canaries verified. All 6 DoD items met. No vetoes.

All DoD items Adversary-verified:

  1. tests/regression/ suite committed — 7 tests collected (DoD#1)
  2. ✓ good-simple GREEN: /var/lib/cc-ci-runs/regression-good-simple-1/ — install/upgrade=pass, test_serving PASS (DoD#2)
  3. ✓ good-significant GREEN: /var/lib/cc-ci-runs/regression-good-significant-2/ — all 5 tiers pass, clean_teardown/no_secret_leak=true (DoD#2)
  4. ✓ bad-false-green RED: /var/lib/cc-ci-runs/regression-bad-canary-1/ — custom=fail, false-green caught (DoD#3)
  5. ✓ 4 per-tier RED canaries verified (bad-install/upgrade/backup/restore — artifacts on server) (DoD#4)
  6. ✓ README.md: cadence, canaries, how to add (DoD#5)
  7. ✓ PR#5 open for operator review: #5 (DoD#6)

Phase complete. Loop stopped. PR#5 awaits operator review — do not merge.


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 ✓ rc=0, all tiers pass (run: regression-good-significant-2)
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):

# 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

# Good-significant (lasuite-docs) — verify artifact (or re-run, takes ~15-20 min):
# Quick artifact check (no re-run needed):
cat /var/lib/cc-ci-runs/regression-good-significant-2/results.json
# Expected: install=pass, upgrade=pass, backup=pass, restore=pass, custom=pass, rc implicit in level>=5
# Check PR exists and is open:
# https://git.autonomic.zone/recipe-maintainers/cc-ci/pulls/5 — state=open, 10 files, 704 insertions

Artifacts already on server

Run ID Recipe Result
regression-good-simple-1 custom-html-tiny GREEN ✓
regression-good-significant-2 lasuite-docs GREEN ✓ (all tiers: install/upgrade/backup/restore/custom=pass)
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) ✓

good-significant run 2 full results (cold-readable on server)

cat /var/lib/cc-ci-runs/regression-good-significant-2/results.json shows:

  • install=pass, upgrade=pass, backup=pass, restore=pass, custom=pass
  • level=5 (full suite), level_cap_reason="L6 recipe-local N/A"
  • clean_teardown=true, no_secret_leak=true
  • install: test_serving PASS, test_serving_and_frontend PASS
  • upgrade: test_upgrade_reconverges PASS, test_upgrade_preserves_data PASS
  • backup: test_backup_artifact PASS, test_backup_captures_state PASS
  • restore: test_restore_healthy PASS, test_restore_returns_state PASS
  • custom: auth/create-doc/health/oidc/OIDC-keycloak all PASS

This confirms run 1's upgrade failure was a transient convergence race (no retry, no weakening — the fixture itself is sound; race resolved on second cold run).


PR

PR#5: #5 Branch regression-canariesmain. 10 files, 704 insertions. Open for operator review. "Do not merge" — operator review only per DoD#6.