trading-system-docs/tolaria/c4b-search-service/C4A_GROUND_TRUTH_ERRATUM.md

103 lines
8.5 KiB
Markdown

# 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).