Skip to content

Befund-Ledger + bindendes Critic-Verdikt (Implementierung) - #6

Merged
TMogdans merged 20 commits into
mainfrom
feat/befund-ledger
Nov 14, 2026
Merged

TMogdans merged 20 commits into
mainfrom
feat/befund-ledger

Conversation

@TMogdans

Copy link
Copy Markdown
Collaborator

Implementiert das Design-Doc docs/2026-11-13-befund-ledger-critic-verdikt-design.md (PR #5) samt den zwei abgenommenen Nachträgen REQ-LEDGER-11 und REQ-GATE-1..3.

Kern

  • src/core/finding-key.ts: Befund-Keys ohne Zeilennummer und Freitext (Gate: test/mutant/semgrep/trace, Critic: review:<req>:<klasse>:<datei>).
  • src/core/ledger.ts: Ledger mit Zuständen open / fixed-claimed / closed / reopened. Fortschritt heißt jetzt: ein offener blocker/major-Befund wurde geschlossen und nichts wurde wiedereröffnet. Die Zahl der Befunde zählt nicht mehr. Erste Runde wird nicht gewertet (REQ-LEDGER-11). Das Verdikt wird aus dem Ledger abgeleitet.
  • src/core/loop.ts: errorCounts entfällt. Neue Entscheidung ESCALATE_OSCILLATION, wenn derselbe Befund zum zweiten Mal wiederkehrt (reopenCount ≥ 2).
  • src/core/critic.ts und src/cli/critic-verdict.ts: Ob der Critic gelaufen ist, steht nur dann fest, wenn seine rohe Ausgabe das Schema erfüllt. not-run gilt nie als „0 Befunde“, sondern führt zu einem Retry, danach zu ESCALATE critic-not-run.
  • src/core/gate-round.ts und src/cli/gate-round.ts: Rote Gate-Runden werden in den Ledger geschrieben. ran ist Pflicht, Befunde nicht gelaufener Jobs bleiben unverändert. Ungültige Eingabe führt zu Exit 2.
  • Driver und Resume: Der Impl-PR wird als Draft geöffnet und erst nach abgeleitetem accepted per MARK_READY auf „ready“ gesetzt. Resume behandelt einen grünen Draft als „Critic steht aus“. pr-state bricht ab, wenn isDraft fehlt.

Prosa: skills/loop, skills/implement, skills/resume, skills/critic, agents/devloop-critic.md, agents/devloop-implement.md.

Nachweis

  • Typcheck grün, 417/417 Tests in 31 Dateien, check:dist sauber.
  • Pflicht-Mutationsproben (a) bis (n) werden alle getötet. Weitere Critic-Mutanten sind getötet oder begründet äquivalent (o06, o10, o24). Alles steht in docs/2026-11-14-ledger-mutationsmatrix.md.
  • Vorher-Nachweis: test/evidence/before-counter.ts zeigt, dass der alte Zähler in beiden Fehlfällen falsch entscheidet.

Bekannte Grenzen (in der Spec dokumentiert)

  • Keine Ledger-Persistenz über resume.
  • Menschliche Review-Kommentare kommen nicht in den Ledger.
  • Gate-Befunde übersetzt der Orchestrator aus den CI-Logs, der Kern liest noch keine rohen Reports.

Version ist bewusst nicht angehoben.

Tests gegen den festen API-Vertrag von src/core/gate-round.ts und
src/cli/gate-round.ts. Implementierung fehlt noch, die Tests sind rot.
applyGateRound / parseGateRoundInput in src/core/gate-round.ts, CLI gate-round
(Exit 2 bei ungueltiger Eingabe), dist neu gebaut, loop-SKILL auf den CLI-Aufruf
umgestellt. Gate-Eintraege nicht gelaufener Arten bleiben unveraendert.
@TMogdans
TMogdans merged commit 68fadf3 into main Nov 14, 2026
1 check passed
@TMogdans
TMogdans deleted the feat/befund-ledger branch November 14, 2026 06:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant