Some checks failed
continuous-integration/drone/push Build is failing
good-significant re-run (regression-good-significant-2) completed GREEN: - install=pass, upgrade=pass, backup=pass, restore=pass, custom=pass - clean_teardown=true, no_secret_leak=true - All semantic assertions executed (test_serving_and_frontend, test_upgrade_reconverges, test_upgrade_preserves_data, test_backup_captures_state, test_restore_returns_state, OIDC) PR#5 opened: #5 Branch regression-canaries→main, 10 files, 704 insertions. Do not merge. All DoD items: D1 (suite committed) D2 (good canaries GREEN) D3 (false-green caught) D4 (4 per-tier RED) D5 (README) D6 (PR open). Awaiting Adversary final PASS. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
139 lines
7.0 KiB
Markdown
139 lines
7.0 KiB
Markdown
# 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 FINAL verification (all 7 canaries + PR complete)**
|
|
|
|
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#5 opened: https://git.autonomic.zone/recipe-maintainers/cc-ci/pulls/5
|
|
7. ✓ good-significant GREEN — `regression-good-significant-2`: install=pass, upgrade=pass, backup=pass, restore=pass, custom=pass, rc=0, clean_teardown=true, no_secret_leak=true
|
|
|
|
**All 7 canaries verified. All DoD items done.**
|
|
|
|
---
|
|
|
|
## 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`):
|
|
|
|
```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
|
|
|
|
# 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: https://git.autonomic.zone/recipe-maintainers/cc-ci/pulls/5**
|
|
Branch `regression-canaries` → `main`. 10 files, 704 insertions. Open for operator review.
|
|
"Do not merge" — operator review only per DoD#6.
|