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

Released under the Apache-2.0 license.