63 lines
3.7 KiB
Markdown
63 lines
3.7 KiB
Markdown
# STATUS — sub-phase conc (concurrency restructure)
|
||
|
||
Plan: /srv/cc-ci/cc-ci-plan/concurrency-restructure-full-plan.md (SSOT for this phase)
|
||
|
||
## DONE
|
||
|
||
Both gates Adversary-verified fresh in REVIEW-conc.md, no open VETO:
|
||
- M1 — implementation verified: PASS @2026-06-10T04:38Z (branch @d3fe9e2)
|
||
- M2 — merged + live-verified (a)–(d): PASS @2026-06-10T08:55Z (final main 139e319/74ed240)
|
||
- CONC-A1 (M2(c) live finding): fixed b6e12ef, veto LIFTED + closed @09:05Z
|
||
|
||
## Phase state
|
||
|
||
- Phase: conc — concurrency restructure (P1–P5 + tests/concurrency) — COMPLETE
|
||
- Merged to main: bb5eb3d (restructure) + b7a009c (wrapper exit-code fix) + 139e319 (CONC-A1 fix)
|
||
- Correction per M2 verdict: 139e319's first parent is 2173894 (not 4ad55ed as the claim said);
|
||
immaterial — the code-diff-empty check (139e319 vs b6e12ef) is authoritative.
|
||
|
||
## Gate claim: M2 — merged + live-verified
|
||
|
||
**WHAT**: branch merged to main after M1 PASS; live verification (a)–(d) all green on the final
|
||
main code (which includes two M2-found fixes, both already Adversary-verified: wrapper exit-code
|
||
e1c4198/b7a009c, CONC-A1 run-keyed state files b6e12ef/139e319).
|
||
|
||
**WHERE**: main tip code = merge 139e319 (parents 4ad55ed ∘ b6e12ef); branch tip b6e12ef.
|
||
All evidence builds ran post-139e319. Drone repo recipe-maintainers/cc-ci; host cc-ci.
|
||
|
||
**HOW + EXPECTED (cold re-check from your own access path):**
|
||
|
||
1. Merge integrity: `git diff 139e319 b6e12ef -- runner/ tests/ docs/ .drone.yml nix/` → EMPTY;
|
||
no force-push anywhere (reflog linear).
|
||
2. Push build green on main: Drone builds 283 (branch fix), 284 (merge 139e319), 285 (inbox
|
||
commit) → all `status=success` (push events). No main push since has a red build.
|
||
3. Suites at b6e12ef (cold clone): `cc-ci-run -m pytest tests/unit -q` → 138 passed;
|
||
`cc-ci-run -m pytest tests/concurrency -q` → 23 passed; `nix develop .#lint --command bash
|
||
scripts/lint.sh` → lint: PASS. (You already cold-verified these + mutation-proofed
|
||
test_run_state per REVIEW-conc 08:4xZ entry.)
|
||
4. **(a) cancel-mid-run, on fixed harness**: build **295** (custom immich PR=2, comment 14307
|
||
@08:50:02Z). Canceled via `DELETE /api/repos/recipe-maintainers/cc-ci/builds/295` @08:51:05Z
|
||
(HTTP 200) while mid-deploy (lock held by harness pid 763099, 4 immich services converging).
|
||
EXPECTED/observed: build `status=killed`; pid 763099 gone by 08:51:15Z (SIGTERM funnel ran
|
||
the run's own teardown); `pgrep -f run_recipe_c[i]` → none; `lslocks | grep cc-ci-app` →
|
||
none (lock released); immi services/volumes/secrets/server-envs all 0. Zero leakage, no
|
||
janitor needed (better than plan minimum).
|
||
5. **(b) parallel runs**: builds **287** (immich#2) + **288** (plausible#3), both started
|
||
08:17:40Z (parallel), both `status=success`, both logs `deploy-count = 1 (expect 1)` +
|
||
level=4. Host after: zero harness procs / services / volumes / secrets / envs.
|
||
6. **(c) double-!testme same PR**: builds **290** + **291** (both immich#2, domain immi-ad3e33).
|
||
291 log line 1: `== app lock: another run of immi-ad3e33... is in flight — waiting ==`,
|
||
`acquired` @+1411s = exactly 290's exit (08:46:05Z). BOTH `status=success`, both
|
||
`deploy-count = 1`, level=4. Zero leakage after. (Your M2(c) PASS @09:05Z already covers
|
||
this; kernel-lock-table observation yours.)
|
||
7. **(d) full green run**: build **287** = complete immich e2e on final harness, all 5 tiers
|
||
pass, level=4 (288 plausible likewise).
|
||
|
||
**Notes for verification**: builds 290/291 ran ~20 min each due to an immich-ML healthcheck
|
||
flake (your 08:43Z note) — converged within DEPLOY_TIMEOUT=1500s; unrelated to the restructure.
|
||
Unheld 0-byte lockfiles left behind by design (tidy-swept at next janitor probe).
|
||
|
||
## Blockers
|
||
|
||
(none)
|