verdicts-only auditor: submit_review is {links, bridging edges} — the findings echo dies
Owner ruling 2026-09-28: the auditor has no control over the extractor's output and never alters it, so re-emitting the full findings per submit was pure payload cost — the retry collapse the schema slim attacked, halved again. submit_review is now links (local proposition id -> existing graph node; EQUIVALENCE BIAS carried in the linkTo description) + bridging edges ONLY; the merger joins extractor findings + verdicts. mergeFindings(chatId, findings, verdicts, ...) — propositions come from findings verbatim, links join by id, edges emit extractor's then auditor's through one dedup-preserving emitter. The old echo form hid an accidental drop channel: an auditor that omitted a proposition from its echo silently dropped it from the merge. Verdicts-only removes it structurally — extractor output always fully merges (tests updated to full-merge expectations). AuditResult/AuditedProposition -> IdentityLink/AuditVerdicts; audit() logs links/bridges; batch view renders anchorless like transcriptView; auditor prompt rewritten to the verdicts-only deliverable; architecture.md division-of-trust updated.
This commit is contained in:
+20
-16
@@ -229,24 +229,28 @@ export interface SessionFindings {
|
||||
edges: ExtractedEdge[];
|
||||
}
|
||||
|
||||
/** The auditor's verdict on one proposition: the findings, plus `linkTo` —
|
||||
* the identity judgment. Absent = create a new node. */
|
||||
export interface AuditedProposition extends ExtractedProposition {
|
||||
/** The existing GraphNode id this proposition IS — the auditor's
|
||||
* identity verdict. On link, the session's phrasings (statement,
|
||||
* aliases) join the node's aliases and the provenance unions.
|
||||
* EQUIVALENCE BIAS (2026-09-27): paraphrases, rewordings, and
|
||||
* compressions of the same claim MERGE — do not create a duplicate
|
||||
* because the wording differs. Only genuinely distinct propositions
|
||||
* stay apart. */
|
||||
linkTo?: string;
|
||||
/** One identity verdict: the extractor's local proposition id → the
|
||||
* EXISTING graph node that proposition IS. On link, the session's
|
||||
* phrasings (statement, aliases) join the node's aliases and the
|
||||
* provenance unions. EQUIVALENCE BIAS (2026-09-27): paraphrases,
|
||||
* rewordings, and compressions of the same claim MERGE — do not create
|
||||
* a duplicate because the wording differs. Only genuinely distinct
|
||||
* propositions stay apart. */
|
||||
export interface IdentityLink {
|
||||
id: string;
|
||||
linkTo: string;
|
||||
}
|
||||
|
||||
/** The auditor's output: the findings with identity verdicts, plus any
|
||||
* bridging edges drawn to existing graph nodes. No drop channel — the
|
||||
* auditor never rejects; the extractor is fully trusted (2026-09-27). */
|
||||
export interface AuditResult {
|
||||
propositions: AuditedProposition[];
|
||||
/** The auditor's output — VERDICTS ONLY (owner, 2026-09-28): the auditor
|
||||
* never alters the extractor's findings, so it does not restate them;
|
||||
* the deterministic merger joins findings + verdicts. `links` = the
|
||||
* identity verdicts (local id ⇄ existing node); `edges` = BRIDGING
|
||||
* edges the auditor draws from existing graph nodes to the batch's
|
||||
* propositions (endpoints: existing node ids and/or local proposition
|
||||
* ids). No drop channel — the auditor never rejects; the extractor is
|
||||
* fully trusted (2026-09-27). */
|
||||
export interface AuditVerdicts {
|
||||
links: IdentityLink[];
|
||||
edges: ExtractedEdge[];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user