the language
exec
Run. A shell command, captured and typed. One of the four verbs. A verb is a distinct native execution model, and every task speaks exactly one. string form rides /bin/sh · array form is execve, no shell: the injection-safe lane.
- 7block keysthe contract
- 0requiredall optional
- 2check gatestyped findings
- 2skeletonsspeak this verb
the shape
a complete workflowSchema-valid whole: this exact text passes nika check (the on-page YAML gate re-validates it on every test run).
nika: v1workflow: id: runtasks: build: exec: command: ["cargo", "build", "--release"]inside exec:
7 keys · 0 requiredThe block's vocabulary comes from the served contract itself (workflow.schema.json). Each key opens its register row.
- capture
stringwhich stream becomes the task output- command
arrayargv — the program and its arguments, execve, NO shell. Each element substituted independently (the injection-safe form). Shell features (pipes · redirects · globs) live in `shell:`.- cwd
stringworking directory for the command- decode
stringHow the captured string becomes a value (spec 09 §decode) — illegal with capture: structured (NIKA-PARSE-025)- env
objectenvironment variables for the exec command, a name to value map- shell
stringOne shell line, run via /bin/sh -c — the EXPLICIT dangerous door (pipes · redirects · globs). The blocklist applies here; interpolating untrusted values here is on the author. Exactly one of command|shell.- stdin
stringtext piped to the command’s standard input
cross-references
skeletons that speak it
the check gates
where it lives
errors of this verb
The verbs are locked forever: four, never five (fetch is a builtin, not a verb; ordering is the DAG's job, not a word's). The grammar lives in spec 02 · verbs; every other key is in the keyword register. Read the spec →