plan: queue samever (older-base fallback when last-green==head, opus); IDEAS: defer canonical-history (B)
Operator 2026-06-17. Closes the prevb resolver gap: when the last-green warm-canonical base version equals the PR head version, step back to the newest published version strictly older than head (design A) instead of a same-version no-op or a skip. Design B (canonical history for a green-verified older base) saved to IDEAS. Auto-runs after regall (watchdog advances + switches to opus).
This commit is contained in:
@@ -189,3 +189,22 @@ item into the project `BACKLOG.md` as `[idea]` if/when it becomes relevant.
|
||||
harness `finally` tears down its stack).
|
||||
- *When to revisit:* if CI-queue starvation recurs (several recipes in flight, or a legitimately
|
||||
long deploy wedging others). *Added:* 2026-06-09.
|
||||
|
||||
- [ ] **Canonical *history* for a green-verified older upgrade base (design B).** *(operator-flagged
|
||||
2026-06-17; deferred from the `samever` fix — design A shipped instead)*
|
||||
Context: the dynamic upgrade-base resolver (phase `prevb`) uses the last-green warm-canonical as the
|
||||
base. When that canonical version **equals the PR head version** (a non-version-bump PR, or a re-test
|
||||
after the canonical advanced), phase `samever` (design A) steps back to the **newest published version
|
||||
strictly older than head** (from `recipe_tags`). That older *published* version isn't guaranteed to
|
||||
have passed green on cc-ci.
|
||||
**The improvement (B):** keep a short **history** in the warm-canonical registry — the last N green
|
||||
`{version, commit}` records, not just the single current one (`canonical.read_registry`/`write_registry`
|
||||
are single-record today). When stepping back, prefer the most-recent **prior canonical** (green-verified)
|
||||
over a raw published tag; fall back to design A's published-tag only when no prior canonical exists.
|
||||
- *Why deferred:* history only accrues going forward (existing recipes have none until they've gone
|
||||
green ≥2× on cold-on-latest), so design A (published-tag) is the always-present floor and must exist
|
||||
anyway. B is a quality refinement on top. Requires a registry schema change (single record → bounded
|
||||
history) + `promote_canonical`/`write_registry` appending instead of overwriting.
|
||||
- *Re-entry trigger:* when the published-tag fallback proves insufficient — e.g. a recipe's
|
||||
newest-older-published version is itself undeployable, so we'd rather upgrade from a known-green prior
|
||||
canonical — or operator request. *Added:* 2026-06-17.
|
||||
|
||||
Reference in New Issue
Block a user