{
  "schemaVersion": "0.22.0",
  "generatedBy": "scripts/generate/generate-conformance-suite.mjs",
  "runnerContract": "For each fixture: load it as YAML, validate it against the bundled schema at v0.22.0, and confirm it is REJECTED. If rejectedBy is \"schema\", at least one resulting error must NOT carry a [DSDS-XX] rule id (a pure JSON Schema violation), and if errorAt is set, one such error's instance path must equal it (\"/\" for the document root). If rejectedBy is \"semantic\", every id in expect must appear among the resulting errors or warnings (a semantic rule may report as either, depending on --strict) tagged with that [DSDS-XX] id. A fixture that validates cleanly, or fails for a different reason than it declares, is a conformance failure for the validator under test — not a passing result.",
  "fixtureCount": 35,
  "fixtures": [
    {
      "file": "examples/invalid/DSDS-01-one-api-per-platform.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-01"
      ],
      "errorAt": null,
      "kind": "component"
    },
    {
      "file": "examples/invalid/DSDS-02-platform-vocabulary-status-list.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-02"
      ],
      "errorAt": null,
      "kind": null
    },
    {
      "file": "examples/invalid/DSDS-02-platform-vocabulary.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-02"
      ],
      "errorAt": null,
      "kind": null
    },
    {
      "file": "examples/invalid/DSDS-03-checked-by-needs-ref.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-03"
      ],
      "errorAt": null,
      "kind": "component"
    },
    {
      "file": "examples/invalid/DSDS-04-unique-entry-id.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-04"
      ],
      "errorAt": null,
      "kind": null
    },
    {
      "file": "examples/invalid/DSDS-05-item-ref-resolves.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-05"
      ],
      "errorAt": null,
      "kind": null
    },
    {
      "file": "examples/invalid/DSDS-06-same-as-cycle.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-06"
      ],
      "errorAt": null,
      "kind": null
    },
    {
      "file": "examples/invalid/DSDS-06-uses-cycle.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-06"
      ],
      "errorAt": null,
      "kind": null
    },
    {
      "file": "examples/invalid/DSDS-08-entry-ref-resolves.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-08"
      ],
      "errorAt": null,
      "kind": null
    },
    {
      "file": "examples/invalid/DSDS-09-combo-target-resolves.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-09"
      ],
      "errorAt": null,
      "kind": "component"
    },
    {
      "file": "examples/invalid/DSDS-10-same-as-level-matches.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-10"
      ],
      "errorAt": null,
      "kind": null
    },
    {
      "file": "examples/invalid/DSDS-11-base-document-file-ref.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-11"
      ],
      "errorAt": null,
      "kind": null
    },
    {
      "file": "examples/invalid/DSDS-11-file-ref-exists.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-11"
      ],
      "errorAt": null,
      "kind": "component"
    },
    {
      "file": "examples/invalid/DSDS-11-source-root.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-11"
      ],
      "errorAt": null,
      "kind": null
    },
    {
      "file": "examples/invalid/DSDS-24-undeclared-field.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-24"
      ],
      "errorAt": null,
      "kind": "entry"
    },
    {
      "file": "examples/invalid/DSDS-25-file-ref-not-a-document.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-25"
      ],
      "errorAt": null,
      "kind": "entry"
    },
    {
      "file": "examples/invalid/DSDS-25-ref-placement.yaml",
      "rejectedBy": "semantic",
      "expect": [
        "DSDS-25"
      ],
      "errorAt": null,
      "kind": "component"
    },
    {
      "file": "examples/invalid/schema-combo-target-pattern.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/combos/0/items/0",
      "kind": "component"
    },
    {
      "file": "examples/invalid/schema-component-unknown-field.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/",
      "kind": "component"
    },
    {
      "file": "examples/invalid/schema-empty-entries-array.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/entries",
      "kind": null
    },
    {
      "file": "examples/invalid/schema-entry-id-pattern.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/id",
      "kind": "component"
    },
    {
      "file": "examples/invalid/schema-extensions-unnamespaced-key.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/$extensions",
      "kind": "entry"
    },
    {
      "file": "examples/invalid/schema-kind-enum-invalid.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": null,
      "kind": "widget"
    },
    {
      "file": "examples/invalid/schema-legacy-documentblocks-field.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/",
      "kind": "component"
    },
    {
      "file": "examples/invalid/schema-legacy-dsdsversion-field.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": null,
      "kind": null
    },
    {
      "file": "examples/invalid/schema-legacy-identifier-field.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/",
      "kind": "system"
    },
    {
      "file": "examples/invalid/schema-named-field-rel.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": null,
      "kind": "component"
    },
    {
      "file": "examples/invalid/schema-ref-mutually-exclusive-to-href.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/refs/0",
      "kind": "entry"
    },
    {
      "file": "examples/invalid/schema-replaced-by-not-deprecated.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": null,
      "kind": "component"
    },
    {
      "file": "examples/invalid/schema-requirement-level-casing.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/items/0/level",
      "kind": "entry"
    },
    {
      "file": "examples/invalid/schema-source-field-rel.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/source",
      "kind": "token"
    },
    {
      "file": "examples/invalid/schema-sourcefile-platform-pattern.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/sourceFiles/0/platform",
      "kind": "component"
    },
    {
      "file": "examples/invalid/schema-sourcefiles-empty-array.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": "/sourceFiles",
      "kind": "component"
    },
    {
      "file": "examples/invalid/schema-trait-missing-kind.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": null,
      "kind": "component"
    },
    {
      "file": "examples/invalid/schema-trait-value-deprecated-without-notice.yaml",
      "rejectedBy": "schema",
      "expect": [],
      "errorAt": null,
      "kind": "component"
    }
  ],
  "consumerContract": "For each vector: read every file in inputs as one project, resolve it the way the processing model (https://designsystemdocspec.org/processing) says, and compare the result with the JSON in expected. `entries` and each entry's `items`, `incoming` and `succession` must match exactly. `problems` must match on `code` and `at`; `message` is prose for people and isn't compared. A consumer that implements only part of the model can compare only the fields for the sections it implements, and should say which.",
  "vectorCount": 6,
  "vectors": [
    {
      "name": "addresses",
      "inputs": [
        "examples/vectors/addresses/input.yaml"
      ],
      "expected": "examples/vectors/addresses/expected.json"
    },
    {
      "name": "cross-file",
      "inputs": [
        "examples/vectors/cross-file/button.yaml",
        "examples/vectors/cross-file/index.yaml"
      ],
      "expected": "examples/vectors/cross-file/expected.json"
    },
    {
      "name": "cycles",
      "inputs": [
        "examples/vectors/cycles/input.yaml"
      ],
      "expected": "examples/vectors/cycles/expected.json"
    },
    {
      "name": "inverse",
      "inputs": [
        "examples/vectors/inverse/input.yaml"
      ],
      "expected": "examples/vectors/inverse/expected.json"
    },
    {
      "name": "reuse",
      "inputs": [
        "examples/vectors/reuse/input.yaml"
      ],
      "expected": "examples/vectors/reuse/expected.json"
    },
    {
      "name": "successors",
      "inputs": [
        "examples/vectors/successors/input.yaml"
      ],
      "expected": "examples/vectors/successors/expected.json"
    }
  ]
}
