ci / Go (lint, test, vuln) (push) Successful in 6m43s
ci / Protobuf (push) Successful in 7s
ci / End-to-end (server, agents, BIND, Kea) (push) Successful in 3m35s
install / Installation (debian:12) (push) Successful in 3m20s
ci / Web (lint, test, audit, build) (push) Successful in 12m41s
ci / Shell and licence headers (push) Successful in 14s
ci / Integration (real BIND and Kea) (push) Successful in 2m50s
ci / Development environment (compose) (push) Successful in 15s
install / Installation (rocky:9) (push) Successful in 4m1s
install / Installation (ubuntu:24.04) (push) Successful in 3m23s
ci / Release build (dry run) (push) Failing after 10m38s
install / Installation (debian:13) (push) Successful in 3m22s
install / Installation (ubuntu:22.04) (push) Successful in 3m33s
Clusters (DDI_CLUSTER), Kea HA pairs (DDI_KEA_HA), dynamic zones (DDI_DYNAMIC_ZONES) and SSO (DDI_SSO) now need the matching Keygen entitlement; the trial grants all of them. Only taking a feature into use is blocked (403 license_feature): existing clusters, HA pairs, dynamic zones and enabled SSO keep working and stay editable. maxAgents is checked when creating an enrollment token and, under an advisory lock, at enrollment; revoked agents do not count. GET /license reports available_features and the agent usage. The UI shows the features on the license page and disables locked controls, and keygen-setup.sh creates the entitlements and assigns them to licenses (ADR 0027). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Architecture Decision Records (ADR)
Jede Grundsatzentscheidung wird hier als kurze ADR festgehalten. Format siehe 0001.
| Nr. | Titel | Status |
|---|---|---|
| 0001 | ADRs verwenden | Akzeptiert |
| 0002 | Monorepo, ein Go-Modul, Lizenzgrenzen per Verzeichnis | Akzeptiert |
| 0003 | Git-Host Gitea und Gitea Actions | Akzeptiert |
| 0004 | DNS-Engine BIND 9 | Akzeptiert |
| 0005 | DHCP-Engine Kea, nur frei verfügbare Bestandteile | Akzeptiert |
| 0006 | Backend: Go, PostgreSQL, pgx, goose | Akzeptiert |
| 0007 | Server↔Agent: gRPC über mTLS, ausgehende Verbindung | Akzeptiert |
| 0008 | Interne CA und Enrollment | Akzeptiert |
| 0009 | Signierte Config-Bundles und Replay-Schutz | Akzeptiert |
| 0010 | Agent-Binaries pro Rolle, austauschbare Config-Quelle | Akzeptiert |
| 0011 | Agent-Zustand in Dateien | Akzeptiert |
| 0012 | API: OpenAPI als Single Source of Truth | Akzeptiert, Server-Teil ersetzt durch 0019 |
| 0013 | Frontend: React, TypeScript, Vite, eingebettet | Akzeptiert |
| 0014 | Konfigurationserzeugung: rein, typisiert, Golden-Files | Akzeptiert |
| 0015 | Geheimnisse verschlüsselt mit Master-Key | Akzeptiert |
| 0016 | Lizenzierung über LicenseProvider/Keygen |
Akzeptiert |
| 0017 | Logs, Metriken, Korrelations-IDs | Akzeptiert |
| 0018 | Zentrale Benennung von Produkt, Pfaden und Diensten | Akzeptiert |
| 0019 | OpenAPI: Vertragstests statt generierter Server-Stubs | Akzeptiert |
| 0020 | Authentifizierung, Sitzungen und Rollen | Akzeptiert |
| 0021 | Agent-Strecke: Revisionen, PKI, Ablauf im Agent (M3) | Akzeptiert |
| 0022 | Ausrollen: Betriebsmodi, Push, Änderungsübersicht, Diff, Rollback, Live-Status (M4) | Akzeptiert |
| 0023 | Cluster, Zonen, Records, TSIG und Lease-Erfassung (M5) | Akzeptiert |
| 0024 | Auslieferung: Installer, systemd, Pakete, Release-Signatur (M6) | Akzeptiert |
| 0025 | DHCP pro Adresse, DNS für dynamische Einträge, Bereichs- und Massenänderungen, Prüfungen, Oberfläche | Akzeptiert |
| 0026 | Einträge der Adresstabelle in dynamischen Zonen (RFC-2136-Updates durch den Agent) | Akzeptiert |
| 0027 | Funktionen per Entitlement (Cluster, Kea-HA, dynamische Zonen, SSO), Agent-Limit | Akzeptiert |