Repository Handbook¶
The repository root coordinates one tagged release line across five canonical product packages, six compatibility distributions, one internal maintainer package, five versioned HTTP contracts, shared documentation, and common CI and publication workflows. Product behavior remains inside the package that owns it; the root owns the machinery that proves the pieces still agree.
Repository Contract¶
| Root surface | Authority | Does not establish |
|---|---|---|
pyproject.toml and uv.lock |
workspace membership, release package set, dependency resolution | package behavior |
apis/ |
versioned HTTP schema source, pins, and hashes | implementation conformance by itself |
Makefile and makes/ |
repeatable local command graph and package dispatch | CI success without execution |
.github/workflows/ |
verification, policy, docs, and publication orchestration | local package semantics |
docs/ and mkdocs.yml |
public information architecture and routing | executable proof |
packages/bijux-canon-dev |
repository-health checks and release guards | end-user runtime behavior |
flowchart LR
source["tagged source"]
canonical["5 canonical packages"]
compat["6 compatibility packages"]
schemas["5 API contracts"]
checks["local + CI verification"]
releases["PyPI + GHCR + GitHub release"]
source --> canonical --> checks --> releases
source --> compat --> checks
source --> schemas --> checks
Package Sets¶
- canonical product: runtime, agent, ingest, reason, and index
- compatibility:
bijux-canon,agentic-flows,bijux-agent,bijux-rag,bijux-rar, andbijux-vex - internal support:
bijux-canon-dev, which is tested with the primary set but excluded from the public release package list
The root release configuration is the source of truth for these sets. A
directory under packages/ is not automatically public, canonical, or eligible
for publication.
Read From The Decision Outward¶
Start at the layer that made the decision, then move outward only when the question crosses a repository boundary:
flowchart TD
question["decision under review"]
product{"product behavior?"}
package["owning package handbook"]
shared{"cross-package contract?"}
root["repository handbook"]
automation{"validation or publication?"}
maintain["maintenance handbook"]
continuity{"preserved name?"}
compat["compatibility handbook"]
question --> product
product -->|yes| package
product -->|no| shared
shared -->|yes| root
shared -->|no| automation
automation -->|yes| maintain
automation -->|no| continuity
continuity -->|yes| compat
This routing prevents root-level configuration from being mistaken for product
semantics. For example, pyproject.toml can prove that a distribution is in the
release set; only the owning package can prove what an execution request means.
Trace A Shared Contract¶
A public contract can cross the root without transferring product ownership. An HTTP change, for example, begins with the package that owns behavior and then moves through repository-governed representations and checks:
flowchart LR
behavior[package behavior]
schema[OpenAPI source]
pin[pinned schema + hash]
tests[package and live contract tests]
docs[caller documentation]
release[tagged package artifacts]
behavior --> schema --> pin --> tests --> docs --> release
The schema records the caller contract; the implementation and live contract tests establish availability. The pin and hash expose drift. Documentation explains the supported operation. Tagged artifacts determine what users can actually install. A green result at one point does not erase a mismatch at another.
Audit The Runtime Integration Seam¶
Release membership proves that runtime installs the four lower canonical
packages; it does not prove that runtime can call them. The executable seam is
owned by
packages/bijux-canon-runtime/src/bijux_canon_runtime/runtime/execution/integration_loaders.py.
It requests package-root callables named retrieve, enforce_contract,
reason, and run.
The current ingest, index, reason, and agent roots do not expose that complete set, and the runtime suite does not execute those loaders against all four real canonical roots. The legacy fallbacks resolve to compatibility aliases of the same roots rather than independent adapters. Repository and release checks can therefore pass while installed live composition remains unproven.
For an integration claim, require all of the following evidence:
- an explicit typed adapter owned by the relevant boundary;
- an installed environment containing the exact canonical package versions;
- a test that resolves every runtime loader without monkeypatching package roots;
- one governed live flow that records retrieval, reasoning, agent, and runtime identities; and
- a negative case for missing, malformed, and semantically incompatible adapter output.
Until that evidence exists, use the left-to-right system diagram as an ownership map and treat package-local execution and runtime plan mode as the demonstrated surfaces.
Resolve Cross-Surface Disagreement¶
Repository evidence is deliberately redundant enough to expose drift. When two surfaces disagree, resolve the question at the authority that owns it:
| Disagreement | Governing authority | Required follow-through |
|---|---|---|
| package metadata versus workspace inventory | root release configuration | correct membership or metadata, then rerun inventory and publication guards |
| OpenAPI source versus live route | owning product package | reconcile behavior and schema, then refresh the pin, hash, and contract evidence |
| package README versus exported names | owning package facade and supported modules | correct the reader contract or implementation and protect it with focused tests |
| compatibility bridge versus canonical behavior | canonical package | fix the canonical owner; the bridge must delegate without translation |
| local check versus workflow result | the helper and command actually invoked | compare inputs, environment, exit status, and retained artifact before changing orchestration |
| built artifact versus tagged source | release custody chain | refuse publication until source SHA, package matrix, and artifact identity agree |
The strongest supported statement is the intersection of the governing sources, not the most optimistic one. Root automation can detect a mismatch, but it cannot redefine product semantics to make the mismatch disappear.
Root Evidence By Question¶
| Question | Authoritative root surface | Continue in |
|---|---|---|
| Which packages participate in the workspace and release? | pyproject.toml, workspace metadata, release package guards |
package map |
| Which HTTP representation is governed? | apis/<package>/v1/schema.yaml, pin, and hash |
owning package interface handbook |
| Which local command composes validation? | Makefile and makes/ |
maintainer Make handbook |
| Which event triggers CI or publication? | .github/workflows/ |
workflow handbook |
| Which record supports a cross-package claim? | owned models, schemas, tests, and retained artifacts | evidence map |
| What does an older package name execute? | compatibility package metadata and alias tests | compatibility catalog |
Product semantics remain in ingest, index, reason, agent, or runtime. Helper implementation remains in the maintenance handbook. The root establishes how those surfaces agree; it does not become a second source for their behavior.
Shared Package Map¶
| Canonical package | Repository-level promise | Root-level proof to inspect |
|---|---|---|
bijux-canon-ingest |
source material becomes deterministic preparation output before downstream use | package entry in pyproject.toml, handbook route in mkdocs.yml, package code under packages/bijux-canon-ingest |
bijux-canon-index |
retrieval executes through auditable contracts rather than hidden search behavior | API schema under apis/bijux-canon-index, package tests, handbook route |
bijux-canon-reason |
retrieved evidence becomes claims, checks, and reasoning artifacts | API schema under apis/bijux-canon-reason, package tests, handbook route |
bijux-canon-agent |
role-based orchestration emits traces instead of swallowing decisions | API schema under apis/bijux-canon-agent, package tests, handbook route |
bijux-canon-runtime |
the full run is accepted, rejected, persisted, or replayed under explicit policy | API schema under apis/bijux-canon-runtime, runtime regression tests, handbook route |
Boundary Example¶
A schema pin under apis/, a workspace-level validation rule, or a handbook
routing rule belongs here because it protects more than one package at once. A
change to ingest chunking, runtime replay semantics, or reason-level claim
formation does not belong here, even if the root automation or docs also have
to move with it.
Cross-Package Anchors¶
pyproject.tomldeclares the workspace and package setmkdocs.ymldefines the published handbook structureMakefile,makes/, and.github/workflows/carry root-level operationspackages/carries the canonical product boundaries the root must not blur
Cross-Package Change Rule¶
A change that alters a public request or response must update its owning schema, pinned representation, hash, implementation tests, and package docs together. A change that alters release membership must update root metadata and release guards. A change that alters only one package's domain semantics remains in that package even when shared verification runs afterward.
Continue By Intent¶
| Intent | Next page |
|---|---|
| understand why the repository is split this way | Foundation |
| inspect package ownership, workspace layout, and documentation structure | Foundation |
| contribute, validate, release, or recover | Operations |
| inspect automation implementation and CI fan-out | Maintenance Handbook |
| migrate a preserved distribution or import name | Compatibility Packages |