Skip to content

Deployment Boundaries

Index can execute in an application process, through its module CLI, or behind the v1 HTTP adapter. It governs vector-execution evidence, not the surrounding service control plane. Storage topology must be selected deliberately because the ledger, run files, vector state, native ANN indexes, and remote collections are distinct persistence domains.

Responsibility boundary

flowchart TB
    subgraph host["Deployment-owned control plane"]
        identity["identity, authorization, transport security"]
        queue["admission, queues, quotas, deadlines"]
        secret["backend and model credentials"]
        lifecycle["backup, restore, migration, retention"]
        isolation["tenant and process isolation"]
    end

    subgraph package["bijux-canon-index"]
        interface["Python, module CLI, or HTTP v1"]
        gate["intent, capability, and budget gates"]
        backend["selected vector backend"]
        evidence["ledger, run record, witnesses"]
        interface --> gate --> backend --> evidence
    end

    identity --> interface
    queue --> gate
    secret --> backend
    lifecycle --> backend
    lifecycle --> evidence
    isolation --> package

Deployment shapes

Shape Use Boundary
Embedded Python A host owns resource construction and invokes the execution engine directly Do not pass raw backend clients around the engine's validation and evidence path
Module CLI Local and automated artifact, execution, explain, replay, and audit workflows Invoke python -m bijux_canon_index.interfaces.cli.app; the wheel has no canonical console script
HTTP v1 A controlled service adapter for capability, artifact, execution, explain, and replay operations Add external authentication, per-operation authorization, TLS, quotas, and tenant routing
Remote vector backend Service-backed vector state such as Qdrant Bind collection/snapshot identity and consistency behavior to the run; backend availability is external

Persistence topology

The execution ledger records artifact and run state. The file run store writes metadata.json, result.json, and status.json, with complete marking a loadable run. Vector rows, ANN index files, embedding caches, and remote collections live elsewhere. Backup and restore are correct only when these identities remain bound.

SQLite is appropriate for controlled local state, but file locking and atomic replacement are not distributed coordination. A horizontally scaled service needs application-owned writer coordination, shared-state design, and explicit read-after-write expectations. Memory backends are process-local and disappear on restart.

Production controls

The deployment supplies:

  • authenticated principals and authorization for ingest, mutation, execution, explain, replay, and artifact access;
  • tenant-specific state, run, cache, collection, and plugin boundaries;
  • maximum vectors, dimensions, query size, top_k, candidate pool, memory, distance computations, ANN probes, and wall time;
  • separate admission policy for expensive ANN construction and exact witness work;
  • secret injection and URI redaction for vector stores and model providers;
  • reviewed and pinned native dependencies and plugins;
  • coordinated schema migration, backup, restore, integrity verification, and retention across every persistence domain;
  • monitoring for refusal reasons, backend availability, divergence, budget exhaustion, witness quality, incomplete runs, and drift.

Operational acceptance

Validate the resolved capability report against each intended execution mode before routing traffic. Exercise backend loss, incomplete writes, restart, restore, read-only operation, and changed-index replay. Confirm that an incompatible metric, dimension, deterministic claim, or replay request is refused rather than silently downgraded.

The security and safety guide covers plugin and credential risk. Integration seams describes the identities that must survive deployment boundaries.