- dstamp: attribute + fix the discourse abra-stamp drift (env change 06-05→ 06-10, harness-neutral, currently pinning discourse at L1); blast-radius sweep; HC1 keeps its teeth - mailu: backupbot v2 labels recipe PR, restore proven on real seeded mail, backup rung earned instead of skipped (operator approved re-entry) - kuma: uptime-kuma first-run wizard + create-a-monitor functional test (Socket.IO or Playwright, real probe evidence, flake-checked) - drone: gitea-dep enrollment, maximal subset per Phase-2 scoping; P0 /etc/timezone host deploy is orchestrator-owned (3bde76f committed)
71 lines
3.9 KiB
Markdown
71 lines
3.9 KiB
Markdown
# Phase `kuma` — uptime-kuma create-a-monitor functional test
|
|
|
|
**Mission (operator-approved 2026-06-11, DEFERRED re-entry):** add the §4.3-prescribed
|
|
functional test that completes uptime-kuma's first-run setup wizard and exercises its
|
|
core function — create a monitor, see it actually probe a target — then check off the
|
|
DEFERRED entry. This is a cc-ci-repo-only phase (tests/uptime-kuma/), no recipe PR.
|
|
|
|
State files: `STATUS-kuma.md`, `BACKLOG-kuma.md`, `REVIEW-kuma.md`, `JOURNAL-kuma.md`.
|
|
DECISIONS.md shared.
|
|
|
|
## 1. Starting facts
|
|
|
|
- DEFERRED entry (2026-05-28): uptime-kuma's first-run setup wizard + monitor CRUD run
|
|
over **Socket.IO** (not plain REST) — that's why it was deferred as fiddly. The
|
|
existing coverage is install/upgrade/health (+ screenshot, fixed in the shot phase);
|
|
the recipe currently earns its level without proving its actual function.
|
|
- uptime-kuma has no stable public REST API for this in the pinned version; the web UI
|
|
drives everything via socket.io events (`setup`, `login`, `add monitor`,
|
|
`uptimeList`). Two viable approaches — pick ONE and justify in DECISIONS.md:
|
|
(a) **python-socketio client** speaking the events directly (fast, headless, but
|
|
couples to the event names of the pinned version); or
|
|
(b) **Playwright through the real UI** (slower, but version-robust and reuses the
|
|
harness browser stack like other recipes' playwright tests).
|
|
- Wizard creates the admin credential: generated per-run, never logged (secret-safety
|
|
rules apply; the manifest redaction conventions cover meta, your test must not print
|
|
it either).
|
|
|
|
## 2. Work requirements
|
|
|
|
1. **Test design:** complete the first-run wizard (admin create) → create an HTTP
|
|
monitor pointing at a target the harness controls (e.g. the app's own /; or a
|
|
second known-up service in the deploy) → wait bounded time for ≥1 check result →
|
|
assert the monitor reports UP with a real probe timestamp. Negative teeth: a monitor
|
|
pointed at a dead target must go DOWN (proves the probe isn't a stub) — include it
|
|
if it fits the runtime budget, else justify.
|
|
2. **Placement per rcust conventions:** `tests/uptime-kuma/functional/` (or
|
|
`playwright/` if option b), uniform fixtures (`live_app`, `meta`, ctx hooks), no new
|
|
meta keys without registry+docs.
|
|
3. **Runtime budget:** the whole addition stays within the recipe's normal functional
|
|
tier budget (target ≤ ~90s added; bounded waits, no flaky sleeps — poll with
|
|
deadline).
|
|
4. **Prove in real CI:** full uptime-kuma lifecycle green with the new test active
|
|
(level should hold or rise under the de-capped ladder); ≥1 drone `!testme` run.
|
|
5. **Close records:** tick the DEFERRED entry with commit + run pointers.
|
|
|
|
## 3. Gates
|
|
|
|
**M1 — Test implemented + green.** Approach chosen and justified; test lands with
|
|
bounded waits and real assertions; full local-path lifecycle green. Adversary
|
|
cold-verifies: the monitor result is REAL (not asserted from config echo — there must
|
|
be evidence a probe executed), credentials never leak into logs/artifacts, runtime
|
|
budget held, nothing weakened.
|
|
|
|
**M2 — Proven in real CI.** Drone-path run green with the new test; flake check (2
|
|
consecutive green runs); levels reconciled; DEFERRED closed. Fresh Adversary PASS →
|
|
`## DONE`.
|
|
|
|
## 4. Guardrails (binding)
|
|
|
|
- No gate weakening; the new test only ADDS coverage. Secret-safety: generated admin
|
|
credentials never printed/committed. Real-CI etiquette: ≤2-3 concurrent deploys,
|
|
teardown on every exit path, never touch `~/.abra/recipes/uptime-kuma` mid-build.
|
|
- Commit author `autonomic-bot <autonomic-bot@noreply.git.autonomic.zone>`; push every
|
|
commit. CI host: no python3 on default PATH (use `cc-ci-run`).
|
|
|
|
## 5. Definition of Done
|
|
|
|
uptime-kuma proves its actual function in CI (wizard + created monitor genuinely
|
|
probing), flake-checked through the drone path, budget held, DEFERRED checked off,
|
|
M1+M2 fresh Adversary PASSes.
|