workflow.nika.yaml, then validate and rehearse it:
provider/model and evaluate real outputs.
Choose the bound that matches the resource
A validation result is data. The
admit assertion makes rejection stop the
workflow, and the downstream task explicitly depends on its success. The
negative tests must inspect the trace and confirm that task never started.
The collection check bounds downstream work after the data is loaded; it is
not a streaming ingress limit. A dynamic fan may still have an unknown static
cost estimate even when this runtime guard bounds its input.
Batch admission
An empty batch returns[]. Eight items pass; a ninth item or an overlong item fails at admit, before process. Parallelism limits active calls; the validator separately limits total work.
Source skeleton: bounded-batch.
18-bounded-batch.nika.yaml
Record validation
The fixture returns count2 and total 30. Unknown fields, negative amounts and string amounts refuse before report. An empty batch returns total zero.
Source skeleton: validate-records.
19-validate-records.nika.yaml
Snapshot comparison
The fixture addsgamma, removes alpha and keeps beta. Duplicates use set semantics; empty snapshots are valid. Both snapshots are bounded before comparison.
Source skeleton: snapshot-diff.
20-snapshot-diff.nika.yaml
Duplicate handling
Identical rows collapse to one row per id. Conflicting amounts for the same id fail atagree; there is no arbitrary first-row winner.
Source skeleton: deduplicate-records.
21-deduplicate-records.nika.yaml
Field projection
Onlytopic and severity reach the model task. Email and internal notes remain outside the prompt. This does not detect sensitive prose inside allowed fields, and source data can remain in the local trace.
Source skeleton: project-public-fields.
22-project-public-fields.nika.yaml
Parallel review
Each review has its own timeout and token ceiling. A shared conjunction is checked against all boolean input pairs. Mock returnsready: false; this checks wiring and the decision rule, not the quality of a real review.
Source skeleton: parallel-review.
23-parallel-review.nika.yaml
Narrow recovery
With nooptional.txt, the fixture returns its explicit fallback. A present file wins. Oversized content refuses after reading; the validator does not bound file allocation. Retry applies only to the read; only not-found is recovered.
Source skeleton: recover-optional-file.
24-recover-optional-file.nika.yaml
Exact aggregation
The fixture returns north15, south 20, total 35. Values are integer minor units in one currency. Negative amounts, unknown regions and oversized batches refuse; empty input returns zero.
Source skeleton: aggregate-by-key.
25-aggregate-by-key.nika.yaml