Cold re-clone @a6f967f: cardinal (recipe,filename) set identical 64=64; 0 added/0 deleted test files, 5 non-R100 renames are docstring/comment only (no assertion/wait/ skip/sys.path change); orphan-test hunt found no droppable recipe-local test; alias probe warns on both deprecated dirs; unit suite 18 passed; cfold sweep evidence audited directly (all 20 recipes 5/5, custom counts match baseline, live_pr_apps=0). M1+M2 PASS. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6.8 KiB
REVIEW — phase cf48 (Adversary)
Adversary clone: /srv/cc-ci/cc-ci-adv
Run cold from a fresh shell; no cached state.
M1: PASS @2026-06-13T05:29Z
Claim: Opus 4.8 independent review of cfold (44e0242) found NO COVERAGE LOST —
all 64 custom tests relocated 1:1 from functional//playwright/ into canonical custom/,
identical (recipe, filename) set, per-recipe counts unchanged, no assertions weakened,
deprecated aliases retained with loud warnings, lifecycle overlays untouched at top-level,
RUNG name preserved.
Cold-run evidence (all 12 acceptance checks):
-
git ls-files "tests/*/custom/test_*.py" | wc -l→ 64 ✓ (expected 64) -
git ls-files "tests/*/functional/*" "tests/*/playwright/*" | grep test_ | wc -l→ 0 ✓ -
lifecycle overlays in custom/ → 0 ✓
-
lifecycle overlays at top-level → 64 ✓
-
Per-recipe counts (all match baseline): 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 ✓
-
Cardinal coverage diff:
diff /tmp/pre.txt /tmp/head.txt→ IDENTICAL SET (empty diff) ✓ Every one of the 64(recipe, filename)pairs maps 1:1 pre→post; only parent folder changed. -
Content-change audit
git show 44e0242 --find-renames=40% --stat— 110 files changed; all 64 test files are 100% pure renames except 5 with trivial non-semantic diffs (custom-html test_browser_smoke.py docstring; keycloak ×2 comment; lasuite-drive/-meet oidc docstring; mailu sys.path redirect for moved helper). ✓ -
Stale-consumer grep:
git grep -nE "['\"/](functional|playwright)/" -- ':!tests/**' ':!docs/**' ':!machine-docs/**' ':!README.md'→ onlyrunner/harness/discovery.py:108-109(docstring lines listing deprecated aliases) ✓git grep -nE "== ['\"](functional|playwright)['\"]" -- 'runner/**'→ empty ✓
-
Deprecated-alias live probe: found
['test_new.py', 'test_old.py', 'test_ui.py']+ 2WARNING [cfold]lines for functional/ and playwright/ ✓ (all 3 dirs discovered, both deprecated dirs warn) -
Unit suite:
nix shell nixpkgs#python311Packages.pytest -c pytest tests/unit/test_discovery.py tests/unit/test_discovery_phase2.py tests/unit/test_manifest.py -q→ 18 passed ✓ -
RUNG name:
RUNGS = ("install", "upgrade", "backup_restore", "functional", "lint")— unchanged ✓ (folder rename did NOT touch the L4 RUNG name) -
git status --short→ clean (nothing to commit) ✓
Assessment: The Opus 4.8 Builder review in STATUS-cf48.md is accurate.
The cfold commit (44e0242) is a pure, non-lossy rename: 64 test files relocated from
functional//playwright/ into canonical custom/, all assertions intact, no tests dropped
or weakened, deprecated aliases backward-compatible with loud warnings. M1 PASS confirmed
independently.
cf55-vs-cf48 agreement note confirmed: both Sonnet 4.6 and Opus 4.8 reviews reach NO COVERAGE LOST. The one discrepancy (cf55 narrative claimed a keycloak sys.path depth adjustment that didn't actually exist in the diff) is a narrative inaccuracy, not a coverage defect — both models correctly conclude keycloak tests are intact. No blocking findings from either review.
M2: PASS @2026-06-13T06:45Z — NO COVERAGE LOST
Claim (Builder claim(cf48-M2) 61ad356): the no-loss verdict — cfold (44e0242)
preserved the complete pre-cfold custom-test set; no blocking findings; no Builder fix required.
M2 reuses the M1 evidence (review-only phase, no new build/sweep).
Independent cold re-verification this session (fresh git clone of origin/main @a6f967f,
new shell, no cached state — did NOT just confirm M1):
- Cardinal coverage diff re-run cold (cmd 6): pre-cfold
(recipe, filename)set from44e0242^vs post-cfoldcustom/set at HEAD → IDENTICAL (empty diff), 64 = 64. Every test maps 1:1; only the parent folder changed. - No-drift check: the 3 commits between
44e0242and HEADa6f967f(d44f799ghost db wait,ee6b613ghost retry,23f1861bridge trigger) do not alter the custom-test inventory — cardinal set still identical at current HEAD.git statusclean. - Real content-delta audit (not the Builder's word): the cfold commit has 0 added (A) and
0 deleted (D) test files —
59 R100pure renames +5renames with content (R093/R097×2/ R098/R099). I inspected the actual rename hunks for all 5 (custom-html browser_smoke, keycloak ×2, lasuite-drive/-meet oidc): every changed line is docstring/comment text only —playwright/→custom/doc-string wording and the "one level up … functional/"→"custom/" comment. No assertion, wait, timeout, skip, marker, orsys.pathline changed. Confirmed the keycloaksys.path.insertlines are byte-unchanged (validates the cf55-narrative discrepancy cf48 flagged). - Break-it: orphan-test hunt. Enumerated every top-level
tests/*/test_*.pynot in a discovered subdir and not a lifecycle name — the only hits aretests/{unit,concurrency, regression}/(harness self-tests, not recipe dirs). No recipe-local test exists that discovery could silently drop. discovery.py excludes lifecycle overlays viaLIFECYCLE_OPSand scanssubdirs = ("custom","functional","playwright"). - Deprecated-alias live probe (cold): all 3 subdirs discovered
(
['test_new.py','test_old.py','test_ui.py']) with a loudWARNING [cfold]per deprecated dir → no silent old-folder coverage loss. - Unit suite (cold):
test_discovery / test_discovery_phase2 / test_manifest→ 18 passed. - Evidence audit — read cfold REVIEW directly (not the Builder's summary): REVIEW-cfold.md
M2 PASS @2026-06-13T04:11:00Z records a real Drone
!testmesweep with all 20 enrolled recipes at level 5/5 and custom-junit counts matching this baseline exactly (ghost 4/4 incl. upgrade junit=2, lasuite-docs 5/5, mumble 5/5, custom-html-tiny 1/1, … uptime-kuma 4/4), andlive_pr_apps=0teardown clean. No silent level drop; no skipped custom tier.
Verdict: M2 PASS — NO COVERAGE LOST. cfold (44e0242) preserved the full pre-cfold
custom-test set: 64 tests relocated 1:1 into canonical custom/, identical (recipe, filename)
set, per-recipe counts unchanged, zero assertions weakened/removed/skipped, deprecated aliases
retained with loud warnings, lifecycle overlays untouched at top-level, RUNG name intact, full
real-CI sweep green at L5 across all 20 recipes with zero leaks. No blocking findings. No
VETO. Builder is clear to write ## DONE to STATUS-cf48.md (M1 + M2 both PASS).
(Consulted JOURNAL-cf48.md only AFTER forming this verdict — per anti-anchoring rule — to confirm the resumption context; nothing there altered the verdict.)