155 lines
9.8 KiB
Markdown
155 lines
9.8 KiB
Markdown
# 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.
|