Known Limitations¶
bijux-canon-agent governs role orchestration, lifecycle transitions,
convergence observations, termination, and trace evidence. It does not grant a
model authority, prove role content true, calibrate confidence automatically,
or isolate tool effects from the host.
Authority Boundary¶
flowchart LR
request["request and control policy"] --> roles["passive role calls"]
roles --> observations["typed observations"]
observations --> controller["lifecycle and decision control"]
controller --> outcome["outcome and termination"]
controller --> trace["trace evidence"]
roles -. "content, not authority" .-> controller
host["runtime and host"] -. "effect authority" .-> roles
Roles propose or assess content. Typed control code owns transitions, stop conditions, veto handling, and final status. A custom workflow assembled from lower-level primitives does not inherit the canonical workflow's evidence or authority separation unless it declares and validates equivalent transitions, terminal states, and trace fields.
Model Output Is Untrusted Input¶
A provider response can satisfy its schema and still be false, unsafe, irrelevant, or adversarial. Temperature zero is necessary for the package's replayable classification, but it is not sufficient to reproduce a hosted model. Provider weights, routing, serving code, hidden system context, safety policy, and dependencies can change behind the same public model name.
Retain provider, model, maximum token bound, temperature, runtime and contract versions, prompt hash, model hash, adapter configuration, and relevant tool identity. Confidence remains an agent-produced value until calibrated against representative outcomes for the intended domain.
Convergence And Completion Are Different¶
| Signal | What it establishes | What it does not establish |
|---|---|---|
| stability | the configured signal remained within its threshold and window | correctness, adequacy, or independence among roles |
| confidence-only convergence | a configured confidence condition was met | calibrated probability or evidentiary support |
| oscillation | the monitor detected a repeated pattern and stopped | that either repeated answer is acceptable |
| maximum iterations | the configured iteration ceiling was reached | convergence or success |
| verification veto | a control rejected the candidate | that another acceptable candidate does not exist |
| completed termination | the workflow reached a completed terminal state | that downstream policy should accept or act on the content |
Consumers must interpret decision outcome, epistemic verdict, convergence
reason, stop reason, termination reason, issues, and trace identity together.
Displaying only answer text or a converged Boolean discards essential status.
Replay Reconstructs Recorded State¶
Trace reconstruction checks canonical fields and can compare the reconstructed
PipelineResult with final_result.json. It does not invoke providers again or
recreate their historical serving environment. Observational timestamps are
excluded from deterministic snapshots. Missing replay fields, provider drift,
non-zero temperature, or absent input artifacts restrict the replay claim.
A digest can identify retained content and detect change; it cannot recover prompts, inputs, provider responses, or tools that were never archived. Trace schema upgrades make older records readable under declared mappings, but do not invent missing historical evidence.
Runtime Composition Boundary¶
Runtime's live agent executor asks the bijux_canon_agent package root for a
run(agent_id, seed, inputs_fingerprint, declared_outputs, evidence) callable
that returns dictionaries containing artifact identifiers, types, content, and
optional parent identifiers. The canonical root deliberately exposes only
API_VERSION.
Agent's native workflow requires a validated pipeline definition,
configuration, and inputs, and returns a PipelineResult backed by a
RunTrace. A runtime adapter must define pipeline selection, evidence
conversion, failure projection, canonical content serialization, artifact
ancestry, and trace linkage. bijux-agent mirrors the canonical package and
does not add that adapter; equivalent loader failure through both names proves
alias parity, not live composition.
CLI Credential Coupling¶
The current CLI validates all registered provider keys before dispatching the
selected command. Consequently, even help, dry-run, and replay through that
entry point require OPENAI_API_KEY, ANTHROPIC_API_KEY,
HUGGINGFACE_API_KEY, and DEEPSEEK_API_KEY. Library APIs and focused trace
utilities do not inherently require all four.
This is broader than least-privilege, command-specific secret loading. Do not work around it by placing credentials in configuration files, trace metadata, logs, fixtures, or shell history. Isolate the CLI process and inject only from an approved secret provider.
Deployment Boundary¶
The package is not a process sandbox, distributed scheduler, credential broker,
or transactional multi-host trace store. Tool file access, network egress,
provider quotas, cancellation, tenant isolation, artifact retention, and effect
recovery belong to bijux-canon-runtime and the hosting system. Live-provider
tests are opt-in connectivity evidence; they do not replace deterministic
orchestration and trace tests.
See the risk register for operational hazards and the test strategy for executable evidence.