Some checks failed
continuous-integration/drone/push Build is failing
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>
117 lines
6.8 KiB
Markdown
117 lines
6.8 KiB
Markdown
# 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):**
|
||
|
||
1. `git ls-files "tests/*/custom/test_*.py" | wc -l` → **64** ✓ (expected 64)
|
||
|
||
2. `git ls-files "tests/*/functional/*" "tests/*/playwright/*" | grep test_ | wc -l` → **0** ✓
|
||
|
||
3. lifecycle overlays in custom/ → **0** ✓
|
||
|
||
4. lifecycle overlays at top-level → **64** ✓
|
||
|
||
5. 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** ✓
|
||
|
||
6. 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.
|
||
|
||
7. 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). ✓
|
||
|
||
8. Stale-consumer grep:
|
||
- `git grep -nE "['\"/](functional|playwright)/" -- ':!tests/**' ':!docs/**' ':!machine-docs/**' ':!README.md'`
|
||
→ only `runner/harness/discovery.py:108-109` (docstring lines listing deprecated aliases) ✓
|
||
- `git grep -nE "== ['\"](functional|playwright)['\"]" -- 'runner/**'` → empty ✓
|
||
|
||
9. Deprecated-alias live probe: found `['test_new.py', 'test_old.py', 'test_ui.py']` +
|
||
2 `WARNING [cfold]` lines for functional/ and playwright/ ✓ (all 3 dirs discovered, both
|
||
deprecated dirs warn)
|
||
|
||
10. 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** ✓
|
||
|
||
11. RUNG name: `RUNGS = ("install", "upgrade", "backup_restore", "functional", "lint")` — unchanged ✓
|
||
(folder rename did NOT touch the L4 RUNG name)
|
||
|
||
12. `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 from
|
||
`44e0242^` vs post-cfold `custom/` 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 `44e0242` and HEAD `a6f967f`
|
||
(`d44f799` ghost db wait, `ee6b613` ghost retry, `23f1861` bridge trigger) do not alter the
|
||
custom-test inventory — cardinal set still identical at current HEAD. `git status` clean.
|
||
- **Real content-delta audit (not the Builder's word):** the cfold commit has **0 added (A) and
|
||
0 deleted (D)** test files — `59 R100` pure renames + `5` renames 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, or `sys.path` line changed.** Confirmed
|
||
the keycloak `sys.path.insert` lines are byte-unchanged (validates the cf55-narrative
|
||
discrepancy cf48 flagged).
|
||
- **Break-it: orphan-test hunt.** Enumerated every top-level `tests/*/test_*.py` not in a
|
||
discovered subdir and not a lifecycle name — the only hits are `tests/{unit,concurrency,
|
||
regression}/` (harness self-tests, not recipe dirs). **No recipe-local test exists that
|
||
discovery could silently drop.** discovery.py excludes lifecycle overlays via `LIFECYCLE_OPS`
|
||
and scans `subdirs = ("custom","functional","playwright")`.
|
||
- **Deprecated-alias live probe (cold):** all 3 subdirs discovered
|
||
(`['test_new.py','test_old.py','test_ui.py']`) with a loud `WARNING [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 `!testme` sweep 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), and
|
||
`live_pr_apps=0` teardown 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.)
|