QDISTORT-0 — bramka integralności i ważności źródła przed transmisją
Warstwa, która PRZED przekazaniem wyjścia dalej rozdziela dwa pytania mylone w jedno: „czy treść źródła jest nienaruszona?" (INTEGRITY) oraz „czy źródło wspiera to, co twierdzę?" (VALIDITY) — i wychwytuje dryf znaczenia między źródłem a draftem.
Źródło może mieć nienaruszoną treść (INTEGRITY PASS), a mimo to NIE wspierać twierdzenia (VALIDITY FAIL) — i odwrotnie: ktoś powołuje się na źródło „bo je potwierdza", lecz treść podmieniono (INTEGRITY FAIL czyni opinię VALIDITY bezwartościową). Mieszanie tych osi to dokładnie klasa błędu, którą QDISTORT ma zatrzymać przed transmisją.
Dwie osie rozdzielone w rdzeniu
SOURCE_INTEGRITY
Pytanie: „czy to wciąż to samo źródło, bit w bit?"
Jak: przeliczony sha256 kanonicznego JSON surowca == content_hash zamrożony w kopercie T0 (SourceEnvelope). Liczone z bajtów, nie z deklaracji.
Nie mówi: nic o tym, czy źródło popiera claim.
SOURCE_VALIDITY
Pytanie: „czy z tego źródła wynika to, co twierdzę?"
Jak: ocena dowodowa per-źródło — werdykt support / contradict / unrelated / unknown względem dosłownego tekstu claimu (ClaimPassport).
Nie mówi: nic o tym, czy treść źródła nie została podmieniona.
Cykl życia twierdzenia (ClaimPassport)
Każdy „paszport" wiąże dosłowny tekst claimu z listą źródeł i niesie OBOWIĄZKOWY falsyfikator — warunek, który gdyby zaszedł, obala claim. Sprawdzenie, które nie może dać FAIL, nie ma prawa dać PASS.
| Status | Znaczenie |
|---|---|
SOURCE | mamy źródło (kopertę), claim jeszcze do niego nieprzypisany |
ATTRIBUTED | claim przypisany do ≥1 źródła, jeszcze niezweryfikowany |
VERIFIED | INTEGRITY PASS ORAZ VALIDITY = support (potwierdzony dowodowo) |
CONFLICT | źródła się sprzeczają albo VALIDITY = contradiction |
UNKNOWN | brak danych do rozstrzygnięcia — NOT_MEASURED, a nie „0.00" (brak pomiaru ≠ wynik negatywny) |
Detektor semantyczny (SemanticDiff) — pięć klas dryfu
Bramka porównuje DRAFT wyjścia z warstwą źródeł. Nie liczy hasha i nie ocenia wsparcia per-źródło — wychwytuje DRYF ZNACZENIA: rzeczy, które w draftcie są, a w źródłach ich nie ma (albo są, ale inaczej). Deterministyczny, bez sieci, czysta funkcja. Gdy nie umie zlokalizować twierdzenia — NIE zgłasza (brak dowodu ≠ dowód braku; unikamy fałszywego BLOCK).
| # | Klasa | Co łapie | Waga |
|---|---|---|---|
| 1 | invented_specifics | liczby / daty / nazwy w draftcie nieobecne w żadnym źródle | REVIEW |
| 2 | attribution_drift | twierdzenie przypisane do złego źródła / autora (poza źródłami paszportu) | BLOCK |
| 3 | quote_drift | cytat różni się od dosłownego brzmienia źródła (cudzysłów zakłada wierność) | BLOCK |
| 4 | fabricated_citations | odwołanie do źródła, którego nie ma wśród przekazanych kopert/paszportów | BLOCK |
| 5 | false_certainty | kategoryczny ton przy statusie UNKNOWN / CONFLICT (overclaim tonu) | REVIEW |
Werdykt bramki
PASS
draft zgodny ze źródłami — zero findingów. Czysty draft MUSI dać PASS.
REVIEW
są findingi wyłącznie o wadze review — człowiek patrzy, bramka sama nie blokuje.
BLOCK
co najmniej jeden finding o wadze block. Zawsze zaskarżalny przez operatora (human_appeal: true) — detektor nie jest sędzią ostatniej instancji.
Append-only receipt-ledger (łańcuch hashy)
Każda decyzja QDISTORT może zostać utrwalona jako paragon w łańcuchu: każdy wpis wskazuje prev_hash poprzednika, więc dowolna późniejsza mutacja treści, wstawka w środek lub usunięcie wpisu ZRYWA ciągłość łańcucha i jest wykrywalna przez verifyChain(). Kanonizacja i sha256 są wspólne dla całej rodziny QDISTORT (te same odciski palca, ta sama droga).
entry_hash to weryfikowalny dowód TREŚCI wpisu w jego pozycji w łańcuchu — nie dowód, że decyzja była słuszna. Append-only utrwala niezmienność sekwencji, nie jej trafność.Komponenty i stan dostawy
| Komponent | Rola | PR | Flaga |
|---|---|---|---|
| SourceEnvelope (T0) | niezmienny odcisk treści źródła + provenance {who,when,how}; wersja qdistort-envelope/1 | #268 MERGED | OFF |
| ClaimPassport | rozdział INTEGRITY / VALIDITY, statusy claimu, obowiązkowy falsyfikator | #268 MERGED | OFF |
| ReceiptLedger | append-only łańcuch hashy decyzji; wersja qdistort-receipt-ledger/1 | #269 MERGED | OFF |
| Fixtury testowe | case001 / case002 — test łańcucha dowodowego (pii_free, wyłącznie role publiczne) | #270 MERGED | OFF |
| SemanticDiff | pre-transmisyjny detektor pięciu klas dryfu; PASS/REVIEW/BLOCK | #271 MERGED | OFF |
| MultiShaker echo/mock (infra powiązana) | deterministyczny adapter testowy, 0 sieci — dormant | #267 MERGED | OFF |
Linki
- Issue: 0n40i4/k0nsult#265 — „P0 QDISTORT-0 — SOURCE integrity + validity at T0; pre-transmission TrustNet gate" (OPEN)
- Kod: lib/qdistort/ · Testy: __tests__/qdistort/
- Snapshot maszynowy (repo, nie serwowany publicznie): data/qdistort/status.v1.json
- Standard powiązany: Claim ≤ Proof