Where it fits in the lifecycle
- Plan — draft the agent spec with
jstm agent plan. - Build — compile the spec into a runnable package.
- Conform — prove the built package meets the spec with
jstm agent conform. - Dry Run — execute with no production side effects.
- Pilot and Live — limited, then full production traffic.
The three lanes
Every flag is tagged by the lane that raised it. Lanes differ in authority.
The CLI runs the two deterministic lanes,
schema and spec_conflict, so jstm agent conform needs no API key and no network. The semantic judge lane is optional, runs only where a key is configured, and is intentionally omitted from the CLI today.
What you get
A single merged report. Each flag carries:- A stable id, so you can suppress it and it stays suppressed across runs.
- Its lane (
source),severity, andrule_id. - The target it lands on, such as
manifest.lifecycle. - A spec citation (
spec_anchor) and a plain-English rationale.
0 pass, 1 fail, 2 usage error — so the same command works for a person at a terminal and as a CI gate, with no rework.
Spec packs are versioned and hashed
A spec version is its markdown corpus, examples, and rule catalog, identified by a content hash such asv05@84aa360f…. Conformance always checks against an explicit version (--spec v0.5), never an accidental “latest”. When the vendored spec is refreshed its hash changes, which is how downstream acknowledgements know to re-evaluate. Checking a v0.5 package against a future v0.6 is a deliberate migration mode, never a silent drift.
See also
- Reading the flag report — how to interpret the output.
- Acknowledging flags — the ignore and allowlist workflow.
- Conform an agent package — task walkthrough.