PropositionRepository

The full proposition repository: combines the base persistence port with every opt-in capability (vector similarity, abstraction-hierarchy traversal, temporal queries) and bridges to the RAG search contract via CoreSearchOperations.

Each capability lives in its own fragment interface, so a consumer that only needs basic store-and-retrieve can depend on PropositionStore directly. This interface is for callers that need the complete surface.

Only Proposition is supported as a retrievable type for vector and text search.

Inheritors

Properties

Link copied to clipboard

Which backend provides this repository. Implementations override to advertise their kind; used to select/flip between in-memory and persistent backends.

Link copied to clipboard

Whether this particular instance can actually run vector search. Implementing the interface is a type-level promise; this is the runtime truth. A store that can be wired without an embedder (so it satisfies the type but has nothing to embed with) should override this to report whether it was given one. Lets a caller — e.g. PropositionStoreTemplate.supportsVector — distinguish "configured for vectors" from "vector search will quietly return empty".

Functions

Link copied to clipboard
open override fun addProvenance(propositionId: String, entries: List<ProvenanceEntry>): Proposition?

Append provenance to a proposition (deduplicated); never removes existing entries.

Link copied to clipboard
open fun clearAll(): Int

Delete every proposition.

Link copied to clipboard
open fun clearByContext(contextId: String): Int

Delete all propositions in the given context.

Link copied to clipboard
open fun clearByContextPrefix(contextIdPrefix: String): Int

Delete all propositions whose context id starts with the given prefix.

Link copied to clipboard
open override fun clearProvenance(propositionId: String): Proposition?

Remove all provenance from a proposition.

Link copied to clipboard
abstract fun count(): Int

Get the total count of propositions.

open fun count(query: PropositionQuery): Int

Count the propositions matching query. The default materialises query's results and counts them; a backend that can count server-side (e.g. the graph store) overrides to avoid loading the rows just to size them.

Link copied to clipboard
abstract fun delete(id: String): Boolean

Delete a proposition by ID.

Link copied to clipboard
open fun findAbstractionsOf(propositionId: String): List<Proposition>

Find propositions that were abstracted from the given proposition. Searches for propositions that cite the given ID in their Proposition.sourceIds.

Link copied to clipboard
open fun findAll(withProvenance: Boolean): List<Proposition>

Get all propositions, optionally guaranteeing loaded provenance. With withProvenance = true every result has its Proposition.provenanceEntries populated (at extra read cost); the default delegates to the lean findAll — fine for backends that always carry provenance (e.g. in-memory).

abstract fun findAll(): List<Proposition>

Get all propositions.

Link copied to clipboard

Find all propositions ordered by effective confidence (highest first). Applies time-based decay to confidence scores.

Link copied to clipboard
open fun findByContextId(contextId: <Error class: unknown class>): List<Proposition>

Find propositions in the given context.

Link copied to clipboard
open fun findByContextIdValue(contextIdValue: String): List<Proposition>

Java-friendly variant of findByContextId that accepts a plain string.

Link copied to clipboard

Find propositions created within a time range.

Find propositions from a time range, ordered by effective confidence as of a point in time. Useful for temporal analysis: "What was most confidently true during Q1?"

Link copied to clipboard

Find propositions with effective confidence above a threshold.

Link copied to clipboard
abstract fun findByEntity(entityIdentifier: <Error class: unknown class>): List<Proposition>

Find all propositions that mention a specific entity.

Link copied to clipboard
abstract fun findByGrounding(chunkId: String): List<Proposition>

Find all propositions grounded by a specific chunk.

Link copied to clipboard
abstract fun findById(id: String): Proposition?

Find a proposition by its ID.

Link copied to clipboard
abstract fun findByMinLevel(minLevel: Int): List<Proposition>

Find propositions at or above the specified abstraction level. Level 0 = raw observations, 1+ = abstractions.

Link copied to clipboard

Find propositions last touched within a time range. "Touched" means any update — content or administrative — so this anchors on Proposition.lastTouched (the later of contentRevised/metadataRevised), not the decay anchor alone.

Link copied to clipboard

Find all propositions with the given status.

Link copied to clipboard
open fun findClusters(similarityThreshold: <Error class: unknown class> = 0.7, topK: Int = 10, query: PropositionQuery = PropositionQuery()): List<<Error class: unknown class><Proposition>>

Find clusters of similar propositions.

Link copied to clipboard
open fun findPinned(contextId: <Error class: unknown class>): List<Proposition>

All pinned propositions in contextId.

Link copied to clipboard
open fun findSimilar(textSimilaritySearchRequest: <Error class: unknown class>): List<Proposition>

Find propositions similar to the given text using vector similarity.

Link copied to clipboard
abstract fun findSimilarWithScores(textSimilaritySearchRequest: <Error class: unknown class>): List<<Error class: unknown class><Proposition>>

Find propositions similar to the given text with similarity scores.

open fun findSimilarWithScores(textSimilaritySearchRequest: <Error class: unknown class>, query: PropositionQuery): List<<Error class: unknown class><Proposition>>

Vector similarity search with an additional PropositionQuery filter applied to results.

Link copied to clipboard
open fun findSources(proposition: Proposition): List<Proposition>

Find the source propositions that a given proposition was abstracted from. Resolves the proposition's Proposition.sourceIds to actual propositions.

Link copied to clipboard
open fun keywordOverlap(base: PropositionQuery, tokens: List<String>, limit: Int): List<Proposition>

Find propositions in base's scope whose text contains at least one of tokens (case-insensitive), ranked by how many distinct tokens each contains (descending), ties broken by base's ordering. At most limit results; empty tokens or non-positive limit returns nothing.

Link copied to clipboard
open fun pin(id: String): Proposition?

Pin a proposition so it resists reclamation: pinned propositions are skipped by the decay collector and the sweep policy, are decay-exempt in the default status policy, and are not auto-retired by contradiction resolution.

Link copied to clipboard
open override fun provenanceOf(propositionId: String): List<ProvenanceEntry>

The provenance entries of a proposition, or an empty list if it has none or does not exist.

Link copied to clipboard
open override fun query(query: PropositionQuery): List<Proposition>

Resolves the diamond: both PropositionStore and VectorSearchCapable declare query. This explicitly routes to the base store's implementation; concrete stores can still override for backend-level filtering.

open fun query(query: PropositionQuery, withProvenance: Boolean): List<Proposition>

Query propositions, optionally guaranteeing loaded provenance. With withProvenance = true every result has its Proposition.provenanceEntries populated (at extra read cost); the default delegates to the lean query. See the provenance read contract on PropositionStore.findAll.

Link copied to clipboard
open fun reembedAll(): Int

Re-embed every stored proposition with the currently-configured embedding service.

Link copied to clipboard
abstract fun save(proposition: Proposition): Proposition

Save a proposition. If a proposition with the same ID exists, it will be replaced.

Link copied to clipboard
open fun saveAll(propositions: Collection<Proposition>)

Save multiple propositions.

Link copied to clipboard

Save multiple propositions and report which stored proposition each one landed on.

Link copied to clipboard
open override fun setProvenance(propositionId: String, entries: List<ProvenanceEntry>): Proposition?

Authoritatively set a proposition's provenance to exactly entries, removing any not listed.

Link copied to clipboard
open fun supportsType(type: String): Boolean
Link copied to clipboard
open fun <T> textSearch(request: <Error class: unknown class>, clazz: Class<T>): List<<Error class: unknown class><T>>
Link copied to clipboard

Refresh Proposition.lastAccessed to now for ids — the read-side reinforcement that lets a DECAYING proposition's decay anchor (see Proposition.effectiveConfidenceAt) track actual use rather than only content edits. Best-effort and silent about unknown ids (a stale eager id that has since been deleted is not an error).

Link copied to clipboard
open fun unpin(id: String): Proposition?

Clear a proposition's pin, returning it to normal reclamation.

Link copied to clipboard
open fun <T> vectorSearch(request: <Error class: unknown class>, clazz: Class<T>): List<<Error class: unknown class><T>>