review(rcust): APPROVE fix-forward be2026a (services_converged completed-one-shot rule) — cold-verified diff+7 tests+199 unit+lint on fresh checkout, no false-green path (HTTP floor + minio custom test independent); conditional on post-merge lasuite-drive L5 + merged-diff==branch-diff + discourse PR=2 A/B cold re-check. Consumed 00:40Z inbox
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -380,3 +380,44 @@ need is m2p-discourse (PR=2, new main) vs ab-discourse-7ae7b0f-oldmain (PR=2, ol
|
||||
184 (PR=2, old main, L4). I will cold-verify those three when they land; my L4→L1 concern is on
|
||||
hold pending the PR=2 result, not yet a confirmed regression. Live lasu-f68b63 stack = active
|
||||
lasuite-drive proof run (expected, not a leak).
|
||||
|
||||
### M2 fix-forward APPROVE: be2026a (services_converged completed-one-shot rule) @2026-06-11T00:31Z
|
||||
|
||||
Builder proposed a 2nd lasuite-drive P2b fix on branch `fix/converged-oneshot @ be2026a` and asked
|
||||
approval before merging to main (M2 "trivial fix-forward w/ Adversary approval" path). Cold-verified
|
||||
independently (fresh clone of be2026a at /root/adv-be2026a on cc-ci, NOT the Builder's working tree):
|
||||
|
||||
- **Diff** (`git diff origin/main..be2026a runner/harness/lifecycle.py`, read myself): in
|
||||
`services_converged`, a `cur != want` deficit now passes ONLY if `docker service ps <svc>` shows
|
||||
ALL task states == `Complete`. Conservative: any Running/Preparing/Pending (spinning up) or
|
||||
Failed/Rejected (broken) in the deficit still returns False; no-tasks-yet still False; plain N/N
|
||||
and 0/0 unchanged. Targeted addition, not a rewrite.
|
||||
- **False-green analysis (my own):** only `restart_policy:none` one-shots ever show `Complete`; a
|
||||
normal crashed service shows Failed/Running(restarting), never Complete. Even if converge passed
|
||||
on a completed-but-ineffective one-shot, two INDEPENDENT gates still catch it — the generic
|
||||
`test_serving` HTTP floor and the custom-tier functional test (lasuite-drive
|
||||
`test_minio_storage.py` upload→list→download is the real bucket gate). Defense-in-depth holds; I
|
||||
could not construct a false-green path.
|
||||
- **Tests** `tests/unit/test_converged_oneshot.py` (read + cold-ran): 7 cases pin exactly the
|
||||
non-vacuity criteria — completed→converged, Failed→NOT, mixed Complete+Failed→NOT (covers the
|
||||
`docker service ps` history concern), Preparing→NOT, no-tasks→NOT, N/N→converged, 0/0→converged.
|
||||
- **Cold suite+lint from fresh be2026a checkout:** `cc-ci-run -m pytest tests/unit -q` → **199
|
||||
passed**; the 7 new tests pass alone; `nix develop .#lint --command scripts/lint.sh` → **lint:
|
||||
PASS**. Matches Builder's claim.
|
||||
- **Root cause judged genuine P2b regression** (hook moved into ops.py pre_install runs BEFORE the
|
||||
install assert; the completed one-shot's 0/1 then burns DEPLOY_TIMEOUT in the converge poll). The
|
||||
fix accepts a genuinely-healthy deploy (HTTP 200, all other services 1/1) the old `cur!=want`
|
||||
wrongly rejected — correction, not masking.
|
||||
- **Not on main** — confirmed `all(s == "Complete")` absent from origin/main; Builder held the gate.
|
||||
- **Disclosed semantic delta** (a failing one-shot now blocks install convergence earlier vs later
|
||||
at custom-tier): ACCEPTED — both paths RED, no false-green, no enrolled recipe has a
|
||||
baseline-failing one-shot.
|
||||
|
||||
**VERDICT: fix-forward be2026a APPROVED, conditional on:**
|
||||
1. Post-merge lasuite-drive proof re-run @ffa7d585afa2 PR=1 lands **L5** (binding end-to-end proof
|
||||
the fix resolves the converge hang — if it doesn't, the diagnosis was wrong and approval voids).
|
||||
2. I re-verify the MERGED diff == be2026a diff (no extra change sneaks in at merge).
|
||||
3. discourse PR=2 A/B pair (m2p-discourse / ab-discourse-7ae7b0f-oldmain — no one-shots, unaffected
|
||||
by this fix) completes and I cold-verify those levels too.
|
||||
This APPROVE does NOT clear M2; M2 still needs all per-recipe levels reconciled + my independent
|
||||
sample re-check + zero-leak teardown.
|
||||
|
||||
Reference in New Issue
Block a user