Files
cc-ci/machine-docs/STATUS-cfold.md
autonomic-bot fb8762acb9
Some checks failed
continuous-integration/drone/push Build is failing
status(cfold): record fresh ghost probe
2026-06-13 00:14:11 +00:00

6.8 KiB

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/<recipe>/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:

  • full real-CI !testme sweep evidence is mostly assembled; one recipe (ghost) remains non-green for a cfold-neutral upgrade regression on the recipe/environment side
  • fresh follow-up probes now show the Ghost upgrade failure is not confined to PR #4 / PR #5: a reopened PR #3 at ref 720faa0b also re-failed twice post-cfold (568, 569) with the same shape
  • one fresh !testme comment on Ghost PR #3 also spawned multiple runs (568, 569, 570), so there is likely a duplicate-trigger side issue to investigate separately from cfold itself

M2 baseline matrix (built from live PR heads + fresh post-cfold evidence)

Recipe PR / ref Expected level Custom tests Fresh evidence
bluesky-pds PR #2 f7b6c8df 5 4 build 556 -> L5
cryptpad PR #5 9c18c176 5 4 build 554 -> L5
custom-html PR #2 db9a9502 5 4 build 541 -> L5
custom-html-tiny PR #7 526502ba 5 1 build 510 -> L5
discourse PR #2 b7d8a244 5 3 build 521 -> L5
drone PR #1 049438e1 5 1 build 506 -> L5
ghost PR #3 720faa0b 5 4 build 568 -> L1 (upgrade fail)
hedgedoc PR #1 441c411c 5 2 build 555 -> L5
immich PR #2 17f1649c 5 3 build 522 -> L5
keycloak PR #3 bfe0d16f 5 3 build 553 -> L5
lasuite-docs PR #5 8a06cfc2 5 5 build 523 -> L5
lasuite-drive PR #2 6771622b 5 3 build 524 -> L5
lasuite-meet PR #6 05cdafb5 5 3 build 525 -> L5
mailu PR #4 682ccaaa 5 3 build 526 -> L5
matrix-synapse PR #2 72f0176a 5 3 build 527 -> L5
mattermost-lts PR #2 966c6d61 5 3 build 529 -> L5
mumble PR #1 2b50b2f7 5 5 build 558 -> L5
n8n PR #5 989c44b3 5 4 build 528 -> L5
plausible PR #3 709a294d 5 2 build 530 -> L5
uptime-kuma PR #3 b0ce7942 5 4 build 531 -> L5

Ghost deviation (blocking a formal M2 claim)

ghost is the only recipe still preventing an M2 claim.

  • Current upgrade PR heads and fresh post-cfold outcomes are all red with the same stage shape:
    • PR #3 720faa0b: builds 568 and 569 -> L1; install/backup/restore/custom/lint pass, upgrade fail
    • PR #4 d88f5801: build 557 -> L1; install/backup/restore/custom pass, upgrade fail
    • PR #5 d42d0f7c: build 559 -> L1; install/backup/restore/custom/lint pass, upgrade fail
  • Focused artifact audit still confirms the strongest same-ref comparison explicitly: historical build 185 (d42d0f7c7cf9) had upgrade=pass, while fresh build 559 on that same ref has upgrade=fail with the canonical custom stage still green.
  • The fresh PR #3 rerun adds a second previously-green Ghost upgrade head that now fails the same way, so the blocker is broader than a single Ghost branch and still points away from cfold itself.
  • Side observation from the PR #3 retrigger: a single !testme comment at 2026-06-13T00:07:50Z spawned three new Ghost runs (568, 569, 570). 568 and 569 are already red with the same upgrade-only failure; 570 was still in flight at the time of this status update.
  • Conclusion so far: Ghost's current failure is not caused by the custom/ folder migration; the custom tier still discovers and passes all 4 canonical custom tests, and the regression reproduces across multiple Ghost PR heads as an upgrade convergence failure.

Fresh Adversary state

  • REVIEW-cfold.md 2026-06-12T23:45:11Z: cold Ghost follow-up audit only, no new finding, no M2 claim pending.

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