diff --git a/.drone.yml b/.drone.yml index db9b88e..08478c5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -57,7 +57,7 @@ concurrency: steps: - name: ci environment: - STAGES: install,upgrade,backup + STAGES: install,upgrade,backup,restore,custom CCCI_JANITOR_MAX_AGE: "0" # The exec runner points HOME at a per-build workspace; force it to /root so abra finds its # server config + recipes under /root/.abra (as the manual M4/M5 runs did). Safe: capacity=1 diff --git a/machine-docs/BACKLOG-1d.md b/machine-docs/BACKLOG-1d.md index 0d59610..be0a606 100644 --- a/machine-docs/BACKLOG-1d.md +++ b/machine-docs/BACKLOG-1d.md @@ -22,7 +22,7 @@ - [x] Proven green on backup-capable hedgedoc (full lifecycle, deploy-count=1, clean teardown). - [ ] DG3 N/A-skip run-demo on a non-capable serving recipe → folded into G3 (custom-html-tiny). -### G2 — Layering + discovery + precedence (DG4, DG4.1) — CLAIMED, awaiting Adversary +### G2 — Layering + discovery + precedence (DG4, DG4.1) — Adversary PASS @2026-05-28 - [x] Migrated custom-html overlays to the assertion-only contract (override + extend + data-continuity). - [x] Override proven (all 4 tiers ran cc-ci overlays); extend-by-composition (reuse generic helpers); no redeploy (deploy-count=1); precedence repo-local>cc-ci>generic via tests/unit/test_discovery.py (5/5). diff --git a/machine-docs/STATUS-1d.md b/machine-docs/STATUS-1d.md index 73822b1..04fde58 100644 --- a/machine-docs/STATUS-1d.md +++ b/machine-docs/STATUS-1d.md @@ -20,13 +20,11 @@ per-recipe overlay authoring is Phase 2. - [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 +- [x] **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 - precedence unit tests 5/5.** -- [~] **DG4.1** — Overlays reuse the deployment: ONE deploy + ONE teardown per run; no extra - new/deploy/undeploy (assert via deploy-count). **CLAIMED (G2): deploy-count=1 across the full - overlay lifecycle.** + **Adversary PASS @2026-05-28** (override LIVE on custom-html's 4 ops + extend + precedence 5/5). +- [x] **DG4.1** — Overlays reuse the deployment: ONE deploy + ONE teardown per run; no extra + new/deploy/undeploy (assert via deploy-count). **Adversary PASS @2026-05-28** (deploy-count=1). - [~] **DG5** — Custom install-steps hook + graceful-generic rule; fail-without / pass-with proof. **CLAIMED (G3): custom-html-tiny — install fails without the hook (404, graceful), passes with tests/custom-html-tiny/install_steps.sh seeding content.** @@ -57,13 +55,8 @@ move-assertion so a no-op can't pass), awaiting Adversary re-test+close. **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 -(upgrade-survives marker; backup "original"→mutate→restore "original"). All 4 overlay tiers green, -**deploy-count = 1** (no redeploy), clean teardown. Discovery precedence (repo-local > cc-ci > -generic) + the "no overlay ⇒ generic" invariant proven by `tests/unit/test_discovery.py` (5/5). -Reproduce (cold): `RECIPE=custom-html STAGES=install,upgrade,backup,restore CCCI_JANITOR_MAX_AGE=0 \ -cc-ci-run runner/run_recipe_ci.py` (TIER lines show `cc-ci:` overlays) + `cc-ci-run -m pytest tests/unit`. +**G2 (DG4+DG4.1) — Adversary PASS @2026-05-28** (override LIVE on custom-html's 4 ops, extend-by- +composition, data-continuity, deploy-count=1, precedence unit tests 5/5). No VETO. **Gate: G3 (DG5) CLAIMED, awaiting Adversary** — custom install-steps hook on **custom-html-tiny**: WITHOUT `tests/custom-html-tiny/install_steps.sh` the generic install FAILS (404, graceful-generic —