Files
sir_melonchenandClaude Opus 5.5 cb7f4c9f3d
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
feat(license): gate features by entitlement and enforce maxAgents
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>
2026-10-18 17:51:55 +02:00

3.1 KiB

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