Provenance Resolver
SPI for attaching provenance to memory results.
Propositions are extracted from sources — emails, meetings, documents — and the projector records that lineage as (Proposition)-[:GROUNDED_IN]->(source) edges (the proposition's grounding list holds the source ids). The human-readable descriptor of a source (an email subject, a meeting title, a document name) lives on that source row, which is a per-deployment graph/store concern outside this open-source module — Memory can't resolve it directly.
So Memory accepts an optional implementation via Memory.withProvenance. When wired, EVERY result the memory tool returns is annotated with where it came from, so the calling LLM can answer "why do you think X / cite that / name the email" straight from a recall — no separate citation tool needed.
This is NOT a retrieval hook: it does not influence what is searched or returned, and it is not exposed as a tool parameter. The memory tool's interface stays a single freeform query; this only decorates the results. When no implementation is wired, Memory returns bare proposition text. Backwards-compatible.