# BACKLOG — phase `samever`

## Build backlog

- [x] **M1** — resolver reads head version; step-back chain; unit tests. (CLAIMED 2026-06-17)
  - [x] `abra.head_compose_version(recipe)` — parse `coop-cloud.<stack>.version` from head compose.yml
  - [x] `warm_reconcile.version_key` + `newest_older_version` — single coop-cloud ordering source
  - [x] resolver chain: override → (canonical if ≠ head) → (newest-older if canonical==head) → main-tip → skip
  - [x] unit tests extended (13 pass): step-back, canonical≠head unchanged, no-older→skip, ordering, None-head
- [ ] **M2** — prove in real CI: nightly steady-state (canonical==latest) cold-on-latest steps back
  (base_version < latest); PR form (non-version-bump PR, head==canonical); discourse #4 version-bump
  UNAFFECTED; spot-check ≥1 other enrolled recipe. Awaiting M1 PASS before starting real-CI runs.

## M2 execution log (live)
- Run A (custom-html cold-on-latest, /root/samever-runA.log on cc-ci): launched 04:3xZ. No canonical
  yet → upgrade base kind=skip (head==main tip); on green promotes canonical→latest 1.13.0+1.31.1.
- Run B (next): cold-on-latest again → canonical==head → expect step-back base 1.11.0+1.29.0 (<latest).

### M2 result — CLAIMED 2026-06-17T04:55Z (all 5 demonstrations green)
- [x] Run B nightly steady-state step-back: custom-html canonical==head 1.13.0 → base 1.11.0+1.29.0,
  upgrade 1.11.0→1.13.0 (base<head real delta), 5 tiers green. [§5 DoD]
- [x] Run C version-bump UNAFFECTED (enrolled): canonical older 1.11.0 → head 1.13.0, "last-green" path.
- [x] Run D PR form: ref=2b82ebab pr=999, head==canonical → step-back still triggers.
- [x] discourse #4 UNAFFECTED: kind=ref main-tip f87c612d, migration 0.8.1→1.0.0 green. [§5 DoD]
- [x] Spot-check hedgedoc: step-back 3.0.9→3.0.10 generalizes to a 2nd recipe/tag-set, green.
