Skip to content

Integration Seams

Index turns prepared vectors and declared intent into an execution claim. A backend connection alone is not an integration: dimension, metric, exactness, capabilities, budgets, persistence identity, failure behavior, and replay posture must all cross the seam.

Execution Handoff

flowchart LR
    ingest["prepared identities and vectors"] --> artifact["materialized artifact"]
    caller["intent, contract, mode, top-k, budget"] --> request["ExecutionRequest"]
    artifact --> engine["VectorExecutionEngine"]
    request --> engine
    registry["capability registry"] --> engine
    engine --> adapter["selected backend adapter"]
    adapter --> result["ordered results and observed cost"]
    result --> record["run evidence and provenance"]
    record --> reason["reason or audit consumer"]
    record --> replay["replay comparison"]

The artifact says what can be searched. The request says what is allowed. The capability decision says which backend may execute it. The result and record say what actually happened. None can substitute for another.

Seam Contracts

Seam Required input Produced evidence Refusal boundary
prepared data stable record IDs, vectors, dimension, metric, metadata, corpus identity content/configuration fingerprint and materialized artifact anonymous vectors, dimension conflict, invalid geometry
execution request intent, execution contract, mode, top_k, budget, randomness posture immutable normalized plan and request identity unsupported combination or missing bounded-execution fields
capability registry available adapter factories and honest reports selected backend identity and capability decision unavailable, incompatible, or dishonest backend
backend adapter validated artifact and plan ordered candidates, scores, cost, approximation report transaction, query, budget, drift, or capability failure
persistence run and backend identities lifecycle record, result, native-state references incomplete generation or unresolved backend state
downstream complete execution result and provenance no hidden dependency on backend client partial/refused status, missing corpus identity, missing replay fields

Prepared Data Is Not Anonymous Geometry

Ingest or application code owns cleaning and chunking. Index receives the resulting identifiers, metadata, vectors, metric, and dimension. If preparation changes, build a new artifact. Ranking code must not compensate invisibly for changed chunk meaning or mislabeled embeddings.

The artifact fingerprint binds content and build configuration. Preserve source or chunk identity with every vector so a neighbor can become addressable evidence rather than an unexplained row number.

Backend Admission

flowchart TD
    candidate["backend candidate"] --> available{"installed and reachable?"}
    available -->|no| refuse["refuse selection"]
    available -->|yes| capability{"capabilities satisfy request?"}
    capability -->|no| refuse
    capability -->|yes| honesty{"conformance evidence current?"}
    honesty -->|no| refuse
    honesty -->|yes| identity{"state and version identity recorded?"}
    identity -->|no| refuse
    identity -->|yes| admit["admit backend"]

Memory and SQLite provide local execution. HNSW and FAISS add native state. Qdrant adds service-owned state. Optional installation proves only that code can import; service readiness, native compatibility, and durability require separate evidence.

The pgvector-named adapter is excluded from the stable contract and delegates to SQLite-backed resources. It is not a PostgreSQL integration.

Plugin And Interface Boundaries

Plugins run Python in the index process. Pin and review them as executable code, record their distribution and version, and validate their capability claims. They may implement a canonical capability; they may not redefine request, artifact, error, budget, or replay semantics.

The supported in-process seam is the typed execution engine. The package also publishes versioned HTTP routes for capability discovery, artifacts, execution, explanation, and replay. Its Typer application can be invoked as python -m bijux_canon_index.interfaces.cli.app; the wheel does not install a bijux-canon-index console command. bijux-vex preserves the historical command and import surface as a compatibility package.

Downstream Handoff

A reasoning or runtime consumer needs the normalized request, artifact and backend identity, ranked records, completion class, observed cost, approximation and randomness evidence, provenance, and lifecycle status. Passing only IDs and scores erases whether the result was exact, bounded, partial, or replayable.

See configuration for backend selection and artifact contracts for the retained execution record.