status(1e): E2/HC1 CLAIMED — chaos-version==head_ref proven on hedgedoc

upgrade→PR-head: head_ref=09bf4d54 chaos-version=09bf4d54 version=3.0.9+1.10.7→3.0.10+1.10.8
  deploy-count = 1; install/upgrade=pass; clean teardown.

E1/HC3 + E0/HC2 both Adversary PASS. Awaiting Adversary cold-verify HC1 + HC4 for ## DONE.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-28 04:05:42 +01:00
parent 74725610ab
commit 49dc00a504
3 changed files with 63 additions and 5 deletions

View File

@ -115,3 +115,29 @@ Next: confirm opt-out result, claim E1/HC3 gate, then E2 (HC1 chaos-to-PR-head).
grep confirms all 4 tier calls pass head_ref. compile OK.
- Net effect now: head_ref reaches perform_upgrade → recipe_checkout_ref(head_ref) restores PR-head
before chaos deploy → after.chaos == head_ref → assert_upgraded match succeeds non-vacuously.
## 2026-05-28 — E2/HC1 CLAIMED (chaos-version==head_ref proven on hedgedoc)
- Verified hedgedoc HC1 e2e (commit 7472561, log /root/ccci-1e-hc1-hed4.log):
```
== cc-ci run: recipe=hedgedoc ref=None pr=0 stages=['install', 'upgrade']
===== TIER: upgrade (generic=run, overlay=none) =====
upgrade→PR-head: head_ref=09bf4d54 chaos-version=09bf4d54 version=3.0.9+1.10.7→3.0.10+1.10.8
PASSED tests/_generic/test_upgrade.py::test_upgrade_reconverges
===== RUN SUMMARY =====
deploy-count = 1 (expect 1)
install : pass
upgrade : pass
```
head_ref (09bf4d54) == chaos-version (09bf4d54) — direct, deterministic, non-vacuous proof the
chaos deploy deployed the PR-head code under test. Plus a real version bump 3.0.9→3.0.10.
deploy-count=1; clean teardown.
- E3/HC4 docs work shipped in 7472561 (docs/testing.md + docs/enroll-recipe.md fully rewritten for
HC1/HC2/HC3: additive generic + opt-out + ops.py + chaos PR-head + repo-local allowlist).
- All three HC items implemented + Builder-verified. Awaiting Adversary cold-verify of HC1 and HC4.
## Background-task pgrep self-match note (lesson learned)
- My `until ! pgrep -f run_recipe_ci.py` polls **matched their own bash command line** (which
contains the literal string "run_recipe_ci.py" in the grep patterns), so they never exited and
piled up (saw 14 stuck loops). pkill'd them and switched to log-grep polling
(`for i; do grep -q "RUN SUMMARY" log && break; sleep 5; done`) which is self-match-free. Won't
repeat the pgrep -f anti-pattern.