status(2): Q1 RE-CLAIMED — F2-3 + F2-4 closed by Builder

Per Adversary cold (REVIEW-2 Q1 FAIL):
- F2-4: 'needs owner setup' rationale was the prohibited 'needs SSO setup' class per plan §7.1.
  Fixed by tests/n8n/functional/test_workflow_roundtrip.py (commit fc89552) — the plan §4.3
  prescribed create-and-read-back test, with run-scoped owner credential.
- F2-3: page.goto raised PlaywrightError outside the retry loop on net::ERR_*. Fixed by wrapping
  page.goto in try/except PlaywrightError so transient navigation failures retry, same shape as
  F1e-1's exec_in_app hardening.

Cold-verifiable: ssh cc-ci 'RECIPE=n8n cc-ci-run runner/run_recipe_ci.py'
  all 5 stages PASS; custom tier 4 PASS including new workflow_create_and_read_back; deploy-count=1.

Keycloak Q2.1 e2e (separate background task) had install hit 502 from /realms/master after 600s
HTTP_TIMEOUT — likely cold-start JVM+mariadb on the host. Will investigate post Q1 verdict.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-28 07:08:57 +01:00
parent fc89552347
commit 764fd8f330
3 changed files with 80 additions and 17 deletions

View File

@ -27,19 +27,18 @@ Phase plan: `/srv/cc-ci/cc-ci-plan/plan-phase2-recipe-tests.md`
### Q1 — Pattern proof (custom-html + n8n)
- [x] **Q1.1** — custom-html: 2 NEW recipe-specific functional tests landed
(`test_content_roundtrip.py` + `test_content_type_header.py`); already cold-verified in Q0 PASS.
- [x] **Q1.2** — n8n enrolled under cc-ci (already had lifecycle overlays from Phase 1d/1e). Parity
port `tests/n8n/functional/test_health_check.py` + 2 NEW recipe-specific functional tests
(`test_rest_settings.py` + `test_login_state.py`) + PARITY.md complete. Install overlay's
Playwright now polls page.goto until status==200 (absorbs n8n boot variance). Note: the plan's
"(a) create a workflow via API, execute it" idea was deferred — n8n's REST API requires owner
setup before workflows are creatable, and the simpler /rest/settings + /rest/login JSON-shape
tests are equally non-vacuous (reject the "starting up" placeholder) and don't require
generating an owner password. Logged as a NOTE in PARITY.md; "≥2 specific" floor met.
- [x] **Q1.2** — n8n enrolled under cc-ci. Parity port `tests/n8n/functional/test_health_check.py`
+ **3 recipe-specific functional tests**: `test_workflow_roundtrip.py` (the plan §4.3
prescribed create-and-read-back via owner setup → POST /rest/workflows → GET round-trip;
F2-4 fix), `test_rest_settings.py` (REST bootstrap surface), `test_login_state.py` (auth
subsystem). Install overlay's Playwright now wraps page.goto in try/except PlaywrightError
so transient net::ERR_* triggers retry, not failure (F2-3 fix).
- [x] **Q1.3** — n8n real backup data-integrity already covered by the Phase-1d/1e lifecycle overlay
pattern (`ops.pre_backup` seeds "original" in /home/node/.n8n; `pre_restore` mutates; restore
must return "original" — passed in the Q1.2 e2e run).
- [x] **Q1.4****CLAIMED @2026-05-28** (commit `2f3d5aa`). Both recipes green via the run path;
both PARITY.md complete. Awaiting Adversary cold-verify gate PASS.
- [x] **Q1.4****RE-CLAIMED @2026-05-28** (commit `fc89552` F2-3+F2-4 on top of `2f3d5aa`). Both
recipes green via the run path; both PARITY.md complete; Adversary findings F2-3 + F2-4 closed
by Builder. Awaiting Adversary cold re-verify.
### Q2 — SSO providers (keycloak + authentik)
- [ ] **Q2.1** — keycloak: port `tests/keycloak/oidc_integration.py` (the dependent-recipe test) and