persistReturningCanonical

open fun persistReturningCanonical(propositionRepository: PropositionRepository, namedEntityDataRepository: <Error class: unknown class>): PropositionPersistenceResult

Persist the same things persist does, and report which stored proposition each extracted one landed on.

The difference that matters is one line: structural relationships are wired against the propositions the repository returned, not the ones extraction minted. On a deduplicating backend those are not the same. DrivinePropositionRepository collapses a fresh insert onto an existing proposition with identical (contextId, text) and returns that one, so a HAS_PROPOSITION or MENTIONS edge written against the minted id points at a node that was never stored. Here it points at the node that was.

persist is left exactly as it was. This is a second entry point rather than a fix applied in place, because changing what persist wires would change behaviour for every existing caller — including hosts that never asked for extraction runs.

Entity persistence, the referenced-entity filter, and which propositions get saved are all identical to persist.

Return

The stored proposition for each one persisted, and the input-id to stored-id mapping.

Parameters

propositionRepository

Where propositions go.

namedEntityDataRepository

Where entities go, and what writes the structural edges.