Run Evidence Layout¶
This reference identifies retained files for one finalized bijux-dag run and
states what each file can prove.
The live storage models and checked-in snapshots are the implementation authority:
crates/bijux-dag-artifacts/src/storage/models.rscrates/bijux-dag-artifacts/src/lib.rscrates/bijux-dag-app/tests/snapshots/run_dir_hello.jsoncrates/bijux-dag-app/tests/snapshots/run_dir_cached_branch.json
Trust Order¶
| Evidence | Use |
|---|---|
manifest.json, graph.snapshot.json, run.schema.json |
establish run, graph, planner, and schema identity |
nodes/<node_id>/trace.json, attempt records, input/output indexes |
establish node outcome and materialized contracts |
outputs/index.json, lineage, and provenance |
establish artifact identity and dependency history |
run.log.jsonl, events, and timeline |
reconstruct ordered runtime observations |
| summaries and visualizations | orient investigation; do not replace underlying records |
| work and temporary directories | execution staging, never finalized proof |
A successful command envelope proves neither retained integrity nor replay eligibility. Verify hashes and schemas before making consequential claims.
Finalized Directory¶
Execution stages in run.tmp-<run_id> and finalizes to run-<run_id>.
run-<run_id>/
├── manifest.json
├── graph.snapshot.json
├── run.schema.json
├── outputs/
│ └── index.json
├── nodes/
│ └── <node_id>/
│ ├── trace.json
│ ├── attempts.json
│ ├── resolved_params.json
│ ├── stdout.log
│ ├── stderr.log
│ ├── inputs/
│ │ ├── index.json
│ │ └── <source_node_id>/<input_port>
│ ├── outputs/
│ │ ├── index.json
│ │ └── <declared output paths>
│ └── attempts/
│ └── <attempt>/
│ ├── stdout.log
│ └── stderr.log
├── lineage.snapshot.json
├── provenance.json
├── observability.events.json
├── observability.timeline.json
└── run.log.jsonl
Optional supporting files include manifest.finalized.json,
.run-complete.json, .run-incomplete.json, run.snapshot.json,
run-log.index.json, run.audit.json, scheduler.checkpoint.json,
failure-propagation.json, observability summaries, and plan.json.
Root Evidence¶
Run Identity¶
manifest.json is the first inspection point. It records:
- run ID, status, timestamps, and node outcome counts;
- graph, planner, execution, and evidence fingerprints;
- adapter inventory and selected policy;
- effective run inputs and cache configuration;
- output and promotion summaries.
The manifest records cache_mode and cache_dir; cache payloads live under
the configured cache root, not inside the run.
graph.snapshot.json preserves authored graph intent and graph identity.
Operator tools use it instead of reconstructing nodes, edges, inputs, output
contracts, branches, retries, or resources from logs.
run.schema.json indexes required and optional root/node files and their live
schema versions.
Artifact Identity¶
outputs/index.json is the run-level artifact index. Entries identify output
name, producer node, relative path, kind, media type, size, digest, producer
fingerprint, and promotion eligibility.
provenance.json retains the run source and identity envelope.
lineage.snapshot.json retains run-wide dependency and artifact lineage used by
replay and comparison.
Ordered Observation¶
observability.events.jsonretains structured events;observability.timeline.jsonretains normalized lifecycle order;run.log.jsonlretains the append-only audit and repair stream.
Failed, skipped, cached, cancelled, timed-out, and successful outcomes remain distinct. Sequence evidence explains what the runtime observed; it does not override terminal state or artifact verification.
Scheduler State¶
When present, scheduler.checkpoint.json records one scheduler-loop boundary:
ready queue, scheduled batch, resource blocks, inflight ownership, completed
states, and decision reason.
Optional Plan¶
plan.json may preserve the lowered plan under
configs/dag/schema/execution_plan.schema.json. Standard local runs do not
promise it. Planner identity is always carried in the manifest, while graph
intent is retained in graph.snapshot.json.
Node Evidence¶
Every executed or terminally classified node has a directory under
nodes/<node_id>/.
| Path | Meaning |
|---|---|
nodes/<node_id>/trace.json |
authoritative node status, timing, identity, policy, outputs, cache, branch, failure, and replay record |
nodes/<node_id>/attempts.json |
retry and attempt summary |
nodes/<node_id>/attempts/<attempt>/ |
per-attempt stdout and stderr |
nodes/<node_id>/resolved_params.json |
values handed to the adapter after reference and path resolution |
nodes/<node_id>/stdout.log |
terminal/latest retained stdout |
nodes/<node_id>/stderr.log |
terminal/latest retained stderr |
Structured stream evidence in trace.json is preferable for automation.
Retained log files remain useful for direct diagnosis and repair.
Materialized Inputs¶
nodes/<node_id>/inputs/index.json maps each consumed payload to:
- local path;
- source node and source output;
- source node fingerprint and content digest;
- materialization mode (
copy,hardlink, orsymlink).
Payloads live below
nodes/<node_id>/inputs/<source_node_id>/<input_port>. The payload is what the
adapter consumed; the index is why that payload can be attributed upstream.
Retained Outputs¶
nodes/<node_id>/outputs/index.json maps declared output contracts to retained
payloads and digests. Payloads stay at their declared relative paths beneath
the node output root.
The node index proves one producer boundary. The root outputs/index.json
aggregates run-level artifact visibility.
Cache Evidence¶
Cache entries are reusable node results, not miniature run directories:
<cache_root>/<cache_key>/
├── manifest.json
├── meta.json
├── outputs/
│ ├── index.json
│ └── <payloads>
└── logs/
├── stdout.log
├── stderr.log
└── trace.json
The cache manifest binds manifest_version, cache key, node ID, and output
contracts. meta.json records explainability and integrity inputs such as node,
environment, lineage, params, command, adapter, policy, execution-contract,
and backend fingerprints.
Reuse is valid only when the exact entry remains identity-compatible and its retained files verify.
Promotion Evidence¶
Promotions are retained inside the source run:
promotions/index.json is the run-local ledger. A record binds source run,
node, output, digest, destination, source/target environments, timestamp, and
lineage. The manifest carries a compact summary at
run_summary.promoted_outputs.
Use the summary for discovery and the promotion ledger for audit.
Transient Work¶
nodes/<node_id>/work/ and nodes/<node_id>/work/temp/ are execution
scratch. They are not durable evidence and must not be required for replay,
verification, or post-run explanation.
Choose Evidence By Question¶
| Question | Start with | Corroborate with |
|---|---|---|
| What ran and how did it finish? | manifest.json |
graph snapshot and timeline |
| What happened to one node? | trace.json |
attempts, streams, and resolved params |
| What input did a node consume? | input index | materialized payload and upstream output index |
| Which artifacts survived? | root output index | node output index and content digest |
| Why was cache reused or refused? | node cache proof | cache manifest and meta.json |
| What was promoted? | run_summary.promoted_outputs |
promotions/index.json and record |
| Can this run be replayed? | manifest and retained inputs | Reproducibility Model |