Neo4j materialization for model_role=TARGET nodes plus EnrichmentDecision storage. Includes GraphWriter protocol, idempotent MERGE keys, edge-endpoint constraint nodes, integrity check between compact Entity.enrichment_<facet>_status and structured EnrichmentDecision, and the new Cypher migration.
Tracking: #97. Source: openspec/changes/target-ontology-adapter/tasks.md §5.
Tasks
Neo4j materialization for
model_role=TARGETnodes plusEnrichmentDecisionstorage. IncludesGraphWriterprotocol, idempotent MERGE keys, edge-endpoint constraint nodes, integrity check between compactEntity.enrichment_<facet>_statusand structuredEnrichmentDecision, and the new Cypher migration.Tracking: #97. Source:
openspec/changes/target-ontology-adapter/tasks.md§5.Tasks
GraphWriterProtocolNeo4jGraphWriterconcrete implInMemoryGraphWritertest doubleTargetModelMaterializer.writeenrichment_<facet>_statuspropsEnrichmentDecisionnode +:HAS_ENRICHMENT_DECISIONEnrichmentStatusDivergenceErrorintegrity checkmodel_role=TARGETon every writeEXPLAIN)