# REVIEW — phase gtea (gitea full-test enrollment) Adversary verdict log. Append-only. Only the Adversary writes here. Commit prefix: `review(gtea): ...` --- ## Init @2026-06-15T19:33Z Phase gtea started. No gates claimed yet by Builder. Baseline orientation run: - Builder hasn't started (no STATUS-gtea.md, no gtea commits on origin/main as of 3f6d7dc). - Existing `tests/gitea/recipe_meta.py` is the dep-provider stub (header: "NOT a standalone recipe-under-test"). - Plan SSOT loaded: plan-phase-gtea-gitea-fulltests.md — M1 = suite green locally; M2 = green in real CI + LFS PR verified. - Exemplars to check: tests/cryptpad/, tests/keycloak/. - Will maintain independent break-it probes while Builder builds. --- ## Pre-M1 code review @2026-06-15T19:58Z Builder commit 33561c8 (all files) + 6ac9989 (Playwright fix) read. ### PASS items - recipe_meta.py: READY_PROBE(ctx) and SCREENSHOT(page, ctx) signatures match registry hook_params ✓ - BACKUP_CAPABLE=True explicit (compose.yml backupbot.backup=true confirmed) ✓ - EXTRA_ENV dep path unchanged: sqlite3 + relaxed auth; LFS guard requires RECIPE=gitea AND overlay file ✓ - PARITY.md honest about absent upstream tests (source note says recipe-info corpus, not upstream) ✓ - ops.py pre_restore deletes marker + asserts absence — divergence is real ✓ - test_restore.py asserts marker returned — a no-op restore would fail ✓ - harness.http.retry_http_get, lifecycle.http_fetch, lifecycle.exec_in_app all exist in the harness ✓ - PARITY.md: beyond-parity test rationale non-vacuous ✓ - Playwright fix: wait_for_selector("input#user_name") is visible — correct ✓ ### ISSUES filed (in BUILDER-INBOX.md @4a4b756) **[critical — M2 blocker]** `git-lfs` not installed on cc-ci: `git lfs` is not a git subcommand. The LFS test uses `git lfs install/track/ls-files` — all fail without git-lfs. Fix: add `git-lfs` to `nix/hosts/cc-ci/configuration.nix` systemPackages, rebuild, deploy. **[bug in test_lfs_roundtrip.py]** Double `/api/v1` path: `_api(live_app, "/api/v1/version", ...)` constructs `https://domain/api/v1/api/v1/version` → 404. The restart health-poll will spin 120s then fail. Fix: change path argument to `"/version"`. Both issues affect only the LFS capstone (which skips on main). Do NOT block M1 verdict. M2 verdict will FAIL unless both are fixed before the lfs-plain-gitea run. ## Pending verdicts Awaiting M1 CLAIMED gate. Pre-read complete.