fix: Story 3.13 Re-Run-#7-Auflösung (P-18) — AGENT_PROMPT entkoppelt den

Run-Receipt als verpflichtenden Gate-Reporting-Lieferant von compiler.md

Befund Re-Run #7 (grün bis E.6): E.4 erneut GRÜN (NON_AT=0 AT=2 — doppelte
Bestätigung der Rev-3.8-Remediation unter echten frischen LLMs), C/D/D-NEG/
E.5 grün; HARD-FAIL an E.6 mit NEUER Ursache: "run-receipt.txt B fehlt/leer"
(Agent A lieferte den Receipt, Agent B nicht — B's wiki/-Mutationen waren
vollständig, E.5-Witness grün, RUN_DONE b vorhanden; Agent B behandelte den
Receipt als optional).

Klassifikation: LLM-Prompt-Adhärenz-Flake, kein Gate-Logik-Fehler, kein
Schema-Defizit (3/4 Receipts in #6/#7 geliefert = ~75% Adhärenz). Gate-
Verhalten korrekt (fehlender Nachweis = HARD-FAIL, kein stilles Grün — die
E.6-Härtung aus #6 bewahrt ihre Eigenschaft: sie prüft nur, wenn der Receipt
existiert). Wurzelursache: der Prompt hatte den Receipt "EXAKT nach den
Konventionen von schema/compiler.md" zugeordnet — compiler.md definiert ihn
aber nicht (0 Treffer "receipt") und der Prompt erklärt compiler.md zur
einzigen normativen Instruktion → Agent kann den Receipt als außerhalb-des-
Vertrags/optional deuten (gleiche Klasse wie P-17 Prompt-Wortungs-Präzisierung).

Änderung (Gate-only, bash -n clean; kein compiler.md-/frozen-Block-Change;
D-1-konform — exakte Feldstruktur != erwartete Werte):
- AGENT_PROMPT: Receipt als expliziter verpflichtender Gate-Reporting-
  Lieferant von compiler.md entkoppelt ("GATE-spezifische Berichtsdatei, die
  schema/compiler.md NICHT definiert"); beide Lieferungen (wiki/-Mutationen +
  run-receipt.txt) sind PFLICHT; RUN_DONE erst NACH Vorliegen beider
  Lieferungen; exakte 4-Feld-Form bleibt (Feldnamen exakt, Werte frei).
- Header: P-15/P-16/P-17/P-18-Patch-Referenzen ergänzt (bisher nur P-2..P-14
  genannt).
- Spec Change Log: Re-Run-#7-Befund + P-18-Härtung + Stabilitäts-Beobachtung
  für #8 (frozen Block L12-51 unangetastet, diff-geprüft).

Nächster Schritt: Re-Run #8 (Erwartung: E.6 grün + F G-1..G-8 + G Porcelain
erstmals). Falls Agent erneut keinen Receipt liefert = systematischer
Prompt-Adhärenz-Defekt (breitere Pflicht-Schritt-Liste), sonst Flake.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Michael Tamse
2026-08-24 08:31:05 +02:00
co-authored by Claude
parent 77fd460ec3
commit 65dfc26961
2 changed files with 15 additions and 2 deletions
@@ -59,6 +59,15 @@
# at-Ausnahme; CREATE/Synthese gelten über die Sub-Runs 3-3/3-4 als
# demostriert); AC-6 Demonstrationsfälle über Sub-Runs + A/B-Kern abgedeckt.
# - P-2..P-14: siehe spec §5.18 (Patches).
# - P-15/P-16: CLAUDE_BIN-Override + CLAUDE_CODE_MAX_OUTPUT_TOKENS-Floor 32000
# (Re-Run-#3/#4-Befund; siehe A-Sektion).
# - P-17: Validator-Pfad-Token-Normalisierung (Re-Run-#3-Befund; D-4/neg_count).
# - P-18 (Re-Run-#7-Befund): AGENT_PROMPT entkoppelt den Run-Receipt als
# verpflichtenden Gate-Reporting-Lieferant von compiler.md (die ihn nicht
# definiert) + RUN_DONE erst nach Vorliegen BEIDER Lieferungen (wiki/-
# Mutationen + run-receipt.txt) — Agent B hatte in #7 den Receipt als
# optional behandelt (3/4 Receipts in #6/#7 geliefert = Adhärenz-Flake,
# kein Gate-Logik-Fehler; E.6-Fehl-Receipt-HARD-FAIL blieb korrekt).
# ============================================================================
set -u
@@ -536,13 +545,15 @@ Fakten zur committeten Fixture in diesem Worktree (ausschließlich Fakten, keine
- raw/alpha-v1.md und raw/gamma-v1.md sind Baseline-Evidenz.
- raw/alpha-v2.md ist ein neu committeter Zuwachs (Stelle S-3); er enthält dieselbe belegte Aussage wie raw/alpha-v1.md#S-2.
Mutationen (wiki/-Concepts, index.md, log.md) UND die Receipt-Datei run-receipt.txt (Worktree-Root, AUSSERHALB von wiki/ und raw/) sind EXAKT nach den Konventionen von schema/compiler.md auszuführen — keine vorgegebenen Werte. Die run-receipt.txt trägt diese Felder (Werte aus deinem Lauf):
Zwei LIEFERUNGEN sind PFLICHT (ein Lauf ohne beide ist NICHT abgeschlossen):
1. Die Mutationen in wiki/ (Concepts, index.md, log.md) — EXAKT nach den Konventionen von schema/compiler.md, keine vorgegebenen Werte.
2. Die Datei run-receipt.txt im Worktree-Root (AUSSERHALB von wiki/ und raw/). Dies ist eine GATE-spezifische Berichtsdatei, die schema/compiler.md NICHT definiert — du ERSTELLST sie selbst nach dem Lauf, in EXAKT dieser Form (4 Zeilen, Feldnamen exakt wie unten; Werte aus deinem Lauf, keine vorgegebenen Werte):
baseline: <volles SHA des Baseline-Commits>
candidates: <Kandidatenliste oder leer>
decision: <Entscheidung je Mutation>
sources_added: <neue raw/-Ressourcen oder leer>
Commite NICHT selbst (der Harness committiert deine Mutationen mechanisch; run-receipt.txt bleibt uncommittet). Schließe den Lauf mit der Validierungsphase ab und melde am Ende EXAKT "RUN_DONE <name>", wobei <name> der dir mitgegebene Run-Name ist.'
Commite NICHT selbst (der Harness committiert deine wiki/-Mutationen mechanisch; run-receipt.txt bleibt uncommittet). Schließe den Lauf mit der Validierungsphase ab, erstelle ANSCHIESSEND run-receipt.txt und melde erst NACHDEM beide Lieferungen (wiki/-Mutationen + run-receipt.txt) vorliegen EXAKT "RUN_DONE <name>", wobei <name> der dir mitgegebene Run-Name ist.'
run_fresh_agent() { # $1=Worktree, $2=Run-Name (a/b)
local wt="$1" name="$2"