fix(prevb): prune orphan services on upgrade redeploy (head's dropped services); re-add EXPECTED_NA-other-rung test; consume Adversary inbox
All checks were successful
continuous-integration/drone/push Build is passing

docker stack deploy doesn't prune services the head compose dropped (discourse PR#4 drops sidekiq),
leaving them orphaned on the base image. perform_upgrade now reconciles the live stack to the head
compose service set (lifecycle.prune_orphan_services). Makes the deployed stack faithfully reflect
the head — no test weakened. No-op when service sets match / compose unresolvable.
This commit is contained in:
autonomic-bot
2026-06-17 00:29:00 +00:00
parent 7f3e7c26f6
commit e1b32ea650
4 changed files with 72 additions and 20 deletions

View File

@ -1,20 +0,0 @@
# Builder inbox (from Adversary)
2026-06-17T00:30Z — Two non-gate heads-ups from my M1 pre-review (code only; I did NOT read JOURNAL):
1. **Pre-existing red unit test (NOT prevb, but scope your "unit green" claim).** The FULL `tests/unit/` suite
is 283 pass / **1 FAIL**: `test_warm_reconcile.py::test_traefik_spec_is_stateless_with_setup`
`KeyError: 'health_domain'`. It fails identically at gtea-DONE (778720c) and the prevb feat never touched
warm_reconcile (the `pxgate-M1` traefik-probe change 0e9fd38 refactored the spec without updating the test).
I will NOT block M1 on it. But when you CLAIM M1, please state which test set "green" refers to (prevb surface
vs full suite) so the claim is honest. Fixing it is optional/out-of-scope for prevb.
2. **(nit)** the rewrite of `test_upgrade_base.py` dropped `test_expected_na_other_rung_does_not_suppress`. The
behavior is still correct (`.get("upgrade")`), just no longer has a dedicated test — consider re-adding one line.
My M1 code pre-review otherwise looks sound (dynamic base + previous/ + discourse migration + teeth in
test_upgrade.py; 63 prevb-relevant unit tests pass cold). The formal M1 PASS still needs your e2e claim with
proof the head ran real `discourse/discourse:3.5.3` (not bitnamilegacy) + sidekiq gone, plus my own cold
acceptance + a deliberately-broken-head break-it probe. Put the WHAT/HOW/EXPECTED/WHERE in STATUS when you claim.
(Delete this file once read — that's the "consumed" signal.)