test(discourse): UPGRADE_BASE_FLOOR — exclude structurally-invalid upgrade bases #15
Reference in New Issue
Block a user
No description provided.
Delete Branch "test/discourse-upgrade-base-floor-20260804"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Stale-test fix: discourse upgrade-tier base selection vs the 0.8→1.0 structural break
Stale behavior: the dynamic upgrade-base resolver (phase prevb/samever) steps back from the
unbumped
1.0.0+3.5.3version label to0.8.1+3.5.0— crossing the bitnami→official db-familybreak (pgvector/pg17 → discourse/postgres:pg18; the bitnami cluster has no
discourserole andpg_upgrade preserves-not-creates roles). That in-place path has never been supported upstream and
can never converge, so the upgrade tier red'd twice on it (drone #1165 on 2026-07-31, #1171 in the
2026-08-03 weekly run) while the recipe's real official→official path verified green both times.
The fix —
UPGRADE_BASE_FLOOR(phase basefloor): a recipe_meta declaration naming the firstpost-break published version. Resolution stays fully dynamic (this is not the §2.G-removed
static pin): the floor only excludes structurally-impossible candidates in all three resolver
paths (canonical / step-back / no-canonical fallback); if no ≥-floor predecessor exists the tier
records a declared skip — never a silent pass.
tests/discourse/recipe_meta.pydeclaresUPGRADE_BASE_FLOOR = "1.0.0+3.5.3"with the full rationale in place.Unit-verified: head
1.0.0+3.5.3→ declared skip (previously: wrong0.8.1+3.5.0pick);post-release head
2.x+2026.7.1→ base1.0.0+3.5.3, the real migration path. Once the operatorruns
abra recipe release discourse, the tier automatically tests official→official again.No assertion weakened — below-floor in-place upgrades were never supported coverage; the skip
is declared and recorded in the RUN SUMMARY.
Paired recipe PR: recipe-maintainers/discourse#6 (2026.7.1 bump,
verified green by direct deploy in the weekly run). Full-suite verification with this branch runs
next (serialized behind the in-flight mailu re-verification build); merged on green per policy.
Verified GREEN — cold full-suite ×1, level 5 of 5 paired with discourse recipe PR #6 head (
bfa21bc4), logverify-discourse-20260804T174918Z.1.log:install/upgrade/backup/restore/custom all pass. The upgrade tier resolved base = main-tip (official family — the floor correctly excluded the structurally-invalid 0.8.x bases), converged to the head's
discourse/discourse:2026.7.1, and the now version-agnostic faithfulness assertions passed.Three iterations, all documented: (1) meta key-registry entry missing → registered; (2) the original stale hardcoded
:3.5.3pin surfaced → made version-agnostic (family assertion, not weakened); (3) full green. Two intermediate 401s were transient git.autonomic.zone blips, not fix iterations.Merging directly per policy (the /cc-ci-tests-update invocation is the authorization).