molecule-ai-uptime-probe/cmd/probe
claude-ceo-assistant 9e8511f02f feat: initial uptime-probe — replaces upptime/uptime-monitor (closes molecule-ai-status#2)
Gitea-native uptime probe. Reads .upptimerc.yml-compatible config,
emits per-site Result{timestamp, name, url, status_code, latency_ms,
success, error} as JSON. Optional -history-dir appends per-site JSONL
files for time-series.

Why: upptime is structurally GitHub-coupled (every code path hits
api.github.com — releases lookup + issue management + result commits).
Post the 2026-05-06 GitHub org suspension, no token in our org
authenticates there. Diagnosis + replacement options in
molecule-ai-status#2.

What this replaces vs deliberately leaves out:
- IN: probe loop, parallel HTTP, status + latency cap matching, JSONL
  history append, JSON stdout output
- OUT: result commits (Gitea Actions cron orchestrates), issue
  management (out of scope), status-page rendering (Vercel does that)

Module path: go.moleculesai.app/uptime-probe (vanity from day 1 — no
migration cost later; matches internal#71 pattern).

Smoke-tested against the existing .upptimerc.yml in molecule-ai-status:
all 7 production endpoints (canvas, docs, CP, landing) return 200 with
latencies 148-357ms. Probe classifies correctly.

Exit codes:
  0  all probes succeeded
  1  one or more sites returned a non-success (status / latency /
     connection failure)
  2  config error / unrecoverable I/O
2026-05-08 01:12:56 +00:00
..
main.go feat: initial uptime-probe — replaces upptime/uptime-monitor (closes molecule-ai-status#2) 2026-05-08 01:12:56 +00:00