The Interpreter writes one JSON document, extraction-result.json, plus a generated Screenplay.play file describing the same model in Screenplay’s declarative language. This page documents the JSON shape; the .play file is what you’d hand-edit or run.
Which of the four Cratis slice types the evidence matches
description
string
Optional description
commands
array of ExtractedCommand
At most one, for a StateChange slice
events
array of ExtractedEvent
The facts the slice produces
readModels
array of ExtractedReadModel
For a StateView slice
projections
array of ExtractedProjection
How read models are built from events
constraints
array of ExtractedConstraint
Uniqueness/invariant rules inferred from rejected requests
commands is a list rather than a nullable single value — a StateView/Automation/Translation slice simply has an empty list, so the shape never carries a null.
The generated .play file is a working starting point, not a finished model — run it directly with cratis run to boot it as a local Stage sandbox, bring it into Studio to keep shaping it visually, or hand-edit the .play file itself, since Screenplay is meant to be authored by hand as much as generated.