# YachtMemory Architecture Decision Records

Dieses Verzeichnis enthält die Architecture Decision Records (ADRs) des YachtMemory-Systems.

## Grundsatz

Es gibt kein separat gepflegtes Dokumentmanifest.

Der aktuelle ADR-Bestand wird aus den tatsächlich vorhandenen Markdown-Quellen unter `source/`
ermittelt. Die Metadaten im Kopf der jeweiligen Markdown-Datei beschreiben Identität, Titel,
Bereich, Status, Version, Datum und die erwartete aktuelle PDF-Fassung.

`AdrRepository` gleicht diesen Bestand mit `pdf/` und `archive/` ab. Abweichungen werden als
Konsistenzfehler gemeldet.

## Verzeichnisse

- `source/` - maßgebliche, editierbare ADR-Quellen
- `pdf/` - aktuelle freigegebene PDF-Fassungen
- `archive/` - ältere PDF-Fassungen
- `README.md` - dauerhafte Regeln und Konventionen; keine manuell gepflegte ADR-Liste

## Status

- `Draft` - in Bearbeitung; eine aktuelle PDF ist nicht erforderlich
- `Accepted` - gültige Architekturentscheidung; die angegebene PDF muss in `pdf/` vorhanden sein
- `Superseded` - durch eine spätere ADR ersetzt
- `Deprecated` - nicht mehr gültig

ADRs werden nicht gelöscht, nur weil eine Entscheidung später nicht mehr gilt.

## Nummernbereiche

| Bereich | Inhalt |
|---|---|
| 0001-0099 | Grundlagen |
| 0100-0199 | Telemetrie und Datenhaltung |
| 0200-0299 | Verarbeitung und Zeitreihen |
| 0300-0399 | APIs und Services |
| 0400-0499 | Widgets und Darstellung |
| 0500-0599 | Fachliche Modelle und Analysen |
| 0600-0699 | Portal und öffentliche Seiten |
| 0700-0799 | Hardware / Edge / Datenerfassung |
| 0800-0899 | Betrieb und Infrastruktur |
| 0900-0999 | reserviert |

ADR-0001 ist das grundlegende Architekturprinzipien-Dokument.

## Metadatenformat

Jede Markdown-Quelle beginnt mit:

```text
---
adr: ADR-0001
title: Architekturprinzipien von YachtMemory
category: Grundlagen
status: Accepted
version: 1.0
date: 2026-08-11
pdf: ADR-0001-Architekturprinzipien-v1.0.pdf
---
```

Pflichtfelder:

- `adr`
- `title`
- `category`
- `status`
- `version`
- `date`

Für `Accepted` ist zusätzlich `pdf` Pflicht.

## Versionierung

Redaktionelle Änderungen können die Dokumentversion erhöhen, ohne eine neue ADR zu erzeugen.
Eine grundlegende Änderung der Architekturentscheidung wird dagegen in einer neuen ADR
dokumentiert. Die frühere ADR wird dann beispielsweise auf `Superseded` gesetzt.

Ältere freigegebene PDF-Fassungen werden nach `archive/` verschoben und nicht überschrieben.

## Konsistenz

Der Repository-Check prüft insbesondere:

- eindeutige ADR-Nummern
- gültige Metadaten
- gültige Statuswerte
- gültige Versions- und Datumsformate
- bei `Accepted`: erwartete aktuelle PDF vorhanden
- keine nicht referenzierte PDF in `pdf/`
- keine aktuelle PDF gleichzeitig in `archive/`
- archivierte PDFs gehören zu einer vorhandenen ADR
- archivierte Version ist nicht identisch mit der aktuellen Version

Prüfung:

```bash
php scripts/check_adr_repository.php
```

Bei einem konsistenten Bestand endet das Programm mit Exit-Code `0`, bei Fehlern mit Exit-Code `1`.
