{
  "metadata": {
    "generatedAt": "2026-10-16T10:18:44.161Z",
    "suiteVersion": "0.1.0",
    "adapter": {
      "protocolVersion": 0,
      "id": "europeana",
      "name": "LDES conformance adapter for Europeana",
      "revision": "1",
      "client": {
        "id": "europeana-rd-ldes-client",
        "name": "europeana/rd-ldes-client",
        "homepage": "https://github.com/europeana/rd-ldes-client",
        "version": "0.1-SNAPSHOT",
        "revision": "main"
      },
      "command": [
        "node",
        "adapters/europeana/adapter.mjs"
      ],
      "timeoutMs": 45000,
      "capabilities": {
        "modes": [
          "ordered",
          "unordered"
        ],
        "memberExtraction": true,
        "context": true,
        "persistentState": true
      }
    },
    "probe": {
      "protocolVersion": 0,
      "available": true,
      "adapterId": "europeana",
      "clientVersion": "0.1-SNAPSHOT",
      "clientRevision": "9cc345a8a7da089d08732f40abba0dd05db853a4",
      "capabilities": {
        "modes": [
          "ordered",
          "unordered"
        ],
        "memberExtraction": true,
        "context": true,
        "persistentState": true
      }
    }
  },
  "total": 114,
  "counts": {
    "passed": 109,
    "inapplicable": 5,
    "failed": 0,
    "cantTell": 0,
    "untested": 0
  },
  "groupClaims": [
    {
      "group": "UnorderedTraversal",
      "outcome": "passed",
      "mandatoryTests": 25,
      "applicableMandatoryTests": 25,
      "passedMandatoryTests": 25,
      "diagnostics": []
    },
    {
      "group": "MemberExtraction",
      "outcome": "passed",
      "mandatoryTests": 13,
      "applicableMandatoryTests": 13,
      "passedMandatoryTests": 13,
      "diagnostics": []
    },
    {
      "group": "OrderedTraversal",
      "outcome": "passed",
      "mandatoryTests": 44,
      "applicableMandatoryTests": 44,
      "passedMandatoryTests": 44,
      "diagnostics": []
    },
    {
      "group": "ContextInformation",
      "outcome": "passed",
      "mandatoryTests": 12,
      "applicableMandatoryTests": 12,
      "passedMandatoryTests": 12,
      "diagnostics": []
    }
  ],
  "coverage": {
    "totalRequirements": 100,
    "requirementsVerified": 76,
    "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "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": "passed",
      "diagnostics": [],
      "evidence": "evidence/tests__1.0__unordered__root-304-resume.json"
    }
  ]
}
