Skip to content

Repository Fit

bijux-canon-ingest is independently installable because prepared material is a durable system boundary. Applications can use its typed Python facade, CLI, or HTTP contract without adopting the complete Bijux Canon runtime, and other packages can consume its outputs without inheriting its transformation logic.

Position In The Package Family

flowchart LR
    callers["files, records, applications"]
    ingest["bijux-canon-ingest<br/>prepare and identify"]
    local["local persisted retrieval"]
    index["bijux-canon-index<br/>governed vector execution"]
    reason["bijux-canon-reason<br/>support and claims"]
    runtime["bijux-canon-runtime<br/>whole-run authority"]

    callers --> ingest --> local
    ingest --> index --> reason
    runtime -. "schedules and retains" .-> ingest
    runtime -. "schedules and retains" .-> index

The local retrieval path makes ingest useful in compact deployments and examples. It does not transfer ownership of capability resolution, ANN policy, or vector replay from index. Likewise, extractive citation assembly does not transfer claim verification from reason.

Independent Package Contract

Surface What independence provides
distribution consumers can install preparation behavior without the composed runtime
Python facade typed records, results, pipelines, and retrieval primitives have one owner
console command file and pipeline workflows can run without an application wrapper
HTTP contract preparation can sit behind a process boundary with explicit request and error shapes
persisted artifacts chunks and local index state can be handed off and inspected
package tests transformation, streaming, serialization, and quality claims can evolve locally

Independence does not mean isolation from shared standards. The repository coordinates versioning, API publication, documentation, CI, and release membership while the package owns preparation semantics.

Dependency Direction

Ingest may define ports for embedders, storage, clocks, and logging. Concrete infrastructure implements those ports inward. Product packages must not become hidden dependencies merely to reuse their application policy. Cross-package composition belongs in an application or runtime boundary.

flowchart TD
    domain["domain records and rules"]
    application["preparation workflows"]
    ports["capability ports"]
    adapters["filesystem, memory, models"]
    interfaces["Python, CLI, HTTP"]

    domain --> application --> ports
    adapters --> ports
    interfaces --> application

When This Boundary Would Be Wrong

The package boundary would be decorative if its public artifacts had no stable identity, callers had to import runtime internals to prepare data, or governed index and reasoning policy accumulated here. Those are signals to restore the handoff—not reasons to blur more ownership into ingest.

Continue with ownership boundary for neighboring responsibilities and repository architecture for the complete package family.