What this PR is
The observability stack (ClickStack/HyperDX), the Temporal cluster, and the froot worker have been shut down on zo-k8s. The live teardown already happened: the three namespaces, four helm releases, the ClickHouse/MongoDB CRDs, ~43Gi of block-storage PVCs, and the froot.mseeks.me DNS record (destroyed with a targeted terraform apply) are gone. This PR is the code half: it deletes the three infra/k8s/ stack directories (~2.9k lines) and scrubs every doc and comment the shutdown made stale.
Almost all of the diff is deletion. The review question is not "is this code right" but "did anything get left pointing at a stack that no longer exists" — the sections below walk the places that changed rather than vanished.
| Removed directory | What it was |
|---|---|
infra/k8s/observability/ | ClickStack/HyperDX: ClickHouse + Keeper + MongoDB + OTel collectors (Helm) |
infra/k8s/temporal/ | Lean Temporal cluster: auto-setup server + Postgres + UI + its OTel collector |
infra/k8s/froot/ | The froot worker and its code-maintenance loops, dashboard, and cronjobs |
dns.tf — the one live Terraform change
Two edits. The mseeks_me_froot A record (froot's dashboard entrypoint) is deleted — this is the only resource Terraform destroyed, and both state and the live zone were verified clean afterwards. And the LOAD-BEARING comment on the ynab record, which enumerates every host riding the ingress LB for cert-manager's HTTP-01 self-check, drops froot from that list.
The corrected host list on the load-bearing ynab record, and the models record that now directly follows the everwhen wildcard where the froot record used to sit.
infra/dns.tf · 383 lines
⋯ 68 lines hidden (lines 1–68)
⋯ 56 lines hidden (lines 92–147)
⋯ 222 lines hidden (lines 162–383)
kubernetes.tf — the cluster no longer exists for ClickStack
The cluster resource itself is untouched; only its story changes. The header and the node-pool comment both justified the s-4vcpu-8gb sizing by ClickHouse's appetite. The rewrite keeps the two operational facts that outlive the stack — a pool's size slug is immutable (changing it replaces the nodes), while node_count scales in place — and marks the sizing rationale as historical.
Rewritten header and sizing comment; the resource block itself is unchanged.
infra/kubernetes.tf · 99 lines
⋯ 37 lines hidden (lines 15–51)
⋯ 32 lines hidden (lines 68–99)
The doc sweep: CLAUDE.md and infra/README.md
infra/README.md loses its whole Observability (ClickStack) and Temporal sections plus the two k8s/ tree entries, and the DOKS intro no longer claims the first node is saturated. CLAUDE.md gets the bigger rewrite: the stack list shrinks to tailscale, and the long "headroom nuance" paragraph — built around a node-1 request budget at 98% — is replaced with the post-teardown reality.
The Infrastructure section after the rewrite: retirement noted up top, headroom guidance kept only where it still teaches something.
CLAUDE.md · 92 lines
⋯ 78 lines hidden (lines 1–78)
Peripheral comment fixes
Five smaller files referenced the stacks in comments and get one-line to one-paragraph corrections, no behavior change anywhere:
- infra/k8s/tailscale/README.md — the resource-footprint section drops the per-node saturation numbers and the "right-size ClickStack" lever. - infra/k8s/tailscale/values-operator.yaml — the "single, tight node" comment becomes a plain keep-it-small note. - infra/k8s/ingress-nginx/values.yaml — metrics stay enabled, with the comment now honest that nothing scrapes them today. - infra/k8s/everwhen-preview/README.md and the CLAUDE.md preview bullet — the cluster is no longer described as request-tight; the advice becomes "tear previews down promptly". - infra/k8s/tailscale/manifests/30-ollama-proxy.yaml and infra/k8s/static/manifests/00-namespace.yaml — log-shipping and "no Temporal" phrasing updated.
The requests-vs-usage explainer, now stack-agnostic.
infra/k8s/tailscale/README.md · 232 lines
⋯ 161 lines hidden (lines 1–161)
⋯ 46 lines hidden (lines 187–232)
Deliberately left alone
Three loose ends are named in the PR body rather than fixed here:
1. model-metrics still runs and models.mseeks.me still resolves, but its only data source (ClickStack's ClickHouse) and the log pipeline that fed it are gone — the dashboard will render its "ClickHouse unreachable" state. It needs its own retire-or-repoint decision, so this PR doesn't touch it. 2. The pending 1.36.0-do.3 patch upgrade in terraform plan (see the dns.tf section above). 3. The gitignored infra/.env still carries CLICKSTACK_* / TEMPORAL_* / FROOT_* secrets; safe to prune by hand.