{
  "metadata": {
    "generatedAt": "2026-10-16T10:18:38.540Z",
    "suiteVersion": "0.1.0",
    "adapter": {
      "protocolVersion": 0,
      "id": "rdf-connect",
      "name": "LDES conformance adapter for rdf-connect",
      "revision": "1",
      "client": {
        "id": "rdf-connect-ldes-client",
        "name": "rdf-connect/ldes-client",
        "homepage": "https://github.com/rdf-connect/ldes-client",
        "version": "0.3.3",
        "revision": "main"
      },
      "command": [
        "node",
        "adapters/rdf-connect/adapter.mjs"
      ],
      "timeoutMs": 45000,
      "capabilities": {
        "modes": [
          "unordered",
          "ordered"
        ],
        "memberExtraction": true,
        "context": true,
        "persistentState": true,
        "polling": true
      }
    },
    "probe": {
      "protocolVersion": 0,
      "available": true,
      "adapterId": "rdf-connect",
      "clientVersion": "0.3.3",
      "clientRevision": "4ae7fe24571352668cf71b9253011614e37e9c94",
      "capabilities": {
        "modes": [
          "unordered",
          "ordered"
        ],
        "memberExtraction": true,
        "context": true,
        "persistentState": true,
        "polling": true
      }
    }
  },
  "total": 114,
  "counts": {
    "failed": 75,
    "passed": 36,
    "inapplicable": 3,
    "cantTell": 0,
    "untested": 0
  },
  "groupClaims": [
    {
      "group": "UnorderedTraversal",
      "outcome": "failed",
      "mandatoryTests": 25,
      "applicableMandatoryTests": 25,
      "passedMandatoryTests": 13,
      "diagnostics": []
    },
    {
      "group": "MemberExtraction",
      "outcome": "failed",
      "mandatoryTests": 13,
      "applicableMandatoryTests": 13,
      "passedMandatoryTests": 10,
      "diagnostics": []
    },
    {
      "group": "OrderedTraversal",
      "outcome": "failed",
      "mandatoryTests": 44,
      "applicableMandatoryTests": 44,
      "passedMandatoryTests": 9,
      "diagnostics": []
    },
    {
      "group": "ContextInformation",
      "outcome": "failed",
      "mandatoryTests": 12,
      "applicableMandatoryTests": 12,
      "passedMandatoryTests": 0,
      "diagnostics": []
    }
  ],
  "coverage": {
    "totalRequirements": 100,
    "requirementsVerified": 41,
    "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": "failed",
      "diagnostics": [
        "event 0: expected retentionPolicies=[\"{{raw}}responses/root.ttl#vocab/direct-policy\",\"{{raw}}responses/root.ttl#vocab/service-policy\"], got undefined",
        "event 0: expected emptyRetentionPolicies=[], got undefined",
        "event 0: expected dataset, got none"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected retentionPolicies=[\"{{raw}}responses/root.ttl#vocab/empty-policy\"], got undefined",
        "event 0: expected emptyRetentionPolicies=[\"{{raw}}responses/root.ttl#vocab/empty-policy\"], got undefined"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected pollingInterval=45, got undefined"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected dataset, got none"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected viewDescriptions=[\"{{raw}}responses/root.ttl#vocab/service\"], got undefined",
        "event 0: expected dataset, got none"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected retentionPolicies=[\"{{raw}}responses/root.ttl#vocab/direct-policy\"], got undefined"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected viewDescriptions=[\"{{raw}}responses/root.ttl#vocab/service\"], got undefined",
        "event 0: expected retentionPolicies=[\"{{raw}}responses/root.ttl#vocab/view-policy\"], got undefined"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected rootNode=\"{{origin}}/root\", got undefined"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected shapes=[\"{{raw}}responses/root.ttl#vocab/ShapeA\",\"{{raw}}responses/root.ttl#vocab/ShapeB\"], got undefined",
        "event 0: expected viewDescriptions=[\"{{raw}}responses/root.ttl#vocab/service\"], got undefined",
        "event 0: expected retentionPolicies=[\"{{raw}}responses/root.ttl#vocab/direct-policy\",\"{{raw}}responses/root.ttl#vocab/service-policy\"], got undefined",
        "event 0: expected versionTimestampPath=\"{{raw}}responses/root.ttl#vocab/modified\", got undefined",
        "event 0: expected versionSequencePath=\"{{raw}}responses/root.ttl#vocab/version\", got undefined",
        "event 0: expected dataset, got none"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected shapes=[\"{{raw}}responses/root.ttl#vocab/ShapeA\",\"{{raw}}responses/root.ttl#vocab/ShapeB\",\"{{raw}}responses/root.ttl#vocab/ShapeC\"], got undefined"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected versionTimestampPath=\"{{raw}}responses/root.ttl#vocab/modified\", got undefined",
        "event 0: expected versionSequencePath=\"{{raw}}responses/root.ttl#vocab/version\", got undefined"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected dataset, got none"
      ],
      "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-a: expected count 0, got 2"
      ],
      "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 /root: expected count 1, got 3"
      ],
      "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": [
        "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": "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": "failed",
      "diagnostics": [
        "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": "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 4 observable events, got 2",
        "event 0: expected type member, got error",
        "event 1: expected type run-end, got error",
        "request second:/root: expected count 0, got 1",
        "request second:/child: expected count at least 1, got 0"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error",
        "request /a: expected count at least 1, got 0",
        "request /b: expected count at least 1, got 0"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: expected type member, got error",
        "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__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": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: expected type member, got error",
        "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__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": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: expected type member, got error",
        "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__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": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: expected type member, got error",
        "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__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": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: expected type member, got error",
        "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__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": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: expected type member, got error",
        "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__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": "failed",
      "diagnostics": [
        "expected 2 observable events, got 1",
        "event 0: expected type member, got error",
        "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__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": "failed",
      "diagnostics": [
        "expected 4 observable events, got 2",
        "event 0: expected type member, got error",
        "event 1: expected type run-end, got error",
        "request second:/root: expected if-none-match: \"root\", got <absent>",
        "request second:/root: expected if-none-match: \"root\", got <absent>",
        "request second:/child: expected count at least 1, got 0"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected shapes=[\"{{raw}}responses/root.ttl#vocab/ShapeA\",\"{{raw}}responses/root.ttl#vocab/ShapeB\"], got undefined",
        "event 0: expected viewDescriptions=[\"{{raw}}responses/root.ttl#vocab/service\"], got undefined",
        "event 0: expected retentionPolicies=[\"{{raw}}responses/root.ttl#vocab/direct-policy\",\"{{raw}}responses/root.ttl#vocab/service-policy\"], got undefined",
        "event 0: expected versionTimestampPath=\"{{raw}}responses/root.ttl#vocab/modified\", got undefined",
        "event 0: expected versionSequencePath=\"{{raw}}responses/root.ttl#vocab/version\", got undefined",
        "event 0: expected dataset, got none"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 10 observable events, got 5",
        "event 0: expected type member, got error",
        "event 1: expected type run-end, got error",
        "event 2: expected type member, got error",
        "event 3: expected type run-end, got error",
        "event 4: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 5 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 4 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "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"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "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"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 4 observable events, got 2",
        "event 0: expected type member, got error",
        "event 1: expected type run-end, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 5 observable events, got 2",
        "event 0: expected type member, got error",
        "event 1: expected type run-end, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected member {{raw}}responses/root.ttl#member/z-early-one, got https://raw.githubusercontent.com/pietercolpaert/ldes-client-conformance-test-suite/main/tests/1.0/ordered/timestamp-sequence-tie-break/responses/root.ttl#member/a-early-two",
        "event 0: member dataset did not match early-one.nq",
        "event 1: expected member {{raw}}responses/root.ttl#member/a-early-two, got https://raw.githubusercontent.com/pietercolpaert/ldes-client-conformance-test-suite/main/tests/1.0/ordered/timestamp-sequence-tie-break/responses/root.ttl#member/z-early-one",
        "event 1: member dataset did not match early-two.nq"
      ],
      "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": "failed",
      "diagnostics": [
        "event 0: expected member {{raw}}responses/root.ttl#member/z-early, got https://raw.githubusercontent.com/pietercolpaert/ldes-client-conformance-test-suite/main/tests/1.0/ordered/timestamp-shacl-sequence-path/responses/root.ttl#member/a-late",
        "event 0: member dataset did not match early.nq",
        "event 1: expected member {{raw}}responses/root.ttl#member/a-late, got https://raw.githubusercontent.com/pietercolpaert/ldes-client-conformance-test-suite/main/tests/1.0/ordered/timestamp-shacl-sequence-path/responses/root.ttl#member/z-early",
        "event 1: member dataset did not match late.nq"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 5 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 7 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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": "failed",
      "diagnostics": [
        "expected 3 observable events, got 1",
        "event 0: expected type member, got error"
      ],
      "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:/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": "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": "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 4",
        "event 0: expected rootNode=\"{{origin}}/root\", got undefined",
        "event 3: expected type context, got error",
        "request initial:/root: expected count 1, got 3",
        "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": "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": "failed",
      "diagnostics": [
        "request /root: expected count 2, got 10"
      ],
      "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": "failed",
      "diagnostics": [
        "request slow:/root: expected count 2, got 14",
        "request timing fast:/root: request 2 followed request 1 after 18ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 3 followed request 2 after 15ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 4 followed request 3 after 208ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 5 followed request 4 after 204ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 6 followed request 5 after 204ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 7 followed request 6 after 203ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 8 followed request 7 after 204ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 9 followed request 8 after 204ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 10 followed request 9 after 207ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 11 followed request 10 after 204ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 12 followed request 11 after 203ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 13 followed request 12 after 203ms, expected at least 800ms between consecutive requests",
        "request timing fast:/root: request 14 followed request 13 after 204ms, expected at least 800ms between consecutive requests",
        "request timing slow:/root: request 2 followed request 1 after 18ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 3 followed request 2 after 16ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 4 followed request 3 after 208ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 5 followed request 4 after 204ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 6 followed request 5 after 204ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 7 followed request 6 after 203ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 8 followed request 7 after 204ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 9 followed request 8 after 204ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 10 followed request 9 after 205ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 11 followed request 10 after 204ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 12 followed request 11 after 206ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 13 followed request 12 after 202ms, expected at least 1700ms between consecutive requests",
        "request timing slow:/root: request 14 followed request 13 after 204ms, expected at least 1700ms between consecutive requests"
      ],
      "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": [
        "event 4: expected type run-end, got error"
      ],
      "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 2",
        "event 1: missing matching member in permitted member block",
        "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>",
        "request second:/root: expected if-none-match: \"root\", got <absent>",
        "request second:/root: expected if-none-match: \"root\", got <absent>"
      ],
      "evidence": "evidence/tests__1.0__unordered__root-304-resume.json"
    }
  ]
}
