Skip to content

Risk Register

Ingest failures are dangerous when they remain structurally valid. A corpus can produce chunks, build an index, and answer queries while its identity, offsets, or completeness have already drifted. This register treats a green API response as execution evidence, not proof that the prepared corpus is fit for use.

Failure Propagation

flowchart TD
    source["source and metadata"]
    identity["identity and normalization"]
    partition["chunking and deduplication"]
    effects["concurrent effects"]
    publication["artifact publication"]
    evidence["retrieval and citations"]

    source --> identity --> partition --> effects --> publication --> evidence
    identity -. "silent drift" .-> evidence
    partition -. "coverage loss" .-> evidence
    effects -. "partial completion" .-> evidence
    publication -. "mixed generations" .-> evidence

Persistent Risks

Impact describes the worst credible effect at the package boundary. Detection names the signal an operator can retain, not merely a test that maintainers run.

Hazard Impact Observable signal Control Residual owner
unstable source identity high: duplicate content, broken joins, irreproducible citations equivalent bytes produce different document IDs or one ID maps to different digests derive identity before transformation; retain source digest and metadata source adapter owner
normalization or chunk-policy drift high: changed content keys, spans, and rankings normalized digest, chunk count, boundary distribution, or tail count changes for the same fixture version configuration; compare golden corpus manifests before publication pipeline owner
offsets are interpreted as original bytes high: citations select the wrong passage normalized_text[start:end] matches while the original byte slice does not label offset coordinate system; retain normalized text or its resolvable artifact evidence consumer
structural deduplication is treated as semantic deduplication medium: repeated claims distort retrieval high near-duplicate rate remains after structural deduplication run a separate, declared semantic-duplicate policy when required corpus curator
ordered concurrency stalls behind a slow item medium: latency and buffer pressure rise without progress oldest pending position age and ordered-buffer occupancy increase bound concurrency and timeouts; expose position and termination reason deployment operator
unordered execution is mistaken for source order high: downstream joins or deterministic snapshots drift completion positions differ while item identities remain stable select ordered policy or explicitly sort by stable identity before publication pipeline integrator
expected errors are collapsed into empty success high: corpus is incomplete without an alarm input, success, error, and terminal counts do not reconcile retain Result values and observations; reject unreconciled publication application owner
retry repeats a non-idempotent external effect high: duplicate writes or charges attempts exceed one for the same idempotency key retry only classified transient failures; make side effects idempotent adapter owner
embedding identity or numerics drift high: dimensions fail or rankings change model revision, dimension, vector digest, or evaluation metrics differ pin and record model inputs; gate publication on dimension and quality checks model owner
stale cache crosses a semantic boundary high: mixed cleaning, embedding, or schema semantics cache namespace does not encode every meaning-bearing input content-address and version cache keys; verify serialization envelope cache owner
process-local HTTP index is treated as durable high: indexes disappear on restart or diverge by worker index ID is absent after restart or differs between workers use explicit persistent storage or bijux-canon-index service operator
sensitive text reaches observations critical: confidentiality breach raw text or metadata appears in logs, traces, samples, or cache entries classify and redact before observation; bound sampling and retention data controller

Publication Gate

flowchart LR
    candidate["candidate corpus"] --> reconcile{"counts reconcile?"}
    reconcile -->|no| reject["reject publication"]
    reconcile -->|yes| identity{"identity and config recorded?"}
    identity -->|no| reject
    identity -->|yes| quality{"drift checks acceptable?"}
    quality -->|no| reject
    quality -->|yes| publish["atomically publish one generation"]

Before publication, reconcile input, filtered, successful, failed, deduplicated, and emitted counts. Then bind the corpus generation to source and normalized digests, transform configuration, embedding identity, artifact schema, and index fingerprint. Publish that generation atomically; do not assemble a live corpus from independently current files.

Change Evidence

Changes to identity, cleaning, chunking, or serialization require golden-corpus comparison and round-trip evidence. Changes to scheduling, retry, timeout, or breakers require ordering, cancellation, backpressure, and terminal-state evidence. Changes to embeddings or retrieval require dimension checks, fingerprint comparison, and an offline quality evaluation. HTTP or CLI boundary changes additionally require schema or output snapshots.

Passing those checks narrows implementation risk; it does not transfer source governance, model governance, privacy, durability, or disaster recovery into the package. Those responsibilities remain with the residual owners above.

See known limitations for unsupported claims and architecture risks for the underlying failure mechanisms.