feat(2): ghost F2-14b — upgrade-to-latest base-grace overlay (compose.ccci.yml)
Course correction (REVIEW-2 bdef282) mandates upgrade-to-latest; harness base-deploys
prev published version 1.1.1+6-alpine which predates the recipe-PR 15m start_period bump
(ships 1m) → would deadlock on the ~6-9min fresh-DB migration (swarm kill mid-migration →
held migrations_lock). Policy-blessed minimal base overlay: compose.ccci.yml re-applies the
15m app-healthcheck start_period grace to the BASE so the from-version is deployable;
install_steps.sh provides it; CHAOS_BASE_DEPLOY skips clean-tree on the untracked overlay;
persists across head checkout (idempotent — PR head ships 15m). Grace-only, no test weakened.
Prior corrupt mysql vol (stale, interrupted init) torn down. Next: full run incl upgrade.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
25
tests/ghost/compose.ccci.yml
Normal file
25
tests/ghost/compose.ccci.yml
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
# cc-ci overlay (Phase 2 F2-14b) — minimal, single-purpose: widen the `app` healthcheck
|
||||
# start_period so the UPGRADE-tier BASE deploy (a previous published ghost version) can converge.
|
||||
#
|
||||
# WHY THIS OVERLAY EXISTS (plan-ccci-compose-overlay-policy.md §1 "minimal justified fallback"):
|
||||
# upgrade-to-latest must always run (policy §1) → the harness base-deploys the previous published
|
||||
# version (e.g. 1.1.1+6-alpine), then `deploy --chaos` to the recipe-PR head. Ghost's fresh-DB first
|
||||
# boot runs a full schema migration that is ~6-9 min on cc-ci (round-trip-bound, NOT CPU-bound). The
|
||||
# published base versions ship `start_period: 1m` (+10×30s ≈ 6 min grace) on the app healthcheck —
|
||||
# too tight: swarm kills the still-migrating task, leaving a held `migrations_lock` → every later
|
||||
# task deadlocks (MigrationsAreLockedError) → the base never converges → upgrade-to-latest can't run.
|
||||
#
|
||||
# The recipe-PR (recipe-maintainers/ghost#1) fixes this for the HEAD by bumping start_period to a
|
||||
# literal 15m IN THE RECIPE. But the BASE is a *published* version that predates the PR, so it still
|
||||
# carries 1m. start_period CANNOT be an env var (abra validates the literal compose 'duration' BEFORE
|
||||
# substitution → FATA; Adversary-reproduced, REVIEW-2 4b862f6), so this cc-ci overlay applies the same
|
||||
# 15m grace to the base ONLY to make the from-version deployable — exactly the policy-blessed
|
||||
# "minimal overlay on the from-version so upgrade-to-latest can run". It is grace-only: a healthy
|
||||
# check still marks healthy immediately, so NO test/assertion is weakened and fast hosts are
|
||||
# unaffected. It is idempotent on the head (head already ships 15m). Merges deeply onto the base
|
||||
# healthcheck (test/interval/timeout/retries preserved; only start_period overridden).
|
||||
services:
|
||||
app:
|
||||
healthcheck:
|
||||
start_period: 15m
|
||||
Reference in New Issue
Block a user