- Deterministisch, evidenzbasiert, fail-closed arbeiten.
- Korrektheit, Reproduzierbarkeit, Security und Auditierbarkeit vor Geschwindigkeit.
SECURITY.mdist eingefroren und darf nicht geaendert werden.
- GOAL & SCOPE
- DEFINITIONS & ASSUMPTIONS
- PLAN (STEPS + CHECKS)
- EXECUTION (COMMANDS / FILE CHANGES)
- VERIFICATION & EVIDENCE
- RESULT & DECISION LOG
- RISKS / OPEN ITEMS / NEXT STEPS (PRIORITIZED)
- WIP-Limit 1: genau ein Thema pro Branch/PR.
- Branch-Namensschema:
codex/<tag>/<kurztext-kebab>- erlaubte
<tag>:fix|release|feat|refactor|docs|test|ci|chore|security
- PR-Titelschema:
<tag>(<scope>): <deutsche kurzbeschreibung>
- Nach jedem Push:
- auf alle erforderlichen Checks warten,
- alle Review-Kommentare abarbeiten,
- alle Threads auf
resolvedsetzen (inkl. outdated).
- Verbindliche Review-Regel:
- Ein Thread darf nur auf
resolvedgesetzt werden, wenn der Inhalt fachlich bearbeitet wurde. - Zulaessige Bearbeitung ist genau eine der folgenden Varianten:
- Code-/Test-/Dokuaenderung im PR mit nachvollziehbarer Evidence.
- begruendete Widerlegung als
ASSUMPTION+ Verifikationsnachweis, warum keine Aenderung noetig ist.
- Unzulaessig: Threads ohne Bearbeitung nur aus Prozessgruenden zu resolven.
- Ein Thread darf nur auf
- Verbindlicher Einzelkommentar-Workflow (ab sofort):
- Jeder Review-Kommentar/Thread wird einzeln und iterativ bearbeitet (keine Sammelabarbeitung mehr).
- Fuer jeden bearbeiteten Kommentar gilt: genau ein dedizierter Commit fuer die konkrete Umsetzung.
- Vor
resolvedist im Thread immer ein Nachweis-Kommentar zu hinterlassen:- entweder Commit-/Push-Link als Evidence der Umsetzung,
- oder nachvollziehbare Gegenargumentation als
ASSUMPTIONinkl. Verifikationsnachweis.
- Erst danach darf genau dieser Thread auf
resolvedgesetzt werden. - Bei CI-Nacharbeiten gilt dieselbe Regel:
- pro verursachender Reparatur genau ein Commit,
- eigener Review-Nachweis-Kommentar mit Ursache und Evidence,
- danach erst
resolved.
- Push-Green-Regel:
- lokale Einzelabarbeitung aller offenen Kommentare gemaess obiger Regeln,
- danach Push und Pflicht-Checks auf gruen,
- Merge erst bei gruenen Checks und ohne offene Threads.
- Merge nur wenn:
- required checks gruener Status,
- keine offenen Review-Threads,
- PR laut Ruleset/Branch-Protection mergebar,
- Code-Scanning-Toolstatus fuer offene Alerts ist
0(kein offener Alert).
- Nach Merge:
- neuesten
main-Run aufsuccessverifizieren, - naechstes Thema in neuem Branch starten.
- neuesten
- PR-Beschreibung auf Deutsch.
- Muss enthalten:
- Ziel/Scope,
- umgesetzte Aufgaben als Checkliste,
- Nachbesserungen als Checkliste,
- Evidence (Befehle/Artefakte),
- DoD-Matrix mit mindestens zwei auditierbaren DoD je umgesetztem Punkt.
- Bei Review-Fixes wird die PR-Beschreibung aktiv aktualisiert.
- Blocker-Checks muessen bestehen; kein stilles Bypass.
unknownnur fuer explizite report-only Claims.- Live-API-Claims sind blocker:
- Retry + Exponential Backoff,
- reason codes (
auth|rate-limit|network|5xx|unknown), - finaler Fehler =>
fail.
- Jede materielle Aussage benoetigt:
- Kommando,
- Artefakt/Log,
- Datei-/Pfadangabe.
- Nicht verifizierbare Aussagen sind
ASSUMPTIONplus Verifikationskommando.
- GitHub Actions mit Least Privilege:
- top-level read-only,
- write nur job-lokal bei Bedarf.
- Actions nur SHA-gepinnt.
- Keine Secret-Werte in Logs.
- Kein
pull_request_target+ Secrets ohne explizite Freigabe. - Scorecard/Governance-Drift wird nicht ignoriert; offene Alerts sind vor Merge zu schliessen.
Die folgenden Werte muessen immer identisch sein:
Directory.Build.props->RepoVersionsrc/FileTypeDetection/FileTypeDetectionLib.vbproj->Versionsrc/FileTypeDetection/FileTypeDetectionLib.vbproj->PackageVersion- Top-Eintrag in
docs/versioning/002_HISTORY_VERSIONS.MD - neuestes GitHub-Release-Tag
- neueste NuGet-Paketversion
Abweichung ist blocker und vor Merge/Release zu beheben.
- Keine Ruecknahme fremder, nicht beauftragter Aenderungen.
- Keine destruktiven Git-Befehle ohne explizite Freigabe.
- Aenderungen klein, fokussiert, nachvollziehbar.
- Unerwarteter Drift => stoppen und klaeren.
- Optional:
AGENTS.override.mdwird zusaetzlich angewendet. AGENTS.override.mdist lokal-only und darf nicht committed werden.
- Lokale Variablendeklarationen mit
Dimwerden in zusammenhängenden Blöcken spaltenweise ausgerichtet. - Ausrichtung erfolgt mindestens über diese Spalten:
Dim- Variablenname
As <Typ>- optionale Initialisierung
= <Wert>
- Die Einrückung startet linksbündig identisch je Block.
- Beispiel:
Dim hasContentTypes As Boolean = FalseDim hasOpenDocumentConflict As Boolean = FalseDim candidateOpenDocumentKind As FileKind