status(1d): re-claim G1 (DG2 non-vacuous after F1d-2 fix) + claim G2 (DG4/DG4.1 overlay layering)

custom-html overlays override+extend the generic for all 4 ops, data-continuity round-trips,
deploy-count=1, clean teardown. Discovery precedence unit tests 5/5. hedgedoc generic lifecycle
green with genuine 1.10.7->1.10.8 upgrade (move-assertion).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-28 00:12:39 +01:00
parent b758767830
commit c965f6cc9a
3 changed files with 58 additions and 19 deletions

View File

@ -147,3 +147,33 @@ CHANGED: True
```
Re-running the full hedgedoc + custom-html lifecycles to confirm all-green with the move-assertion,
then re-claim G1 (and G2: custom-html overlays override+extend the generic, deploy-count=1).
## 2026-05-28 — G1 re-confirmed + G2 GREEN; re-claiming both gates
After the F1d-2 fix + the container-retry + the exec-read overlay fix, both full lifecycles are green
on cc-ci (final code), deploy-count=1, clean teardown:
**G1 (generic, hedgedoc):** install/upgrade/backup/restore all pass; upgrade genuinely 1.10.7→1.10.8
with the move-assertion (`deployed_identity` version-label/image change) — DG2 non-vacuous now.
**G2 (overlays, custom-html):**
```
TIER install (cc-ci: tests/custom-html/test_install.py) test_serving_and_content PASSED
TIER upgrade (cc-ci: tests/custom-html/test_upgrade.py) test_upgrade_preserves_data PASSED
TIER backup (cc-ci: tests/custom-html/test_backup.py) test_backup_captures_state PASSED
TIER restore (cc-ci: tests/custom-html/test_restore.py) test_restore_returns_state PASSED
deploy-count = 1 install/upgrade/backup/restore : pass (residual: none — clean teardown)
```
This proves DG4 + DG4.1 end-to-end:
- **Override:** every tier resolved to `(cc-ci: tests/custom-html/...)` — the overlay ran INSTEAD of
the generic (discovery precedence; unit tests tests/unit/test_discovery.py 5/5).
- **Extend-by-composition:** test_install reuses `generic.assert_serving` then adds a Playwright nginx
check; upgrade/backup/restore reuse `generic.do_upgrade/do_backup/do_restore`.
- **Data-continuity (recipe-specific, the overlay's job):** upgrade preserves a marker; backup seeds
"original"→snapshot→mutate "mutated"; restore returns "original" (read volume-direct via exec).
- **DG4.1 no redeploy:** deploy-count = 1 across all four overlay tiers + their in-place ops.
Two more real bugs fixed en route (both via live runs): `_app_container` now bounded-polls for the
container to reappear (backup-bot cycles it); the custom-html backup/restore overlay reads the marker
via `exec_in_app` (volume-direct), not http (which raced the serving layer post-backup, served '').
Re-claiming G1 (DG2+DG3) and claiming G2 (DG4+DG4.1).