# description
Shape of a single declarative test case under `spec/conformance/cases/<id>.json`. Consumed by language-neutral conformance runners. See `spec/conformance/README.md` for the runner contract.

# properties.$schema.description
Optional IDE hint. Implementations MUST ignore this field.

# properties.id.description
Kebab-case unique identifier. MUST equal the filename stem (`cases/<id>.json`).

# properties.description.description
One-to-three-sentence human-readable explanation of what the case verifies.

# properties.fixture.description
Folder name under `conformance/fixtures/` used as the scope root. Omit for cases that do not need a corpus (e.g. `kernel-empty-boot`).

# properties.setup.description
Pre-invocation toggles and ordered staging steps. All toggles default to `false`. `priorScans`, when present, run BEFORE the main `invoke` so a case can establish a prior snapshot the heuristic-driven verbs (e.g. `sm scan` rename detection) can react to.

# properties.setup.properties.disableAllProviders.description
When true, the runner injects `SKILL_MAP_DISABLE_ALL_PROVIDERS=1` into the child process environment, dropping every Provider extension (built-in and user-plugin) before scan composition.

# properties.setup.properties.disableAllExtractors.description
When true, the runner injects `SKILL_MAP_DISABLE_ALL_EXTRACTORS=1` into the child process environment, dropping every Extractor extension before scan composition.

# properties.setup.properties.disableAllRules.description
When true, the runner injects `SKILL_MAP_DISABLE_ALL_RULES=1` into the child process environment, dropping every Rule extension before scan composition.

# properties.setup.properties.priorScans.description
Ordered staging scans, each running before the next. For step N, the runner first replaces the scope's Provider content with `priorScans[N].fixture`, then invokes `sm scan` with the supplied flags. After the last step, the runner copies the top-level `fixture` (overwriting again) and runs the main `invoke`. The DB persists across all steps because `.skill-map/` is preserved between fixture swaps.

# properties.setup.properties.priorScans.items.properties.fixture.description
Folder under `conformance/fixtures/` to copy into the scope, replacing every non-`.skill-map/` directory.

# properties.setup.properties.priorScans.items.properties.flags.description
Flags passed to `sm scan`. Default: empty (full scan).

# properties.invoke.properties.verb.description
First-level CLI verb (`scan`, `list`, `show`, `check`, `findings`, `graph`, `export`, `job`, `record`, …).

# properties.invoke.properties.sub.description
Subcommand for verbs that have them (e.g. `submit` for `job submit`).

# properties.invoke.properties.flags.description
Flags. Implementations MUST accept them in any order; ordering here is cosmetic.

# properties.assertions.description
Ordered list of assertions. A case passes iff every assertion passes.

# $defs.Assertion.description
Discriminated union. The `type` field selects the assertion shape.

# $defs.JsonPath.properties.path.description
JSONPath expression (RFC 9535 subset) evaluated against parsed stdout.

# $defs.JsonPath.properties.equals.description
Any JSON value. The extracted value MUST deep-equal this.

# $defs.JsonPath.properties.matches.description
ECMAScript regex. The extracted value (coerced to string) MUST match.

# $defs.FileExists.properties.path.description
Relative to the scope root. Glob patterns permitted; at least one match MUST exist.

# $defs.FileContainsVerbatim.properties.path.description
Relative to the scope root. Glob permitted; MUST resolve to exactly one file.

# $defs.FileContainsVerbatim.properties.fixture.description
Path under `conformance/fixtures/` whose bytes MUST appear verbatim in the target file.

# $defs.FileMatchesSchema.properties.path.description
Relative to the scope root. Glob permitted; MUST resolve to exactly one file. File MUST parse as JSON.

# $defs.FileMatchesSchema.properties.schema.description
Path under `schemas/` that the file MUST validate against.

# $defs.StderrMatches.properties.pattern.description
ECMAScript regex. The full stderr output MUST match at least once.