{
  "metadata": {
    "generatedAt": "2026-10-16T10:18:51.906Z",
    "suiteVersion": "0.1.0",
    "adapter": {
      "protocolVersion": 0,
      "id": "openldes-ldi",
      "name": "LDES conformance adapter for OpenLDES LDI",
      "revision": "1",
      "client": {
        "id": "openldes-ldi-client",
        "name": "OpenLDES Linked Data Interactions client",
        "homepage": "https://github.com/OpenLDES/Linked-Data-Interactions/tree/main/ldi-core/ldes-client",
        "version": "3.1.1",
        "revision": "main"
      },
      "command": [
        "node",
        "adapters/openldes-ldi/adapter.mjs"
      ],
      "timeoutMs": 45000,
      "capabilities": {
        "modes": [
          "unordered"
        ],
        "memberExtraction": true,
        "context": false,
        "persistentState": true
      }
    },
    "probe": {
      "protocolVersion": 0,
      "available": true,
      "adapterId": "openldes-ldi",
      "clientVersion": "3.1.1",
      "clientRevision": "52b1feb8ac8f0da77e9e353d4b1dac664857d612",
      "capabilities": {
        "modes": [
          "unordered"
        ],
        "memberExtraction": true,
        "context": false,
        "persistentState": true
      }
    }
  },
  "total": 114,
  "counts": {
    "inapplicable": 66,
    "failed": 29,
    "passed": 19,
    "cantTell": 0,
    "untested": 0
  },
  "groupClaims": [
    {
      "group": "UnorderedTraversal",
      "outcome": "failed",
      "mandatoryTests": 25,
      "applicableMandatoryTests": 25,
      "passedMandatoryTests": 11,
      "diagnostics": []
    },
    {
      "group": "MemberExtraction",
      "outcome": "failed",
      "mandatoryTests": 13,
      "applicableMandatoryTests": 12,
      "passedMandatoryTests": 6,
      "diagnostics": [
        "1 of 13 mandatory tests were inapplicable to this client and are excluded from the claim"
      ]
    },
    {
      "group": "OrderedTraversal",
      "outcome": "inapplicable",
      "mandatoryTests": 44,
      "applicableMandatoryTests": 0,
      "passedMandatoryTests": 0,
      "diagnostics": [
        "44 of 44 mandatory tests were inapplicable to this client and are excluded from the claim"
      ]
    },
    {
      "group": "ContextInformation",
      "outcome": "inapplicable",
      "mandatoryTests": 12,
      "applicableMandatoryTests": 0,
      "passedMandatoryTests": 0,
      "diagnostics": [
        "12 of 12 mandatory tests were inapplicable to this client and are excluded from the claim"
      ]
    }
  ],
  "coverage": {
    "totalRequirements": 100,
    "requirementsVerified": 28,
    "requirementsWithTests": 78,
    "requirementsAdvisoryEvidenceOnly": 0,
    "requirementsWithRationales": 21,
    "blockingGaps": 0,
    "artifact": "coverage.json"
  },
  "tests": [
    {
      "id": "tests/1.0/context/blank-node-metadata",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-blank-node-metadata",
      "title": "Blank-node shapes, view descriptions and retention policies are extracted and communicated structurally",
      "description": "The root node describes its shape, publishing service and two retention policies entirely with blank nodes carrying nested structure, so none of them can be addressed by IRI. The client must extract and communicate that context, including the policy reached through tree:viewDescription. The oracle compares the communicated context as an RDF dataset with blank-node isomorphism and deliberately does not assert the parser-local blank-node labels or the order of the context lists.",
      "group": "ContextInformation",
      "requirement": "LDES10-CTX-002",
      "requirements": [
        "LDES10-CTX-002",
        "LDES10-CTX-004",
        "LDES10-CTX-005",
        "LDES10-CTX-006",
        "LDES10-CTX-007",
        "LDES10-CTX-009",
        "LDES10-RET-003",
        "LDES10-RET-004"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__blank-node-metadata.json"
    },
    {
      "id": "tests/1.0/context/empty-retention",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-empty-retention",
      "title": "An empty retention-policy resource is still communicated",
      "description": "The event stream links to a retention policy resource without extra policy details; a context-capable client must still expose that policy IRI rather than dropping it as empty metadata.",
      "group": "ContextInformation",
      "requirement": "LDES10-RET-005",
      "requirements": [
        "LDES10-RET-005"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__empty-retention.json"
    },
    {
      "id": "tests/1.0/context/polling-interval",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-polling-interval",
      "title": "Polling interval is communicated as advisory context",
      "description": "The client reports ldes:pollingInterval when the adapter exposes context information.",
      "group": "ContextInformation",
      "requirement": "LDES10-CTX-003",
      "requirements": [
        "LDES10-CTX-003"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__polling-interval.json"
    },
    {
      "id": "tests/1.0/context/publishing-service-direct",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-publishing-service-direct",
      "title": "Direct publishing-service context is preserved",
      "description": "Publishing-service triples present on the root representation remain available in the context dataset.",
      "group": "ContextInformation",
      "requirement": "LDES10-CTX-008",
      "requirements": [
        "LDES10-CTX-008"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__publishing-service-direct.json"
    },
    {
      "id": "tests/1.0/context/publishing-service-view-description",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-publishing-service-view-description",
      "title": "Publishing-service context through view description is communicated",
      "description": "The root links to a view description containing service metadata.",
      "group": "ContextInformation",
      "requirement": "LDES10-CTX-009",
      "requirements": [
        "LDES10-CTX-009"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__publishing-service-view-description.json"
    },
    {
      "id": "tests/1.0/context/retention-policy-direct",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-retention-policy-direct",
      "title": "Direct retention policy is extracted as context",
      "description": "A direct ldes:retentionPolicy link is communicated without requiring interpretation.",
      "group": "ContextInformation",
      "requirement": "LDES10-RET-003",
      "requirements": [
        "LDES10-RET-003"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__retention-policy-direct.json"
    },
    {
      "id": "tests/1.0/context/retention-policy-view-description",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-retention-policy-view-description",
      "title": "View-description retention policy is extracted as context",
      "description": "A retention policy linked from tree:viewDescription is communicated without requiring interpretation.",
      "group": "ContextInformation",
      "requirement": "LDES10-RET-004",
      "requirements": [
        "LDES10-RET-004"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__retention-policy-view-description.json"
    },
    {
      "id": "tests/1.0/context/root-and-eventstream-iri",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-root-and-eventstream-iri",
      "title": "Root and event stream IRIs are communicated",
      "description": "The context event identifies both the discovered event stream and root node.",
      "group": "ContextInformation",
      "requirement": "LDES10-CTX-001",
      "requirements": [
        "LDES10-CTX-001"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__root-and-eventstream-iri.json"
    },
    {
      "id": "tests/1.0/context/root-context",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-root-context",
      "title": "Root, event-stream, view-description, version, and retention context is communicated",
      "description": "The root document includes the event stream identity, root view, view description, version paths, and retention policy links; the adapter must expose this context dataset for downstream consumers.",
      "group": "ContextInformation",
      "requirement": "LDES10-UNORD-004",
      "requirements": [
        "LDES10-UNORD-004",
        "LDES10-CTX-001",
        "LDES10-CTX-002",
        "LDES10-CTX-003",
        "LDES10-CTX-004",
        "LDES10-CTX-005",
        "LDES10-CTX-006",
        "LDES10-CTX-007",
        "LDES10-CTX-008",
        "LDES10-CTX-009",
        "LDES10-RET-003",
        "LDES10-RET-004"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__root-context.json"
    },
    {
      "id": "tests/1.0/context/shape-multiple",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-shape-multiple",
      "title": "Multiple advertised shapes are communicated",
      "description": "The client reports all shapes attached to the event stream.",
      "group": "ContextInformation",
      "requirement": "LDES10-CTX-002",
      "requirements": [
        "LDES10-CTX-002"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__shape-multiple.json"
    },
    {
      "id": "tests/1.0/context/statistics",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-statistics",
      "title": "statistics",
      "group": "ContextInformation",
      "requirement": "LDES10-UNORD-026",
      "requirements": [
        "LDES10-UNORD-026"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__statistics.json"
    },
    {
      "id": "tests/1.0/context/timestamp-version-paths",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-timestamp-version-paths",
      "title": "Timestamp and version paths are communicated",
      "description": "The client reports timestamp and version path metadata from the event stream.",
      "group": "ContextInformation",
      "requirement": "LDES10-CTX-003",
      "requirements": [
        "LDES10-CTX-003"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__timestamp-version-paths.json"
    },
    {
      "id": "tests/1.0/context/version-transaction-metadata",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#context-version-transaction-metadata",
      "title": "version transaction metadata",
      "group": "ContextInformation",
      "requirement": "LDES10-CTX-006",
      "requirements": [
        "LDES10-CTX-006"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not expose context information through the adapter contract"
      ],
      "evidence": "evidence/tests__1.0__context__version-transaction-metadata.json"
    },
    {
      "id": "tests/1.0/discovery/ambiguous-overview",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#discovery-ambiguous-overview",
      "title": "Multiple fallback tree:view targets are rejected",
      "description": "When no current-page match exists, the supplied IRI has two tree:view targets and neither may be selected silently.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-015",
      "requirements": [
        "LDES10-UNORD-015"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "failed",
      "diagnostics": [
        "event 0: expected type error, got run-end",
        "request /root-b: expected count 0, got 1"
      ],
      "evidence": "evidence/tests__1.0__discovery__ambiguous-overview.json"
    },
    {
      "id": "tests/1.0/discovery/ambiguous-view",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#discovery-ambiguous-view",
      "title": "Multiple current-page tree:view matches are rejected",
      "description": "The entry representation contains more than one current-page tree:view match, which the initialization algorithm requires the client to report as an error.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-012",
      "requirements": [
        "LDES10-UNORD-012"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "event 0: expected type error, got run-end"
      ],
      "evidence": "evidence/tests__1.0__discovery__ambiguous-view.json"
    },
    {
      "id": "tests/1.0/discovery/current-page-precedence",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#discovery-current-page-precedence",
      "title": "The current-page tree:view match takes precedence over fallback metadata",
      "description": "The entry point redirects, and the target page carries both a current-page tree:view pattern and a tree:view statement about the originally supplied IRI that points at a decoy root. The client must resolve the relative view and relation IRIs against the post-redirect base, select the current-page match, and never dereference the decoy. The fallback lookup is only consulted when the current-page pattern is absent.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-011",
      "requirements": [
        "LDES10-UNORD-011",
        "LDES10-UNORD-013",
        "LDES10-UNORD-036"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__discovery__current-page-precedence.json"
    },
    {
      "id": "tests/1.0/discovery/missing-view",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#discovery-missing-view",
      "title": "An entry point without exactly one discoverable view is rejected",
      "description": "The entry representation has no usable current-page tree:view relation, so the client should stop with an entry-point error instead of traversing arbitrary data.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-015",
      "requirements": [
        "LDES10-UNORD-015"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__discovery__missing-view.json"
    },
    {
      "id": "tests/1.0/discovery/overview-entrypoint",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#discovery-overview-entrypoint",
      "title": "An overview document identifies exactly one root node",
      "description": "The supplied IRI is an overview document with one tree:view target; the client must dereference that target as the root node and emit the member found there.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-008",
      "requirements": [
        "LDES10-UNORD-008",
        "LDES10-UNORD-013",
        "LDES10-UNORD-014",
        "LDES10-UNORD-034",
        "LDES10-UNORD-049",
        "LDES10-UNORD-050",
        "LDES10-UNORD-051"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__discovery__overview-entrypoint.json"
    },
    {
      "id": "tests/1.0/discovery/redirect-entrypoint",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#discovery-redirect-entrypoint",
      "title": "Root discovery uses the post-redirect IRI",
      "description": "The supplied entry point redirects to a root whose current-page tree:view statement resolves against the final response IRI.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-008",
      "requirements": [
        "LDES10-UNORD-008",
        "LDES10-UNORD-011",
        "LDES10-UNORD-036"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "request /entry: expected count 1, got 2",
        "request /root: expected count 1, got 2"
      ],
      "evidence": "evidence/tests__1.0__discovery__redirect-entrypoint.json"
    },
    {
      "id": "tests/1.0/discovery/root-entrypoint",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#discovery-root-entrypoint",
      "title": "A root-node IRI is accepted as the entry point",
      "description": "The supplied IRI is both the fetched document and the sole tree:view target; the root member must be emitted.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-002",
      "requirements": [
        "LDES10-UNORD-002",
        "LDES10-UNORD-006",
        "LDES10-UNORD-007",
        "LDES10-UNORD-008",
        "LDES10-UNORD-009",
        "LDES10-UNORD-010",
        "LDES10-UNORD-011",
        "LDES10-UNORD-017",
        "LDES10-EXTRACT-002",
        "LDES10-EXTRACT-003",
        "LDES10-EXTRACT-004",
        "LDES10-EXTRACT-005"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__discovery__root-entrypoint.json"
    },
    {
      "id": "tests/1.0/extraction/blank-node-chain",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-blank-node-chain",
      "title": "Recursive blank-node member extraction",
      "description": "Blank nodes reachable from the member payload are included recursively.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-005",
      "requirements": [
        "LDES10-EXTRACT-005",
        "LDES10-EXTRACT-007"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__extraction__blank-node-chain.json"
    },
    {
      "id": "tests/1.0/extraction/blank-node-cycle",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-blank-node-cycle",
      "title": "Blank-node extraction terminates on cycles",
      "description": "The member payload contains a cyclic blank-node structure and must still produce finite output.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-007",
      "requirements": [
        "LDES10-EXTRACT-007",
        "LDES10-EXTRACT-008"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__extraction__blank-node-cycle.json"
    },
    {
      "id": "tests/1.0/extraction/blank-node-named-graph",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-blank-node-named-graph",
      "title": "blank node named graph",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-006",
      "requirements": [
        "LDES10-EXTRACT-006",
        "LDES10-EXTRACT-007",
        "LDES10-EXTRACT-008"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block"
      ],
      "evidence": "evidence/tests__1.0__extraction__blank-node-named-graph.json"
    },
    {
      "id": "tests/1.0/extraction/default-graph-star-minimal",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-default-graph-star-minimal",
      "title": "Default graph subject-star member extraction",
      "description": "The member is described only by default-graph triples with the member IRI as subject.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-005",
      "requirements": [
        "LDES10-EXTRACT-005"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__extraction__default-graph-star-minimal.json"
    },
    {
      "id": "tests/1.0/extraction/default-plus-named-graph-merge",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-default-plus-named-graph-merge",
      "title": "Default and member-named graph payloads are merged",
      "description": "The member dataset is split between the default graph and graph named by the member IRI.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-005",
      "requirements": [
        "LDES10-EXTRACT-005",
        "LDES10-EXTRACT-006"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block"
      ],
      "evidence": "evidence/tests__1.0__extraction__default-plus-named-graph-merge.json"
    },
    {
      "id": "tests/1.0/extraction/generic-dataset",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-generic-dataset",
      "title": "Generic extraction isolates member datasets across default and named graphs",
      "description": "The fixture includes a named-graph payload, recursive cyclic blank nodes, unrelated page data, and another event stream.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-002",
      "requirements": [
        "LDES10-EXTRACT-002",
        "LDES10-EXTRACT-003",
        "LDES10-EXTRACT-004",
        "LDES10-EXTRACT-005",
        "LDES10-EXTRACT-006",
        "LDES10-EXTRACT-007",
        "LDES10-EXTRACT-008"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block"
      ],
      "evidence": "evidence/tests__1.0__extraction__generic-dataset.json"
    },
    {
      "id": "tests/1.0/extraction/late-description",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-late-description",
      "title": "late description",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-003",
      "requirements": [
        "LDES10-EXTRACT-003",
        "LDES10-EXTRACT-005"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__extraction__late-description.json"
    },
    {
      "id": "tests/1.0/extraction/multiple-streams",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-multiple-streams",
      "title": "Member extraction is scoped to the discovered event stream",
      "description": "A page contains members for two streams; only the selected stream may be emitted.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-004",
      "requirements": [
        "LDES10-EXTRACT-004"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block"
      ],
      "evidence": "evidence/tests__1.0__extraction__multiple-streams.json"
    },
    {
      "id": "tests/1.0/extraction/named-graph-only",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-named-graph-only",
      "title": "Member-named graph extraction without default graph data",
      "description": "The member payload exists only in the graph named by the member IRI.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-006",
      "requirements": [
        "LDES10-EXTRACT-006"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block"
      ],
      "evidence": "evidence/tests__1.0__extraction__named-graph-only.json"
    },
    {
      "id": "tests/1.0/extraction/shape-neutral-generic",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-shape-neutral-generic",
      "title": "Shape metadata does not frame generic member extraction",
      "description": "On an ordinary Turtle response, tree:shape communicates validation context but does not suppress member triples outside that shape.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-002",
      "requirements": [
        "LDES10-EXTRACT-002",
        "LDES10-EXTRACT-005"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__extraction__shape-neutral-generic.json"
    },
    {
      "id": "tests/1.0/extraction/shared-blank-node",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-shared-blank-node",
      "title": "shared blank node",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-007",
      "requirements": [
        "LDES10-EXTRACT-007",
        "LDES10-EXTRACT-008"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__extraction__shared-blank-node.json"
    },
    {
      "id": "tests/1.0/extraction/tree-profile-basic",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-tree-profile-basic",
      "title": "TREE Profile extraction basic advisory case",
      "description": "A client that claims TREE Profile extraction emits the described resource from the page.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-001",
      "requirements": [
        "LDES10-EXTRACT-001"
      ],
      "requiredCapabilities": [
        "TreeProfileExtraction"
      ],
      "requirementLevel": "May",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not declare TREE Profile extraction"
      ],
      "evidence": "evidence/tests__1.0__extraction__tree-profile-basic.json"
    },
    {
      "id": "tests/1.0/extraction/tree-profile-mixed-page",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-tree-profile-mixed-page",
      "title": "TREE Profile extraction on a mixed page",
      "description": "A TREE Profile-capable client emits the selected profile member and does not emit unrelated page resources.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-001",
      "requirements": [
        "LDES10-EXTRACT-001"
      ],
      "requiredCapabilities": [
        "TreeProfileExtraction"
      ],
      "requirementLevel": "May",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not declare TREE Profile extraction"
      ],
      "evidence": "evidence/tests__1.0__extraction__tree-profile-mixed-page.json"
    },
    {
      "id": "tests/1.0/extraction/tree-profile-shape-targets",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-tree-profile-shape-targets",
      "title": "TREE Profile extraction with shape metadata",
      "description": "A TREE Profile-capable client preserves member data while shape metadata is present on the stream.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-001",
      "requirements": [
        "LDES10-EXTRACT-001"
      ],
      "requiredCapabilities": [
        "TreeProfileExtraction"
      ],
      "requirementLevel": "May",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not declare TREE Profile extraction"
      ],
      "evidence": "evidence/tests__1.0__extraction__tree-profile-shape-targets.json"
    },
    {
      "id": "tests/1.0/extraction/unrelated-named-graph",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#extraction-unrelated-named-graph",
      "title": "Generic extraction excludes unrelated named graphs",
      "description": "A foreign named graph contains a triple whose subject is the member IRI; only the default-graph subject star and the member-named graph belong to the member dataset.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-002",
      "requirements": [
        "LDES10-EXTRACT-002",
        "LDES10-EXTRACT-005",
        "LDES10-EXTRACT-006"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block"
      ],
      "evidence": "evidence/tests__1.0__extraction__unrelated-named-graph.json"
    },
    {
      "id": "tests/1.0/http/gone-node",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-gone-node",
      "title": "A 410 Gone relation target is treated as an empty node",
      "description": "A relation target returns HTTP 410 Gone during traversal; the client must treat that node as empty and complete without turning the response into a fatal error.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-046",
      "requirements": [
        "LDES10-UNORD-046"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "event 1: expected type run-end, got error"
      ],
      "evidence": "evidence/tests__1.0__http__gone-node.json"
    },
    {
      "id": "tests/1.0/http/retry-408",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-retry-408",
      "title": "408 Request Timeout is retried with back-off in unordered mode",
      "description": "The root node returns 408 Request Timeout twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-038",
      "requirements": [
        "LDES10-UNORD-038"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block",
        "request /root: expected count at least 2, got 1",
        "request /root: expected count at least 1, got 0",
        "request timing /root: expected at least 2 requests, got 1"
      ],
      "evidence": "evidence/tests__1.0__http__retry-408.json"
    },
    {
      "id": "tests/1.0/http/retry-425",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-retry-425",
      "title": "425 Too Early is retried with back-off in unordered mode",
      "description": "The root node returns 425 Too Early twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-039",
      "requirements": [
        "LDES10-UNORD-039"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block",
        "request /root: expected count at least 2, got 1",
        "request /root: expected count at least 1, got 0",
        "request timing /root: expected at least 2 requests, got 1"
      ],
      "evidence": "evidence/tests__1.0__http__retry-425.json"
    },
    {
      "id": "tests/1.0/http/retry-429",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-retry-429",
      "title": "429 Too Many Requests is retried with back-off in unordered mode",
      "description": "The root node returns 429 Too Many Requests twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-040",
      "requirements": [
        "LDES10-UNORD-040"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block",
        "request /root: expected count at least 2, got 1",
        "request /root: expected count at least 1, got 0",
        "request timing /root: expected at least 2 requests, got 1"
      ],
      "evidence": "evidence/tests__1.0__http__retry-429.json"
    },
    {
      "id": "tests/1.0/http/retry-500",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-retry-500",
      "title": "500 Internal Server Error is retried with back-off in unordered mode",
      "description": "The root node returns 500 Internal Server Error twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-041",
      "requirements": [
        "LDES10-UNORD-041"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block",
        "request /root: expected count at least 2, got 1",
        "request /root: expected count at least 1, got 0",
        "request timing /root: expected at least 2 requests, got 1"
      ],
      "evidence": "evidence/tests__1.0__http__retry-500.json"
    },
    {
      "id": "tests/1.0/http/retry-502",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-retry-502",
      "title": "502 Bad Gateway is retried with back-off in unordered mode",
      "description": "The root node returns 502 Bad Gateway twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-042",
      "requirements": [
        "LDES10-UNORD-042"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block",
        "request /root: expected count at least 2, got 1",
        "request /root: expected count at least 1, got 0",
        "request timing /root: expected at least 2 requests, got 1"
      ],
      "evidence": "evidence/tests__1.0__http__retry-502.json"
    },
    {
      "id": "tests/1.0/http/retry-503",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-retry-503",
      "title": "503 Service Unavailable is retried with back-off in unordered mode",
      "description": "The root node returns 503 Service Unavailable twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-043",
      "requirements": [
        "LDES10-UNORD-043"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block",
        "request /root: expected count at least 2, got 1",
        "request /root: expected count at least 1, got 0",
        "request timing /root: expected at least 2 requests, got 1"
      ],
      "evidence": "evidence/tests__1.0__http__retry-503.json"
    },
    {
      "id": "tests/1.0/http/retry-504",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-retry-504",
      "title": "504 Gateway Timeout is retried with back-off in unordered mode",
      "description": "The root node returns 504 Gateway Timeout twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-044",
      "requirements": [
        "LDES10-UNORD-044"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: missing matching member in permitted member block",
        "request /root: expected count at least 2, got 1",
        "request /root: expected count at least 1, got 0",
        "request timing /root: expected at least 2 requests, got 1"
      ],
      "evidence": "evidence/tests__1.0__http__retry-504.json"
    },
    {
      "id": "tests/1.0/http/retryable-statuses",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-retryable-statuses",
      "title": "Every required transient HTTP status is retried",
      "description": "The server returns each retryable status once before a valid root representation, and the request timeline verifies that retries are not immediate.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-038",
      "requirements": [
        "LDES10-UNORD-038",
        "LDES10-UNORD-039",
        "LDES10-UNORD-040",
        "LDES10-UNORD-041",
        "LDES10-UNORD-042",
        "LDES10-UNORD-043",
        "LDES10-UNORD-044"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "May",
      "outcome": "failed",
      "diagnostics": [
        "event 0: expected type run-end, got error",
        "request /root: expected count 1, got 0",
        "request /root: expected count 1, got 0",
        "request /root: expected count 1, got 0",
        "request /root: expected count 1, got 0",
        "request /root: expected count 1, got 0",
        "request /root: expected count 1, got 0",
        "request /root: expected count 1, got 0",
        "request timing /root: expected at least 2 requests, got 1"
      ],
      "evidence": "evidence/tests__1.0__http__retryable-statuses.json"
    },
    {
      "id": "tests/1.0/http/serializations",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-serializations",
      "title": "The five required RDF response media types are parsed",
      "description": "The same logical root page is served as Turtle, N-Triples, N-Quads, TriG, and JSON-LD across runs; the client must parse each required media type and emit the corresponding member.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-028",
      "requirements": [
        "LDES10-UNORD-028",
        "LDES10-UNORD-029",
        "LDES10-UNORD-030",
        "LDES10-UNORD-031",
        "LDES10-UNORD-032"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 10 observable events, got 9",
        "event 8: missing matching member in permitted member block"
      ],
      "evidence": "evidence/tests__1.0__http__serializations.json"
    },
    {
      "id": "tests/1.0/http/terminal-404-child",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-terminal-404-child",
      "title": "terminal 404 child",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__http__terminal-404-child.json"
    },
    {
      "id": "tests/1.0/http/terminal-404-entry",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-terminal-404-entry",
      "title": "terminal 404 entry",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__http__terminal-404-entry.json"
    },
    {
      "id": "tests/1.0/http/terminal-501-child",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-terminal-501-child",
      "title": "terminal 501 child",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__http__terminal-501-child.json"
    },
    {
      "id": "tests/1.0/http/terminal-501-entry",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-terminal-501-entry",
      "title": "terminal 501 entry",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__http__terminal-501-entry.json"
    },
    {
      "id": "tests/1.0/http/terminal-505-child",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-terminal-505-child",
      "title": "terminal 505 child",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__http__terminal-505-child.json"
    },
    {
      "id": "tests/1.0/http/terminal-505-entry",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-terminal-505-entry",
      "title": "terminal 505 entry",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__http__terminal-505-entry.json"
    },
    {
      "id": "tests/1.0/http/terminal-error",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#http-terminal-error",
      "title": "A non-special 4xx response aborts the run",
      "description": "The entry point returns a terminal client error that is not one of the retryable or empty-node cases; the client must surface an error and stop the run.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__http__terminal-error.json"
    },
    {
      "id": "tests/1.0/ordered/common-generic-extraction",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-generic-extraction",
      "title": "Generic member extraction in ordered mode",
      "description": "The member extraction algorithm is not mode-specific, so the comprehensive generic-extraction case is also exercised in ordered mode: focus-node discovery scoped to the event stream, the default-graph subject star, all quads in the graph named by the member IRI, recursive blank nodes with cycle protection, and no emission of unrelated subjects or other streams' members. LDES 1.0 permits a client that implements ordered mode only, and this fixture lets such a client demonstrate the mandatory extraction obligations. The stream carries ordering metadata and the second member's IRI sorts before the first, so an ID fallback cannot satisfy the oracle.",
      "group": "MemberExtraction",
      "requirement": "LDES10-EXTRACT-002",
      "requirements": [
        "LDES10-EXTRACT-002",
        "LDES10-EXTRACT-003",
        "LDES10-EXTRACT-004",
        "LDES10-EXTRACT-005",
        "LDES10-EXTRACT-006",
        "LDES10-EXTRACT-007",
        "LDES10-EXTRACT-008"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-generic-extraction.json"
    },
    {
      "id": "tests/1.0/ordered/common-immutable-parent-mutable-child",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-immutable-parent-mutable-child",
      "title": "immutable parent mutable child",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-024",
      "requirements": [
        "LDES10-UNORD-024",
        "LDES10-UNORD-023"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-immutable-parent-mutable-child.json"
    },
    {
      "id": "tests/1.0/ordered/common-relation-targets-and-scope",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-relation-targets-and-scope",
      "title": "relation targets and scope",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-049",
      "requirements": [
        "LDES10-UNORD-049",
        "LDES10-UNORD-050",
        "LDES10-UNORD-051"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-relation-targets-and-scope.json"
    },
    {
      "id": "tests/1.0/ordered/common-retry-408",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-retry-408",
      "title": "408 Request Timeout is retried with back-off in ordered mode",
      "description": "The root node returns 408 Request Timeout twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it. Exercised in ordered mode so a client that declares only ordered traversal can demonstrate this shared HTTP obligation.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-038",
      "requirements": [
        "LDES10-UNORD-038"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-retry-408.json"
    },
    {
      "id": "tests/1.0/ordered/common-retry-425",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-retry-425",
      "title": "425 Too Early is retried with back-off in ordered mode",
      "description": "The root node returns 425 Too Early twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it. Exercised in ordered mode so a client that declares only ordered traversal can demonstrate this shared HTTP obligation.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-039",
      "requirements": [
        "LDES10-UNORD-039"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-retry-425.json"
    },
    {
      "id": "tests/1.0/ordered/common-retry-429",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-retry-429",
      "title": "429 Too Many Requests is retried with back-off in ordered mode",
      "description": "The root node returns 429 Too Many Requests twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it. Exercised in ordered mode so a client that declares only ordered traversal can demonstrate this shared HTTP obligation.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-040",
      "requirements": [
        "LDES10-UNORD-040"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-retry-429.json"
    },
    {
      "id": "tests/1.0/ordered/common-retry-500",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-retry-500",
      "title": "500 Internal Server Error is retried with back-off in ordered mode",
      "description": "The root node returns 500 Internal Server Error twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it. Exercised in ordered mode so a client that declares only ordered traversal can demonstrate this shared HTTP obligation.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-041",
      "requirements": [
        "LDES10-UNORD-041"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-retry-500.json"
    },
    {
      "id": "tests/1.0/ordered/common-retry-502",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-retry-502",
      "title": "502 Bad Gateway is retried with back-off in ordered mode",
      "description": "The root node returns 502 Bad Gateway twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it. Exercised in ordered mode so a client that declares only ordered traversal can demonstrate this shared HTTP obligation.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-042",
      "requirements": [
        "LDES10-UNORD-042"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-retry-502.json"
    },
    {
      "id": "tests/1.0/ordered/common-retry-503",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-retry-503",
      "title": "503 Service Unavailable is retried with back-off in ordered mode",
      "description": "The root node returns 503 Service Unavailable twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it. Exercised in ordered mode so a client that declares only ordered traversal can demonstrate this shared HTTP obligation.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-043",
      "requirements": [
        "LDES10-UNORD-043"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-retry-503.json"
    },
    {
      "id": "tests/1.0/ordered/common-retry-504",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-retry-504",
      "title": "504 Gateway Timeout is retried with back-off in ordered mode",
      "description": "The root node returns 504 Gateway Timeout twice before a valid representation. The client must retry rather than treat the status as terminal data loss, and every member must still be emitted. The request timeline asserts only that consecutive attempts are spaced, so any back-off strategy, retry count or jitter satisfies it. Exercised in ordered mode so a client that declares only ordered traversal can demonstrate this shared HTTP obligation.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-044",
      "requirements": [
        "LDES10-UNORD-044"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-retry-504.json"
    },
    {
      "id": "tests/1.0/ordered/common-root-304-resume",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-root-304-resume",
      "title": "root 304 resume",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-024",
      "requirements": [
        "LDES10-UNORD-024",
        "LDES10-UNORD-037"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-root-304-resume.json"
    },
    {
      "id": "tests/1.0/ordered/common-root-context",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-root-context",
      "title": "Root context is communicated in ordered mode",
      "description": "Root-node context extraction and communication is not mode-specific, so the comprehensive root-context case is also exercised in ordered mode. LDES 1.0 permits a client that implements ordered mode only, and this fixture lets such a client demonstrate the mandatory context obligations rather than reporting them as inapplicable.",
      "group": "ContextInformation",
      "requirement": "LDES10-UNORD-004",
      "requirements": [
        "LDES10-UNORD-004",
        "LDES10-CTX-001",
        "LDES10-CTX-002",
        "LDES10-CTX-003",
        "LDES10-CTX-004",
        "LDES10-CTX-005",
        "LDES10-CTX-006",
        "LDES10-CTX-007",
        "LDES10-CTX-008",
        "LDES10-CTX-009",
        "LDES10-RET-003",
        "LDES10-RET-004"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-root-context.json"
    },
    {
      "id": "tests/1.0/ordered/common-serializations",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-serializations",
      "title": "The five required RDF response media types are parsed",
      "description": "The same logical root page is served as Turtle, N-Triples, N-Quads, TriG, and JSON-LD across runs; the client must parse each required media type and emit the corresponding member.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-028",
      "requirements": [
        "LDES10-UNORD-028",
        "LDES10-UNORD-029",
        "LDES10-UNORD-030",
        "LDES10-UNORD-031",
        "LDES10-UNORD-032"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-serializations.json"
    },
    {
      "id": "tests/1.0/ordered/common-terminal-404-child",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-terminal-404-child",
      "title": "terminal 404 child",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-terminal-404-child.json"
    },
    {
      "id": "tests/1.0/ordered/common-terminal-404-entry",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-terminal-404-entry",
      "title": "terminal 404 entry",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-terminal-404-entry.json"
    },
    {
      "id": "tests/1.0/ordered/common-terminal-501-child",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-terminal-501-child",
      "title": "terminal 501 child",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-terminal-501-child.json"
    },
    {
      "id": "tests/1.0/ordered/common-terminal-501-entry",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-terminal-501-entry",
      "title": "terminal 501 entry",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-terminal-501-entry.json"
    },
    {
      "id": "tests/1.0/ordered/common-terminal-505-child",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-terminal-505-child",
      "title": "terminal 505 child",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-terminal-505-child.json"
    },
    {
      "id": "tests/1.0/ordered/common-terminal-505-entry",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-common-terminal-505-entry",
      "title": "terminal 505 entry",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-047",
      "requirements": [
        "LDES10-UNORD-047"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__common-terminal-505-entry.json"
    },
    {
      "id": "tests/1.0/ordered/equal-values-finalizer",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-equal-values-finalizer",
      "title": "Transaction-finalizing member is emitted last for equal order values",
      "description": "Members with the same ordering value are emitted with the finalizing member last.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-016",
      "requirements": [
        "LDES10-ORD-016"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__equal-values-finalizer.json"
    },
    {
      "id": "tests/1.0/ordered/finalizer-across-pages",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-finalizer-across-pages",
      "title": "finalizer across pages",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-016",
      "requirements": [
        "LDES10-ORD-016"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__finalizer-across-pages.json"
    },
    {
      "id": "tests/1.0/ordered/global-order",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-global-order",
      "title": "Ordered traversal emits a global ascending sequence and finalizes equal-value transactions last",
      "description": "Fetch order is deliberately different from member order and relation targets contain competing bounds.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-001",
      "requirements": [
        "LDES10-ORD-001",
        "LDES10-ORD-004",
        "LDES10-ORD-005",
        "LDES10-ORD-006",
        "LDES10-ORD-008",
        "LDES10-ORD-016"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__global-order.json"
    },
    {
      "id": "tests/1.0/ordered/mismatched-relation-path",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-mismatched-relation-path",
      "title": "Ordered traversal treats mismatched relation paths conservatively",
      "description": "A relation uses a path that differs from ldes:sequencePath; the client must not use it to skip reachable members.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-014",
      "requirements": [
        "LDES10-ORD-014"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__mismatched-relation-path.json"
    },
    {
      "id": "tests/1.0/ordered/missing-path",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-missing-path",
      "title": "Ordered traversal rejects an event stream without ordering metadata",
      "description": "The fixture requests ordered traversal but omits timestamp and sequence path metadata; the client must not claim ordered output without a usable ordering path.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-008",
      "requirements": [
        "LDES10-ORD-008",
        "LDES10-ORD-009"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__missing-path.json"
    },
    {
      "id": "tests/1.0/ordered/multiple-relations-and",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-multiple-relations-and",
      "title": "Ordered traversal handles multiple relation constraints",
      "description": "Multiple relations from one node are traversed without losing members covered by any reachable target.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-013",
      "requirements": [
        "LDES10-ORD-013"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__multiple-relations-and.json"
    },
    {
      "id": "tests/1.0/ordered/relation-greater-than",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-relation-greater-than",
      "title": "Ordered traversal handles tree:GreaterThanRelation",
      "description": "A lower-bound relation points to a fragment with a later ordering value.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-004",
      "requirements": [
        "LDES10-ORD-004",
        "LDES10-ORD-006"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__relation-greater-than.json"
    },
    {
      "id": "tests/1.0/ordered/relation-greater-than-or-equal",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-relation-greater-than-or-equal",
      "title": "Ordered traversal handles tree:GreaterThanOrEqualToRelation",
      "description": "An inclusive lower-bound relation points to a fragment with an equal ordering value.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-004",
      "requirements": [
        "LDES10-ORD-004",
        "LDES10-ORD-006"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__relation-greater-than-or-equal.json"
    },
    {
      "id": "tests/1.0/ordered/relation-less-than",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-relation-less-than",
      "title": "Ordered traversal handles tree:LessThanRelation",
      "description": "A less-than relation points to a fragment with an earlier ordering value.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-004",
      "requirements": [
        "LDES10-ORD-004",
        "LDES10-ORD-006"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__relation-less-than.json"
    },
    {
      "id": "tests/1.0/ordered/relation-less-than-or-equal",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-relation-less-than-or-equal",
      "title": "Ordered traversal handles tree:LessThanOrEqualToRelation",
      "description": "An inclusive upper-bound relation points to a fragment with an equal ordering value.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-004",
      "requirements": [
        "LDES10-ORD-004",
        "LDES10-ORD-006"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__relation-less-than-or-equal.json"
    },
    {
      "id": "tests/1.0/ordered/restart-bookmark",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-restart-bookmark",
      "title": "Ordered traversal restart does not duplicate emitted members",
      "description": "A second ordered run with persistent state emits only newly discovered members.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-019",
      "requirements": [
        "LDES10-UNORD-019",
        "LDES10-UNORD-024"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__restart-bookmark.json"
    },
    {
      "id": "tests/1.0/ordered/restart-equal-key",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-restart-equal-key",
      "title": "restart equal key",
      "group": "OrderedTraversal",
      "requirement": "LDES10-UNORD-019",
      "requirements": [
        "LDES10-UNORD-019",
        "LDES10-UNORD-024"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__restart-equal-key.json"
    },
    {
      "id": "tests/1.0/ordered/shacl-alternative-path",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-shacl-alternative-path",
      "title": "Ordered traversal evaluates sh:alternativePath",
      "description": "The LDES ordering path may be a SHACL alternative path rather than a direct predicate or sequence path.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006",
        "LDES10-ORD-007"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__shacl-alternative-path.json"
    },
    {
      "id": "tests/1.0/ordered/shacl-inverse-path",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-shacl-inverse-path",
      "title": "Ordered traversal evaluates an inverse SHACL path",
      "description": "The ordering value is reached through sh:inversePath; member IRIs are adversarial to expose fallback ordering.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006",
        "LDES10-ORD-007"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__shacl-inverse-path.json"
    },
    {
      "id": "tests/1.0/ordered/shacl-nested-path",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-shacl-nested-path",
      "title": "Ordered traversal evaluates nested SHACL paths",
      "description": "A sequence path contains an inverse path before the final ordering predicate.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006",
        "LDES10-ORD-007"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__shacl-nested-path.json"
    },
    {
      "id": "tests/1.0/ordered/shacl-one-or-more-path",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-shacl-one-or-more-path",
      "title": "Ordered traversal evaluates a one-or-more SHACL path",
      "description": "A sequence path uses sh:oneOrMorePath to reach the ordering literal.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006",
        "LDES10-ORD-007"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__shacl-one-or-more-path.json"
    },
    {
      "id": "tests/1.0/ordered/shacl-path",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-shacl-path",
      "title": "Ordered traversal evaluates a SHACL sequence path",
      "description": "Members carry ordering values through a SHACL property path rather than a direct predicate; ordered traversal must evaluate the path and emit members by ascending sequence value.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006",
        "LDES10-ORD-007"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__shacl-path.json"
    },
    {
      "id": "tests/1.0/ordered/shacl-zero-length-and-cycle",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-shacl-zero-length-and-cycle",
      "title": "shacl zero length and cycle",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-007",
      "requirements": [
        "LDES10-ORD-007"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__shacl-zero-length-and-cycle.json"
    },
    {
      "id": "tests/1.0/ordered/shacl-zero-or-more-path",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-shacl-zero-or-more-path",
      "title": "Ordered traversal evaluates a zero-or-more SHACL path",
      "description": "A sequence path uses sh:zeroOrMorePath to reach the ordering literal.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006",
        "LDES10-ORD-007"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__shacl-zero-or-more-path.json"
    },
    {
      "id": "tests/1.0/ordered/shacl-zero-or-one-path",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-shacl-zero-or-one-path",
      "title": "Ordered traversal evaluates a zero-or-one SHACL path",
      "description": "One ordering value uses the zero-length branch and another uses the one-step branch.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006",
        "LDES10-ORD-007"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__shacl-zero-or-one-path.json"
    },
    {
      "id": "tests/1.0/ordered/timestamp-only",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-timestamp-only",
      "title": "Ordered traversal supports ldes:timestampPath without ldes:sequencePath",
      "description": "Ordered mode is valid when only ldes:timestampPath is present; members must be emitted chronologically.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-001",
      "requirements": [
        "LDES10-ORD-001",
        "LDES10-ORD-006",
        "LDES10-CTX-010"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__timestamp-only.json"
    },
    {
      "id": "tests/1.0/ordered/timestamp-sequence-tie-break",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-timestamp-sequence-tie-break",
      "title": "Ordered traversal uses ldes:sequencePath as timestamp tie-breaker",
      "description": "When both timestamp and sequence paths are present, timestamp determines chronological order and sequence orders equal-timestamp members.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-001",
      "requirements": [
        "LDES10-ORD-001",
        "LDES10-ORD-006",
        "LDES10-CTX-010"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__timestamp-sequence-tie-break.json"
    },
    {
      "id": "tests/1.0/ordered/timestamp-shacl-sequence-path",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-timestamp-shacl-sequence-path",
      "title": "Ordered traversal evaluates a SHACL sequence timestamp path",
      "description": "The timestamp is reached through a multi-step SHACL property path, and member IRIs are deliberately ordered opposite to chronology.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006",
        "LDES10-ORD-007",
        "LDES10-CTX-010"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__timestamp-shacl-sequence-path.json"
    },
    {
      "id": "tests/1.0/ordered/transaction-finalized-object",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-transaction-finalized-object",
      "title": "Ordered traversal honors ldes:transactionFinalizedObject",
      "description": "A finalizing member with a custom finalized object must be emitted last among equal-order transaction members.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-016",
      "requirements": [
        "LDES10-ORD-016"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__transaction-finalized-object.json"
    },
    {
      "id": "tests/1.0/ordered/typed-mixed-datatypes",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-typed-mixed-datatypes",
      "title": "Ordered traversal compares one ordering path across numeric datatypes",
      "description": "A single ldes:sequencePath carries xsd:integer, xsd:decimal, xsd:long and xsd:double values. Members are ordered by numeric value, not by the representation of the parsed value, and member IDs run opposite to the value order so an ID fallback cannot satisfy the oracle.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006",
        "LDES10-CTX-010"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__typed-mixed-datatypes.json"
    },
    {
      "id": "tests/1.0/ordered/typed-numeric-order",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-typed-numeric-order",
      "title": "exact integer and decimal order",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__typed-numeric-order.json"
    },
    {
      "id": "tests/1.0/ordered/typed-timestamp-timezones",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-typed-timestamp-timezones",
      "title": "Ordered traversal compares xsd:dateTime values as instants",
      "description": "Timestamps written with different UTC offsets are compared as instants rather than as strings. Two members carrying the same instant in different offsets form a declared ordering tie whose internal order is unconstrained, while a member whose lexical form sorts early but whose instant is latest must be emitted last.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006",
        "LDES10-CTX-010"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__typed-timestamp-timezones.json"
    },
    {
      "id": "tests/1.0/ordered/unsupported-relation",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-unsupported-relation",
      "title": "Unknown TREE relation types are handled conservatively",
      "description": "An unknown relation type must not cause silent member loss.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-004",
      "requirements": [
        "LDES10-ORD-004",
        "LDES10-UNORD-051"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__unsupported-relation.json"
    },
    {
      "id": "tests/1.0/ordered/xpath-string-order",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#ordered-xpath-string-order",
      "title": "Sequence literals use XPath comparison semantics",
      "description": "The xsd:string values '10' and '2' must be compared as strings, not coerced to numbers; member IRIs are adversarial to the required order.",
      "group": "OrderedTraversal",
      "requirement": "LDES10-ORD-006",
      "requirements": [
        "LDES10-ORD-006",
        "LDES10-CTX-010"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "inapplicable",
      "diagnostics": [
        "scenario runs require ordered mode; adapter declares unordered"
      ],
      "evidence": "evidence/tests__1.0__ordered__xpath-string-order.json"
    },
    {
      "id": "tests/1.0/unordered/cache-state",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-cache-state",
      "title": "Immutable nodes are skipped and mutable ETags are revalidated",
      "description": "Across repeated synchronization runs, RDF-immutable and Cache-Control immutable nodes must not be refetched, while the mutable node must be revalidated with its ETag.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-020",
      "requirements": [
        "LDES10-UNORD-020",
        "LDES10-UNORD-021",
        "LDES10-UNORD-022",
        "LDES10-UNORD-023",
        "LDES10-UNORD-027",
        "LDES10-UNORD-035",
        "LDES10-UNORD-037"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "failed",
      "diagnostics": [
        "event 4: expected type run-end, got error",
        "request repeat:/rdf-immutable: expected count 0, got 1",
        "request repeat:/mutable: expected if-none-match: \"mutable-v1\", got <absent>"
      ],
      "evidence": "evidence/tests__1.0__unordered__cache-state.json"
    },
    {
      "id": "tests/1.0/unordered/duplicate-member-pages",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-duplicate-member-pages",
      "title": "A member discovered concurrently on multiple pages is emitted once",
      "description": "Two delayed sibling nodes contain the same member IRI and dataset and are fetched concurrently when the adapter supports it; the client must emit exactly one member event for that IRI.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-019",
      "requirements": [
        "LDES10-UNORD-019"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 2 observable events, got 3",
        "event 1: expected type run-end, got member"
      ],
      "evidence": "evidence/tests__1.0__unordered__duplicate-member-pages.json"
    },
    {
      "id": "tests/1.0/unordered/etag-update",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-etag-update",
      "title": "A changed ETag replaces the stored validator, and a 304 preserves the node frontier",
      "description": "The root node's ETag changes from \"v1\" to \"v2\" on a revalidated response. A later run receives 304 only when it presents the updated validator, so a client that replays the stale ETag is observable in the request log. In the same run an intermediate node answers 304, and the client must still follow that node's saved outgoing relation to reach a member added on its child rather than discarding the frontier with the unchanged node.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-027",
      "requirements": [
        "LDES10-UNORD-027",
        "LDES10-UNORD-037"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "failed",
      "diagnostics": [
        "request second:/mid: expected count at least 1, got 0",
        "request third:/root: expected count at least 1, got 0"
      ],
      "evidence": "evidence/tests__1.0__unordered__etag-update.json"
    },
    {
      "id": "tests/1.0/unordered/immediate-emission",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-immediate-emission",
      "title": "immediate emission",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-048",
      "requirements": [
        "LDES10-UNORD-048"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__unordered__immediate-emission.json"
    },
    {
      "id": "tests/1.0/unordered/immutable-parent-mutable-child",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-immutable-parent-mutable-child",
      "title": "immutable parent mutable child",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-024",
      "requirements": [
        "LDES10-UNORD-024",
        "LDES10-UNORD-023"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "failed",
      "diagnostics": [
        "expected 4 observable events, got 3",
        "event 2: missing matching member in permitted member block",
        "request second:/root: expected count 0, got 1",
        "request second:/child: expected count at least 1, got 0"
      ],
      "evidence": "evidence/tests__1.0__unordered__immutable-parent-mutable-child.json"
    },
    {
      "id": "tests/1.0/unordered/immutable-root-restart",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-immutable-root-restart",
      "title": "An immutable root is reused when resuming",
      "description": "After the initial run persists root context and state, a later synchronization run must communicate the same context and continue without fetching the RDF-immutable root again.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-CTX-001",
      "requirements": [
        "LDES10-CTX-001",
        "LDES10-UNORD-018",
        "LDES10-UNORD-023",
        "LDES10-UNORD-024"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "failed",
      "diagnostics": [
        "expected 5 observable events, got 3",
        "event 0: expected type context, got member",
        "event 1: missing matching member in permitted member block",
        "event 2: expected type run-end, got error",
        "request initial:/root: expected count 1, got 2",
        "request repeat:/root: expected count 0, got 1"
      ],
      "evidence": "evidence/tests__1.0__unordered__immutable-root-restart.json"
    },
    {
      "id": "tests/1.0/unordered/jsonld-context-cache",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-jsonld-context-cache",
      "title": "jsonld context cache",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-033",
      "requirements": [
        "LDES10-UNORD-033"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: missing matching member in permitted member block",
        "event 1: missing matching member in permitted member block",
        "request /context: expected count 1, got 0"
      ],
      "evidence": "evidence/tests__1.0__unordered__jsonld-context-cache.json"
    },
    {
      "id": "tests/1.0/unordered/mutable-sync",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-mutable-sync",
      "title": "A later synchronization run emits only newly discovered members",
      "description": "The same client state is reused for a second synchronization run after the server adds a frontier member; the client must not re-emit the old member and must emit the new one.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-018",
      "requirements": [
        "LDES10-UNORD-018",
        "LDES10-UNORD-019",
        "LDES10-UNORD-024",
        "LDES10-UNORD-025"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__unordered__mutable-sync.json"
    },
    {
      "id": "tests/1.0/unordered/polling-interval-scheduling",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-polling-interval-scheduling",
      "title": "Advertised polling interval controls synchronization",
      "description": "A follow-mode client observes ldes:pollingInterval in seconds instead of using a faster implementation default.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-004",
      "requirements": [
        "LDES10-UNORD-004",
        "LDES10-UNORD-005"
      ],
      "requiredCapabilities": [
        "Polling"
      ],
      "requirementLevel": "Should",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not declare autonomous polling"
      ],
      "evidence": "evidence/tests__1.0__unordered__polling-interval-scheduling.json"
    },
    {
      "id": "tests/1.0/unordered/polling-interval-update",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-polling-interval-update",
      "title": "The advertised ldes:pollingInterval drives the interval between runs, and a changed value is picked up",
      "description": "The same view is served over two equal-length follow windows advertising ldes:pollingInterval 1 and then 2. Both the request count and the gap between consecutive polls are checked per phase with tolerance, so a client that ignores the advertised value and polls on a hard-coded interval fails at least one phase whichever interval it hard-codes. The oracle constrains the gap from below and the count from above rather than pinning exact timestamps.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-004",
      "requirements": [
        "LDES10-UNORD-004",
        "LDES10-UNORD-005"
      ],
      "requiredCapabilities": [
        "Polling"
      ],
      "requirementLevel": "Should",
      "outcome": "inapplicable",
      "diagnostics": [
        "adapter does not declare autonomous polling"
      ],
      "evidence": "evidence/tests__1.0__unordered__polling-interval-update.json"
    },
    {
      "id": "tests/1.0/unordered/rdf-immutable",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-rdf-immutable",
      "title": "RDF ldes:immutable prevents a second node fetch",
      "description": "The node is immutable only through RDF metadata, without a Cache-Control immutable directive.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-020",
      "requirements": [
        "LDES10-UNORD-020",
        "LDES10-UNORD-021",
        "LDES10-UNORD-023"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "failed",
      "diagnostics": [
        "event 2: expected type run-end, got error",
        "request repeat:/immutable: expected count 0, got 1"
      ],
      "evidence": "evidence/tests__1.0__unordered__rdf-immutable.json"
    },
    {
      "id": "tests/1.0/unordered/rebalancing",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-rebalancing",
      "title": "Redirected and gone pages do not cause loss or duplicate emission during rebalancing",
      "description": "The server first publishes one member, then rebalances the page through redirect and 410 Gone responses; the client must retain state, avoid duplicate emission, and still discover the new member.",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-019",
      "requirements": [
        "LDES10-UNORD-019",
        "LDES10-UNORD-036",
        "LDES10-UNORD-046"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 5 observable events, got 6",
        "event 3: expected type run-end, got member",
        "event 4: expected runId run-3, got run-2"
      ],
      "evidence": "evidence/tests__1.0__unordered__rebalancing.json"
    },
    {
      "id": "tests/1.0/unordered/relation-targets-and-scope",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-relation-targets-and-scope",
      "title": "relation targets and scope",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-049",
      "requirements": [
        "LDES10-UNORD-049",
        "LDES10-UNORD-050",
        "LDES10-UNORD-051"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Must",
      "outcome": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: missing matching member in permitted member block",
        "event 1: missing matching member in permitted member block",
        "request /sentinel: expected count 0, got 1",
        "request /a: expected count at least 1, got 0",
        "request /b: expected count at least 1, got 0"
      ],
      "evidence": "evidence/tests__1.0__unordered__relation-targets-and-scope.json"
    },
    {
      "id": "tests/1.0/unordered/root-304-resume",
      "iri": "https://www.pieter.pm/ldes-client-conformance-test-suite/1.0#unordered-root-304-resume",
      "title": "root 304 resume",
      "group": "UnorderedTraversal",
      "requirement": "LDES10-UNORD-024",
      "requirements": [
        "LDES10-UNORD-024",
        "LDES10-UNORD-037"
      ],
      "requiredCapabilities": [],
      "requirementLevel": "Should",
      "outcome": "failed",
      "diagnostics": [
        "request second:/root: expected if-none-match: \"root\", got <absent>"
      ],
      "evidence": "evidence/tests__1.0__unordered__root-304-resume.json"
    }
  ]
}
