{
  "specification": "https://semiceu.github.io/LinkedDataEventStreams/releases/1.0.0/",
  "generatedAt": "2026-10-16T10:21:02.799Z",
  "totals": {
    "requirements": 100,
    "verified": 76,
    "mappedNotVerified": 2,
    "advisoryEvidenceOnly": 0,
    "withTests": 78,
    "withRationales": 21,
    "rationalesByClassification": {
      "boundary": 11,
      "optional": 7,
      "manual": 3,
      "deferred": 0
    },
    "blockingGaps": 0
  },
  "requirements": [
    {
      "id": "LDES10-UNORD-001",
      "source": "3",
      "level": "MAY",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Capability metadata",
      "obligation": "A client can expose more than one operating mode.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "optional",
        "rationale": "Multiple modes are optional extension capability metadata and do not affect a baseline conformance claim."
      }
    },
    {
      "id": "LDES10-UNORD-002",
      "source": "3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via probe",
      "obligation": "A client has at least unordered traversal or ordered ascending traversal.",
      "tests": [
        "tests/1.0/discovery/root-entrypoint"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/root-entrypoint"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-003",
      "source": "3",
      "level": "MAY",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Informational",
      "obligation": "A client can expose modes beyond the two modes defined by LDES 1.0.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "optional",
        "rationale": "Modes beyond unordered and ordered ascending are explicitly extension space."
      }
    },
    {
      "id": "LDES10-ORD-001",
      "source": "3",
      "level": "Algorithm detail",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Applicability check",
      "obligation": "Ordered traversal only applies when `ldes:timestampPath`, `ldes:sequencePath`, or both are present.",
      "tests": [
        "tests/1.0/ordered/global-order",
        "tests/1.0/ordered/timestamp-only",
        "tests/1.0/ordered/timestamp-sequence-tie-break"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/global-order",
          "tests/1.0/ordered/timestamp-only",
          "tests/1.0/ordered/timestamp-sequence-tie-break"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-004",
      "source": "3",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic with virtual time",
      "obligation": "A client checks for `ldes:pollingInterval` on the LDES.",
      "tests": [
        "tests/1.0/context/root-context",
        "tests/1.0/ordered/common-root-context",
        "tests/1.0/unordered/polling-interval-scheduling",
        "tests/1.0/unordered/polling-interval-update"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/root-context",
          "tests/1.0/ordered/common-root-context"
        ],
        "inapplicable": [
          "tests/1.0/unordered/polling-interval-scheduling",
          "tests/1.0/unordered/polling-interval-update"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-005",
      "source": "3",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic with virtual time",
      "obligation": "If `ldes:pollingInterval` is present, the client uses that integer as the interval between synchronization runs.",
      "tests": [
        "tests/1.0/unordered/polling-interval-scheduling",
        "tests/1.0/unordered/polling-interval-update"
      ],
      "status": "mapped",
      "evidence": {
        "inapplicable": [
          "tests/1.0/unordered/polling-interval-scheduling",
          "tests/1.0/unordered/polling-interval-update"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-006",
      "source": "3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Partially automatic",
      "obligation": "A client exposes a signal that a synchronization run has finished.",
      "tests": [
        "tests/1.0/discovery/root-entrypoint"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/root-entrypoint"
        ]
      }
    },
    {
      "id": "LDES10-PIPE-001",
      "source": "3",
      "level": "SHOULD",
      "subject": "Consumer pipeline",
      "group": "Context information",
      "testability": "Manual or harness-level",
      "obligation": "A non-ordered pipeline waits for the run-finalization signal before committing emitted members.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "boundary",
        "rationale": "This constrains a downstream consumer pipeline, not the traversal client; run-finalization signaling is tested separately."
      }
    },
    {
      "id": "LDES10-UNORD-007",
      "source": "3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "The only required input argument is an IRI.",
      "tests": [
        "tests/1.0/discovery/root-entrypoint"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/root-entrypoint"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-008",
      "source": "3",
      "level": "Algorithm detail",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "The supplied IRI can identify an event stream, a root node, a redirect to the root, or an overview page with one `tree:view`.",
      "tests": [
        "tests/1.0/discovery/overview-entrypoint",
        "tests/1.0/discovery/redirect-entrypoint",
        "tests/1.0/discovery/root-entrypoint"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/overview-entrypoint",
          "tests/1.0/discovery/redirect-entrypoint",
          "tests/1.0/discovery/root-entrypoint"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-009",
      "source": "3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "Without previous state, the client performs an initialization run.",
      "tests": [
        "tests/1.0/discovery/root-entrypoint"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/root-entrypoint"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-010",
      "source": "3.1",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic from request log",
      "obligation": "The client dereferences the supplied IRI.",
      "tests": [
        "tests/1.0/discovery/root-entrypoint"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/root-entrypoint"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-011",
      "source": "3.1",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "After dereferencing, the client first checks for exactly one current-page `tree:view` pattern using the post-redirect base IRI.",
      "tests": [
        "tests/1.0/discovery/current-page-precedence",
        "tests/1.0/discovery/redirect-entrypoint",
        "tests/1.0/discovery/root-entrypoint"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/current-page-precedence",
          "tests/1.0/discovery/redirect-entrypoint",
          "tests/1.0/discovery/root-entrypoint"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-012",
      "source": "3.1",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic negative case",
      "obligation": "If the current-page `tree:view` pattern matches multiple times, the client reports an error.",
      "tests": [
        "tests/1.0/discovery/ambiguous-view"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/ambiguous-view"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-013",
      "source": "3.1",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "If the current-page pattern is absent, the client checks whether the supplied IRI has exactly one `tree:view` target.",
      "tests": [
        "tests/1.0/discovery/current-page-precedence",
        "tests/1.0/discovery/overview-entrypoint"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/current-page-precedence",
          "tests/1.0/discovery/overview-entrypoint"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-014",
      "source": "3.1",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic from request log",
      "obligation": "When the supplied IRI has one `tree:view` target, the client dereferences that root node.",
      "tests": [
        "tests/1.0/discovery/overview-entrypoint"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/overview-entrypoint"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-015",
      "source": "3.1",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic negative case",
      "obligation": "If the fallback `tree:view` pattern has zero or multiple matches, the client reports an error.",
      "tests": [
        "tests/1.0/discovery/ambiguous-overview",
        "tests/1.0/discovery/missing-view"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/ambiguous-overview",
          "tests/1.0/discovery/missing-view"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-016",
      "source": "3.1",
      "level": "MAY",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Informational",
      "obligation": "IRI dereferencing can be extended with source selection.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "optional",
        "rationale": "Source selection is an optional dereferencing extension outside the common adapter contract."
      }
    },
    {
      "id": "LDES10-CTX-001",
      "source": "3.1",
      "level": "MUST",
      "subject": "Client",
      "group": "Context information",
      "testability": "Partially automatic",
      "obligation": "After processing the root node, the client initializes state with root context information.",
      "tests": [
        "tests/1.0/context/root-and-eventstream-iri",
        "tests/1.0/context/root-context",
        "tests/1.0/ordered/common-root-context",
        "tests/1.0/unordered/immutable-root-restart"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/root-and-eventstream-iri",
          "tests/1.0/context/root-context",
          "tests/1.0/ordered/common-root-context",
          "tests/1.0/unordered/immutable-root-restart"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-017",
      "source": "3.1",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "The root node is processed like any other node, including members, relations, and state management.",
      "tests": [
        "tests/1.0/discovery/root-entrypoint"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/root-entrypoint"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-018",
      "source": "3.1",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic multi-run",
      "obligation": "Every later synchronization run consults state and continues from it.",
      "tests": [
        "tests/1.0/unordered/immutable-root-restart",
        "tests/1.0/unordered/mutable-sync"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/unordered/immutable-root-restart",
          "tests/1.0/unordered/mutable-sync"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-019",
      "source": "3.2",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "A member is emitted no more than once.",
      "tests": [
        "tests/1.0/ordered/restart-bookmark",
        "tests/1.0/ordered/restart-equal-key",
        "tests/1.0/unordered/duplicate-member-pages",
        "tests/1.0/unordered/mutable-sync",
        "tests/1.0/unordered/rebalancing"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/restart-bookmark",
          "tests/1.0/ordered/restart-equal-key",
          "tests/1.0/unordered/duplicate-member-pages",
          "tests/1.0/unordered/mutable-sync",
          "tests/1.0/unordered/rebalancing"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-020",
      "source": "3.2",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "A client checks whether a node is immutable.",
      "tests": [
        "tests/1.0/unordered/cache-state",
        "tests/1.0/unordered/rdf-immutable"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/unordered/cache-state",
          "tests/1.0/unordered/rdf-immutable"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-021",
      "source": "3.2",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "The first immutability check is the RDF statement `ldes:immutable true` on the current node.",
      "tests": [
        "tests/1.0/unordered/cache-state",
        "tests/1.0/unordered/rdf-immutable"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/unordered/cache-state",
          "tests/1.0/unordered/rdf-immutable"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-022",
      "source": "3.2",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "If RDF immutability is absent, the client checks whether `Cache-Control` indicates immutability.",
      "tests": [
        "tests/1.0/unordered/cache-state"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/unordered/cache-state"
        ]
      }
    },
    {
      "id": "LDES10-ORD-002",
      "source": "3.2",
      "level": "MAY",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic with ordered fixture",
      "obligation": "A client can infer immutability from an incoming relation upper bound earlier than the latest processed member.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "optional",
        "rationale": "Inferring immutability from relation bounds is an optional optimization."
      }
    },
    {
      "id": "LDES10-UNORD-023",
      "source": "3.2",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic multi-run",
      "obligation": "Immutable nodes are not fetched more than once.",
      "tests": [
        "tests/1.0/ordered/common-immutable-parent-mutable-child",
        "tests/1.0/unordered/cache-state",
        "tests/1.0/unordered/immutable-parent-mutable-child",
        "tests/1.0/unordered/immutable-root-restart",
        "tests/1.0/unordered/rdf-immutable"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/common-immutable-parent-mutable-child",
          "tests/1.0/unordered/cache-state",
          "tests/1.0/unordered/immutable-parent-mutable-child",
          "tests/1.0/unordered/immutable-root-restart",
          "tests/1.0/unordered/rdf-immutable"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-024",
      "source": "3.2",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic restart",
      "obligation": "A client can resume from a previous run.",
      "tests": [
        "tests/1.0/ordered/common-immutable-parent-mutable-child",
        "tests/1.0/ordered/common-root-304-resume",
        "tests/1.0/ordered/restart-bookmark",
        "tests/1.0/ordered/restart-equal-key",
        "tests/1.0/unordered/immutable-parent-mutable-child",
        "tests/1.0/unordered/immutable-root-restart",
        "tests/1.0/unordered/mutable-sync",
        "tests/1.0/unordered/root-304-resume"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/common-immutable-parent-mutable-child",
          "tests/1.0/ordered/common-root-304-resume",
          "tests/1.0/ordered/restart-bookmark",
          "tests/1.0/ordered/restart-equal-key",
          "tests/1.0/unordered/immutable-parent-mutable-child",
          "tests/1.0/unordered/immutable-root-restart",
          "tests/1.0/unordered/mutable-sync",
          "tests/1.0/unordered/root-304-resume"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-025",
      "source": "3.2",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic restart",
      "obligation": "Resume is supported by keeping a frontier of nodes that are not yet immutable.",
      "tests": [
        "tests/1.0/unordered/mutable-sync"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/unordered/mutable-sync"
        ]
      }
    },
    {
      "id": "LDES10-ORD-003",
      "source": "3.2",
      "level": "MAY",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic restart",
      "obligation": "Ordered mode can use the last emitted timestamp and/or sequence value as a bookmark.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "optional",
        "rationale": "Timestamp or sequence bookmarks are an optional state strategy; restart behavior is tested without requiring an implementation technique."
      }
    },
    {
      "id": "LDES10-CTX-002",
      "source": "3.2",
      "level": "MUST",
      "subject": "Client",
      "group": "Context information",
      "testability": "Partially automatic",
      "obligation": "The client keeps context information such as event stream, root node, shape, and retention policy.",
      "tests": [
        "tests/1.0/context/blank-node-metadata",
        "tests/1.0/context/root-context",
        "tests/1.0/context/shape-multiple",
        "tests/1.0/ordered/common-root-context"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/blank-node-metadata",
          "tests/1.0/context/root-context",
          "tests/1.0/context/shape-multiple",
          "tests/1.0/ordered/common-root-context"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-026",
      "source": "3.2",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Partially automatic",
      "obligation": "The client keeps statistics such as member count and last-run time.",
      "tests": [
        "tests/1.0/context/statistics"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/statistics"
        ]
      }
    },
    {
      "id": "LDES10-CTX-003",
      "source": "3.2",
      "level": "MUST",
      "subject": "Client",
      "group": "Context information",
      "testability": "Partially automatic",
      "obligation": "The client can communicate context information and statistics to downstream processors.",
      "tests": [
        "tests/1.0/context/polling-interval",
        "tests/1.0/context/root-context",
        "tests/1.0/context/timestamp-version-paths",
        "tests/1.0/ordered/common-root-context"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/polling-interval",
          "tests/1.0/context/root-context",
          "tests/1.0/context/timestamp-version-paths",
          "tests/1.0/ordered/common-root-context"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-027",
      "source": "3.2",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "For mutable nodes, the client stores an available `ETag`.",
      "tests": [
        "tests/1.0/unordered/cache-state",
        "tests/1.0/unordered/etag-update"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/unordered/cache-state",
          "tests/1.0/unordered/etag-update"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-028",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "The client supports N-Quads responses.",
      "tests": [
        "tests/1.0/http/serializations",
        "tests/1.0/ordered/common-serializations"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/serializations",
          "tests/1.0/ordered/common-serializations"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-029",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "The client supports N-Triples responses.",
      "tests": [
        "tests/1.0/http/serializations",
        "tests/1.0/ordered/common-serializations"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/serializations",
          "tests/1.0/ordered/common-serializations"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-030",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "The client supports TriG responses.",
      "tests": [
        "tests/1.0/http/serializations",
        "tests/1.0/ordered/common-serializations"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/serializations",
          "tests/1.0/ordered/common-serializations"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-031",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "The client supports Turtle responses.",
      "tests": [
        "tests/1.0/http/serializations",
        "tests/1.0/ordered/common-serializations"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/serializations",
          "tests/1.0/ordered/common-serializations"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-032",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "The client supports JSON-LD responses.",
      "tests": [
        "tests/1.0/http/serializations",
        "tests/1.0/ordered/common-serializations"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/serializations",
          "tests/1.0/ordered/common-serializations"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-033",
      "source": "3.3",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "For external JSON-LD contexts, the client implements HTTP caching.",
      "tests": [
        "tests/1.0/unordered/jsonld-context-cache"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/unordered/jsonld-context-cache"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-034",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "Requests include an `Accept` header.",
      "tests": [
        "tests/1.0/discovery/overview-entrypoint"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/overview-entrypoint"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-035",
      "source": "3.3",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "The client inspects `Cache-Control` for `immutable`.",
      "tests": [
        "tests/1.0/unordered/cache-state"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/unordered/cache-state"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-036",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "The client follows redirects.",
      "tests": [
        "tests/1.0/discovery/current-page-precedence",
        "tests/1.0/discovery/redirect-entrypoint",
        "tests/1.0/unordered/rebalancing"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/current-page-precedence",
          "tests/1.0/discovery/redirect-entrypoint",
          "tests/1.0/unordered/rebalancing"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-037",
      "source": "3.3",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "The client supports `If-None-Match` using stored ETags and handles `304 Not Modified`.",
      "tests": [
        "tests/1.0/ordered/common-root-304-resume",
        "tests/1.0/unordered/cache-state",
        "tests/1.0/unordered/etag-update",
        "tests/1.0/unordered/root-304-resume"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/common-root-304-resume",
          "tests/1.0/unordered/cache-state",
          "tests/1.0/unordered/etag-update",
          "tests/1.0/unordered/root-304-resume"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-038",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic with virtual time",
      "obligation": "The client retries `408 Request Timeout` with back-off.",
      "tests": [
        "tests/1.0/http/retry-408",
        "tests/1.0/http/retryable-statuses",
        "tests/1.0/ordered/common-retry-408"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/retry-408",
          "tests/1.0/http/retryable-statuses",
          "tests/1.0/ordered/common-retry-408"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-039",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic with virtual time",
      "obligation": "The client retries `425 Too Early` with back-off.",
      "tests": [
        "tests/1.0/http/retry-425",
        "tests/1.0/http/retryable-statuses",
        "tests/1.0/ordered/common-retry-425"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/retry-425",
          "tests/1.0/http/retryable-statuses",
          "tests/1.0/ordered/common-retry-425"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-040",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic with virtual time",
      "obligation": "The client retries `429 Too Many Requests` with back-off.",
      "tests": [
        "tests/1.0/http/retry-429",
        "tests/1.0/http/retryable-statuses",
        "tests/1.0/ordered/common-retry-429"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/retry-429",
          "tests/1.0/http/retryable-statuses",
          "tests/1.0/ordered/common-retry-429"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-041",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic with virtual time",
      "obligation": "The client retries `500 Internal Server Error` with back-off.",
      "tests": [
        "tests/1.0/http/retry-500",
        "tests/1.0/http/retryable-statuses",
        "tests/1.0/ordered/common-retry-500"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/retry-500",
          "tests/1.0/http/retryable-statuses",
          "tests/1.0/ordered/common-retry-500"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-042",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic with virtual time",
      "obligation": "The client retries `502 Bad Gateway` with back-off.",
      "tests": [
        "tests/1.0/http/retry-502",
        "tests/1.0/http/retryable-statuses",
        "tests/1.0/ordered/common-retry-502"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/retry-502",
          "tests/1.0/http/retryable-statuses",
          "tests/1.0/ordered/common-retry-502"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-043",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic with virtual time",
      "obligation": "The client retries `503 Service Unavailable` with back-off.",
      "tests": [
        "tests/1.0/http/retry-503",
        "tests/1.0/http/retryable-statuses",
        "tests/1.0/ordered/common-retry-503"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/retry-503",
          "tests/1.0/http/retryable-statuses",
          "tests/1.0/ordered/common-retry-503"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-044",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic with virtual time",
      "obligation": "The client retries `504 Gateway Timeout` with back-off.",
      "tests": [
        "tests/1.0/http/retry-504",
        "tests/1.0/http/retryable-statuses",
        "tests/1.0/ordered/common-retry-504"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/retry-504",
          "tests/1.0/http/retryable-statuses",
          "tests/1.0/ordered/common-retry-504"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-045",
      "source": "3.3",
      "level": "MAY",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Informational",
      "obligation": "The client can implement authorization handling for `401`.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "optional",
        "rationale": "Authorization handling is optional and requires credential provisioning that is intentionally outside the public baseline suite."
      }
    },
    {
      "id": "LDES10-UNORD-046",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic",
      "obligation": "The client treats `410 Gone` as a node with no members and no relations.",
      "tests": [
        "tests/1.0/http/gone-node",
        "tests/1.0/unordered/rebalancing"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/gone-node",
          "tests/1.0/unordered/rebalancing"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-047",
      "source": "3.3",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic negative case",
      "obligation": "The client aborts and reports an error on other 4xx or 5xx statuses.",
      "tests": [
        "tests/1.0/http/terminal-404-child",
        "tests/1.0/http/terminal-404-entry",
        "tests/1.0/http/terminal-501-child",
        "tests/1.0/http/terminal-501-entry",
        "tests/1.0/http/terminal-505-child",
        "tests/1.0/http/terminal-505-entry",
        "tests/1.0/http/terminal-error",
        "tests/1.0/ordered/common-terminal-404-child",
        "tests/1.0/ordered/common-terminal-404-entry",
        "tests/1.0/ordered/common-terminal-501-child",
        "tests/1.0/ordered/common-terminal-501-entry",
        "tests/1.0/ordered/common-terminal-505-child",
        "tests/1.0/ordered/common-terminal-505-entry"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/http/terminal-404-child",
          "tests/1.0/http/terminal-404-entry",
          "tests/1.0/http/terminal-501-child",
          "tests/1.0/http/terminal-501-entry",
          "tests/1.0/http/terminal-505-child",
          "tests/1.0/http/terminal-505-entry",
          "tests/1.0/http/terminal-error",
          "tests/1.0/ordered/common-terminal-404-child",
          "tests/1.0/ordered/common-terminal-404-entry",
          "tests/1.0/ordered/common-terminal-501-child",
          "tests/1.0/ordered/common-terminal-501-entry",
          "tests/1.0/ordered/common-terminal-505-child",
          "tests/1.0/ordered/common-terminal-505-entry"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-048",
      "source": "3.4",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic event timing",
      "obligation": "In unordered mode, members are emitted as soon as they are extracted.",
      "tests": [
        "tests/1.0/unordered/immediate-emission"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/unordered/immediate-emission"
        ]
      }
    },
    {
      "id": "LDES10-ORD-004",
      "source": "3.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic ordering oracle",
      "obligation": "In ordered mode, the client does not emit a member while another earlier member can still be discovered.",
      "tests": [
        "tests/1.0/ordered/global-order",
        "tests/1.0/ordered/relation-greater-than",
        "tests/1.0/ordered/relation-greater-than-or-equal",
        "tests/1.0/ordered/relation-less-than",
        "tests/1.0/ordered/relation-less-than-or-equal",
        "tests/1.0/ordered/unsupported-relation"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/global-order",
          "tests/1.0/ordered/relation-greater-than",
          "tests/1.0/ordered/relation-greater-than-or-equal",
          "tests/1.0/ordered/relation-less-than",
          "tests/1.0/ordered/relation-less-than-or-equal",
          "tests/1.0/ordered/unsupported-relation"
        ]
      }
    },
    {
      "id": "LDES10-ORD-005",
      "source": "3.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic ordering oracle",
      "obligation": "Ordered mode checks all extra ordered traversal conditions before emitting.",
      "tests": [
        "tests/1.0/ordered/global-order"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/global-order"
        ]
      }
    },
    {
      "id": "LDES10-EXTRACT-001",
      "source": "3.4",
      "level": "MAY",
      "subject": "Client",
      "group": "Member extraction",
      "testability": "Optional subclaim",
      "obligation": "The client can support specialized content types or profiles such as the TREE profile.",
      "tests": [
        "tests/1.0/extraction/tree-profile-basic",
        "tests/1.0/extraction/tree-profile-mixed-page",
        "tests/1.0/extraction/tree-profile-shape-targets"
      ],
      "status": "mapped",
      "evidence": {
        "inapplicable": [
          "tests/1.0/extraction/tree-profile-basic",
          "tests/1.0/extraction/tree-profile-mixed-page",
          "tests/1.0/extraction/tree-profile-shape-targets"
        ]
      },
      "rationale": {
        "classification": "optional",
        "rationale": "TREE-profile extraction is an optional named capability and needs a profile capability flag before it can be selected fairly."
      }
    },
    {
      "id": "LDES10-EXTRACT-002",
      "source": "3.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Member extraction",
      "testability": "Automatic",
      "obligation": "Without a specialized profile or content type, the client uses the generic LDES member extraction algorithm.",
      "tests": [
        "tests/1.0/discovery/root-entrypoint",
        "tests/1.0/extraction/generic-dataset",
        "tests/1.0/extraction/shape-neutral-generic",
        "tests/1.0/extraction/unrelated-named-graph",
        "tests/1.0/ordered/common-generic-extraction"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/root-entrypoint",
          "tests/1.0/extraction/generic-dataset",
          "tests/1.0/extraction/shape-neutral-generic",
          "tests/1.0/extraction/unrelated-named-graph",
          "tests/1.0/ordered/common-generic-extraction"
        ]
      }
    },
    {
      "id": "LDES10-EXTRACT-003",
      "source": "3.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Member extraction",
      "testability": "Automatic",
      "obligation": "Generic extraction starts after the whole `tree:Node` has been parsed.",
      "tests": [
        "tests/1.0/discovery/root-entrypoint",
        "tests/1.0/extraction/generic-dataset",
        "tests/1.0/extraction/late-description",
        "tests/1.0/ordered/common-generic-extraction"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/root-entrypoint",
          "tests/1.0/extraction/generic-dataset",
          "tests/1.0/extraction/late-description",
          "tests/1.0/ordered/common-generic-extraction"
        ]
      }
    },
    {
      "id": "LDES10-EXTRACT-004",
      "source": "3.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Member extraction",
      "testability": "Automatic",
      "obligation": "The client identifies focus nodes from `<ES> tree:member ?m` using the LDES event stream IRI.",
      "tests": [
        "tests/1.0/discovery/root-entrypoint",
        "tests/1.0/extraction/generic-dataset",
        "tests/1.0/extraction/multiple-streams",
        "tests/1.0/ordered/common-generic-extraction"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/root-entrypoint",
          "tests/1.0/extraction/generic-dataset",
          "tests/1.0/extraction/multiple-streams",
          "tests/1.0/ordered/common-generic-extraction"
        ]
      }
    },
    {
      "id": "LDES10-EXTRACT-005",
      "source": "3.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Member extraction",
      "testability": "Automatic",
      "obligation": "For each focus node, the client includes matching default-graph subject triples.",
      "tests": [
        "tests/1.0/discovery/root-entrypoint",
        "tests/1.0/extraction/blank-node-chain",
        "tests/1.0/extraction/default-graph-star-minimal",
        "tests/1.0/extraction/default-plus-named-graph-merge",
        "tests/1.0/extraction/generic-dataset",
        "tests/1.0/extraction/late-description",
        "tests/1.0/extraction/shape-neutral-generic",
        "tests/1.0/extraction/unrelated-named-graph",
        "tests/1.0/ordered/common-generic-extraction"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/root-entrypoint",
          "tests/1.0/extraction/blank-node-chain",
          "tests/1.0/extraction/default-graph-star-minimal",
          "tests/1.0/extraction/default-plus-named-graph-merge",
          "tests/1.0/extraction/generic-dataset",
          "tests/1.0/extraction/late-description",
          "tests/1.0/extraction/shape-neutral-generic",
          "tests/1.0/extraction/unrelated-named-graph",
          "tests/1.0/ordered/common-generic-extraction"
        ]
      }
    },
    {
      "id": "LDES10-EXTRACT-006",
      "source": "3.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Member extraction",
      "testability": "Automatic",
      "obligation": "For each focus node, the client includes all quads in the named graph whose graph IRI is the focus node.",
      "tests": [
        "tests/1.0/extraction/blank-node-named-graph",
        "tests/1.0/extraction/default-plus-named-graph-merge",
        "tests/1.0/extraction/generic-dataset",
        "tests/1.0/extraction/named-graph-only",
        "tests/1.0/extraction/unrelated-named-graph",
        "tests/1.0/ordered/common-generic-extraction"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/extraction/blank-node-named-graph",
          "tests/1.0/extraction/default-plus-named-graph-merge",
          "tests/1.0/extraction/generic-dataset",
          "tests/1.0/extraction/named-graph-only",
          "tests/1.0/extraction/unrelated-named-graph",
          "tests/1.0/ordered/common-generic-extraction"
        ]
      }
    },
    {
      "id": "LDES10-EXTRACT-007",
      "source": "3.4",
      "level": "Algorithm detail",
      "subject": "Client",
      "group": "Member extraction",
      "testability": "Automatic",
      "obligation": "When an extracted object is a blank node, extraction recurses with that blank node as a new focus node.",
      "tests": [
        "tests/1.0/extraction/blank-node-chain",
        "tests/1.0/extraction/blank-node-cycle",
        "tests/1.0/extraction/blank-node-named-graph",
        "tests/1.0/extraction/generic-dataset",
        "tests/1.0/extraction/shared-blank-node",
        "tests/1.0/ordered/common-generic-extraction"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/extraction/blank-node-chain",
          "tests/1.0/extraction/blank-node-cycle",
          "tests/1.0/extraction/blank-node-named-graph",
          "tests/1.0/extraction/generic-dataset",
          "tests/1.0/extraction/shared-blank-node",
          "tests/1.0/ordered/common-generic-extraction"
        ]
      }
    },
    {
      "id": "LDES10-EXTRACT-008",
      "source": "3.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Member extraction",
      "testability": "Automatic",
      "obligation": "The client prevents duplicate processing of the same blank node.",
      "tests": [
        "tests/1.0/extraction/blank-node-cycle",
        "tests/1.0/extraction/blank-node-named-graph",
        "tests/1.0/extraction/generic-dataset",
        "tests/1.0/extraction/shared-blank-node",
        "tests/1.0/ordered/common-generic-extraction"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/extraction/blank-node-cycle",
          "tests/1.0/extraction/blank-node-named-graph",
          "tests/1.0/extraction/generic-dataset",
          "tests/1.0/extraction/shared-blank-node",
          "tests/1.0/ordered/common-generic-extraction"
        ]
      }
    },
    {
      "id": "LDES10-ORD-006",
      "source": "3.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic ordering oracle",
      "obligation": "In ordered mode without a specialized profile/content type, members in a node are ordered by timestamp path, sequence path, or both.",
      "tests": [
        "tests/1.0/ordered/global-order",
        "tests/1.0/ordered/relation-greater-than",
        "tests/1.0/ordered/relation-greater-than-or-equal",
        "tests/1.0/ordered/relation-less-than",
        "tests/1.0/ordered/relation-less-than-or-equal",
        "tests/1.0/ordered/shacl-alternative-path",
        "tests/1.0/ordered/shacl-inverse-path",
        "tests/1.0/ordered/shacl-nested-path",
        "tests/1.0/ordered/shacl-one-or-more-path",
        "tests/1.0/ordered/shacl-path",
        "tests/1.0/ordered/shacl-zero-or-more-path",
        "tests/1.0/ordered/shacl-zero-or-one-path",
        "tests/1.0/ordered/timestamp-only",
        "tests/1.0/ordered/timestamp-sequence-tie-break",
        "tests/1.0/ordered/timestamp-shacl-sequence-path",
        "tests/1.0/ordered/typed-mixed-datatypes",
        "tests/1.0/ordered/typed-numeric-order",
        "tests/1.0/ordered/typed-timestamp-timezones",
        "tests/1.0/ordered/xpath-string-order"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/global-order",
          "tests/1.0/ordered/relation-greater-than",
          "tests/1.0/ordered/relation-greater-than-or-equal",
          "tests/1.0/ordered/relation-less-than",
          "tests/1.0/ordered/relation-less-than-or-equal",
          "tests/1.0/ordered/shacl-alternative-path",
          "tests/1.0/ordered/shacl-inverse-path",
          "tests/1.0/ordered/shacl-nested-path",
          "tests/1.0/ordered/shacl-one-or-more-path",
          "tests/1.0/ordered/shacl-path",
          "tests/1.0/ordered/shacl-zero-or-more-path",
          "tests/1.0/ordered/shacl-zero-or-one-path",
          "tests/1.0/ordered/timestamp-only",
          "tests/1.0/ordered/timestamp-sequence-tie-break",
          "tests/1.0/ordered/timestamp-shacl-sequence-path",
          "tests/1.0/ordered/typed-mixed-datatypes",
          "tests/1.0/ordered/typed-numeric-order",
          "tests/1.0/ordered/typed-timestamp-timezones",
          "tests/1.0/ordered/xpath-string-order"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-049",
      "source": "3.5.1",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "The client discovers relations on the current page using the current-page `tree:relation` pattern.",
      "tests": [
        "tests/1.0/discovery/overview-entrypoint",
        "tests/1.0/ordered/common-relation-targets-and-scope",
        "tests/1.0/unordered/relation-targets-and-scope"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/overview-entrypoint",
          "tests/1.0/ordered/common-relation-targets-and-scope",
          "tests/1.0/unordered/relation-targets-and-scope"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-050",
      "source": "3.5.1",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "For every discovered relation, the client matches its `tree:node` target.",
      "tests": [
        "tests/1.0/discovery/overview-entrypoint",
        "tests/1.0/ordered/common-relation-targets-and-scope",
        "tests/1.0/unordered/relation-targets-and-scope"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/overview-entrypoint",
          "tests/1.0/ordered/common-relation-targets-and-scope",
          "tests/1.0/unordered/relation-targets-and-scope"
        ]
      }
    },
    {
      "id": "LDES10-UNORD-051",
      "source": "3.5.1",
      "level": "MUST",
      "subject": "Client",
      "group": "Unordered traversal",
      "testability": "Automatic via requests",
      "obligation": "Every distinct relation target is dereferenced and processed.",
      "tests": [
        "tests/1.0/discovery/overview-entrypoint",
        "tests/1.0/ordered/common-relation-targets-and-scope",
        "tests/1.0/ordered/unsupported-relation",
        "tests/1.0/unordered/relation-targets-and-scope"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/discovery/overview-entrypoint",
          "tests/1.0/ordered/common-relation-targets-and-scope",
          "tests/1.0/ordered/unsupported-relation",
          "tests/1.0/unordered/relation-targets-and-scope"
        ]
      }
    },
    {
      "id": "LDES10-ORD-007",
      "source": "3.5.2",
      "level": "MUST",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic ordering oracle",
      "obligation": "Ordered mode can evaluate SHACL property paths.",
      "tests": [
        "tests/1.0/ordered/shacl-alternative-path",
        "tests/1.0/ordered/shacl-inverse-path",
        "tests/1.0/ordered/shacl-nested-path",
        "tests/1.0/ordered/shacl-one-or-more-path",
        "tests/1.0/ordered/shacl-path",
        "tests/1.0/ordered/shacl-zero-length-and-cycle",
        "tests/1.0/ordered/shacl-zero-or-more-path",
        "tests/1.0/ordered/shacl-zero-or-one-path",
        "tests/1.0/ordered/timestamp-shacl-sequence-path"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/shacl-alternative-path",
          "tests/1.0/ordered/shacl-inverse-path",
          "tests/1.0/ordered/shacl-nested-path",
          "tests/1.0/ordered/shacl-one-or-more-path",
          "tests/1.0/ordered/shacl-path",
          "tests/1.0/ordered/shacl-zero-length-and-cycle",
          "tests/1.0/ordered/shacl-zero-or-more-path",
          "tests/1.0/ordered/shacl-zero-or-one-path",
          "tests/1.0/ordered/timestamp-shacl-sequence-path"
        ]
      }
    },
    {
      "id": "LDES10-ORD-008",
      "source": "3.5.2",
      "level": "MUST",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic negative case",
      "obligation": "During initialization, ordered mode checks for `ldes:timestampPath` and/or `ldes:sequencePath`.",
      "tests": [
        "tests/1.0/ordered/global-order",
        "tests/1.0/ordered/missing-path"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/global-order",
          "tests/1.0/ordered/missing-path"
        ]
      }
    },
    {
      "id": "LDES10-ORD-009",
      "source": "3.5.2",
      "level": "MUST",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic negative case",
      "obligation": "Ordered mode errors when neither ordering path is present.",
      "tests": [
        "tests/1.0/ordered/missing-path"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/missing-path"
        ]
      }
    },
    {
      "id": "LDES10-ORD-010",
      "source": "3.5.2",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic ordering oracle",
      "obligation": "Ordered mode uses a priority queue for next links based on time-relation semantics.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "manual",
        "rationale": "Finite output-order scenarios do not prove priority-queue implementation or relation-bound interpretation. Requires separate advisory observations; conservative complete traversal is not rejected."
      }
    },
    {
      "id": "LDES10-ORD-011",
      "source": "3.5.2",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic ordering oracle",
      "obligation": "The priority queue interprets greater-than and greater-than-or-equal relations as later-time bounds.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "manual",
        "rationale": "Finite output-order scenarios do not prove priority-queue implementation or relation-bound interpretation. Requires separate advisory observations; conservative complete traversal is not rejected."
      }
    },
    {
      "id": "LDES10-ORD-012",
      "source": "3.5.2",
      "level": "SHOULD",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic ordering oracle",
      "obligation": "The priority queue interprets less-than and less-than-or-equal relations as earlier-time bounds.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "manual",
        "rationale": "Finite output-order scenarios do not prove priority-queue implementation or relation-bound interpretation. Requires separate advisory observations; conservative complete traversal is not rejected."
      }
    },
    {
      "id": "LDES10-ORD-013",
      "source": "3.5.2",
      "level": "MUST",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic ordering oracle",
      "obligation": "Multiple relations to the same node are combined using logical AND.",
      "tests": [
        "tests/1.0/ordered/multiple-relations-and"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/multiple-relations-and"
        ]
      }
    },
    {
      "id": "LDES10-ORD-014",
      "source": "3.5.2",
      "level": "MUST",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic ordering oracle",
      "obligation": "Ordered mode checks whether a relation path matches the timestamp path or sequence path.",
      "tests": [
        "tests/1.0/ordered/mismatched-relation-path"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/mismatched-relation-path"
        ]
      }
    },
    {
      "id": "LDES10-ORD-015",
      "source": "3.5.2",
      "level": "Algorithm detail",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic ordering oracle",
      "obligation": "Only relations whose path matches an ordering path are used for ordering priority.",
      "tests": [],
      "status": "gap",
      "evidence": {}
    },
    {
      "id": "LDES10-ORD-016",
      "source": "3.5.2",
      "level": "MUST",
      "subject": "Client",
      "group": "Ordered traversal",
      "testability": "Automatic ordering oracle",
      "obligation": "Among members with equal ordering values, a transaction-finalizing member is emitted last.",
      "tests": [
        "tests/1.0/ordered/equal-values-finalizer",
        "tests/1.0/ordered/finalizer-across-pages",
        "tests/1.0/ordered/global-order",
        "tests/1.0/ordered/transaction-finalized-object"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/equal-values-finalizer",
          "tests/1.0/ordered/finalizer-across-pages",
          "tests/1.0/ordered/global-order",
          "tests/1.0/ordered/transaction-finalized-object"
        ]
      }
    },
    {
      "id": "LDES10-CTX-004",
      "source": "4",
      "level": "MUST",
      "subject": "Client",
      "group": "Context information",
      "testability": "Partially automatic",
      "obligation": "The client extracts root-node context information.",
      "tests": [
        "tests/1.0/context/blank-node-metadata",
        "tests/1.0/context/root-context",
        "tests/1.0/ordered/common-root-context"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/blank-node-metadata",
          "tests/1.0/context/root-context",
          "tests/1.0/ordered/common-root-context"
        ]
      }
    },
    {
      "id": "LDES10-CTX-005",
      "source": "4",
      "level": "MUST",
      "subject": "Client",
      "group": "Context information",
      "testability": "Partially automatic",
      "obligation": "The client can communicate extracted context to downstream processors.",
      "tests": [
        "tests/1.0/context/blank-node-metadata",
        "tests/1.0/context/root-context",
        "tests/1.0/ordered/common-root-context"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/blank-node-metadata",
          "tests/1.0/context/root-context",
          "tests/1.0/ordered/common-root-context"
        ]
      }
    },
    {
      "id": "LDES10-CTX-006",
      "source": "4",
      "level": "MUST",
      "subject": "Client",
      "group": "Context information",
      "testability": "Partially automatic",
      "obligation": "The client extracts context about the LDES entity.",
      "tests": [
        "tests/1.0/context/blank-node-metadata",
        "tests/1.0/context/root-context",
        "tests/1.0/context/version-transaction-metadata",
        "tests/1.0/ordered/common-root-context"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/blank-node-metadata",
          "tests/1.0/context/root-context",
          "tests/1.0/context/version-transaction-metadata",
          "tests/1.0/ordered/common-root-context"
        ]
      }
    },
    {
      "id": "LDES10-CTX-007",
      "source": "4",
      "level": "MUST",
      "subject": "Client",
      "group": "Context information",
      "testability": "Partially automatic",
      "obligation": "The client extracts context about the publishing service.",
      "tests": [
        "tests/1.0/context/blank-node-metadata",
        "tests/1.0/context/root-context",
        "tests/1.0/ordered/common-root-context"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/blank-node-metadata",
          "tests/1.0/context/root-context",
          "tests/1.0/ordered/common-root-context"
        ]
      }
    },
    {
      "id": "LDES10-CTX-008",
      "source": "4",
      "level": "MUST",
      "subject": "Client",
      "group": "Context information",
      "testability": "Partially automatic",
      "obligation": "Publishing-service context can be found on the current page.",
      "tests": [
        "tests/1.0/context/publishing-service-direct",
        "tests/1.0/context/root-context",
        "tests/1.0/ordered/common-root-context"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/publishing-service-direct",
          "tests/1.0/context/root-context",
          "tests/1.0/ordered/common-root-context"
        ]
      }
    },
    {
      "id": "LDES10-CTX-009",
      "source": "4",
      "level": "MUST",
      "subject": "Client",
      "group": "Context information",
      "testability": "Partially automatic",
      "obligation": "Publishing-service context can be found on entities linked with `tree:viewDescription`.",
      "tests": [
        "tests/1.0/context/blank-node-metadata",
        "tests/1.0/context/publishing-service-view-description",
        "tests/1.0/context/root-context",
        "tests/1.0/ordered/common-root-context"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/blank-node-metadata",
          "tests/1.0/context/publishing-service-view-description",
          "tests/1.0/context/root-context",
          "tests/1.0/ordered/common-root-context"
        ]
      }
    },
    {
      "id": "LDES10-CTX-010",
      "source": "4.1",
      "level": "MUST",
      "subject": "Consumer or chronological client",
      "group": "Context information",
      "testability": "Boundary review",
      "obligation": "Chronological order is derived from `ldes:timestampPath` and/or `ldes:sequencePath` when they are set.",
      "tests": [
        "tests/1.0/ordered/timestamp-only",
        "tests/1.0/ordered/timestamp-sequence-tie-break",
        "tests/1.0/ordered/timestamp-shacl-sequence-path",
        "tests/1.0/ordered/typed-mixed-datatypes",
        "tests/1.0/ordered/typed-timestamp-timezones",
        "tests/1.0/ordered/xpath-string-order"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/ordered/timestamp-only",
          "tests/1.0/ordered/timestamp-sequence-tie-break",
          "tests/1.0/ordered/timestamp-shacl-sequence-path",
          "tests/1.0/ordered/typed-mixed-datatypes",
          "tests/1.0/ordered/typed-timestamp-timezones",
          "tests/1.0/ordered/xpath-string-order"
        ]
      },
      "rationale": {
        "classification": "boundary",
        "rationale": "Chronological interpretation is scored in ordered traversal; this row also applies to broader consumers."
      }
    },
    {
      "id": "LDES10-CTX-011",
      "source": "4.2",
      "level": "MUST",
      "subject": "Processor",
      "group": "Context information",
      "testability": "Boundary review",
      "obligation": "A SHACL-validating processor passes each member IRI as the target for the referenced node shape.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "boundary",
        "rationale": "Executing SHACL validation is processor behavior; the client suite verifies shape context communication."
      }
    },
    {
      "id": "LDES10-CTX-012",
      "source": "4.2",
      "level": "MUST",
      "subject": "Consumer or processor",
      "group": "Context information",
      "testability": "Boundary review",
      "obligation": "Multiple `tree:shape` statements are interpreted as logical AND.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "boundary",
        "rationale": "Logical-AND shape validation is processor behavior; the context fixture discriminates communication of multiple shapes."
      }
    },
    {
      "id": "LDES10-CTX-013",
      "source": "4.3",
      "level": "MUST",
      "subject": "Consumer",
      "group": "Context information",
      "testability": "Boundary review",
      "obligation": "A consumer selecting latest versions from out-of-order version streams uses `ldes:versionTimestampPath`.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "boundary",
        "rationale": "Selecting latest versions is consumer behavior; versionTimestampPath extraction is tested."
      }
    },
    {
      "id": "LDES10-CTX-014",
      "source": "4.3",
      "level": "MUST",
      "subject": "Consumer",
      "group": "Context information",
      "testability": "Boundary review",
      "obligation": "A consumer selecting latest versions from out-of-order version streams uses `ldes:versionSequencePath`.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "boundary",
        "rationale": "Selecting latest versions is consumer behavior; versionSequencePath extraction is tested."
      }
    },
    {
      "id": "LDES10-EXTRACT-009",
      "source": "4.3",
      "level": "MAY",
      "subject": "Consumer",
      "group": "Member extraction",
      "testability": "Optional subclaim",
      "obligation": "If a member IRI is also used as a named graph, the consumer can treat that graph as the upsert payload.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "optional",
        "rationale": "Named-graph upsert interpretation is optional consumer behavior; named-graph dataset extraction itself is tested."
      }
    },
    {
      "id": "LDES10-CTX-015",
      "source": "4.3",
      "level": "MUST",
      "subject": "Consumer",
      "group": "Context information",
      "testability": "Boundary review",
      "obligation": "For updates and deletions, the consumer can locate the prior named-graph payload group again.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "boundary",
        "rationale": "Recovering prior update or deletion payloads requires a materializing consumer, beyond traversal and context extraction."
      }
    },
    {
      "id": "LDES10-RET-001",
      "source": "4.4",
      "level": "MUST",
      "subject": "Consumer",
      "group": "Retention interpretation",
      "testability": "Boundary review",
      "obligation": "Without a retention policy on the root node, the consumer assumes complete event-stream history is available from that root.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "boundary",
        "rationale": "Completeness assumptions are consumer interpretation; absence and presence are exposed by the context event."
      }
    },
    {
      "id": "LDES10-RET-002",
      "source": "4.4",
      "level": "MUST",
      "subject": "Consumer",
      "group": "Retention interpretation",
      "testability": "Boundary review",
      "obligation": "With a retention policy, the consumer assumes members outside that policy cannot be found.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "boundary",
        "rationale": "Availability assumptions outside a policy are consumer interpretation; policy discovery is tested."
      }
    },
    {
      "id": "LDES10-RET-003",
      "source": "4.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Retention interpretation",
      "testability": "Partially automatic",
      "obligation": "While processing the root node, the client checks for a direct root-node retention policy.",
      "tests": [
        "tests/1.0/context/blank-node-metadata",
        "tests/1.0/context/retention-policy-direct",
        "tests/1.0/context/root-context",
        "tests/1.0/ordered/common-root-context"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/blank-node-metadata",
          "tests/1.0/context/retention-policy-direct",
          "tests/1.0/context/root-context",
          "tests/1.0/ordered/common-root-context"
        ]
      }
    },
    {
      "id": "LDES10-RET-004",
      "source": "4.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Retention interpretation",
      "testability": "Partially automatic",
      "obligation": "While processing the root node, the client checks for a retention policy via `tree:viewDescription`.",
      "tests": [
        "tests/1.0/context/blank-node-metadata",
        "tests/1.0/context/retention-policy-view-description",
        "tests/1.0/context/root-context",
        "tests/1.0/ordered/common-root-context"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/blank-node-metadata",
          "tests/1.0/context/retention-policy-view-description",
          "tests/1.0/context/root-context",
          "tests/1.0/ordered/common-root-context"
        ]
      }
    },
    {
      "id": "LDES10-RET-005",
      "source": "4.4",
      "level": "MUST",
      "subject": "Client",
      "group": "Retention interpretation",
      "testability": "Partially automatic",
      "obligation": "If the retention-policy IRI has no statements in the current page, the client assumes the view retains no members.",
      "tests": [
        "tests/1.0/context/empty-retention"
      ],
      "status": "verified",
      "evidence": {
        "passed": [
          "tests/1.0/context/empty-retention"
        ]
      }
    },
    {
      "id": "LDES10-RET-006",
      "source": "4.4",
      "level": "MUST",
      "subject": "Consumer",
      "group": "Retention interpretation",
      "testability": "Boundary review",
      "obligation": "Time-based retention calculations include a safe clock-skew buffer.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "boundary",
        "rationale": "Clock-skew calculation is retention-aware consumer behavior and needs a separate virtual-clock interpretation profile."
      }
    },
    {
      "id": "LDES10-RET-007",
      "source": "4.4",
      "level": "Algorithm detail",
      "subject": "Consumer",
      "group": "Retention interpretation",
      "testability": "Boundary review",
      "obligation": "When `ldes:versionTimestampPath` is set, version durations are evaluated against that timestamp.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "boundary",
        "rationale": "Duration evaluation against version timestamps is consumer behavior; path extraction is tested."
      }
    },
    {
      "id": "LDES10-RET-008",
      "source": "4.4",
      "level": "MUST",
      "subject": "Consumer",
      "group": "Retention interpretation",
      "testability": "Boundary review",
      "obligation": "Historical retention policy types remain supported.",
      "tests": [],
      "status": "rationalized",
      "evidence": {},
      "rationale": {
        "classification": "boundary",
        "rationale": "Historical policy interpretation is a separate retention-aware consumer profile, not baseline traversal."
      }
    }
  ]
}
