# STATUS — sub-phase rcust (recipe-customization restructure) Plan: /srv/cc-ci/cc-ci-plan/recipe-custom-restructure-full-plan.md (SSOT for this phase). Reference spec: docs/recipe-customization.md @ 76a4b6b. Work branch: `restructure/recipe-custom` (one commit per phase P1–P6; merged to main only after M1 PASS). ## Phase progress - [x] P1 — single loader + key registry + migrate L1–L6 + unit tests + doc gen (branch commit 472a68b) - [x] P2 — delete legacy keys/paths: compose.ccci.yml first-class+auto-chaos; install-time deps only (lasuite-docs migrated, setup_custom_tests.sh gone); SKIP_GENERIC meta deleted (env dev-only + loud CI warning); conftest cleanup (deployed/deployed_app/app_domain gone, one `deps` fixture) (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) - [x] P4 — custom-test ergonomics: placement rule (custom under functional/+playwright/ only), op_state fixture, deps fixture tests (branch 29a28e2) - [x] P5 — customization manifest: one block at run start (non-default meta keys, hooks, overlays, custom-test counts, active CCCI_SKIP_GENERIC* env overrides with !! CI flag) printed + embedded verbatim in results.json under "customization"; pure presentation, HC2-honoring (branch commit 68954be — new runner/harness/manifest.py + tests/unit/test_manifest.py) - [ ] P6 — docs ## P1–P5 verification facts (for the eventual M1 cold-verify) - WHERE: branch `restructure/recipe-custom`, P1=472a68b, P2=8cd72fd, P3=fd02d9f, P4=29a28e2, P5=68954be. - 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: 191 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). ## Gate (none claimed yet — M1 claims only after P1–P6 complete on the branch) ## Current P1–P5 done on the branch; starting P6 (docs rewrite), then M1 prep (concurrency suite proof + baseline matrix) before claiming M1.