{"id":"reconciliation/exhibition-literature-reconciliation","relativePath":"reconciliation/exhibition-literature-reconciliation.md","title":"Exhibition + Literature Reconciliation (B6.1)","markdown":"# Exhibition + Literature Reconciliation (B6.1)\n\nThis document is the required execution checklist for cross-provider reconciliation of:\n\n- `PropositionalObject` exhibition concepts/plans\n- exhibition `Activity` records\n- `LinguisticObject` literature/publication records\n\nIt exists to prevent duplicate, fragmented, or conflicting representations of the same exhibition/publication across providers while preserving source provenance.\n\n---\n\n## Scope\n\n- In scope:\n  - Matching equivalent exhibitions/publications across providers.\n  - Creating internal reconciliation links and confidence/audit metadata.\n  - Human-review flow for ambiguous cases.\n- Out of scope:\n  - Destructive source record merges.\n  - URI rewriting in source payloads.\n  - Inference from URI path structure.\n\n---\n\n## Non-negotiable invariants\n\n- Preserve `_source.raw` exactly as ingested.\n- Preserve URI opacity; never parse URI path segments for semantics.\n- Preserve Linked Art modeling boundaries:\n  - object-carried content is not collapsed into physical object identity\n  - event-centric relationships remain event-centric\n- Use `equivalent`/explicit relationship assertions for alignment; do not collapse provider identities into a single rewritten URI.\n\n---\n\n## Candidate generation + scoring (baseline)\n\n- Blocking keys:\n  - normalized title/label\n  - time window overlap\n  - place/venue authority alignment\n- Evidence signals:\n  - identifiers (ISBN/ISSN/OCLC/DOI/local refs when present)\n  - organizer/publisher/participant overlap\n  - catalog/object co-reference overlap\n  - multilingual title similarity\n\nSuggested decision bands:\n\n- `>= 0.90` auto-link\n- `0.65 - 0.89` review queue\n- `< 0.65` no-link\n\nThresholds are test-driven and may only change with fixture + regression updates.\n\n---\n\n## Required failing-first fixtures\n\nAdd and maintain explicit pass/fail fixtures for:\n\n- same exhibition across different institutional URIs\n- same publication/catalog across different institutional URIs\n- near-title false positives\n- mismatched edition/publication-year conflicts\n- date uncertainty overlaps and non-overlaps\n- multilingual title variants\n\nEvery new provider slice that touches exhibition/literature fields must update this fixture set.\n\n---\n\n## Required tests\n\n- `tests/quality/reconciliation-exhibitions-literature.test.ts`\n  - pass/fail fixture coverage\n  - confidence threshold behavior\n  - provenance invariants\n  - URI opacity guard\n  - carrier/content separation guard\n\nCI expectation:\n\n- no net-new critical reconciliation regressions\n- no degradation in previously accepted pass fixtures\n\n---\n\n## Review + audit requirements\n\n- Every reconciliation decision stores:\n  - candidate pair\n  - score\n  - evidence features\n  - decision (`auto-link`, `accepted`, `rejected`, `needs-review`)\n  - actor (`system` or reviewer identity)\n  - timestamp\n- Reviewer decisions are reversible and append-only in audit history.\n\n---\n\n## Standards mapping requirement\n\nAny implementation PR for this slice must include:\n\n- Linked Art standards rounds referenced from:\n  - `docs/linked-art/LinkedArtModel1.0-Reference.md`\n- fixture anchors exercised\n- failing-first tests added/updated\n- protocol assertions touched (if API endpoints are changed)\n\n","sections":[{"level":2,"heading":"Scope","anchor":"scope"},{"level":2,"heading":"Non-negotiable invariants","anchor":"non-negotiable-invariants"},{"level":2,"heading":"Candidate generation + scoring (baseline)","anchor":"candidate-generation-scoring-baseline"},{"level":2,"heading":"Required failing-first fixtures","anchor":"required-failing-first-fixtures"},{"level":2,"heading":"Required tests","anchor":"required-tests"},{"level":2,"heading":"Review + audit requirements","anchor":"review-audit-requirements"},{"level":2,"heading":"Standards mapping requirement","anchor":"standards-mapping-requirement"}],"html":"<h1 id=\"exhibition-literature-reconciliation-b6-1\">Exhibition + Literature Reconciliation (B6.1)</h1>\n<p>This document is the required execution checklist for cross-provider reconciliation of:</p>\n<ul><li>`PropositionalObject` exhibition concepts/plans</li><li>exhibition `Activity` records</li><li>`LinguisticObject` literature/publication records</li></ul>\n<p>It exists to prevent duplicate, fragmented, or conflicting representations of the same exhibition/publication across providers while preserving source provenance.</p>\n<p>---</p>\n<h2 id=\"scope\">Scope</h2>\n<ul><li>In scope:</li><li>Matching equivalent exhibitions/publications across providers.</li><li>Creating internal reconciliation links and confidence/audit metadata.</li><li>Human-review flow for ambiguous cases.</li><li>Out of scope:</li><li>Destructive source record merges.</li><li>URI rewriting in source payloads.</li><li>Inference from URI path structure.</li></ul>\n<p>---</p>\n<h2 id=\"non-negotiable-invariants\">Non-negotiable invariants</h2>\n<ul><li>Preserve `_source.raw` exactly as ingested.</li><li>Preserve URI opacity; never parse URI path segments for semantics.</li><li>Preserve Linked Art modeling boundaries:</li><li>object-carried content is not collapsed into physical object identity</li><li>event-centric relationships remain event-centric</li><li>Use `equivalent`/explicit relationship assertions for alignment; do not collapse provider identities into a single rewritten URI.</li></ul>\n<p>---</p>\n<h2 id=\"candidate-generation-scoring-baseline\">Candidate generation + scoring (baseline)</h2>\n<ul><li>Blocking keys:</li><li>normalized title/label</li><li>time window overlap</li><li>place/venue authority alignment</li><li>Evidence signals:</li><li>identifiers (ISBN/ISSN/OCLC/DOI/local refs when present)</li><li>organizer/publisher/participant overlap</li><li>catalog/object co-reference overlap</li><li>multilingual title similarity</li></ul>\n<p>Suggested decision bands:</p>\n<ul><li>`&gt;= 0.90` auto-link</li><li>`0.65 - 0.89` review queue</li><li>`&lt; 0.65` no-link</li></ul>\n<p>Thresholds are test-driven and may only change with fixture + regression updates.</p>\n<p>---</p>\n<h2 id=\"required-failing-first-fixtures\">Required failing-first fixtures</h2>\n<p>Add and maintain explicit pass/fail fixtures for:</p>\n<ul><li>same exhibition across different institutional URIs</li><li>same publication/catalog across different institutional URIs</li><li>near-title false positives</li><li>mismatched edition/publication-year conflicts</li><li>date uncertainty overlaps and non-overlaps</li><li>multilingual title variants</li></ul>\n<p>Every new provider slice that touches exhibition/literature fields must update this fixture set.</p>\n<p>---</p>\n<h2 id=\"required-tests\">Required tests</h2>\n<ul><li>`tests/quality/reconciliation-exhibitions-literature.test.ts`</li><li>pass/fail fixture coverage</li><li>confidence threshold behavior</li><li>provenance invariants</li><li>URI opacity guard</li><li>carrier/content separation guard</li></ul>\n<p>CI expectation:</p>\n<ul><li>no net-new critical reconciliation regressions</li><li>no degradation in previously accepted pass fixtures</li></ul>\n<p>---</p>\n<h2 id=\"review-audit-requirements\">Review + audit requirements</h2>\n<ul><li>Every reconciliation decision stores:</li><li>candidate pair</li><li>score</li><li>evidence features</li><li>decision (`auto-link`, `accepted`, `rejected`, `needs-review`)</li><li>actor (`system` or reviewer identity)</li><li>timestamp</li><li>Reviewer decisions are reversible and append-only in audit history.</li></ul>\n<p>---</p>\n<h2 id=\"standards-mapping-requirement\">Standards mapping requirement</h2>\n<p>Any implementation PR for this slice must include:</p>\n<ul><li>Linked Art standards rounds referenced from:</li><li>`docs/linked-art/LinkedArtModel1.0-Reference.md`</li><li>fixture anchors exercised</li><li>failing-first tests added/updated</li><li>protocol assertions touched (if API endpoints are changed)</li></ul>","updatedAt":"2018-10-20T01:46:40.000Z","checksum":"293e9d81dd7c8133643cf8a426684ad269bfed3708c5dc4dbbb23cfec3f7d791","checksumPrefix":"293e9d81dd7c","anchorCount":7,"lineCount":113,"rawUrl":"/api/docs/content?path=reconciliation%2Fexhibition-literature-reconciliation.md","htmlUrl":"/docs?doc=reconciliation%2Fexhibition-literature-reconciliation.md","apiUrl":"/api/docs/content?path=reconciliation%2Fexhibition-literature-reconciliation.md"}