Skip to content

Architecture Decision Records

Chronological log of architectural decisions. MADR format.

The table below is generated from each ADR's front-matter by .githooks/check-adr-index.py and enforced by the adr-index pre-commit hook. Do not hand-edit it — change the ADR, then run the hook with --write.

# Date Title Status
0001 2026-04-15 Record architecture decisions accepted
0002 2026-04-15 Dual cloudflared tunnels with per-zone ExternalDNS accepted (partial — LB path dropped)
0003 2026-04-15 IPv6 phased rollout — ULA in-cluster first, global via BGP later proposed
0004 2026-04-15 :latest tag remediation plan accepted
0005 2026-04-18 Control-plane hardening (etcd + kube-apiserver) proposed
0006 2026-04-19 Office CP quiesced: 3-member etcd + home-only apiserver-office-2 (interim) superseded — reverted to 4-member cluster 2026-05-05
0007 2026-05-22 Ubuntu 24.04 LTS → 26.04 LTS migration accepted
0008 2026-06-26 (withdrawn) withdrawn — Intel Arc passthrough for Obico ML; removed with the Obico decommission (commit 6172b8f2); number retired, do not reuse
0009 2026-05-25 Replace igir with an in-cluster Go-based ROM curator accepted
0010 2026-05-25 Defer multi-site Kyverno split accepted (defer)
0011 2026-05-26 Five Cluster-Hygiene Workloads accepted
0012 2026-05-26 Two Cluster Rescue Workloads accepted
0013 2026-05-27 Alertmanager Webhook URL Update accepted
0014 2026-05-27 Adding New Components and Workflows accepted
0015 2026-05-27 Hybrid GitOps for Apps with PVC-Only Runtime State proposed
0016 2026-05-28 Disable leader election for NFS subdir-external-provisioners accepted
0017 2026-05-28 Tightening CNPs for Authentik + open-webui accepted
0018 2026-05-29 cluster-mcp shim — read-only Open WebUI RAG surface for Zed/Claude proposed
0019 2026-05-29 Long-term metrics sink: VictoriaMetrics proposed
0020 2026-05-30 Media Stack Dashboard Updates accepted
0021 2026-05-30 Alternate Web Frontend Deployment accepted
0022 2026-06-04 Deterministic Schedule Jitter for AI CronWorkflows accepted
0023 2026-06-04 Consolidation of Coverage Scanners into a Unified Auditor accepted
0024 2026-06-05 Introducing the Adult Studio as a New Component in the Adult System accepted
0025 2026-06-05 Introducing Proactive Scheduling with New Components and Topology accepted
0026 2026-06-24 Stateless Cluster Helper Failover and Scheduling Adjustments accepted
0027 2026-06-24 High Availability for Argo Workflows During Office Outage accepted
0028 2026-06-25 Codify PVE Reboot Recovery Procedures accepted
0029 2026-07-10 Northlight autonomous operation: agent-approved reviews + self-renewing goals accepted
0030 2026-07-13 All AI/GPU consumers route through LiteLLM — never directly to a backend accepted
0031 2026-07-10 Daily FK-safe Control-plane DB Prune CronJob accepted
0032 2026-07-11 Generalizing Org Reconciliation Across the Fleet accepted
0033 2026-07-11 Qwen3.6 Palette Flip to B60 Unified Backend accepted
0034 2026-07-12 Improve Paperclip Resilience and Data Management accepted
0035 2026-07-13 Retention Period Adjustment for Paperclip DB Janitor accepted
0036 2026-07-13 etcd Snapshot Count and Upgrade Playbook Robustness accepted
0037 2026-07-17 Dedicated private API Gateways accepted
0038 2026-07-19 Upgrade Jellyfin to 12.0-rc2 for B580 VA-API Transcoding accepted
0039 2026-07-14 Easy/hard difficulty routing uses LiteLLM's native auto-router, not a standalone semantic-router service accepted
0040 2026-07-14 Migrating home PVCs to the Longhorn v2 storage class accepted
0041 2026-07-14 Node Feature Discovery + Intel GPU NodeFeatureRule for GPU node labeling accepted
0042 2026-07-17 cordana: integrate the P1 knowledge and execution spine accepted
0043 2026-07-17 Isolate the SABnzbd API on a private hostname superseded by ADR-0037 — hostname split stands, isolation mechanism replaced
0044 2026-07-20 Cordana governed compute plane superseded by ADR-0045 — governance-plane split stands, whole-card ownership reversed
0045 2026-07-20 Enforced GPU co-residency, not whole-card ownership accepted
0046 2026-07-20 Retire the bounded-lane-champion challenger; make baseline-adopted a signable outcome accepted
0047 2026-07-24 Adjusting Timeouts and Retry Logic for Improved System Reliability accepted
0048 2026-07-24 Restoring Qwen3-30B to Unordered Backend Pool accepted
0049 2026-07-21 Security Context Hardening for Multiple Workloads accepted
0050 2026-07-21 Fixing False Positives and Hardening Security in Kyverno Policies accepted
0051 2026-07-25 Unifying Workstation AI CLIs with LiteLLM and Shared Hindsight Memory accepted
0052 2026-07-25 Event-Driven Renovate Runs and Etcd Version Cap accepted
0053 2026-07-26 Updating arxiv-mcp and litellm Docker Images and Versioning Strategy proposed (auto-drafted by adr-suggester)
0054 2026-07-26 Deriving Cauda-N Suffix from Deployment Image Tag proposed (auto-drafted by adr-suggester)
0055 2026-07-27 Migrate paperless-ngx to allauth OIDC with Authentik proposed (auto-drafted by adr-suggester)
0056 2026-07-27 Disable Enterprise-gated SSO and Use Built-in Admin Login proposed (auto-drafted by adr-suggester)

Process

  • Use /add-adr skill to create the next ADR.
  • Each ADR is append-only; if a decision is superseded, update its status and link forward to the new ADR.
  • Keep ADRs focused on architectural decisions — operational tweaks belong in STATE.md.