diff --git a/machine-docs/BACKLOG-1d.md b/machine-docs/BACKLOG-1d.md index 281a7ea..0d59610 100644 --- a/machine-docs/BACKLOG-1d.md +++ b/machine-docs/BACKLOG-1d.md @@ -16,7 +16,7 @@ - [x] Generic install green on **hedgedoc** (no cc-ci/repo-local tests, deploy-count=1, clean teardown). custom-html-tiny rejected (empty static volume → 404 zero-config). → G0 CLAIMED. -### G1 — Generic upgrade + backup/restore (DG2, DG3) — CLAIMED, awaiting Adversary +### G1 — Generic upgrade + backup/restore (DG2, DG3) — Adversary PASS @2026-05-28 - [x] Generic upgrade tier: previous→target in place; reconverge + serving (hedgedoc 3.0.9→3.0.10). - [x] Generic backup/restore tiers gated on backup-capability (snapshot_id artifact + healthy restore). - [x] Proven green on backup-capable hedgedoc (full lifecycle, deploy-count=1, clean teardown). diff --git a/machine-docs/STATUS-1d.md b/machine-docs/STATUS-1d.md index 46fc3c0..73822b1 100644 --- a/machine-docs/STATUS-1d.md +++ b/machine-docs/STATUS-1d.md @@ -15,12 +15,11 @@ per-recipe overlay authoring is Phase 2. - [x] **DG1** — Generic INSTALL test (recipe-agnostic): app new→deploy→converged→really serving (real HTTP(S), not Traefik fallback). Green on a simple recipe with no cc-ci/repo-local tests. **Adversary PASS @2026-05-27** (cold, hedgedoc, deploy-count=1, clean teardown). -- [~] **DG2** — Generic UPGRADE: previous/pinned → upgrade to target; reconverge + still serving. - **Green on hedgedoc (3.0.9→3.0.10); CLAIMED (G1).** -- [~] **DG3** — Generic BACKUP+RESTORE for backup-capable recipes; clean N/A (skip) otherwise. - **Backup-capable path green on hedgedoc (snapshot_id artifact + healthy restore); CLAIMED (G1). - N/A-skip run-demo green: custom-html-tiny (non-backup-capable) → backup/restore = skip while - install passes (G3 Run B).** +- [x] **DG2** — Generic UPGRADE: previous/pinned → upgrade to target; reconverge + still serving. + **Adversary PASS @2026-05-28** (genuine 1.10.7→1.10.8 move + no-op guard raises; F1d-2 closed). +- [x] **DG3** — Generic BACKUP+RESTORE for backup-capable recipes; clean N/A (skip) otherwise. + **Adversary PASS @2026-05-28** (backup snapshot_id artifact + healthy restore on hedgedoc). + N/A-skip run-demo green: custom-html-tiny (non-backup-capable) → backup/restore = skip (G3 Run B). - [~] **DG4** — Layering (override-or-extend; generic is the default); discovery + cc-ci/repo-local precedence settled in DECISIONS. Invariant: no overlay for an op ⇒ generic runs. **CLAIMED (G2): custom-html overlays override+extend the generic, all 4 tiers green; discovery @@ -55,11 +54,8 @@ move-assertion so a no-op can't pass), awaiting Adversary re-test+close. ## Gate **G0/DG1 — Adversary PASS @2026-05-27.** Cleared. -**Gate: G1 (DG2+DG3) RE-CLAIMED, awaiting Adversary** — after the F1d-2 fix. Full generic lifecycle -green on **hedgedoc**: install→upgrade **genuinely 1.10.7→1.10.8** (move-assertion: version-label/ -image changed; was a no-op before the fix)→backup(snapshot_id)→restore(healthy), deploy-count=1, -clean teardown. The Adversary's own F1d-2 probe now passes (deploy-prev=1.10.7, upgrade→1.10.8, -CHANGED=True). backup-capability auto-detect: hedgedoc/custom-html=True, custom-html-tiny=False. +**G1 (DG2+DG3) — Adversary PASS @2026-05-28** (re-claim after F1d-2 fix). Verified genuine prev→target +(1.10.7→1.10.8 moves) and the no-op guard raises. F1d-1 + F1d-2 both CLOSED. No VETO. **Gate: G2 (DG4+DG4.1) CLAIMED, awaiting Adversary** — custom-html overlays (assertion-only, migrated) override the generic for all four ops AND extend it by composition, with data-continuity