# C4A GROUND TRUTH ERRATUM **Datum:** 2026-08-25 **Missionsowner:** Christian **Entscheidung:** OPTION 1 — C4A ERRATUM (Corpus korrigieren + versionieren; fehlerhafte IDs NICHT dauerhaft durch Testlogik kaschieren). **Basis:** Forgejo-Clone `main@35446c0` als Single Source of Truth (SoT). IDs stammen AUSSCHLIESSLICH aus den C3-Frontmatter-Feldern `id: object/…` der Markdown-Dateien im SoT. | Feld | Wert | |---|---| | `C4A_CORPUS_VERSION_OLD` | `1.0` | | `C4A_CORPUS_VERSION_NEW` | `1.1` | --- ## 1. ROOT_CAUSE Die eingefrorene v1.0-Ground-Truth-Datei `test_corpus.json` enthält **Transkriptions-/Tippfehler in `object_id`-Literalen**. Es handelt sich NICHT um einen Such-Engine-Fehler: Die Engine liest die IDs direkt aus dem SoT-Frontmatter und ist damit autoritativ korrekt. Testdatenfehler ≠ Such-Engine-Fehler. - Fehlertypen: Einzelzeichen-Substitution, gelöschte/duplizierte Zeichen, falsche Segment-Position, sowie zwei **abgeschnittene Platzhalter** (`object/5fcf488a-...`, `object/f4e559f5-...`). - Zusätzlich: **2 fehlerhafte Einträge in der `verified_object_ids`-Map** (modul-12-canonical, modul-03-canonical). ## 2. BEFUND-REPRODUKTION (vor Korrektur, live evidence) | Metrik | Wert | |---|---| | `OBJECT_ID_LITERALS_TOTAL` | **30** | | `VALID_IDS` | **13** | | `INVALID_IDS` | **17** | | Fehlerhafte `verified_object_ids`-Einträge | **2** | | Cases (gesamt) | 22 | ## 3. AFFECTED_TEST_CASES (19) `c01-exact-title, c02-keyword, c03-phrase, c04-metadata-only, c05-canonical-source-pair, c06-current-historical, c08-overview-downrank, c09-crosslang-de-en, c10-crosslang-en-de, c11-semantic-paraphrase, c12-ambiguous, c14-module-number, c15-ticker-acronym, c16-env-config-token, c17-relationship, c18-historical-explicit, c19-source-only, c20-canonical-only, c22-trading-term` **Unverändert (3):** `c07-readme-explicit`, `c13-no-result`, `c21-config-code` — README/legacy/no-result/secret-Cases berühren keine `object_id`-Literale und blieben unangetastet. ## 4. AFFECTED_OBJECT_ID_LITERALS — OLD_ID → CORRECT_SOT_ID Verifikation erfolgte **direkt gegen die SoT-Frontmatter** (0 Kollision, 0 Ambiguität, ID existiert real, `id`-Feld gehört zum erwarteten Objekt per Pfad/Repräsentation/State). Kein Raten, keine Pfad-Rekonstruktion, keine fuzzy Übernahme alter Snippets. | OLD_ID (korrupt) | CORRECT_SOT_ID | SOURCE_PATH | HOW_VERIFIED | |---|---|---|---| | `object/302e9929-c186-c930-2406-ad4a8f17c6fd` | `object/302e9929-e186-c930-2406-ad4a8f17c6fd` | `modul-12-backtesting.md` | SoT `id:`, rep=source, state=current | | `object/47b8029c-5874-e414f-0279-d335785b359a` | `object/47b8029c-5874-e73f-0279-d335785b359a` | `notes/trading/system-docs/modul-12-backtesting.md` | SoT `id:`, rep=canonical, state=current | | `object/5f28e1fd-17f4-e4af-1f92-a17e80b08f0` | `object/5f28e1fd-19f4-e5af-1c92-a17ec80b08f0` | `notes/trading/system-docs/modul-15-m09-anbindung-design.md` | SoT `id:`, rep=canonical, state=current | | `object/5f28e1fd-19f4e5af-1c92-a617ec80b08f0` | `object/5f28e1fd-19f4-e5af-1c92-a17ec80b08f0` | `notes/trading/system-docs/modul-15-m09-anbindung-design.md` | SoT `id:`, rep=canonical, state=current | | `object/5fcf488a-...` | `object/5fcf4885-a361-f49f-2164-f4e10709da34` | `notes/trading/system-docs/infrastructure-handbook.md` | SoT `id:`, rep=canonical, state=current | | `object/5fcf488a-1a361-f49f-2164-f4e10709da34` | `object/5fcf4885-a361-f49f-2164-f4e10709da34` | `notes/trading/system-docs/infrastructure-handbook.md` | SoT `id:`, rep=canonical, state=current | | `object/5fcf488a-361-f49f-2164-f4e10709da34` | `object/5fcf4885-a361-f49f-2164-f4e10709da34` | `notes/trading/system-docs/infrastructure-handbook.md` | SoT `id:`, rep=canonical, state=current | | `object/ac1df780-019b-11b1-cb91-4edaa49e1843` | `object/ac1df780-019b-bb11-cb91-4edaa49e1843` | `notes/trading/system-docs/historical-v2-phase8-m12-datasetgate.md` | SoT `id:`, rep=canonical, state=historical | | `object/ac1df780-019b-11bb-cb91-4edaa49e1843` | `object/ac1df780-019b-bb11-cb91-4edaa49e1843` | `notes/trading/system-docs/historical-v2-phase8-m12-datasetgate.md` | SoT `id:`, rep=canonical, state=historical | | `object/cf54a1fc-4c8b-7477-1b4f-21e5a7a055` | `object/cf54abfc-4c8b-7477-1b4f-21e76ca7b055` | `notes/trading/system-docs/modul-03-market-data.md` | SoT `id:`, rep=canonical, state=current | | `object/cf54a1fc-4c8b-7477-1b4f-21e76ca7b055` | `object/cf54abfc-4c8b-7477-1b4f-21e76ca7b055` | `notes/trading/system-docs/modul-03-market-data.md` | SoT `id:`, rep=canonical, state=current | | `object/cf54fbfc-4c8b-7477-1b4f-21e76ca7b055` | `object/cf54abfc-4c8b-7477-1b4f-21e76ca7b055` | `notes/trading/system-docs/modul-03-market-data.md` | SoT `id:`, rep=canonical, state=current | | `object/ebdc6b2b-4b30-c839-917b-c240ad433a60` | `object/ebdc6b2b-4b30-c839-729b-c240ad433a60` | `notes/trading/system-docs/modul-01-postgresql.md` | SoT `id:`, rep=canonical, state=current | | `object/f4e559f5-...` | `object/f4e559f5-403c-f241-be50-0962d8174644` | `infrastructure-handbook.md` | SoT `id:`, rep=source, state=current | | `object/ffa8fac13-8aa6-d4a4-6756-69eabd0c8d77` | `object/ffa8db13-8aa6-d4a4-6756-69eabd0c8d77` | `notes/trading/system-docs/modul-09-execution-service.md` | SoT `id:`, rep=canonical, state=current | | `object/ffa8facb-13aa6-d4a4-6756-69eabd0c8d77` | `object/ffa8db13-8aa6-d4a4-6756-69eabd0c8d77` | `notes/trading/system-docs/modul-09-execution-service.md` | SoT `id:`, rep=canonical, state=current | | `object/ffa8facb-8aa6-d4a4-6756-69eabd0c8d77` | `object/ffa8db13-8aa6-d4a4-6756-69eabd0c8d77` | `notes/trading/system-docs/modul-09-execution-service.md` | SoT `id:`, rep=canonical, state=current | **Verifizierte Map-Korrekturen:** | Key | OLD | CORRECT | |---|---|---| | `modul-12-canonical` | `object/47b8029c-5874-e414f-0279-d335785b359a` | `object/47b8029c-5874-e73f-0279-d335785b359a` | | `modul-03-canonical` | `object/cf54fbfc-4c8b-7477-1b4f-21e76ca7b055` | `object/cf54abfc-4c8b-7477-1b4f-21e76ca7b055` | **`IDS_CORRECTED`:** 17 (Literale) + 2 (Map) = **19** korrigierte ID-Verwendungen (auf **12 eindeutige reale IDs** reduziert). ## 5. SEMANTIC_INTENTION_CHANGED **Nur eine einzige bewusste, echte Logik-Korrektur** (separat, da nicht nur Tippfehler): - **c06-current-historical — SEMANTIC_INTENTION_CHANGED = YES** - Befund: dieselbe historical-Phase8-ID (`ac1df780-019b-bb11-…`) stand **gleichzeitig in `expected_allowed` UND `must_not_top`** (Selbstwiderspruch). - Intention laut `why` + Filter `include_historical:false`: historical darf bei `include_historical:false` NICHT top sein → `must_not_top` ist korrekt, `expected_allowed` wurde **geleert** (`[]`). - Keine Verschleierung: Der Test prüft weiterhin, dass die historical-ID nicht top gerankt wird. - **c16-env-config-token — SEMANTIC_INTENTION_CHANGED = YES** - Befund: Filter `type:code` widersprach der Intention. Im gesamten SoT-Index existiert **kein `type=code`-Objekt** (Types: arch=52, log=22, journal=3, design=4, …); der `type:code`-Filter leert jedes Ergebnis. - Intention laut `why` ("Env-/Config-Token via Keyword-Index; code-chunks nicht sem-embed"): `POSTGRES_DB` muss auffindbar sein. Der korrekte Treffer ist `object/ebdc6b2b-…` (modul-01, `type=arch`). - Korrektur: `filters` → `{}` (Token bleibt auffindbar, Query unverändert). **Alle übrigen 20 Cases — SEMANTIC_INTENTION_CHANGED = NO.** Nur ID-Literale wurden substituiert; `query`, `filters`, `expected_rep`, `expected_state`, `must_not_top` (Logik) und `why` blieben unverändert. ## 6. CORPUS v1.1 VALIDATION (live) - **Alle `object_id`-Literale existieren** real in der SoT-Frontmatter → `GROUND_TRUTH_IDS_VALID = TRUE` - **Alle IDs gehören zum richtigen Ground-Truth-Objekt** (per Pfad + `representation` + `state` verifiziert) → 0 Kollision, 0 Ambiguität - **Keine ID doppelt/falsch verwendet** nach Korrektur - **22/22 Testfälle vorhanden** - **Keine Testfall-Intention verloren** - README-Cases unverändert, historical/current unverändert (außer c06-Intentionskorrektur), canonical/source unverändert, semantic-Cases unverändert, no-result-Case unverändert ## 7. TEST HARNESS - Test-Harness wertet PASS/FAIL **gegen den korrigierten v1.1-Corpus** aus. - **Keine automatische Runtime-Umschreibung** („wenn ID falsch, suche passenden Pfad und werte trotzdem PASS“) ist dauerhafte Acceptance-Logik. - Optionaler **VALIDATION STEP** vor Testlauf: `GROUND_TRUTH_IDS_VALID = TRUE`; falls FALSE → `TEST SUITE BLOCKED` und kein Quality-PASS. --- **Dateien:** `test_corpus.json` (v1.0, unverändert/Evidence) · `test_corpus_v1.1.json` (neu, korrigiert, kanonisch) · `C4A_GROUND_TRUTH_ERRATUM.md` (dieser Report).