review(regression): A-reg-3 — bad-backup/bad-restore compose.yml empty (wrong tier fails); bad-install/bad-upgrade PASS cold-verified
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
autonomic-bot
2026-06-02 01:59:50 +00:00
parent cf405b4195
commit 3859cd7f40
3 changed files with 116 additions and 2 deletions

View File

@ -44,6 +44,42 @@ cc-ci-run -m pytest tests/regression/ --collect-only
--- ---
### A-reg-3 [adversary] OPEN — CRITICAL: bad-backup and bad-restore fixtures broken (empty compose.yml)
**Filed:** 2026-06-02T01:58Z
**Severity:** CRITICAL — both fixtures fail at upgrade instead of their intended tier
Cold-verified by inspecting `regression-bad-backup` and `regression-bad-restore` branches:
```bash
ssh cc-ci 'cd /root/.abra/recipes/custom-html && git diff origin/main..origin/regression-bad-backup -- compose.yml'
```
Result: compose.yml is completely empty (entire file deleted, leaving only a blank line). Same
for `regression-bad-restore`.
**Evidence from run artifacts:**
- `regression-bad-backup-1`: `results: install=pass, upgrade=fail, backup=skip`
- Expected: `install=pass, upgrade=pass, backup=fail`
- Actual: upgrade fails because chaos deploy deploys empty compose → no service → deploy error
- `regression-bad-restore-*`: never ran to completion (same root cause blocks it)
**Impact on regression test assertions:**
`_assert_red_at_tier` for bad-backup:
- `failing_tier="backup"` → checks `results["backup"]="skip"` → FAIL: "expected 'backup'='fail', got 'skip'"
- Test would FAIL with confusing assertion, not passing as expected
**Fix:** Recreate both fixture branches with correct compose.yml that:
- bad-backup: keeps full valid nginx service, only changes `backupbot.backup.path` label to `/nonexistent-cc-ci-canary-bad`
- bad-restore: keeps full valid nginx service, changes backup scope to capture a subdir that doesn't contain ci-marker.txt (so restore doesn't recover the marker)
The compose.yml should be identical to main EXCEPT for the single label/config change.
**Repro:** `git diff origin/main..origin/regression-bad-backup -- compose.yml` → empty file
**Adversary closes:** after both fixtures are recreated correctly, runs confirm:
- bad-backup: `install=pass, upgrade=pass, backup=fail`
- bad-restore: `install=pass, upgrade=pass, backup=pass, restore=fail` with `test_restore_returns_state` FAIL
---
### A-reg-2 [adversary] OPEN — Plan gap: 4 per-tier RED canaries required by updated DoD ### A-reg-2 [adversary] OPEN — Plan gap: 4 per-tier RED canaries required by updated DoD
**Filed:** 2026-06-02T01:37Z **Filed:** 2026-06-02T01:37Z
**Severity:** HIGH — DoD#4 unmet; Builder cannot claim DONE without these **Severity:** HIGH — DoD#4 unmet; Builder cannot claim DONE without these

View File

@ -0,0 +1,49 @@
# BUILDER-INBOX — from Adversary @2026-06-02T02:00Z
## A-reg-3 CRITICAL: bad-backup and bad-restore fixtures have empty compose.yml
Both `regression-bad-backup` and `regression-bad-restore` branches in custom-html have
**entirely empty compose.yml** (the whole file was deleted). This breaks the upgrade tier
for both canaries — chaos upgrade deploys an empty compose → no service → upgrade fails.
Cold verification:
```bash
ssh cc-ci 'cd /root/.abra/recipes/custom-html && git diff origin/main..origin/regression-bad-backup -- compose.yml'
```
Shows: everything from `version: "3.8"` to the end deleted, only a blank line remains.
**Run artifact evidence:**
- `regression-bad-backup-1`: `install=pass, upgrade=fail, backup=skip`
- Expected: `install=pass, upgrade=pass, backup=fail`
- `regression-bad-restore`: never reached backup/restore (same root cause)
**`_assert_red_at_tier` for bad-backup fails**: `results["backup"]="skip"` ≠ "fail"
## Fix required
For `regression-bad-backup` on custom-html: compose.yml must be the FULL valid compose
(copy of main), with ONLY this label changed:
```yaml
- "backupbot.backup.path=/usr/share/nginx/html"
```
→ changed to:
```yaml
- "backupbot.backup.path=/nonexistent-path-cc-ci-canary-bad"
```
For `regression-bad-restore` on custom-html: compose.yml must be the FULL valid compose
(copy of main), with the backupbot path pointed at a SUBDIR that doesn't contain ci-marker.txt:
```yaml
- "backupbot.backup.path=/usr/share/nginx/html/.backup-data"
```
(This dir is either empty or doesn't contain ci-marker.txt → backup succeeds but doesn't
capture the marker → restore doesn't recover it → test_restore_returns_state fails: "mutated"
not "original")
## Status
- bad-install: ✓ CONFIRMED working (install=fail, upgrade=na)
- bad-upgrade: ✓ CONFIRMED working (install=pass, upgrade=fail)
- bad-backup: ✗ BROKEN (fix needed)
- bad-restore: ✗ BROKEN (fix needed, blocked on backup fix)
- good-significant: still needs re-run (upgrade flakiness check)

View File

@ -38,8 +38,37 @@ Output: `collected 3 items` — `test_canary[good-simple]`, `test_canary[good-si
- OBSERVATION (non-blocking now): if consistently flaky, add bounded retries to readiness probe per - 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. 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 **A-reg-2 partially addressed** — 4 per-tier RED canary tests added to suite, 7 tests collect.
custom-html-tiny) not yet implemented. Builder actively working on it. See BACKLOG-regression.md. But bad-backup and bad-restore FIXTURES are broken (see A-reg-3). A-reg-2 cannot close until
all 4 canaries actually produce the expected results.
---
### D-initial-2 update @2026-06-02T02:00Z — A-reg-3 filed; bad-backup/bad-restore fixtures broken
4 per-tier RED canary tests now in suite (7 tests collect via cold --collect-only). SHAs verified:
- `4ae8866100563204` (custom-html-tiny, bad image) ✓ — bad-install + bad-upgrade fixture
- `e1e3c5fc5e2bd414` (custom-html, bad-backup) — SHA exists BUT compose.yml is empty (A-reg-3)
- `5a481cc1f6b2a462` (custom-html, bad-restore) — SHA exists BUT compose.yml is empty (A-reg-3)
**Cold-verified canary run results:**
bad-install (regression-bad-install-v2): `install=fail, upgrade=na` ✓ — install tier fails as intended
bad-upgrade (regression-bad-upgrade-v2): `install=pass, upgrade=fail, custom=skip` ✓ — upgrade tier fails as intended
bad-backup (regression-bad-backup-1): `install=pass, upgrade=fail, backup=skip` ✗ — WRONG TIER
Root cause A-reg-3: `regression-bad-backup` branch has empty compose.yml (whole file deleted, not
just backup path changed). Empty compose → chaos upgrade deploy fails → upgrade=fail, backup never
runs. Same issue for `regression-bad-restore` (same empty compose.yml diff).
**`_assert_red_at_tier` for bad-backup would FAIL** with `expected 'backup'='fail', got 'skip'`
proving the fixture is broken, not the test.
**What still needs fixing before final gate:**
1. A-reg-3: Recreate bad-backup and bad-restore fixtures with correct compose.yml (only targeted change)
2. Run bad-backup and bad-restore to confirm correct tier failures
3. Re-run good-significant (lasuite-docs) to confirm upgrade race is transient
4. Open PR
--- ---