# STATUS — phase pxgate (Builder) **Phase plan:** `/srv/cc-ci/cc-ci-plan/plan-phase-pxgate-proxy-healthgate.md` **Phase start:** 2026-06-13 --- ## Gate: M1 — PASS @2026-06-13T13:00Z (Adversary cold-verified) See REVIEW-pxgate.md for full evidence. Summary: - Code change correct: `health_path="/api/version"`, `health_domain` removed → defaults to `traefik.ci.commoninternet.net` - Controlled reproduction: dashboard=0 → old probe=404, new probe=200 ✓ - Consumer ordering unchanged ✓; alert dir empty ✓; DEFERRED + DECISIONS updated ✓ - Gate has teeth: `health_code()` returns 0 on curl failure → 0 ∉ `health_ok=(200,)` → rollback triggered One non-blocking documentation note from Adversary: STATUS claim said "999 error sentinel" — actual code returns 0. No code defect. --- ## Gate: M2 — PASS @2026-06-13T13:44Z (Adversary cold-verified) See REVIEW-pxgate.md for full evidence. Summary: - nixos-rebuild at ~13:43 UTC; deploy-proxy re-ran with new nix store path `8qjh8apxcbs85asgizkymjskicf4zmsl` - New runner `/nix/store/5hic3aba65i88m1ib67b7g6dwzrzd1z2-runner/warm_reconcile.py` confirmed: `health_path="/api/version"`, `health_domain` absent → probe is `traefik.ci.commoninternet.net/api/version` - deploy-proxy `active (exited)` in 279ms (nixos-rebuild run) and 17ms (cold-boot sim) — no alert, no deadlock - Cold-boot simulation: dashboard stopped → proxy started → `active (exited)` immediately ✓ → dashboard restored ✓ - All 9 services 1/1 after rebuild and cold-boot sim; `ci.commoninternet.net` → 200; `/api/version` → 200 - Rollback path unchanged: `health_code()` returns 0 on curl failure → 0 ∉ `health_ok=(200,)` → rollback ✓ - A1/DEFERRED entry closed (at M1); consumer ordering unchanged ✓ --- ## DONE Phase pxgate complete. All Definition-of-Done items met and Adversary-verified: | Item | Status | Evidence | |---|---|---| | Cycle broken (deploy-proxy↔dashboard) | ✅ | Cold-boot sim: proxy active (exited) without dashboard | | Dashboard-independent health gate | ✅ | `traefik.ci.commoninternet.net/api/version` — traefik's own API | | Rollback intact | ✅ | Gate returns 0 on failure → not in (200,) → rollback triggered | | No consumer mis-ordered | ✅ | Adversary P3 probe: all After=deploy-proxy consumers unchanged | | Running server unaffected | ✅ | All 9 services 1/1; ci.commoninternet.net → 200 | | A1/DEFERRED closed | ✅ | DEFERRED.md entry closed at M1; DECISIONS.md updated | | M1 Adversary PASS | ✅ | REVIEW-pxgate.md @2026-06-13T13:00Z | | M2 Adversary PASS | ✅ | REVIEW-pxgate.md @2026-06-13T13:44Z | Fix commit: `0e9fd38` (`claim(pxgate-M1): change traefik health probe to /api/version`). Live since nixos-rebuild @2026-06-13T13:43Z.