Artifacts
culsma run writes staged JSON artifacts into the output directory.
| File | Producer | Meaning |
|---|---|---|
summary.json | CLI summary | Counts and run status. |
ast.json | parser/frontend | Parsed source program. |
ir.json | compiler | Canonical IR. |
validate.json | semantic validator | Semantic diagnostics. |
typecheck.json | typechecker | Type and unit diagnostics. |
plan.json | plan lowering | Executable plan. |
run.json | runtime | Runtime state, events, diagnostics, and user result. |
output.json | CLI run output | Machine-readable returns plus derived report. |
result.json | report projection | Derived lab_report_v1 report summary. |
The exact content of these files is intended for inspection and reproducibility. Source language authoring uses .culs files, not generated IR or plan JSON.
output.json uses culsma_run_output_v1. Its top-level returns field is the protocol return value surface; its report field is the derived lab_report_v1 execution report.
Example Return Output
For a protocol that returns a prepared acquisition sample, the derived report and return surface are separate:
| Field | Value |
|---|---|
| headline | Experiment completed successfully with no runtime errors. |
| final returned container | AcquisitionSample |
| final returned volume | 1000.0uL |
| primary component | CELLS1 |
The terminal and output.json return the protocol output separately:
return:
AcquisitionSample (tube)
volume: 1000 uL
mass: 1000 mgThe result.json report is derived after execution from runtime artifacts. It is not a replacement for the source protocol, the protocol return, or the execution plan.
Material Accounting
The materials.input_inventory and materials.reagent_consumption rows are generated from runtime material accounting rather than reconstructed from the event log. The accounting layer registers material supplied to the run and protocol-declared input stocks, then follows source-to-destination material movements during execution.
This means that reagent consumption:
- covers both initial inventory and protocol-created input stocks;
- excludes generated intermediate material unless it was explicitly registered as an input;
- preserves every qualifying row without a display-oriented row limit; and
- reports volume and mass independently, leaving an unavailable quantity axis as
null.
Runtime events remain execution-trace evidence, but they are not the accounting source for these material tables.
Optional external inventory reconciliation is a read-only result derived after runtime accounting. It does not provision missing material, mutate runtime state, or change runtime success.
