9.8 KiB
Gemeinsame Planung v2: Quellen, Teilkorrekturen und Abhängigkeiten
Neue Revisionen mit trial run --planning-mode joint verwenden case_plan_v2.
Der Kontext speichert joint_generation.version=2. Bereits eingefrorene v1-Kontexte
und Requests bleiben unverändert und über den bisherigen Pfad wiederaufnehmbar.
Der getrennte Modus, Investigation-Loop, Tools, Budgets und Diagnose bleiben unverändert.
docs/architecture.md wurde nicht geändert. Syntaxreparaturen sind ein separater Ausbau.
Quellenklassen und ausdrückliche Testerannahmen
Die dynamischen Interpretationsverträge beschränken source_ids je Aussagekategorie auf tatsächlich vorhandene IDs der zulässigen Quellentypen. Dies gilt im Prompt und in der fachlichen Annahme, nicht nur im Transport. Leere Quellmengen erlauben nur leere entsprechende Aussagearrays. Testerannahmen sind in v2 ausschließlich aus explizit typisierten tester_assumption-Quellen zugelassen. Kommentare/Beobachtungen werden nicht allein durch ihre Verfügbarkeit zu Annahmen. Ohne solche Quellen bleibt tester_assumptions leer. Die LLM darf eigene Schlussfolgerungen nicht dem Tester zuschreiben.
Explizite Voraussetzungen
Jeder v2-Wire-Vorschlag enthält premises mit kind=grounded oder unverified, knappem Text, source_ids und interpretation_paths. Grounded benötigt mindestens einen Verweis und darf keine ungelesenen Referenzen als gelesenen Beleg ausgeben. Referenzen müssen im Kontext und in den eigenen deklarierten Vorschlagsreferenzen existieren. Hypothesen bleiben spekulativ; eine Voraussetzung ist keine Bestätigung des Mechanismus. Die vollständigen Voraussetzungen und Reviews bleiben im unveränderlichen Originalcall. Die kanonischen Vorschläge behalten den bisherigen Vertrag und erhalten nach Prüfung nur deterministisch aufgelöste I-IDs. Übernahme/Replays prüfen den Original-Wire-Vertrag erneut.
Lokale Beanstandungen und begrenzte Patches
Ablehnungen speichern validation_issues mit Aussage-/Feldpfad, Fehlerkategorien und Quell-/Schemahinweisen. Korrigierbare Stellen werden aus der tatsächlichen Antwort ermittelt: Quellenklassen, unbekannte Quellen, Schemafehler, Entity-Provenienz, fehlende Erwartungs-Vollständigkeit und Lookup-Ungewissheit. Unbekannte/globale Fehler und zu viele Stellen erhalten keinen frei geratenen Patchbereich.
case_plan_statement_repair_v2 verlangt nur Patches für genau die beanstandeten Stellen. Ein Patch ersetzt eine ganze Aussage bzw. ein nötiges oberes Feld. Null darf eine beanstandete Arrayaussage entfernen; Löschungen werden absteigend angewandt, damit sich Indizes nicht während der Zusammensetzung verschieben. Andere Stellen können nicht überschrieben werden. Ein fehlender oder zusätzlicher Pfad wird abgelehnt. Es gibt keine stille Entfernung unzulässiger Quellen oder Testerbehauptungen.
Der Request enthält beanstandete Aussagen, nötige verfügbare Quellen, die vorhandenen Hypothesen samt Voraussetzungen und deren deklarierten Interpretationsaussagen. Er enthält keinen weiteren vollständigen Case. Kontextkomprimierung/Konsolidierung bleiben aktiv. Source-Call und Hash binden die unveränderte Ausgangsantwort außerhalb der Komprimierung. Danach wird die vollständig zusammengesetzte Interpretation geprüft. Ist keine sichere Lokalisierung möglich, bleibt der bisherige begrenzte Ersatzpfad verfügbar.
Individuelle Hypothesenprüfung
Der Korrekturaufruf muss jede Hypothese auf direkte UND implizite Abhängigkeit von korrigierten Aussagen prüfen, auch ohne direkten Verweis auf diese Stellen. Er meldet:
- retain: begründet unabhängig, keine neue Vorschlagsfassung.
- replace: gezielt ein Ersatzvorschlag im vollständigen v2-Vertrag.
- uncertain: keine ungeprüfte Übernahme.
Der Controller lässt retain nur zu, wenn zusätzlich ALLE deklarierten Inputs exakt unverändert sind. Bei Löschungen wird der Inhalt am Pointer verglichen, nicht nur dessen Fortbestehen. Geänderte direkte Grundlagen erfordern Ersatz oder weitere Prüfung. Der Controller kann versteckte Bedeutungsabhängigkeiten nicht beweisen; die semantische Review bleibt eine fehlbare LLM-Bewertung. Fehlende Referenzen allein gelten niemals als Nachweis von Unabhängigkeit. Alle zusammengesetzten Vorschläge durchlaufen erneut Quellen-, Fokus-, Diversitäts-, Count- und Registry-Prüfungen.
Auch ein fehlender oder falsch geformter Review-Block verwirft einen gültigen Interpretationspatch nicht. Seine Hypothesen werden dann nicht ungeprüft übernommen.
Ist die Interpretation gültig, aber ein Kandidat noch unklar, bleibt die Interpretation angenommen. Explizit geprüfte unabhängige Vorschläge werden in joint_retained des kanonischen Hypothesenkontexts festgehalten. Folgeaufrufe dürfen nur die anderen Positionen neu bearbeiten. Position/Anzahl und erhaltene Objekte sind durch Schema-const/prefixItems UND phasenseitige Gleichheitsprüfung gesperrt. Die volle Registry wird erst nach gültigem Gesamtergebnis veröffentlicht. Fehlt eine auswertbare Review, wird keine Unabhängigkeit unterstellt; dann bleibt der konservative Ersatzpfad nötig.
Persistenz und Grenzen
Original, Patch und Reviews bleiben getrennte echte Calls mit echten Usage-Werten. Es gibt keine künstlichen LLM-Runden oder doppelte Kostenbuchung. Die Interpretation wird deterministisch aus Original und zulässigen Patches rekonstruiert. Beim Wiederlesen werden Quellenhash, Requesthash, Identität, Phase, Konfiguration, erlaubte Pfade und Zusammensetzung geprüft. Die Kette ist begrenzt; direkte Selbstreferenzen und zu tiefe Ketten werden abgelehnt. Gespeicherte Reparaturcalls werden nach einem Abbruch wiederbenutzt.
Der bestehende Korrekturversuchszähler begrenzt weiterhin Modellversuche. Transport-Retries bleiben getrennt. Ein formaler Validierungserfolg beweist weiterhin nicht die Wahrheit jedes Freitextsatzes. Die Begrenzung dieser Unsicherheit ist ausdrücklich Teil der Policy.
Offline-Prüfung
Die Tests decken Quellen-Enums, fehlende Annahmenquellen, Voraussetzungscitations, gezielte Patches, direkte Abhängigkeiten, explizite Ersatzvorschläge, unklare Reviews, Sperren erhaltener Vorschläge, falsch geformte Modellfelder, Abbruch/Wiederaufnahme und Import in einen neuen Workspace ab. Ein Fall des unveränderten kuratierten Fehlerkorpus prüft die Lokalisierung der tatsächlich beobachteten Fehler. Kein bezahlter API-Test wurde ausgeführt; Kosten und semantische Qualität sind im nächsten Realtest zu messen.
Dependency recovery revision 1
New joint contexts freeze joint_generation.recovery_version = 1. Contexts without
this marker retain the earlier projection and request behavior for replay.
Valid explicit premise references are unioned into their proposal dependency lists
on a copied projection, never by editing the saved LLM answer. Only existing readable
source IDs and exact existing interpretation statement pointers are eligible. Unknown
references and grounded unread references still fail validation. No premise is promoted
from unverified to grounded, and no claim is deleted or rewritten.
Each candidate is checked independently before freezing joint_retained in the
hypothesis context. Initial candidates based on an already accepted interpretation
can be retained directly; after interpretation repair, explicit dependency review is
still required. Invalid candidates remain unlocked. Duplicate candidates are not locked
against a necessary diversity correction. A followup corrects only unlocked positions;
locked proposals are enforced with schema constants and local equality checks. Final
publication still validates the full set for count, grounding, primary focus and diversity.
The joint prompt repeats the required described_behavior.verification value. Missing
verification is not silently filled: the scoped statement correction must provide it.
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.