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 externally supplied initial inventory and stocks introduced by LoadContent, 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.
