Recover misplaced joint blocks and preserve unchanged entity citations

This commit is contained in:
Nico committed 2026-10-20 09:50:56 +02:00
1 parent c3a4690a55
commit 3872735c0a
14 files changed
+265 -10

No files matched your search

+30
View File
@@ -122,3 +122,33 @@ verification is not silently filled: the scoped statement correction must provid
The original 2026-10-20 replies and a bounded validation context are preserved in the
curated rejection corpus. Offline regression checks hashes, reference union, sibling
preservation and rejection of invented references. No paid API request was needed.
## Structural recovery revision 2
New contexts freeze `recovery_version = 2`; revision 1 and unmarked historical
contexts keep their original request/projection behavior. This revision includes
revision 1 dependency completion and sibling preservation.
One exact misplaced wrapper is recoverable: a sole top-level `hypotheses` object
containing exactly an `interpretation` object and a `hypotheses` array. These are
copied to the two intended blocks, without changing or dropping any content.
Competing top-level interpretations (even null), extra sibling keys and malformed
wrappers are never guessed away. Both recovered blocks still undergo all existing
schema, source, dependency and semantic contract checks. The original call stays
unchanged and remains the usage/provenance source during replay and import.
During a scoped entity correction, existing eligible identity/mention citations
are restored only when BOTH entity_id and reason are unchanged. Eligible references
come from the original statement and the frozen entity's matching capture/mention
provenance. New evidence is never invented. Changed claims receive no restoration;
unknown replacement sources remain present and invalid. Requests explicitly explain
which existing citations to preserve. When no reusable hypotheses exist, the request
explicitly requires an empty reviews array instead of asking to reconstruct them.
The curated `joint-nested-envelope` corpus preserves the actual rejected replies,
their hashes and bounded context. Offline tests confirm that the initial reply passes
full interpretation and hypothesis validation after lossless wrapper recovery and
existing dependency normalization. A separate regression confirms the later scoped
patch passes interpretation validation after preserving unchanged identity evidence.
No paid API request was executed to establish these results.