--json result of each
command, the events file of each run, the files in build/final/, and the exit code. Those four
keep their shape within a schema version, and a change to one of them is a new schema.
Everything else under build/ is DeckTalk’s private cache. Its files and their shapes are what
Build artifacts describes, which is how the engine works today and not a
promise. A newer release that cannot read a cache file builds it again, except the paid records
below.
The result of a command
Every command prints one flat JSON object with--json, and every library call returns the same
object as a frozen model.
decktalk schema NAME prints the JSON Schema of one command’s result, and decktalk schema with no
name prints every command with the result it answers with, the exit codes and the error codes.
The same schemas are committed in the repository under schemas/v1/results/, one file per command,
in the folder the schema number names.
The events file
Every run of a project appends one JSON object per line tobuild/events/<run>.jsonl, where <run>
is the run of the result. --events prints the same lines on stderr as they happen.
Every line carries event, which names its kind, and time, seq and run. seq counts within
the run, so a reader can tell a gap from a lost line. The last line of a run is run.done, with the
run’s outcome and, when it failed, the same error the result carries. decktalk schema event
prints every kind and every field, and the same schema is committed in the repository as
schemas/v1/events.json.
build/final/
The deliverables, named after [project] name, which is <name> below.
Exit codes
The paid records
Four kinds of file record money spent, so they are never treated as a cache. Each stays where it is and is never deleted by DeckTalk.
The take store sits outside every project, and a take is written there first, once, when it is
bought. A take’s suffix is the one its voice declares for the format it asks for, which is
.mp3 for
every ElevenLabs format.
A newer release reads the words files and the ledger or refuses them with a sentence. It never
builds one again and never deletes one, because counting a paid record as absent would buy what it
records again. The refusal says so, and leaves the file where it is for the person whose money it is.
A take no section plays any more stays too, and decktalk status lists it so its author can remove
it with git rm.
The take index, takes.json, is not one of them. It is a cache over the takes on disk, which
narrate builds again from them when it does not read, so a broken index buys nothing.
Related
- Every command, its flags and its output: CLI
- Every field of every event line: Python API
- What the cache holds today: Build artifacts