Spectron is built around a single design question:
Can someone watch the substrate in real time and verify that the agent is operating on the right information – not infer it from output quality alone?
That requires structured facts, first-class provenance, non-destructive belief history, explicit uncertainty, and graph-resident traces that make retrieval and reconciliation auditable. It is the same standard you apply informally when someone says they used to have a cat: you keep the old fact in mind, date it, and do not treat it as current – Spectron makes that distinction queryable.
Structured facts, not opaque blobs
Turns and document passages are reconciled into entities, attributes, and relations stored in SurrealDB – not only as embedded chunks. Discrete records are what make the rest of the guarantees possible: you can query “what is the current role?” deterministically, enumerate everything known about an entity, and detect duplicates structurally.
Provenance is a field, not a log line
Fact-bearing records carry a source object (Provenance and traceability):
source.kind–turn,document,reflect,elaboration,consolidation, …source.ref– originating turn, document, or trace identifiersource.span– character positions for quoting the originating message or passagesource.trust– default weight for how authoritative that source stream is (curated document versus casual turn, and so on)source.derived_from– lineage for reflections, elaborations, consolidations, collective promotion
Calibration stores attribute.confidence (reconciler posterior) separately from source.trust. See Surface, models, and security for the model-hook story.
One reconciler, explicit uncertainty
Document facts and turn facts meet in the same graph and pass through the same supersession-and-uncertainty logic. Cross-provenance contradictions become uncertainty records instead of silent overwrites. Same-stream updates supersede with valid_until on the prior record.
Tri-temporal, not “delete and forget”
Spectron tracks three clocks – system (MVCC), known (as_of over supersession), and valid (real-world valid_from / valid_until). Aging and supersession replace naive deletion; forget exists when operators or users require explicit removal. See Tri-temporal model.
Traces make behaviour inspectable
Every ranked read can emit a retrieval_trace; every reconciliation emits a decision_trace; /chat and /reflect emit response_trace. They are nodes with edges to the entities and attributes they touched – so you can walk “this answer used these retrievals → which considered these records → which decisions superseded what.” See Traces and memory evolution.
Authoritative versus experiential streams
Curated knowledge and conversational knowledge are distinguished by source.kind and trust policy, not by hiding one half in a separate database you cannot join transactionally. When user assertions disagree with curated documents, reconciliation preserves curated truth and surfaces the clash (Unified substrate and authority).
Observable today
Operators can use HTTP and CLI surfaces (spectron entities …, spectron sessions …, spectron recall …, spectron inspect trace:…) plus direct SurrealDB access on self-hosted stacks to read live state and historical belief – the same substrate the ranker uses. A fuller inspectability list is in Surface, models, and security.
Together, these properties mean “is the agent correct?” has a defensible answer: you can point to records, spans, traces, and time axes – not only to a model transcript.