Skip to content

Artifacts ​

culsma run writes staged JSON artifacts into the output directory.

FileProducerMeaning
summary.jsonCLI summaryCounts and run status.
ast.jsonparser/frontendParsed source program.
ir.jsoncompilerCanonical IR.
validate.jsonsemantic validatorSemantic diagnostics.
typecheck.jsontypecheckerType and unit diagnostics.
plan.jsonplan loweringExecutable plan.
run.jsonruntimeRuntime state, events, diagnostics, and user result.
output.jsonCLI run outputMachine-readable returns plus derived report.
result.jsonreport projectionDerived 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:

FieldValue
headlineExperiment completed successfully with no runtime errors.
final returned containerAcquisitionSample
final returned volume1000.0uL
primary componentCELLS1

The terminal and output.json return the protocol output separately:

text
return:
  AcquisitionSample (tube)
    volume: 1000 uL
    mass: 1000 mg

The 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:

  1. covers both initial inventory and protocol-created input stocks;
  2. excludes generated intermediate material unless it was explicitly registered as an input;
  3. preserves every qualifying row without a display-oriented row limit; and
  4. 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.

Released under the Apache-2.0 license.