docs: Story 3.13 Status-Sync nach Rev-3.8-Ausführung (Spec Change Log + Design Notes + Autorisierungs-Träger §0.1)

Spec-3-13:
- Neues Spec-Change-Log-Top-Eintrag: Epic-1-Remediation (Rev 3.8) +
  A/B-Umfangs-Entscheidung (b) ausgeführt (24/26 NON_AT CREATE-getrieben;
  Minimal-Änderungssatz: (1) CREATE-Kern aus A/B-Fixture, (2) log.md-Pin).
- Design Notes: Allowance-Zeile auf alpha-UPDATE-Witness (raw/alpha-v2.md#S-3)
  umgestellt; Fixture-Beschreibung = 3-12-Muster OHNE CREATE-Kandidat
  (D-3.13-6 Option 2; index/gamma unverändert, IDX_ADDED=0).
- Frozen-Block L12-51 + GENERATED_AT_AUSNAHME-Zeile UNBERÜHRT (diff-geprüft).

Autorisierungs-Träger (compiler-revision-3-8-...):
- §0.1 Ausführungsstatus: B2 (log-Pin) + A/B-Umfang (b) = ANGEWENDET (Rev 3.8,
  Commit 7c3c19b); B1 (Slug) = offener Defer/Ask-First-Kandidat; C (Body-Byte)
  = zurückgewiesen (FR-2-Verstoß). Original-Entwurfstext als historische
  Entscheidungsgrundlage erhalten.

Status: Story 3.13 bleibt in-progress; finaler done-Flip + Review-Loop-2
erfolgen nach grünem Re-Run #6 (Step-05-Status-Sync).

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Michael Tamse
2026-08-24 06:04:04 +02:00
co-authored by Claude
parent 7c3c19bac4
commit 2a9fa89f8a
2 changed files with 26 additions and 4 deletions
@@ -1,6 +1,6 @@
--- ---
title: "Arbeitsauftrag — compiler.md Rev 3.7 → 3.8 (Epic-1-Remediation, Story 3.13): CREATE-Slug + log-Determinismus-Patch" title: "Arbeitsauftrag — compiler.md Rev 3.7 → 3.8 (Epic-1-Remediation, Story 3.13): CREATE-Slug + log-Determinismus-Patch"
status: DRAFT — Entwürfe (B1/B2) ready-to-apply; C (Body-Byte-Residual) an Nutzer-Entscheidung (a)/(b)/(c)/(d) gebunden; NICHT autorisiert, compiler.md UNVERÄNDERT status: AUSGEFÜHRT (Teilumsetzung) — B2 (log-Pin) + A/B-Umfang (b) angewendet, Rev 3.8 committet; B1 (Slug) = offener Defer; C (Body-Byte) = zurückgewiesen (FR-2). Siehe §0.1 Ausführungsstatus.
date: 2026-08-23 date: 2026-08-23
owner: ProMods owner: ProMods
related: spec-3-13-epic-3-verifikations-und-abnahmegate.md, spec-3-8-determinismus-vertrag-ad-17h-als-agent-instruktions-validato.md, deferred-work.md related: spec-3-13-epic-3-verifikations-und-abnahmegate.md, spec-3-8-determinismus-vertrag-ad-17h-als-agent-instruktions-validato.md, deferred-work.md
@@ -8,7 +8,22 @@ related: spec-3-13-epic-3-verifikations-und-abnahmegate.md, spec-3-8-determinism
# Arbeitsauftrag — compiler.md Rev 3.7 → 3.8 (Epic-1-Remediation, Story 3.13) # Arbeitsauftrag — compiler.md Rev 3.7 → 3.8 (Epic-1-Remediation, Story 3.13)
**Stellenwert:** Dies ist der **Autorisierungs-Träger** der separat autorisierten Epic-1-Remediation (AC-4-Pfad; Präzedenz Validator-Rev-8/9, AD-3-Compliance: keine stille Schema-Semantik-Änderung durch das Gate). Status **DRAFT**`schema/compiler.md` ist **UNVERÄNDERT**; erst nach Nutzer-Freigabe werden B1/B2 (und ggf. C je Entscheidung) angewendet, danach 12-Sandbox-Re-Execution + Re-Run #6. **Stellenwert:** Dies ist der **Autorisierungs-Träger** der separat autorisierten Epic-1-Remediation (AC-4-Pfad; Präzedenz Validator-Rev-8/9, AD-3-Compliance: keine stille Schema-Semantik-Änderung durch das Gate).
## 0.1 Ausführungsstatus (2026-08-23, Nutzer-Autorisierung „continue" — superset des §0-Empfehlungs-Vorschlags (b))
Dieser Entwurf legte drei Bausteine fest: **B1** (CREATE-Slug-Signal), **B2** (log-Determinismus), **C** (CREATE-Body-Byte-Residual, an die A/B-Umfangs-Entscheidung (a)/(b)/(c)/(d) gebunden). Nach der exakten Zeilen-Nachzähl des Re-Run-#5-Befunds (NON_AT=26 AT=4; 24/26 = 92 % CREATE-/Slug-getrieben) und der Nutzer-Autorisierung („continue" auf den empfohlenen Minimal-Änderungssatz) wurde **ausgeführt**:
| Baustein | Status | Umsetzung |
|---|---|---|
| **B2** — kanonische, byte-deterministische `log.md`-Eintragsform | ✅ **ANGEWENDET** (Rev 3.8) | §5.9 Pkt. 4 (Update), §5.1 Pkt. 4 (Anlage), §5.10 Pkt. 7 (Synthese-Anlage) + §8 Revisionslog. Form = `- <Operation>: <concept> (<quellen>; Baseline <SHA>)`, lex (LC_ALL=C) sortiert, ` + ` getrennt, voller SHA, **kein** freier Zusatztext, **kein** Wanduhr-at im Body (Wanduhr ausschließlich im Frontmatter-`generated.at`, §5.14 Pkt. 3). = genau die Form, die Sub-Runs 3-3/3-4 mechanisch bereits demonstrieren. |
| **A/B-Umfang (b)** — CREATE aus der A/B-Fixture nehmen (D-3.13-6 Option 1 → Option 2) | ✅ **ANGEWENDET** (Gate) | `run-sandbox.sh` E-Sektion: E.1 (keine beta-Quellen), AGENT_PROMPT (beta-Fakt entfernt), E.5 (CREATE-Witness entfernt, UPDATE-`alpha` bleibt), E.8 (index.md unverändert, IDX_ADDED=0), Header. A/B prüft den Update-/Erhaltungs-Kern; CREATE/Synthese gelten über Sub-Runs 3-3/3-4. |
| **B1** — CREATE-Slug-Signal (Inhalts-Term maßgeblich) | ⏸️ **DEFER** (offen) | **Nicht** in Rev 3.8 — der CREATE-Fall steht nicht mehr in der A/B-Fixture, daher ist der Slug-Pin für den grünen Re-Run #6 **nicht** erforderlich. Als **benannter Defer / Ask-First-Kandidat** dokumentiert (in compiler.md Rev 3.8 + Spec Change Log); §5.15 Pkt. 1 (Dateiname→Term) / §5.7 bleiben wie ist. |
| **C** — CREATE-Body byte-deterministisch | ❌ **ZURÜCKGEWIESEN** (FR-2) | Q1-Item (2) = Option (c): ein Byte-Pin des CREATE-Body widerspricht §5.1/FR-2/§5.10 Pkt. 3 („Befund-Äquivalenz, **nicht** Wort-Identität") direkt — Semantik-Change, kein Bugfix. Bewusst **nicht** ausgeführt. |
**Konsequenz für Re-Run #6:** erwartetes E.4-Ergebnis `NON_AT=0 AT=2` (`alpha.md` at-only; `log.md` byte-identisch via gepinnter Form; `gamma.md`/`index.md` unverändert). **Nicht berührt:** frozen I/O-Matrix-Block (inkl. `GENERATED_AT_AUSNAHME`), §5.14 Pkt. 3 (at-Ausnahme = Feldwerte), §5.10 Pkt. 3 (Body-Wortlaut), §5.1 Pkt. 2 (FR-2). **Commit:** `7c3c19b` (compiler.md Rev 3.8 + Gate + dieser Autorisierungs-Träger). **Ausstehend:** 12-Sandbox-Re-Execution, Re-Run #6 (grüner Voll-Lauf), Review-Loop-2 + finaler `done`-Flip (Step-05-Status-Sync nach grünem Re-Run #6).
**Unten:** der ursprüngliche Entwurfstext (B1 §1, B2 §2, C §3) bleibt als **historische Entscheidungsgrundlage** erhalten — die ausgeführte Form steht in §0.1; wo B1/B2 im Folgenden als „ready-to-apply" beschrieben sind, gilt: B2 angewendet (genau so wie im Entwurf), B1 nicht angewendet (Defer).
## 0. Prämisse-Korrektur (warum dieser Entwurf anders aussieht als die Q1-Prämisse) ## 0. Prämisse-Korrektur (warum dieser Entwurf anders aussieht als die Q1-Prämisse)
@@ -127,6 +127,13 @@ _Dismissed (6): G-6-„Hash-Primitive"-Beobachtung (Duplikat von D-3.13-3/P-2);
## Spec Change Log ## Spec Change Log
**Epic-1-Remediation (Rev 3.8) + A/B-Umfangs-Entscheidung (b) ausgeführt (2026-08-23, Nutzer-Autorisierung „continue" — superset des „Empfehlung (b)"-Vorschlags aus der E.4-Befund-Raffinierung; die „keine der Optionen wurde gewählt"-Zustandsmeldung dieses Logs ist damit obsolet):** Nach exakter Zeilen-Nachzähl des Re-Run-#5-Befunds (NON_AT=26 AT=4) bestätigt: **24/26 (92%) der NON_AT-Abweichungen sind CREATE-/Slug-getrieben** (`wiki/beta.md` 11 + `wiki/quanten-observatorium-kanal.md` 11 + `wiki/index.md` 2 — Git-Rename-Semantik zählt die content-identischen Frontmatter-Zeilen doppelt, weil die Dateinamen divergieren), die verbleibenden **4 `wiki/log.md`-Zeilen** = 2 CREATE-Einträge (Slug-Divergenz) + 2 freie UPDATE-Wortungen (+ Wanduhr-`generated.at` im Body). Daraus folgt der **ausgeführte, autorisierte Minimal-Änderungssatz** (beide Hälften vermeiden den frozen Block + den §5.14-Pkt-3-Vertrag):
1. **A/B-Vergleichsumfang = Empfehlung (b) der E.4-Befund-Raffinierung (D-3.13-6 Option 1 → Option 2):** der CREATE-/beta-Fall wird aus der A/B-Fixture **entnommen** — die A/B-Prüfung (E.4) deckt damit den **Update-/Erhaltungs-Kern** (`alpha` CONFIRMING-UPDATE + `gamma` Erhaltung), der **nachweislich byte-deterministisch** ist (Re-Run #5: `wiki/alpha.md` byte-identisch bis auf `at:`). CREATE + Multi-Source-Synthese gelten über die **12 Sandbox-Sub-Runs (insb. 3-3/3-4, mechanisch gepinnt, eigene Isolation)** als demostriert — AC-6 „Anlage einer neuen Wissenseinheit" gilt über diese. **Gate-Änderung** (`sandbox-3-13/run-sandbox.sh`, `bash -n` clean): E.1-Fixture (keine `beta`-Quellen mehr; keine Term-Isolation nötig), `AGENT_PROMPT` (beta-Fakt entfernt), E.5 (CREATE-Witness entfernt, UPDATE-`alpha`-Witness + Multi-Beleg bleibt), E.8 (`index.md` **unverändert** — IDX_ADDED=0/IDX_DELETED=0 — statt „+1 CREATE-Link"), Header-Kommentare; kein `sed -i` (AC-2). **Keine** `NEW_CONCEPT`/`NEW_LEAF`-Referenzen mehr; G-6 (perturbed-`alpha.md`-Tree + at-only-Kontrolle) bleibt gültig.
2. **`schema/compiler.md` Rev 3.7 → 3.8 (D-3-Instruktions-Patch, autorisiert; additive Präzisierung, kein Re-Negotiation):** die **kanonische, byte-deterministische `log.md`-Eintragsform** wird fixiert, damit der `log.md`-Body dem Determinismus-Vertrag §5.14/AD-17h (Zwei-Run-Byte-Identität außerhalb der `at`-Ausnahme) genügt — die bisherige Eintragspflicht (ohne Wort-Pin) erlaubte freien Zusatztext + Wanduhr-at im Body, jede Freiheit = NON_AT-Differenz = AD-16-Klassifikationsdefekt. Gepinnt in **§5.9 Pkt. 4** (Update), **§5.1 Pkt. 4** (Anlage), **§5.10 Pkt. 7** (Synthese-Anlage): `- <Operation>: <concept> (<quellen>; Baseline <Baseline-Commit>)` mit lexikografisch (LC_ALL=C) sortierten, per ` + ` getrennten Quellen + vollem SHA, **keinem** freien Zusatztext, **keinem** Wanduhr-Wert im Body (Wanduhr lebt ausschließlich im Frontmatter-`generated.at`, §5.14 Pkt. 3). Die Form ist **genau die**, die die Sub-Runs 3-3/3-4 mechanisch bereits demonstrieren (Ist-Behaviour verankert, kein Widerspruch). **Nicht geändert:** §5.14 Pkt. 3 (die `at`-Ausnahme bleibt die `generated.at`/`verified[].at`-Feldwerte — das `log.md`-Body-Wanduhr-Verbot ist eine **Folge** davon, keine Änderung der Ausnahme-Menge), §5.10 Pkt. 3 (CREATE-/Synthese-Body-Wortung bleibt „Befund-Äquivalenz, nicht Wort-Identität" — der Pin betrifft **nur** den `log.md`-Eintrag, **nicht** den Concept-Body), §5.1 Pkt. 2 (FR-2 „eigenständig formuliert" — der Body bleibt eigenständig), die Regeltexte oberhalb der Pins (textuell unverändert). **Q1-Item-2 „CREATE-Body byte-deterministisch" ist NICHT ausgeführt** (Option (c) = FR-2-Verstoß; bewusst zurückgewiesen). **Q1-Item-1 „CREATE-Slug-Signal pinning" ist NICHT ausgeführt** — als **offener Defer / Ask-First-Kandidat** dokumentiert (in compiler.md Rev 3.8 benannt); der Slug-Mechanismus (§5.15 Pkt. 1 Dateiname→Term, §5.7) bleibt wie ist, da der CREATE-Fall nicht mehr in der A/B-Fixture steht. **§8 Revisionslog** Rev 3.8-Eintrag. **`git status`-Impact:** `schema/compiler.md`-Diff ist eine **autorisierte** Instruktions-Änderung (nicht „stille Schema-Semantik-Änderung durch das Gate" — AC-4-Defizit-Route geschlossen durch diese separat autorisierte Remediation, Präzedenz Validator-Rev-8/9).
**Erwartetes E.4-Ergebnis Re-Run #6:** `wiki/alpha.md` at-only (AT=2), `wiki/log.md` **byte-identisch** (gepinntes Template, gleiche Datumsgruppe, gleicher Baseline-SHA, kein Wanduhr-at), `wiki/gamma.md`/`wiki/index.md` unverändert → **NON_AT=0 AT=2** → E.4 grün. **F (G-1..G-8) + G (Porcelain)** wurden in Re-Run #5 nicht erreicht (fail-fast an E.4); sie werden in Re-Run #6 ausgeführt. **Status:** Story 3.13 bleibt **`in-progress`**; finaler `done`-Flip + Review-Loop-2 erfolgen im Step-05-Status-Sync **nach** grünem Re-Run #6.
**E.4-Befund-Raffinierung (2026-08-23, vor Remediations-Start — Prämisse-Korrektur, Entscheidung offen):** Vor dem Start der autorisierten Epic-1-Remediation (Q1, „compiler.md-Patch → Re-Run #6 grün") gegen den compiler.md-Quelltext verifiziert — **die Remediation allein erreicht kein Exit 0 des Gates**; die Q1-Prämisse bedarf Nachverhandlung, **keine der Optionen wurde gewählt, nichts wurde geändert**. **Quelltext-Verankerungen (Zeilen):** (1) `§5.14 Pkt. 3` (L375): der Zwei-Run-Vergleich lässt *genau eine* benannte Differenz zu (den `generated.at`-Wanduhr-Gap); **alle übrigen** Bundle-State-Bestandteile sind zwischen zwei Runs desselben Git-States **byte-identisch**. (2) `§5.10 Pkt. 3` (L297): die CREATE-/Synthese-Body-*Reihenfolge* ist deterministisch gepinnt (lexikografisch nach Beleg-Anker, LC_ALL=C) — der *Wortlaut* ist es **nicht**; das Äquivalenzkriterium ist dort explizit „Befund-Äquivalenz, **nicht** Wort-Identität". (3) `§5.1 Pkt. 2` (L84) + `§5 Pkt. 3` (L34, FR-2): der Body ist „eigenständig formuliert"; „Bloße Kopie, das Einfügen großer Quellblöcke … DÜRFEN nicht erzeugt werden"; „Der Body darf keine großen Quell-Exzerpte enthalten". (4) `§5.14 Pkt. 2` (L374) + spec-3-8 P-5 (L150): die 3.8-Determinismus-Bestätigung wurde **mechanisch simuliert** (zwei Subshell-Läufe in getrennten Worktrees desselben Skripts), **nie** mit echten frischen LLMs; „der Nachweis echter frischer Kontexte erfolgt im Story-3.13-Abnahmegate über reale Agent-Läufe". **Konsequenz:** die 3.8-Basis validiert nur den **UPDATE**-Pfad (nachweislich A/B-byte-identisch bis auf `at:` — Run A `wiki/alpha.md`, Re-Run #5) — und zwar per Simulation, wo der „Producer" deterministische Skriptlogik ist und Byte-Identität trivial gilt. Der **CREATE**-Pfad ist erstmals unter *echten* frischen LLMs (E.4) ausgesetzt: dort verlangt FR-2 freien, eigenständig formulierten Wortlaut, während §5.14 Pkt. 3 Byte-Identität fordert — eine **latente Vertrags-Spannung** (in 3.8 durch die Simulation verdeckt, in 3.13/E.4 aufgedeckt), **kein** bloßes Instruktions-Defizit und **kein** Validator-Defizit in der engen AC-4-Lesart. **Zweiteilung des Befunds:** der **Slug-Teil** (raw-Dateinamen-Stamm „beta" vs. Inhalts-Term „quanten-observatorium-kanal"; `§5.15 Pkt. 1` L383 „dieser kollabierte, lowercasene Dateiname ist der primäre Term") ist **legitim per compiler.md-Patch auflösbar** (Inhalts-Term maßgeblich — Design-Notes-L150-Intention, kein FR-2-Verstoß); der **Body-Byte-Teil** ist es **nicht** innerhalb des gültigen Vertrags — ein Byte-Pin des CREATE-Body widerspricht FR-2/NFR-2/`§5.10 Pkt. 3` („nicht Wort-Identität") direkt und wäre ein Semantik-Change, kein Bugfix. **Status:** Remediation (compiler.md), 12-Sandbox-Re-Execution und Re-Run #6 **gehalten** — alle drei hängen an der A/B-Vergleichsumfangs-Entscheidung (frozen I/O-Matrix-Zeile `GENERATED_AT_AUSNAHME`, L49; frozen-Block nur mit menschlicher Bestätigung änderbar, Ask-First). **Offene Entscheidung (Prämisse-Korrektur zu Q1), drei Wege zu einem grünen, ehrlichen Re-Run #6:** **(a)** A/B-Vergleich auf freier CREATE-Synthese auf die **Wissens-Ebene** nachverhandeln (Zielpfad/Slug, Frontmatter, `sources`, Index-Link, Provenanz-Anker, Claim-Abdeckung byte-identisch; freier Body-Wortlaut als **zweite benannte Ausnahme-Klasse** neben `at` per Claim-/Provenienz-Abdeckung, nicht byte-weise) + Slug-Patch — frozen-Block-Änderung (Ask-First), vertragskonsistent mit der „Wissen ist deterministisch, LLM-Oberfläche nicht"-Prämisse. **(b)** **CREATE aus der A/B-Fixture nehmen** (D-3.13-6 Option 1 → Option 2; A/B prüft nur den nachweislich byte-deterministischen UPDATE-Pfad; CREATE + Multi-Source-Synthese bleiben über Sandbox-Sub-Runs 3-3/3-4 in eigener Isolation belegt, AC-6 „Anlage neuer Wissenseinheit" gilt über diese) — vertragskonform, frozen-Block unangetastet, kleinster ehrlicher Pfad. **(c)** substanzieller compiler.md-Change (CREATE-Body auf kanonische, aus `raw/` mechanisch abgeleitete Form pinnen) — erreicht Byte-Determinismus, aber bricht vmtl. FR-2; eigener, breiterer Autorisations-Runde würdig. **Empfehlung:** **(b)** — kleinster, vertragskonformer, ehrlicher Pfad zu grünem Re-Run #6 ohne frozen-Block-Verletzung und ohne stille FR-2-Verletzung; der CREATE-Byte-Identitäts-Fall (mit den obigen Verankerungen) wird als **benannter Defer** an eine spätere Vertrags-Revision/Epic-4-Determinismus-Überarbeitung übergeben. **Keine** Schema-/Gate-/Fixture-/frozen-Block-Änderung durch diese Notiz — sie dokumentiert nur den Befund, die Verankerungen und die Entscheidungsbasis. **E.4-Befund-Raffinierung (2026-08-23, vor Remediations-Start — Prämisse-Korrektur, Entscheidung offen):** Vor dem Start der autorisierten Epic-1-Remediation (Q1, „compiler.md-Patch → Re-Run #6 grün") gegen den compiler.md-Quelltext verifiziert — **die Remediation allein erreicht kein Exit 0 des Gates**; die Q1-Prämisse bedarf Nachverhandlung, **keine der Optionen wurde gewählt, nichts wurde geändert**. **Quelltext-Verankerungen (Zeilen):** (1) `§5.14 Pkt. 3` (L375): der Zwei-Run-Vergleich lässt *genau eine* benannte Differenz zu (den `generated.at`-Wanduhr-Gap); **alle übrigen** Bundle-State-Bestandteile sind zwischen zwei Runs desselben Git-States **byte-identisch**. (2) `§5.10 Pkt. 3` (L297): die CREATE-/Synthese-Body-*Reihenfolge* ist deterministisch gepinnt (lexikografisch nach Beleg-Anker, LC_ALL=C) — der *Wortlaut* ist es **nicht**; das Äquivalenzkriterium ist dort explizit „Befund-Äquivalenz, **nicht** Wort-Identität". (3) `§5.1 Pkt. 2` (L84) + `§5 Pkt. 3` (L34, FR-2): der Body ist „eigenständig formuliert"; „Bloße Kopie, das Einfügen großer Quellblöcke … DÜRFEN nicht erzeugt werden"; „Der Body darf keine großen Quell-Exzerpte enthalten". (4) `§5.14 Pkt. 2` (L374) + spec-3-8 P-5 (L150): die 3.8-Determinismus-Bestätigung wurde **mechanisch simuliert** (zwei Subshell-Läufe in getrennten Worktrees desselben Skripts), **nie** mit echten frischen LLMs; „der Nachweis echter frischer Kontexte erfolgt im Story-3.13-Abnahmegate über reale Agent-Läufe". **Konsequenz:** die 3.8-Basis validiert nur den **UPDATE**-Pfad (nachweislich A/B-byte-identisch bis auf `at:` — Run A `wiki/alpha.md`, Re-Run #5) — und zwar per Simulation, wo der „Producer" deterministische Skriptlogik ist und Byte-Identität trivial gilt. Der **CREATE**-Pfad ist erstmals unter *echten* frischen LLMs (E.4) ausgesetzt: dort verlangt FR-2 freien, eigenständig formulierten Wortlaut, während §5.14 Pkt. 3 Byte-Identität fordert — eine **latente Vertrags-Spannung** (in 3.8 durch die Simulation verdeckt, in 3.13/E.4 aufgedeckt), **kein** bloßes Instruktions-Defizit und **kein** Validator-Defizit in der engen AC-4-Lesart. **Zweiteilung des Befunds:** der **Slug-Teil** (raw-Dateinamen-Stamm „beta" vs. Inhalts-Term „quanten-observatorium-kanal"; `§5.15 Pkt. 1` L383 „dieser kollabierte, lowercasene Dateiname ist der primäre Term") ist **legitim per compiler.md-Patch auflösbar** (Inhalts-Term maßgeblich — Design-Notes-L150-Intention, kein FR-2-Verstoß); der **Body-Byte-Teil** ist es **nicht** innerhalb des gültigen Vertrags — ein Byte-Pin des CREATE-Body widerspricht FR-2/NFR-2/`§5.10 Pkt. 3` („nicht Wort-Identität") direkt und wäre ein Semantik-Change, kein Bugfix. **Status:** Remediation (compiler.md), 12-Sandbox-Re-Execution und Re-Run #6 **gehalten** — alle drei hängen an der A/B-Vergleichsumfangs-Entscheidung (frozen I/O-Matrix-Zeile `GENERATED_AT_AUSNAHME`, L49; frozen-Block nur mit menschlicher Bestätigung änderbar, Ask-First). **Offene Entscheidung (Prämisse-Korrektur zu Q1), drei Wege zu einem grünen, ehrlichen Re-Run #6:** **(a)** A/B-Vergleich auf freier CREATE-Synthese auf die **Wissens-Ebene** nachverhandeln (Zielpfad/Slug, Frontmatter, `sources`, Index-Link, Provenanz-Anker, Claim-Abdeckung byte-identisch; freier Body-Wortlaut als **zweite benannte Ausnahme-Klasse** neben `at` per Claim-/Provenienz-Abdeckung, nicht byte-weise) + Slug-Patch — frozen-Block-Änderung (Ask-First), vertragskonsistent mit der „Wissen ist deterministisch, LLM-Oberfläche nicht"-Prämisse. **(b)** **CREATE aus der A/B-Fixture nehmen** (D-3.13-6 Option 1 → Option 2; A/B prüft nur den nachweislich byte-deterministischen UPDATE-Pfad; CREATE + Multi-Source-Synthese bleiben über Sandbox-Sub-Runs 3-3/3-4 in eigener Isolation belegt, AC-6 „Anlage neuer Wissenseinheit" gilt über diese) — vertragskonform, frozen-Block unangetastet, kleinster ehrlicher Pfad. **(c)** substanzieller compiler.md-Change (CREATE-Body auf kanonische, aus `raw/` mechanisch abgeleitete Form pinnen) — erreicht Byte-Determinismus, aber bricht vmtl. FR-2; eigener, breiterer Autorisations-Runde würdig. **Empfehlung:** **(b)** — kleinster, vertragskonformer, ehrlicher Pfad zu grünem Re-Run #6 ohne frozen-Block-Verletzung und ohne stille FR-2-Verletzung; der CREATE-Byte-Identitäts-Fall (mit den obigen Verankerungen) wird als **benannter Defer** an eine spätere Vertrags-Revision/Epic-4-Determinismus-Überarbeitung übergeben. **Keine** Schema-/Gate-/Fixture-/frozen-Block-Änderung durch diese Notiz — sie dokumentiert nur den Befund, die Verankerungen und die Entscheidungsbasis.
**Nutzer-Entscheidungen Re-Run-#5-Nachbearbeitung (2026-08-23, ProMods-Response auf den E.4-Befund):** (1) **AC-4-Auflösung = autorisierte Epic-1-Remediation**`schema/compiler.md`-Patch (Rev 3.7 → 3.8) mit drei Bestandsregeln: CREATE-Slug-Signal pinning (Inhalts-Term maßgeblich — Design-Notes-L146-Intention), CREATE-Body-kanonische Form (byte-deterministisch), log.md-Regel (Wortlaut/Reihenfolge + kein Wanduhr-at im Body); danach 12-Sandbox-Re-Execution + Re-Run #6 (grüner Voll-Lauf). Die Remediation ist eine **separat autorisierte** Instruktions-Änderung im Präzedenz-Stil der autorisierten Validator-Revisionen 8/9 (AD-3-Compliance: keine stille Schema-Semantik-Änderung durch das Gate). (2) **Frozen-I/O-Matrix-Zeile `VALIDATOR_DEFIZIT` korrigiert** (Ask-First-Erfüllung durch die Nutzer-Bestätigung): „G-5 PASS" → „G-5 FAIL (Non-Zero)" — entspricht der implementierten Boundary/AC-4-Semantik (Non-Zero-Exit + Remediation-Text); der Renegotiation-Kandidat (Review-Loop-1, P-7) ist damit geschlossen. (3) **Tasks & Acceptance:** erledigte Tasks getickt (Gate-Skript gebaut, read-only-Verifizierung, epic-3-context, log.md, Porcelain-Nachweis); offene Tasks (Gate-bis-Exit-0, sprint-status done-Flip, deferred-work-Defers) bleiben offen bis Re-Run #6 grün. **Nutzer-Entscheidungen Re-Run-#5-Nachbearbeitung (2026-08-23, ProMods-Response auf den E.4-Befund):** (1) **AC-4-Auflösung = autorisierte Epic-1-Remediation**`schema/compiler.md`-Patch (Rev 3.7 → 3.8) mit drei Bestandsregeln: CREATE-Slug-Signal pinning (Inhalts-Term maßgeblich — Design-Notes-L146-Intention), CREATE-Body-kanonische Form (byte-deterministisch), log.md-Regel (Wortlaut/Reihenfolge + kein Wanduhr-at im Body); danach 12-Sandbox-Re-Execution + Re-Run #6 (grüner Voll-Lauf). Die Remediation ist eine **separat autorisierte** Instruktions-Änderung im Präzedenz-Stil der autorisierten Validator-Revisionen 8/9 (AD-3-Compliance: keine stille Schema-Semantik-Änderung durch das Gate). (2) **Frozen-I/O-Matrix-Zeile `VALIDATOR_DEFIZIT` korrigiert** (Ask-First-Erfüllung durch die Nutzer-Bestätigung): „G-5 PASS" → „G-5 FAIL (Non-Zero)" — entspricht der implementierten Boundary/AC-4-Semantik (Non-Zero-Exit + Remediation-Text); der Renegotiation-Kandidat (Review-Loop-1, P-7) ist damit geschlossen. (3) **Tasks & Acceptance:** erledigte Tasks getickt (Gate-Skript gebaut, read-only-Verifizierung, epic-3-context, log.md, Porcelain-Nachweis); offene Tasks (Gate-bis-Exit-0, sprint-status done-Flip, deferred-work-Defers) bleiben offen bis Re-Run #6 grün.
@@ -146,10 +153,10 @@ Der Gate-Kern löst das 3.8-P-5-Defizit: die Zwei-frische-Agenten-Bestätigung l
# im Gate-Skript: Bau beider Bäume auf denselben Commit # im Gate-Skript: Bau beider Bäume auf denselben Commit
git worktree add -q "$ROOT/wt-a" "$BASE" && git worktree add -q "$ROOT/wt-b" "$BASE" git worktree add -q "$ROOT/wt-a" "$BASE" && git worktree add -q "$ROOT/wt-b" "$BASE"
# A vs B — nur die at-Zellen dürfen differieren (Commits der Worktrees als tree-ishes): # A vs B — nur die at-Zellen dürfen differieren (Commits der Worktrees als tree-ishes):
git diff --stat "$HEAD_A" "$HEAD_B" -- wiki/ # Allowance: leer (voll konvergiert) ODER at-only; Nicht-Vakuum sichert der Witness (E.5: alpha ≠ Baseline, CREATE-Datei, Index-Link) git diff --stat "$HEAD_A" "$HEAD_B" -- wiki/ # Allowance: leer (voll konvergiert) ODER at-only; Nicht-Vakuum sichert der Witness (E.5: alpha ≠ Baseline, Multi-Beleg-Anker raw/alpha-v2.md#S-3)
``` ```
Die repräsentative Fixture nimmt das 3-12-Sandbox-Muster (Mini-Bundle `wiki/index.md`+`alpha.md`+`gamma.md`+`log.md`, `raw/alpha-v1.md`+`raw/gamma-v1.md` als Baseline, CONFIRMING-Zuwachs `raw/alpha-v2.md` → Update von `alpha.md` (Multi-Beleg `raw/alpha-v1.md#S-2; raw/alpha-v2.md#S-3`), CREATE-Kandidat `raw/beta-v1.md`+`raw/beta-v2.md` (eindeutiger Term `quanten-observatorium-kanal`, kein bestehendes Concept → neue Concept-Datei mit term-geleitetem Pfad gemäß §5.15/§5.7 + Index-Link), `gamma.md`/`index.md` bleiben für unabhängiges Wissen byte-identisch bzw. um exakt eine Link-Zeile wachsen) — in den `/tmp`-Käfig gebaut und als `$BASE` committet, nie das reale Bundle. Die repräsentative A/B-Fixture nimmt das 3-12-Sandbox-Muster (Mini-Bundle `wiki/index.md`+`alpha.md`+`gamma.md`+`log.md`, `raw/alpha-v1.md`+`raw/gamma-v1.md` als Baseline, CONFIRMING-Zuwachs `raw/alpha-v2.md` → Update von `alpha.md` (Multi-Beleg `raw/alpha-v1.md#S-2; raw/alpha-v2.md#S-3`), `gamma.md`/`index.md` bleiben für unabhängiges Wissen **byte-identisch/unverändert**) — in den `/tmp`-Käfig gebaut und als `$BASE` committet, nie das reale Bundle. **A/B-Umfang = Update-/Erhaltungs-Kern** (Rev-3.8-Remediation, D-3.13-6 Option 1 → Option 2, Re-Run #5-Befund 24/26 NON_AT CREATE-getrieben): der CREATE-Kandidat `raw/beta-v1.md`+`raw/beta-v2.md` (Term `quanten-observatorium-kanal`) ist **nicht** mehr Teil der A/B-Fixture — CREATE + Multi-Source-Synthese gelten über die Sandbox-Sub-Runs **3-3/3-4** (mechanisch gepinnt, eigene Isolation) als demostriert, AC-6 „Anlage einer neuen Wissenseinheit" gilt über diese; dadurch ist die A/B-Prüfung auf den nachweislich byte-deterministischen UPDATE-Pfad verengt (Re-Run #5: `wiki/alpha.md` byte-identisch bis auf `at:`) und `index.md`/`gamma.md` bleiben unverändert (kein CREATE-Link, IDX_ADDED=0).
## Verification ## Verification