Skip to main content
Federation normalizes the retrieval envelope, not the meaning of the underlying record. Every hit keeps a provider ID, external record identity, source kind, provenance, timestamps, and provider metadata that passed the adapter’s bounds.

Compatibility model

These distinctions follow the providers’ official models:

Result rules

  • A result is always source-labelled.
  • Source-local relevance scores stay source-local. Do not compare 0.8 from one provider with 0.8 from another as if they shared a calibration.
  • Source-qualified duplicates may be grouped for display, but provenance is never discarded.
  • Contradictions remain visible. Federation does not silently pick a universal truth.
  • Each source reports ok, timed_out, unavailable, or error. The aggregate status is partial only when at least one source succeeds, and failed when none succeeds. Provider failures are returned with per-source errors rather than thrown, so callers must inspect result.status and result.sources; failed is never disguised as an empty success.

Candidate is not personal memory

The hosted plane uses portable candidate records so developers can opt into Praxa storage later. A candidate is not promptable Praxa personal memory and carries no AHCE consent. Any future promotion requires a separate authenticated owner-review contract and canonical erasure fencing. The hosted vocabulary is deliberately closed. It accepts message, fact, summary, episode, pinned_context, document, entity, and edge. It rejects LangGraph checkpoints: a checkpoint is execution state, not a portable durable-memory record. A custom provider ID is available for a caller-defined adapter only when its records still satisfy the same bounded envelope.
Last modified on August 14, 2026