1.9 KiB
1.9 KiB
BACKLOG — phase prevb
SSOT: /srv/cc-ci/cc-ci-plan/plan-phase-prevb-previous-dynamic-base.md.
Build backlog
M1 — implemented + green locally
- B1. Dynamic upgrade-base resolution: last-green (warm canonical registry version) → fallback
target-branch (
main) tip → else skip (declared reason). Replace the staticprevious_version(vers[-2])default inrun_recipe_ci.upgrade_base. Wire intomain()deploy. - B2.
tests/<recipe>/previous/mechanism: discovery, declared-target-version marker, base-only application (added to base deploy's COMPOSE_FILE), head exclusion (never applied to PR head), version-guard + stale-flag on mismatch. - B3. Discourse migration: shrink
compose.ccci.ymlto environmental-only (order: stop-first), delete bitnamilegacy image pins + sidekiq block; removeUPGRADE_BASE_VERSIONfromtests/discourse/recipe_meta.py. (Expect NOprevious/.) - B4. Unit tests for the new surface: base resolution (last-green / main-tip / skip),
previous/match / skip / stale, environmental-vs-version overlay layering. Updatetest_upgrade_base.pyto the new resolver API without weakening coverage. - B5. Discourse upgrade tier GREEN locally: base (bitnamilegacy:3.5.0) → head; assert deployed
appimage ==discourse/discourse:3.5.3(NOT bitnamilegacy) and nosidekiqservice post-deploy. - B6. CLAIM M1 (clean tree + STATUS verification block).
M2 — proven in real CI + spot-check
- B7. discourse PR #4
!testmeGREEN in real CI; head randiscourse/discourse:3.5.3, migration exercised. - B8. Spot-check ≥3 other upgrade-tier recipes (warm-canonical / published-predecessor / ex-
.cccie.g. keycloak/cryptpad/ghost) still green under dynamic base. Reconcile levels/records. - B9. CLAIM M2 →
## DONEafter fresh Adversary PASS on M1+M2.
Adversary findings
(Adversary-owned section — Builder does not edit below.)