The validate command runs two layers of checks against your last execute results: skill-specific configuration rules (e.g., "business rule has the correct table") and update set tracking (all records belong to the manifest's update set, not Default). Before making live calls it compares the saved .sn-results/ target key with the current resolved target, so a dev snapshot cannot be accidentally validated against test or prod. By default it also emits a *reality diagram* for each touched flow — an artifact that captures what actually exists on the instance, side-by-side with the pre-execute intent diagram, so drift is visible at a glance. Reality emission is warn-only — diffs annotate the output but do not flip the exit code.
validate
Structural validation of records created by execute.
sn validate <manifest.ts> [--target <name>] [--profile <name>] [--no-emit-reality] Post-execute structural validation + reality diagram.
Arguments
| Name | Required | Description |
|---|---|---|
| manifest.ts | Yes | Path to the manifest (reads results from .sn-results/). |
Flags
| Flag | Default | Description |
|---|---|---|
| --target <name> | — | Validate against this instance registry key. Must match the target saved by the last execute. |
| --profile <name> | — | Credential profile to use for validation reads. |
| --no-emit-reality | — | Skip the reality-diagram emitter. Keep when you only want structural/update-set checks without the extra per-flow artifacts. |
Examples
sn validate manifests/business-rule/manifest.tsSkill validation:
✓ business-rule: 0 issues
Update set validation:
✓ 3/3 records in correct update set
Reality:
2 flows captured · 1 shows diff
✓ payroll_approval (no diff)
! payroll_notification diff: 1 action moved
All validations passed.
sn validate manifests/payroll/manifest.ts --no-emit-realityUse sn lint <manifest.ts> for static validation *before* executing — it catches schema errors and invalid $ref chains without touching the instance. Pair sn validate with sn drift for ongoing reconciliation between the manifest's snapshot and the live instance.