Dokumentiert die Session-Arbeit vom 20.08.2026: Kontakt-/Stammdaten je
Organisation, neue organisationsgebundene Rolle ist_organisationsadmin
(strikt getrennt von is_superuser - Kernentscheidung dieses ADRs), den
live gefundenen und gefixten bytes-vs-str-psycopg-Bug bei der
Kontolöschung.
09-data-model-v1.md um die fünf neuen Organization-Kontaktfelder
ergänzt. benutzer/ist_organisationsadmin bewusst nicht dort aufgenommen
- lebt in kundenplattforms eigener Datenbank, war schon vorher nicht
Teil dieses Dokuments (ADR-0011).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Dokumentiert nachträglich das Phase-4/5-Ergebnis des Self-Service-ISO-
Plans (04.-07.08.2026, laut Memory 'Phasen 1-5 abgeschlossen', bislang
komplett undokumentiert): Hintergrund-Thread-Orchestrierung in
provisioning-server, iso_builds-Statustabelle, Alt-Build-Aufräumung
wegen anodes begrenztem Plattenplatz, PSK-Verschlüsselung in
Kundenplattforms eigener DB statt provisioning-server, getrennte
Aufladen-/Neubau-Aktionen, gestreamter Download-Proxy.
13-live-provisioning-boot.md um den Mint/Casper-Payload-Mechanismus
ergänzt (Pendant zum dort bereits beschriebenen Fedora/Dracut-Weg,
inkl. des gefundenen Casper-ORDER-Bugs: neue Hook-Skriptnamen werden
nie ausgeführt, nur das Überschreiben eines bereits referenzierten
Pfads funktioniert).
09-data-model-v1.md um iso_builds als neues Kernobjekt ergänzt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Dokumentiert nachträglich eine bereits deployte, live-verifizierte
Session-Arbeit: De-/Reprovisionieren (serverseitiger Credential-Entzug,
Agent-Self-Heal mit deprovisioned_at-Gate), Löschen als Soft
Delete/Archivierung, Hardware-/Log-Leseendpunkte. Bislang komplett
undokumentiert in platform-docs gewesen.
09-data-model-v1.md um devices.deprovisioned_at/archived_at ergänzt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Konsistent zur ADR-0012-Ergänzung - der Gruppe-Abschnitt erwähnte
bislang nicht, wie Gruppen verwaltet werden.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Dokumentiert die in dieser Session umgesetzte Konfigurationsvererbung:
OEs als Baum mit exklusiver Geräte-Mitgliedschaft und geschützter
Standard-OE 'Neue Geräte', Gruppen flach mit Mehrfachmitgliedschaft,
Konfliktregel 'mehr gewinnt'. Bewusst nach der Umsetzung geschrieben statt
davor (abweichend vom sonstigen ADR-Vorher-Muster in diesem Repo, auf
Wunsch des Kunden für diese Iteration).
09-data-model-v1.md erweitert um Organisationseinheit, Gruppe, OE-/
Gruppen-Merkmal-Override als Kernobjekte, inkl. relationalem Schema und
Löschregeln.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The catalog isn't a second pool independent of workspaces - a
workspace is just a preset selection from catalog-eligible Merkmale.
Clarifies that the present/absent default for a catalog-eligible
Merkmal with no explicit device_merkmale row must follow workspace
membership, not hardcode to absent; an explicit row always overrides
that default in either direction. The first implementation got this
wrong (hardcoded absent default), which would have silently removed
any already workspace-composed Merkmal the moment it got flagged
catalog-eligible. Fixed in provisioning-server/app.py in the same
pass.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ADR-0010 decides that an Auftrag is technically a Merkmal, not a new
parallel entity: it reuses the existing Merkmal/Blueprint/ansible-role
mechanism from ADR-0002, but adds a device-level, independently
toggleable assignment path (device_merkmale) alongside the existing
workspace-level one. Deselecting an Auftrag needs to actually revert
it, so checkin will need to declare a full present/absent state per
catalog entry rather than just an additive list; that role-level and
API-level work is deferred, this only settles the data model.
Also adds a single generic, append-only event log
(device_merkmal_events) for both selection changes and agent-reported
execution results, instead of several purpose-specific tables, so
future event types don't require schema changes. Extends
09-data-model-v1.md and the glossary accordingly.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Real hardware test (Intel AX210) shows the tested Fedora Everything
netinstall initrd ships no iwlwifi driver at all -- three kickstart
variants all hung identically at dracut-initqueue regardless of syntax,
confirming the cause was never the kickstart itself. Documents the
kexec test series (ADR-0009), the DB-driven kickstart success on
netinstall, and the resulting architecture: a personalized installer
ISO per workspace/backend/media-variant with the kickstart baked in,
no live-session/kexec transition, WLAN and blueprint application moved
to the Provisioning Agent's first boot on the fully installed target
system instead of the constrained installer environment.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Introduces the Merkmal-Backend-Blueprint realization model: a Merkmal
describes one distribution-independent workspace feature, a Blueprint
realizes exactly one Merkmal for exactly one backend (usually an
Ansible role applied post-first-boot via ansible-pull), and a
Bereitstellungsvorlage bundles workspace + backend + org-specific
installation directives (partitioning, encryption, secure boot).
Replaces the old flat profile model (profiles/profile.json/
distribution+version) throughout the provisioning API, data model,
interactive provisioning flow, and device enrollment docs with
templates/Bereitstellungsvorlage terminology. Moves 02-workspace-model.md
and 04-backend-model.md into architecture/, archives the superseded
flat organization-model.md.