diff --git a/REVIEW-kuma.md b/REVIEW-kuma.md index afb5b01..f374366 100644 --- a/REVIEW-kuma.md +++ b/REVIEW-kuma.md @@ -72,3 +72,64 @@ will need to create a test PR. - The monitor's first heartbeat entry is sufficient if it has: `status: 1`, `time` > deploy timestamp Builder has not yet started (no STATUS-kuma.md, no kuma commits). Waiting for M1 claim. + +--- + +## M1: PASS @2026-06-11T18:26Z + +**Claim commit:** `fe8922c claim(kuma): M1 PASS — test_monitor_wizard green at LEVEL 5 via drone build #460` +**Test commit:** `8da59cf feat(kuma): implement wizard+monitor Playwright test` + +### Cold-verify evidence (Adversary-independent, from own clone + ssh cc-ci) + +**1. Test file location and content** ✓ +- File: `tests/uptime-kuma/playwright/test_monitor_wizard.py` (167 lines) +- Correct placement per plan §2 "option b" + discovery.py `playwright/` subdir +- Discovery confirmed: `runner/harness/discovery.custom_tests` recurses into `playwright/` +- `live_app` fixture from root `tests/conftest.py` works (session-scoped, reads `CCCI_APP_DOMAIN`) + +**2. Drone build #460 results (read from /var/lib/cc-ci-runs/460/results.json on cc-ci)** +``` +level: 5 +recipe: uptime-kuma ref: eb4521cc5d77 + functional.test_uptime_kuma_root_serves [pass] 20ms + functional.test_socketio_polling_handshake [pass] 26ms + functional.test_uptime_kuma_spa_has_branding [pass] 27ms + playwright.test_monitor_wizard_and_probe [pass] 2817ms +clean_teardown: True +no_secret_leak: True +playwright count: 1 +``` +All tiers PASS: install/upgrade/backup/restore/custom/lint = Level 5. + +**3. Probe reality** ✓ +- `test_monitor_wizard_and_probe` PASSED with both positive and negative assertions: + - Self-probe monitor → status "Up" (requires real Socket.IO heartbeat from uptime-kuma server) + - Dead-port monitor (`127.0.0.1:19999`) → status "Down" (proves probe engine not a stub) + - Heartbeat datetime row present (regex `\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}`) — real timestamp +- 2.817s runtime proves fast connection-refused (dead-port negative check confirmed real) + +**4. Secret safety** ✓ +- `_pw` (64-char UUID hex) used only in `.fill()` calls — never printed, never in assertion messages +- `no_secret_leak: True` confirmed by independent results.json read + +**5. Approach justification** ✓ +- `machine-docs/DECISIONS.md` entry "2026-06-11 — uptime-kuma: Playwright (option b)" present +- Confirms python-socketio absent, Playwright handles Socket.IO transparently, selectors confirmed + in 2.2.1 compiled bundle `dist/assets/index-D_mnxLA0.js` + +**6. Runtime budget** ✓ +- 2.817s actual ≪ 90s target + +**7. Nothing weakened** ✓ +- All 3 existing custom tests still PASS (health_check, socketio_handshake, spa_branding) +- No existing assertions removed or softened + +**8. PR comment** ✓ +- git.autonomic.zone/recipe-maintainers/uptime-kuma/pulls/3 shows: + `🌻 cc-ci — uptime-kuma @ eb4521cc ✅ passed` + +### M1 verdict: **PASS** — Builder cleared to proceed to M2. + +Note: build #462 (flake-check second run for M2) was already in progress at time of this verdict. +DEFERRED close + PARITY.md update are M2 pre-conditions per BACKLOG.