Configuration Surface¶
Runtime behavior is declared by a flow manifest, a verification policy, an execution mode, and persistence settings. The manifest and policy are JSON; the CLI does not infer missing governance from ambient defaults.
Flow manifest¶
A v1 manifest owns the identifiers and boundaries that must survive planning and replay:
| Surface | Required declarations |
|---|---|
| Identity | flow_id, tenant_id, flow_state |
| Determinism | determinism_level, replay mode and acceptability, entropy budget, optional non-determinism intent |
| Replay | minimum claim overlap and maximum contradiction delta |
| Dataset | identifier, tenant, version, hash, state, storage URI, and deprecation permission |
| Topology | agents and agent:dependency edges |
| Authority | retrieval contracts and verification gates |
Unknown top-level keys are rejected. The loader fixes spec_version to v1
and requires an explicit determinism level; default is not accepted. Dataset
tenant and flow tenant must agree, agents must be unique, and dependencies must
form a reachable directed acyclic graph.
The checked-in minimal example is
packages/bijux-canon-runtime/examples/boring/flow.json.
Verification policy¶
Live execution and replay require a policy JSON document. It declares the verification level, failure mode, randomness tolerance, arbitration rule and quorum, required evidence, maximum rule cost, rules, and the rule identifiers that cause failure or escalation. The policy fingerprint is persisted with the trace and compared during replay.
Execution modes¶
| Mode | Behavior | Persistence |
|---|---|---|
plan |
resolve and validate the execution plan without running it | none |
dry-run |
exercise the dry-run executor and produce a trace | DuckDB required |
live |
invoke runtime integrations, verify, and finalize | DuckDB and policy required |
observe |
verify a supplied observed run | Python API; store, policy, and observed run required |
unsafe |
execute through the live path with an explicit warning event | Python API requires store and policy |
The supported CLI surface is:
bijux-canon-runtime run MANIFEST --policy POLICY --db-path RUNS.duckdb
bijux-canon-runtime replay MANIFEST --policy POLICY \
--run-id RUN_ID --tenant-id TENANT --db-path RUNS.duckdb
bijux-canon-runtime inspect run RUN_ID --tenant-id TENANT --db-path RUNS.duckdb
All three accept --json; run and replay accept --strict-determinism.
Planning, dry-run, diff, failure explanation, and database validation are also
implemented as CLI commands but hidden from top-level help. unsafe-run is
present in the parser but cannot currently supply the verification policy that
runtime validation requires; do not depend on that CLI path.
Python configuration and environment¶
ExecutionConfig additionally accepts artifact and execution stores, an
ExecutionBudget, observers, an observed run, parent and child flow IDs, a
resume run ID, verification and non-determinism policies, and strictness.
Executable modes use a write store; resumed execution also needs a read store.
Set BIJUX_CANON_RUNTIME_STRICT=1 to force strict determinism. The legacy
AGENTIC_FLOWS_STRICT=1 name is also recognized. Strict environment mode
rejects dry-run and unsafe execution. AGENTIC_FLOWS_DB_PATH configures the
DuckDB file checked by HTTP readiness; it does not configure CLI commands.