Skip to content

Known Limitations

bijux-canon-index can prove which retrieval contract was requested, which capability was selected, and which artifact was retained. It cannot turn an approximate search into an exact one, certify upstream vectors, or freeze a remote service that changes outside the run.

Exactness, Determinism, And Replay

flowchart TD
    request["execution request"] --> contract{"declared contract"}
    contract -->|deterministic| exact["deterministic-capable backend"]
    contract -->|bounded approximation| ann["ANN runner and budget"]
    exact --> artifact["execution artifact"]
    ann --> artifact
    artifact --> compare{"later comparison"}
    compare -->|same identity and result| reproduced["reproduced"]
    compare -->|declared divergence| explained["bounded divergence"]
    compare -->|missing identity| refuse["refuse replay claim"]

These terms are deliberately different:

Claim Package meaning Important exclusion
deterministic execution the request uses a backend and scoring path classified as deterministic, with canonical ordering and recorded identity it does not certify that upstream vectors were generated deterministically
replayable artifact the artifact contains the identity needed by the declared execution contract it does not bundle an external database, model, ANN binary, or service snapshot
bounded approximation approximation sources and limits are declared and recorded it does not promise the same neighbors as exact search
cross-backend conformance adapters obey the common transaction, isolation, and query contracts it does not promise identical floating-point scores or ranking across every backend and build

A seed governs only randomness consumed by the selected implementation. Library version, compiler flags, hardware, thread scheduling, index build order, and remote state can still change ANN output. Strict replay must refuse an equality claim when that identity is unavailable.

Resource Budgets Are Contract Proxies

Vector, distance-computation, and ANN-probe limits are counters the engine can reason about directly. Latency and memory fields are checked through execution estimates and deterministic proxies. They are not operating-system wall-clock deadlines, resident-set-size limits, container quotas, or protection against a backend process exhausting its own resources.

Use infrastructure controls for hard CPU, time, memory, network, and storage ceilings. Treat the package budgets as reproducible planning and classification evidence. A result classified as partial or refused because of a budget must not be relabeled as an ordinary top-k result.

Backend And Persistence Boundaries

Surface Supported boundary Outside the boundary
in-memory and SQLite stores local conformance, deterministic transactions, run isolation multi-host consensus, service failover, cross-process cache coherence
FAISS and HNSW adapters optional local ANN integration when the dependency is installed invariant ranking across native builds, architectures, or thread settings
Qdrant integration adapter-level capability and metadata handling service availability, tenancy, backups, rolling-upgrade equivalence
filesystem RunStore atomic replacement of each JSON record and explicit lifecycle status one atomic transaction spanning metadata, result, status, native index files, and remote state
execution artifact canonical package-owned execution record archive of external indexes, plugins, secrets, or model assets

Remote backends, asynchronous service orchestration, streaming search, and a frozen pgvector contract are not part of the stable surface. Optional code being importable is not evidence that a feature belongs to the supported contract.

Interface Boundary

The package exposes Python and HTTP surfaces and contains a Typer application, but it does not install a bijux-canon-index console command. Automation must not assume that command exists. The bijux-vex package is a compatibility surface with its own continuity constraints; it is not the name of the canonical index contract.

Authorization decisions and metadata redaction apply only at package-owned interfaces. Authentication, TLS, secret management, service-to-service identity, tenant configuration, and backend access control belong to the host. Execution artifacts should contain identifiers and decisions, never credentials or unrestricted vector payloads.

Runtime Composition Boundary

Runtime's live retrieval path asks the bijux_canon_index package root for enforce_contract(vector_contract_id, evidence) and interprets its return as a Boolean verdict. The canonical root exports version metadata only and provides no callable with that contract.

Index's native decision is richer than a Boolean: request validation, artifact identity, backend capability, budget accounting, approximation evidence, provenance, partial results, and typed refusal all affect the result. A durable runtime adapter must preserve that record rather than collapse it into an unexplained True or False. The bijux-vex compatibility root mirrors the canonical package and does not supply the missing integration.

Interpreting Retrieval Quality

Contract correctness means the engine honored the plan. It does not mean the embedding space represents the domain, the corpus contains the answer, or the returned neighbors justify a conclusion. Establish quality with a versioned evaluation corpus, an exact baseline, declared relevance metrics, and the same backend identity used in production.

See the risk register for failure signals and response controls, and the test strategy for executable evidence.