# STATUS — phase cfold (custom-folder collapse) **Phase:** cfold — collapse `functional/`+`playwright/` into `custom/` **Builder:** autonomic-bot **Updated:** 2026-06-12 --- ## M1 — PASS Gate result: `REVIEW-cfold.md` 2026-06-12T16:20Z -> **M1 PASS** Inputs for verification: - Implementation commit: `44e0242` (`feat(cfold): canonicalize custom test layout`) Completed in this checkpoint: - discovery.py: `custom/` canonical + deprecated aliases with warnings - `git mv` all 64 custom tests (60 functional + 4 playwright) across 20 recipes - helper modules moved alongside their tests into `custom/` - sys.path refs updated in mailu lifecycle overlays - docs updated (`README.md`, `recipe-customization.md`, `testing.md`, `enroll-recipe.md`) - unit tests updated (`test_discovery.py`, `test_discovery_phase2.py`, `test_manifest.py`) - manifest.py now reports canonical `custom` counts WHAT: - M1 implementation is complete: custom-test discovery is canonicalized to `custom/`, deprecated aliases warn loudly instead of silently dropping coverage, all cc-ci custom tests/helpers moved to `tests//custom/`, manifest counts are canonicalized, and the placement-rule docs/unit tests were updated. HOW: - `git ls-files "tests/*/custom/test_*.py" | wc -l` - `git ls-files "tests/*/functional/*" "tests/*/playwright/*"` - `for recipe in bluesky-pds cryptpad custom-html custom-html-tiny discourse drone ghost hedgedoc immich keycloak lasuite-docs lasuite-drive lasuite-meet mailu matrix-synapse mattermost-lts mumble n8n plausible uptime-kuma; do count=$(git ls-files "tests/$recipe/custom/test_*.py" | wc -l); printf "%s %s\n" "$recipe" "$count"; done` - `nix shell nixpkgs#python311Packages.pytest -c pytest tests/unit/test_discovery.py tests/unit/test_discovery_phase2.py tests/unit/test_manifest.py -q` EXPECTED: - Total canonical custom tests: `64` - Old tracked trees: no output for `functional/*` or `playwright/*` - Per-recipe counts exactly match the baseline table below - Focused unit suite: `18 passed` WHERE: - Discovery + alias warnings: `runner/harness/discovery.py` - Canonical manifest counts: `runner/harness/manifest.py` - Migrated custom tests/helpers: `tests/*/custom/` - Focused unit coverage: `tests/unit/test_discovery.py`, `tests/unit/test_discovery_phase2.py`, `tests/unit/test_manifest.py` - Placement-rule docs: `docs/recipe-customization.md`, `docs/testing.md`, `docs/enroll-recipe.md`, `README.md` Adversary verdict: - `machine-docs/REVIEW-cfold.md` lines 52-77 - PASS facts include: 64 canonical custom tests, zero old tracked custom trees, focused unit suite `18 passed`, deprecated-alias warning probe green, normalized `(recipe, filename)` coverage set preserved exactly (`missing []`, `extra []`). --- ## M2 — IN PROGRESS Current work item: - build the pre-sweep baseline matrix (recipe -> expected level + custom-test set) - then run the full real-CI `!testme` sweep and capture recipe-by-recipe evidence --- ## Baseline (pre-cfold) — custom test count per recipe | Recipe | Count | |--------|-------| | bluesky-pds | 4 | | cryptpad | 4 | | custom-html | 4 | | custom-html-tiny | 1 | | discourse | 3 | | drone | 1 | | ghost | 4 | | hedgedoc | 2 | | immich | 3 | | keycloak | 3 | | lasuite-docs | 5 | | lasuite-drive | 3 | | lasuite-meet | 3 | | mailu | 3 | | matrix-synapse | 3 | | mattermost-lts | 3 | | mumble | 5 | | n8n | 4 | | plausible | 2 | | uptime-kuma | 4 | | **TOTAL** | **64** |