Design and implementation plan for **kuma-sync**, the in-house Go controller that replaces AutoKuma (removed in #1340 after the failed pilot).
- Spec: `docs/superpowers/specs/2026-10-18-kuma-sync-design.md`
- Plan: `docs/superpowers/plans/2026-10-18-kuma-sync.md`
Owner decisions: Go, a typed CRD, ownership via a Kuma tag, latest stable versions everywhere.
Main calls of mine, open to review:
- `KumaMonitor` (`uptime.renner.uno/v1alpha1`): one kind with a `type` enum and per-type blocks, enforced by CEL.
- Ownership tag value `<namespace>/<name>`, not the UID, so a rebuilt cluster adopts the existing monitors.
- Kuma client: `breml/go-uptime-kuma-client` v0.6.2 (tested against Kuma 2.5.6), behind an internal interface.
- A finalizer plus periodic orphan GC; no local state.
- Integration tests against a real Kuma 2.5.6 container that reproduce the AutoKuma pilot automatically.
This also carries two small edits to the parent plan that came after #1330 merged: the owner answers and the SMTP secret layout.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Design and implementation plan for kuma-sync, the in-house Go controller that replaces AutoKuma (removed in #1340 after the failed pilot).
docs/superpowers/specs/2026-10-18-kuma-sync-design.mddocs/superpowers/plans/2026-10-18-kuma-sync.mdOwner decisions: Go, a typed CRD, ownership via a Kuma tag, latest stable versions everywhere.
Main calls of mine, open to review:
KumaMonitor(uptime.renner.uno/v1alpha1): one kind with atypeenum and per-type blocks, enforced by CEL.<namespace>/<name>, not the UID, so a rebuilt cluster adopts the existing monitors.breml/go-uptime-kuma-clientv0.6.2 (tested against Kuma 2.5.6), behind an internal interface.This also carries two small edits to the parent plan that came after #1330 merged: the owner answers and the SMTP secret layout.
🤖 Generated with Claude Code