# Release 2026-08-31 — Sechs 2026er Best-Practice-Quellen

## Was ausgeliefert wurde

| Feld | Wert |
|---|---|
| Commit auf `main` | `c166a8b8ae74a04abdb1d4fa7cc38c697d6865f9` |
| Commit auf `gh-pages` | `bc2e39383b52f931af377b07361c4dca0af03e5b` |
| Vorheriger Stand auf `gh-pages` | `77c3f4daefd921ea1da63e10dd7ea58b6fd3964a` |
| Zielumgebung | GitHub Pages, https://deltatree.github.io/BestAiConfig |
| Zeitpunkt | 2026-08-31, 21:37 UTC (Workflow-Start) |
| Ausgelöst von | `deltatree`, per Auftrag an Claude Code, über `gh workflow run deploy.yml --ref main` |
| Workflow-Lauf | https://github.com/deltatree/BestAiConfig/actions/runs/33442340853 |
| Dauer | 3 Minuten 36 Sekunden |
| Pull Request | keiner; Fast-Forward-Merge von `feat/2026-best-practice-sources` |
| Artefakte | 144, vorher 126 |

## Der Anlass

Die Selbst-Optimierung vom 2026-08 fand sechs neue Best-Practice-Quellen
aus 2026. Jede Quelle wird eine Regel, jede Regel erscheint in drei
Formaten: Claude-Skill, Cline-Regel, Cursor-Regel. Das ergibt 18 neue
Dateien, also 126 + 18 = 144 Artefakte.

| Neue Regel | Quelle |
|---|---|
| `agent-security-surface` | OWASP Agentic Security |
| `agent-skill-authoring` | Agent-Skills-Standard |
| `ai-authorship-accountability` | AI Authorship Accountability |
| `autonomous-loop-discipline` | Autonomous Agent Loops |
| `feature-flag-delivery-gateway` | Feature-Flag Delivery |
| `small-batch-change-discipline` | DORA Small Batches |

Die Spezifikation liegt unter
`_bmad-output/implementation-artifacts/spec-config-self-optimization.md`.

## Abhängigkeiten

Unverändert. Das Projekt hat keine Laufzeitabhängigkeiten
(`dependencies = []`).

| Werkzeug | Version | Quelle |
|---|---|---|
| Python | 3.12 | `actions/setup-python@v6`, gepinnt im Workflow |
| `actions/checkout` | v7 | gepinnt im Workflow |
| `peaceiris/actions-gh-pages` | v4 | gepinnt im Workflow |

## Konfiguration, die der Build liest

Unverändert gegenüber
[2026-08-10-install-time-language-option.md](2026-08-10-install-time-language-option.md).
Dieses Release fügt keinen Schlüssel hinzu und entfernt keinen.

## Reproduzierbarkeit

```
build 1: 19bac98489e029ee30532a119efdefd31f1bbb005c84b3192b9e895164198486
build 2: 19bac98489e029ee30532a119efdefd31f1bbb005c84b3192b9e895164198486
```

Beide Bauläufe liefen aus je einer frischen Kopie von `c166a8b`, mit
`GITHUB_REPOSITORY=deltatree/BestAiConfig`. Der Wert ist der Hash über
alle Dateien in `public/`. Die Bauläufe sind byteweise identisch. Es gibt
keine bekannte Abweichung.

## Prüfung vor dem Merge

| Prüfung | Ergebnis |
|---|---|
| `pytest` (gesamte Suite) | 607 Tests grün, 1868 Untertests, 356 Sekunden |
| `python3 src/compile_rules.py` | `validate: 154 ok, 0 FAIL` |
| Neue Tests | keine; das Release ändert nur Regel- und Quelldateien |

Die bestehenden Genericity- und Compile-Tests decken die neuen Dateien
mit ab: sie prüfen jede Quelle und jedes erzeugte Artefakt.

## Datenmigration

Keine im Sinne einer Datenbank. Der Installer legt beim Anwender 18 neue
Dateien an: je eine pro neuer Regel in `.claude/skills/`, `.clinerules/`
und `.cursor/rules/`. Er ändert drei vorhandene Router-Dateien
(`skill-router`). Der Rückwärtsschritt dafür steht unten als Schritt 5.

## Rollback

Der Rollback dauert etwa 6 Minuten. Du brauchst Schreibrechte auf das
Repository und `git`.

**Schritt 1 — Hole den aktuellen Stand.**

```
git fetch origin gh-pages
```

Erwartete Ausgabe: keine Fehlermeldung, Status 0. Bei einer Fehlermeldung
prüfe die Netzverbindung und `gh auth status`.

**Schritt 2 — Prüfe den vorherigen Stand.**

```
git log --oneline -3 origin/gh-pages
```

Erwartete Ausgabe: oberste Zeile `bc2e393 deploy: c166a8b...`, zweite
Zeile `77c3f4d deploy: be259c5...`. Weicht die oberste Zeile ab, hat
jemand nach dir ausgeliefert. Halte an und kläre das zuerst.

**Schritt 3 — Setze `gh-pages` zurück.**

```
git push --force-with-lease origin 77c3f4daefd921ea1da63e10dd7ea58b6fd3964a:gh-pages
```

Erwartete Ausgabe: eine Zeile mit `forced update`. Bei `stale info`
wiederhole Schritt 1 und 2.

**Schritt 4 — Warte auf das Auslieferungsnetz.**

```
until ! curl -fsS "https://deltatree.github.io/BestAiConfig/manifest.json?cb=$$" \
  | grep -q "agent-security-surface"; do sleep 10; done
```

Erwartete Ausgabe: der Befehl endet. Dann liefert GitHub Pages wieder 126
Artefakte ohne die sechs neuen Regeln aus. Das dauert bis zu 2 Minuten.
Endet der Befehl nach 5 Minuten nicht, prüfe
https://github.com/deltatree/BestAiConfig/deployments.

**Schritt 5 — Nimm die Regeln bei den Anwendern zurück.**

Führe diesen Befehl in jedem installierten Projekt aus, erst nach
Schritt 4:

```
curl -fsSL https://deltatree.github.io/BestAiConfig/bootstrap.sh \
  | bash -s -- --yes --language German --skip-tools
```

Erwartete Ausgabe: die letzte Zeile lautet
`[bootstrap] install complete: 126 artifact(s) from https://deltatree.github.io/BestAiConfig`.
Der Installer besitzt die Regelverzeichnisse, also entfernt er die 18
neuen Dateien selbst. Eigene Regeln mit `local` im Namen bleiben liegen.
Steht dort weiter 144, liefert Pages noch den neuen Stand aus. Gehe
zurück zu Schritt 4.

**Schritt 6 — Nimm den Code auf `main` zurück.**

```
git revert c166a8b8ae74a04abdb1d4fa7cc38c697d6865f9
git push origin main
```

Erwartete Ausgabe: ein neuer Commit
`Revert "feat: sechs 2026er Best-Practice-Quellen fuer die Registry"`.
Ohne diesen Schritt liefert der nächste nächtliche Lauf den Stand wieder
aus.

## Rollback-Probe

| Datum | Dauer | Ergebnis |
|---|---|---|
| noch nicht durchgeführt | — | — |

Dieser Rollback ist ein Plan, keine bewiesene Prozedur. Die offene Frist
aus den Releases vom 2026-08-10 und 2026-08-12 gilt weiter: führe die
Probe bis 2026-11-08 aus und trage Datum und gemessene Dauer hier ein.
Alle Proben lassen sich in einem Durchgang erledigen.

## Ausgerollt auf

Die Live-Prüfung nach dem Deploy: `manifest.json` auf GitHub Pages nennt
144 Artefakte, vorher 126.

Geprüft mit einem Byte-Vergleich: jede der 144 Dateien im Projekt gegen
dieselbe Datei aus dem reproduzierten Bau von `c166a8b` (Hash oben).

| Projekt | Ergebnis |
|---|---|
| `BestAiConfig` (dogfood) | 144 von 144 Dateien gleich, 0 abweichend, 0 fehlend |
| `lys_landingpage` | 144 von 144 Dateien gleich, 0 abweichend, 0 fehlend |
| `linkyourskill.ai` | 144 von 144 Dateien gleich, 0 abweichend, 0 fehlend |
| `dtadmin` | 144 von 144 Dateien gleich, 0 abweichend, 0 fehlend |

Alle Läufe nutzten `--yes --language German --skip-tools`; der
BMAD-Werkzeugkasten blieb unberührt. In `lys_landingpage` blieben die
vorhandenen lokalen BMAD-Änderungen unangetastet. In keinem der drei
Anwender-Projekte wurde committet. Der erste Lauf in `lys_landingpage`
brach mit einem 503-Fehler von GitHub Pages ab, kurz nach dem Deploy;
der zweite Lauf lief durch.
