chore(prevb): bootstrap phase state + settled dynamic-base/previous decisions
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@ -1441,3 +1441,24 @@ but stays well within the ≤90 s budget. Acceptable.
|
||||
(same model as keycloak realm marker). Idempotent creation (409 = already exists → OK).
|
||||
`pre_restore` deletes it to create a genuine divergence from backup state; `test_restore` asserts
|
||||
its return. The sqlite3 DB is the persistence layer being tested.
|
||||
|
||||
- **Dynamic upgrade base — SETTLED (2026-06-17, phase prevb).** The upgrade tier's BASE version is
|
||||
resolved at run time, replacing the static `previous_version(vers[-2])` default. Resolution order:
|
||||
(1) **last-green** = the warm-canonical registry record (`canonical.read_registry(recipe).version`,
|
||||
status warm/idle) when present; (2) fallback **target-branch (`main`) tip** = the recipe repo's
|
||||
`main` HEAD (a git ref, chaos-deployed) — the true predecessor the PR merges onto; (3) **else skip**
|
||||
the upgrade tier with a declared reason (new recipe / no predecessor / head==main). EXPECTED_NA[upgrade]
|
||||
and `upgrade∉stages` still short-circuit to skip first. `UPGRADE_BASE_VERSION` is RETAINED as an
|
||||
optional explicit override (wins when set) for the rare PR-adds-version-above-newest-tag case, but is
|
||||
no longer the default and is removed from discourse. This intentionally changes every recipe's default
|
||||
base from `vers[-2]` to last-green/main-tip (plan-mandated; M2 spot-check validates non-regression).
|
||||
|
||||
- **Per-recipe `previous/` overlay — SETTLED (2026-06-17, phase prevb).** `tests/<recipe>/previous/`
|
||||
optionally holds the minimal config to deploy the *previous (last-green) version* when it can't deploy
|
||||
as-published (e.g. `compose.previous.yml` for an image relocation). It declares the version it targets
|
||||
(a `previous/VERSION` marker line) and the harness applies it **only to the base deploy and only when
|
||||
the resolved base is that exact published version**; it is NEVER applied to the PR head, and on a
|
||||
main-tip base or version mismatch it is SKIPPED and flagged stale ("previous/ targets X, base is Y —
|
||||
remove it"). The all-deploys `compose.ccci.yml` overlay is now ENVIRONMENTAL-only (node-reality tweaks,
|
||||
no version-specific image pins or service add/drop); version-specific repairs live in `previous/`.
|
||||
Discourse ships NO `previous/` (base bitnamilegacy:3.5.0 deploys clean).
|
||||
|
||||
Reference in New Issue
Block a user