status(2): Q0 CLAIMED — harness additions + custom-html parity reference proven

Q0.1 harness.http canonical Phase-2 recipe-test HTTP API.
Q0.2 discovery recurses into functional/+playwright/ subdirs.
Q0.3 custom-html PARITY.md + parity-port functional/health_check.
Q1.1 +2 recipe-specific functional + playwright smoke.

Acceptance cold-verifiable on cc-ci:
  cc-ci-run -m pytest tests/unit -v          # 21 PASS
  RECIPE=custom-html cc-ci-run runner/run_recipe_ci.py  # all 5 stages PASS, deploy-count=1
  head_ref=8a026066 == chaos-version=8a026066 (HC1 non-vacuous)

Q0.4 (dep resolver) deferred to Q2 (no Q1 recipe needs deps).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-28 04:43:02 +01:00
parent bec92659b1
commit 125a4ef8b2
3 changed files with 119 additions and 17 deletions

View File

@ -6,22 +6,22 @@ Phase plan: `/srv/cc-ci/cc-ci-plan/plan-phase2-recipe-tests.md`
## Build backlog
### Q0 — Harness additions
- [ ] **Q0.1**Vendor `recipe-maintainer/utils/tests/helpers.py` capabilities into
`runner/harness/`:
- HTTP convergence (`assert_converges`, `wait_for_http`, `retry_http_get`, `http_get`,
`http_post`) — many already partly in `lifecycle.py`/`generic.py`; add the missing pieces +
consolidate (no duplicate logic).
- TTY-wrapped abra shim (`script -qefc "abra …" /dev/null`) for backup/restore/secret/run/logs/lint.
- Backup data-integrity primitive (volume/DB seed → marker survival check).
- [ ] **Q0.2** — Discovery: recurse into `tests/<recipe>/functional/` and `tests/<recipe>/playwright/`
so per-plan `§4.1` directory layout is honored. Update `discovery.custom_tests` + `enroll-recipe.md`.
- [ ] **Q0.3** — PARITY.md template + a worked custom-html example
(`tests/custom-html/PARITY.md`). Port custom-html health_check.py to a functional test.
- [x] **Q0.1**`runner/harness/http.py` landed (canonical Phase-2 recipe-test HTTP API:
`http_get`/`http_post`/`http_request`/`retry_http_get`/`retry_http_post`/`wait_for_http`/
`assert_converges`). TTY abra wrapper already present (`runner/harness/abra.py::_run_pty`)
from Phase 1d. 11 unit tests landed.
- [x] **Q0.2**`discovery.custom_tests` recurses into `tests/<recipe>/{functional,playwright}/`
(Phase 2 §4.1 layout); 2 unit tests landed.
- [x] **Q0.3**`tests/custom-html/PARITY.md` landed (parity row for health_check + rationale for
2 new recipe-specific tests + data-integrity + playwright sections). Parity port:
`tests/custom-html/functional/test_health_check.py` (SOURCE comment present).
- [ ] **Q0.4** — Dependency resolver harness primitive (read `tests/<recipe>/recipe.toml`
`requires`/`test_requires`, deploy deps before the recipe under test, tear down with it). Mind
`MAX_TESTS`/node budget; sequence heavy ones. Defer SSO-realm-setup wiring to Q2.
- [ ] **Q0.5** — Q0 gate claim: custom-html runs the full parity + ≥2 specific suite green via
`!testme`; PARITY.md complete for custom-html; harness changes recorded in DECISIONS.md.
`MAX_TESTS`/node budget; sequence heavy ones. **Deferred to Q2** (needed once SSO providers come
online; no Phase-2 recipe in Q1 needs deps). Tracked in BACKLOG.
- [x] **Q0.5****CLAIMED @2026-05-28.** Custom-html reference recipe runs the full parity + ≥2
specific + playwright suite green on cc-ci via the existing run path; deploy-count=1;
DECISIONS.md Phase-2 section in place. Awaiting Adversary cold-verify gate PASS.
### Q1 — Pattern proof (custom-html + n8n)
- [ ] **Q1.1** — custom-html: ≥2 NEW recipe-specific functional tests (beyond parity