chore: remove legacy apps (openclaw, office-cup, time-tangle, spotify-concerts, renovate, cal, binks-api shadow ingress) #540

Merged
kblack0610 merged 1 commit from chore/legacy-cleanup into master 2026-11-04 17:04:28 +00:00
Owner

Removes the legacy apps approved for removal on 2026-11-04. Deleting each app dir and its line in apps/kustomization.yaml makes Flux (apps, prune: true) prune the namespace. Every reference to a removed app goes in the same change, and each item below lists them.

Removed

Item Why Evidence Refs touched
openclaw Retired agent gateway State archived to ~/.cache/legacy-archive (openclaw-state.tgz, 1.6 GB, verified). Its LiteLLM key hash matches only openclaw/openclaw-secrets, across every cluster secret, every repo SOPS file and the workstation tokens. apps/openclaw/, .forgejo/workflows/openclaw-image.yaml, kustomization, gatus (2 endpoints), headscale extra_record, gen-ha-launcher.py maps plus regenerated launcher/site_status/probe-sites, CLAUDE.md OpenClaw section, infrastructure.md, homelab-catalog, architecture, headscale-setup, container-access.md (rewritten on Home Assistant), checks.yaml comment. Comments only in litellm config/README (key row dropped), mem0, langfuse, print-service, forgejo runner, launchd-mlx-server.
office-cup Retired app Stateless, no PVC apps/office-cup/, kustomization
time-tangle Retired app DB dumped to ~/.cache/legacy-archive/time-tangle/ (pg_dumpall complete, 8 COPY blocks) apps/time-tangle/, kustomization, gatus endpoint, cert-manager dnsZones, regenerated launcher/site_status/probe-sites
spotify-concerts Its feed was the empty calendar.concerts. Removing it changes nothing else: US Holidays and the Songkick calendar stay. The HA calendars secret holds only Songkick apps/spotify-concerts/, kustomization, HA seed-remote-calendars entry, dashboards/local.yaml calendar card, spotify-ha-bootstrap.py docstring, immich curate comments
renovate + renovate.json Nothing hosted reads renovate.json No renovate[bot] PRs on GitHub (61/61 by Kblack0610) or Forgejo (539/539 by kblack0610), no renovate/* branches, no Dependency Dashboard, no bot commits. The CronJob has been suspend: true since #172. apps/renovate/, renovate.json, kustomization, Renovate claims in prometheus-rules-jobs/-trivy descriptions and docs/app-lifecycle.md (the pin-the-tag rule stays)
apps/cal Never activated, not in the kustomization The cal namespace does not exist in the cluster apps/cal/, docs/runbooks/cal-com-setup.md, gatus endpoint, excluded-from-flux.md "deferred" section, gen-ha-launcher.py icon, checks.yaml comment
binks-api-shadow The cutover is done: binks.chat routes to binks-api binks.chat IngressRoute unchanged apps/binks-api/ingress.yaml (shadow IngressRoute + binks-next-kblab-me Certificate), deployment.yaml CORS_ORIGINS now https://binks.chat only, README stale cutover section, regenerated launcher/site_status/probe-sites

Kept

  • headscale, jellyfin, orcaslicer, print-service, neptune: the only edits are lines that named a removed app.
  • binks.chat ingress: unchanged.
  • docs/plans/*: history.
  • ansible/roles/k3s-node-no-suspend/README.md:9: a dated 2026-05-07 incident record. Rewording it would falsify the record.
  • LiteLLM: no alias, route or key renamed or removed. The changes are comments only.

Rollout effects on merge

The litellm, home-assistant and binks-api pods roll once, because their hashed ConfigMaps or env changed. The immich curate CronJob gets a new ConfigMap; only comments changed, so it behaves the same.

Left for cluster-side cleanup after merge (not in this PR)

  • Flux prunes these namespaces: openclaw (PVC openclaw-data 10Gi, reclaim Delete), office-cup, time-tangle (PVC data-time-tangle-postgres-0 5Gi, reclaim Delete), spotify-concerts and renovate. In binks-api it prunes the binks-api-shadow IngressRoute and the binks-next-kblab-me Certificate.
  • Delete by hand: Secret binks-api/binks-next-kblab-me-tls (Flux does not own it); the HA "Concerts" remote_calendar config entry, which the seed only adds; and the LiteLLM virtual key used by openclaw.
  • Cloudflare: external-dns runs upsert-only, so delete these records and their TXT records by hand: officecup.blacknbrownstudios.com, time-tangle.com, www/api.time-tangle.com, and cal.kennethblack.me if it exists.
  • Delete the Forgejo registry images openclaw, office-cup-web, time-tangle-api and time-tangle-web. Restart headscale so it reloads its config.

Validation

  • kubectl kustomize apps and clusters/home-k3s/ both build.
  • check-fleet-roster, check-runner-roster, check-ha-packages and check-secret-store all pass.
  • gen-ha-launcher.py reports "No changes".
  • Every edited YAML parses.
  • A grep for every removed name and hostname, excluding docs/plans, finds only the kept incident record.
  • Promtool rule tests run in CI.

https://claude.ai/code/session_01BALUC47X8Z9enqxyVsnYpt

Removes the legacy apps approved for removal on 2026-11-04. Deleting each app dir and its line in `apps/kustomization.yaml` makes Flux (`apps`, prune: true) prune the namespace. Every reference to a removed app goes in the same change, and each item below lists them. ## Removed | Item | Why | Evidence | Refs touched | |---|---|---|---| | openclaw | Retired agent gateway | State archived to ~/.cache/legacy-archive (openclaw-state.tgz, 1.6 GB, verified). Its LiteLLM key hash matches only openclaw/openclaw-secrets, across every cluster secret, every repo SOPS file and the workstation tokens. | apps/openclaw/, .forgejo/workflows/openclaw-image.yaml, kustomization, gatus (2 endpoints), headscale extra_record, gen-ha-launcher.py maps plus regenerated launcher/site_status/probe-sites, CLAUDE.md OpenClaw section, infrastructure.md, homelab-catalog, architecture, headscale-setup, container-access.md (rewritten on Home Assistant), checks.yaml comment. Comments only in litellm config/README (key row dropped), mem0, langfuse, print-service, forgejo runner, launchd-mlx-server. | | office-cup | Retired app | Stateless, no PVC | apps/office-cup/, kustomization | | time-tangle | Retired app | DB dumped to ~/.cache/legacy-archive/time-tangle/ (pg_dumpall complete, 8 COPY blocks) | apps/time-tangle/, kustomization, gatus endpoint, cert-manager dnsZones, regenerated launcher/site_status/probe-sites | | spotify-concerts | Its feed was the empty `calendar.concerts`. Removing it changes nothing else: US Holidays and the Songkick calendar stay. | The HA calendars secret holds only Songkick | apps/spotify-concerts/, kustomization, HA seed-remote-calendars entry, dashboards/local.yaml calendar card, spotify-ha-bootstrap.py docstring, immich curate comments | | renovate + renovate.json | Nothing hosted reads renovate.json | No renovate[bot] PRs on GitHub (61/61 by Kblack0610) or Forgejo (539/539 by kblack0610), no renovate/* branches, no Dependency Dashboard, no bot commits. The CronJob has been suspend: true since #172. | apps/renovate/, renovate.json, kustomization, Renovate claims in prometheus-rules-jobs/-trivy descriptions and docs/app-lifecycle.md (the pin-the-tag rule stays) | | apps/cal | Never activated, not in the kustomization | The cal namespace does not exist in the cluster | apps/cal/, docs/runbooks/cal-com-setup.md, gatus endpoint, excluded-from-flux.md "deferred" section, gen-ha-launcher.py icon, checks.yaml comment | | binks-api-shadow | The cutover is done: binks.chat routes to binks-api | binks.chat IngressRoute unchanged | apps/binks-api/ingress.yaml (shadow IngressRoute + binks-next-kblab-me Certificate), deployment.yaml CORS_ORIGINS now https://binks.chat only, README stale cutover section, regenerated launcher/site_status/probe-sites | ## Kept - headscale, jellyfin, orcaslicer, print-service, neptune: the only edits are lines that named a removed app. - binks.chat ingress: unchanged. - docs/plans/*: history. - ansible/roles/k3s-node-no-suspend/README.md:9: a dated 2026-05-07 incident record. Rewording it would falsify the record. - LiteLLM: no alias, route or key renamed or removed. The changes are comments only. ## Rollout effects on merge The litellm, home-assistant and binks-api pods roll once, because their hashed ConfigMaps or env changed. The immich curate CronJob gets a new ConfigMap; only comments changed, so it behaves the same. ## Left for cluster-side cleanup after merge (not in this PR) - Flux prunes these namespaces: openclaw (PVC openclaw-data 10Gi, reclaim Delete), office-cup, time-tangle (PVC data-time-tangle-postgres-0 5Gi, reclaim Delete), spotify-concerts and renovate. In binks-api it prunes the binks-api-shadow IngressRoute and the binks-next-kblab-me Certificate. - Delete by hand: Secret binks-api/binks-next-kblab-me-tls (Flux does not own it); the HA "Concerts" remote_calendar config entry, which the seed only adds; and the LiteLLM virtual key used by openclaw. - Cloudflare: external-dns runs upsert-only, so delete these records and their TXT records by hand: officecup.blacknbrownstudios.com, time-tangle.com, www/api.time-tangle.com, and cal.kennethblack.me if it exists. - Delete the Forgejo registry images openclaw, office-cup-web, time-tangle-api and time-tangle-web. Restart headscale so it reloads its config. ## Validation - `kubectl kustomize apps` and `clusters/home-k3s/` both build. - check-fleet-roster, check-runner-roster, check-ha-packages and check-secret-store all pass. - gen-ha-launcher.py reports "No changes". - Every edited YAML parses. - A grep for every removed name and hostname, excluding docs/plans, finds only the kept incident record. - Promtool rule tests run in CI. https://claude.ai/code/session_01BALUC47X8Z9enqxyVsnYpt
chore: remove legacy apps openclaw, office-cup, time-tangle, spotify-concerts, renovate, cal and the binks-api shadow ingress
All checks were successful
checks / ci-disk-prune (pull_request) Successful in 3s
checks / zomboid-scripts (pull_request) Successful in 6s
checks / fleet-roster (pull_request) Successful in 6s
checks / prometheus-rules (pull_request) Successful in 7s
checks / kustomize-builds (pull_request) Successful in 4s
1a356b0cdc
Approved for removal 2026-11-04. Each app dir is deleted and dropped from
apps/kustomization.yaml, so Flux prunes its namespace. Every reference in
gatus, headscale, cert-manager, the HA launcher/site status/probe-sites
(regenerated by gen-ha-launcher.py), Home Assistant calendars, binks-api
CORS and the docs goes with it. LiteLLM edits are comments only: no model
alias, route or key is renamed or removed. renovate.json goes because no
hosted Renovate reads it (no bot PRs, branches or dashboard on GitHub or
Forgejo; the in-cluster CronJob was suspended since #172).

Kept: headscale, jellyfin, orcaslicer, print-service, neptune (only lines
naming a removed app edited), docs/plans/*, and the dated 2026-05-07
incident record in ansible/roles/k3s-node-no-suspend/README.md.

Claude-Session: https://claude.ai/code/session_01BALUC47X8Z9enqxyVsnYpt
kblack0610 deleted branch chore/legacy-cleanup 2026-11-04 17:04:28 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kblack0610/home-config!540
No description provided.