diff --git a/JOURNAL-rcust.md b/JOURNAL-rcust.md index eb7d655..9e115f4 100644 --- a/JOURNAL-rcust.md +++ b/JOURNAL-rcust.md @@ -90,3 +90,17 @@ op= (install/upgrade call sites pass it) so probes can know the phase. Verified on cc-ci: cc-ci-run -m pytest tests/unit -q -> 180 passed; lint PASS. Next: P4 — discovery placement rule + op_state/deps fixtures + migrate hand-parsers. + +## 2026-06-10 P4 — custom-test ergonomics (branch 29a28e2) + +Pre-change sweeps confirmed the plan's zero-users claims: no top-level non-lifecycle test_*.py in +any recipe dir; no recipe test file reads os.environ / CCCI_OP_STATE_FILE directly (the only +op-state consumers are the generic assertions via harness.generic.op_state — harness-side, fine). +So P4 = discovery glob removal + new op_state fixture + pinning tests; no test migrations needed. +test_discovery.py's HC2 gate test moved its repo-local custom fixture under functional/ (the rule); +test_discovery_phase2.py now asserts top-level custom is NOT discovered. op_state fixture skips +(clear reason) when env unset / file missing / unparseable; tested via request.getfixturevalue. + +Verified on cc-ci: cc-ci-run -m pytest tests/unit -q -> 184 passed; lint PASS. + +Next: P5 — customization manifest (print block + results.json key). diff --git a/STATUS-rcust.md b/STATUS-rcust.md index 9ec087a..cb1dd4c 100644 --- a/STATUS-rcust.md +++ b/STATUS-rcust.md @@ -14,16 +14,17 @@ Work branch: `restructure/recipe-custom` (one commit per phase P1–P6; merged t (branch commit 8cd72fd) - [x] P3 — uniform ctx hook convention: HookCtx(.domain/.base_url/.meta/.deps/.op); all hooks take ctx; legacy signatures raise MetaError at load naming the migration (branch fd02d9f) -- [ ] P4 — custom-test ergonomics (placement rule, op_state/deps fixtures) +- [x] P4 — custom-test ergonomics: placement rule (custom under functional/+playwright/ only), + op_state fixture, deps fixture tests (branch 29a28e2) - [ ] P5 — customization manifest - [ ] P6 — docs -## P1–P3 verification facts (for the eventual M1 cold-verify) +## P1–P4 verification facts (for the eventual M1 cold-verify) -- WHERE: branch `restructure/recipe-custom`, P1=472a68b, P2=8cd72fd, P3=fd02d9f. +- WHERE: branch `restructure/recipe-custom`, P1=472a68b, P2=8cd72fd, P3=fd02d9f, P4=29a28e2. - HOW: `cc-ci-run -m pytest tests/unit -q` and `nix develop .#lint --command scripts/lint.sh` from a clean checkout of the branch. -- EXPECTED: 180 passed; `lint: PASS`. +- EXPECTED: 184 passed; `lint: PASS`. - New single loader: `runner/harness/meta.py::load()`; all-recipes typo gate + R2 proof in `tests/unit/test_meta.py`; docs §4 table generated by `scripts/gen-meta-docs.py` (sync pinned by unit test). @@ -34,4 +35,4 @@ Work branch: `restructure/recipe-custom` (one commit per phase P1–P6; merged t ## Current -P1–P3 done on the branch; starting P4 (custom-test ergonomics). +P1–P4 done on the branch; starting P5 (customization manifest).