{
  "test": {
    "id": "tests/1.0/http/retry-408",
    "directory": "tests/1.0/http/retry-408",
    "manifestPath": "tests/1.0/http/retry-408/manifest.ttl",
    "scenarioPath": "tests/1.0/http/retry-408/scenario.yaml",
    "expectedPath": "tests/1.0/http/retry-408/expected/events.ndjson",
    "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.",
    "requirement": "LDES10-UNORD-038",
    "requirements": [
      "LDES10-UNORD-038"
    ],
    "requirementLevel": "Must",
    "group": "UnorderedTraversal",
    "requiredCapabilities": []
  },
  "outcome": "failed",
  "events": [
    {
      "protocolVersion": 0,
      "type": "error",
      "runId": "run-1",
      "kind": "client",
      "message": "ldes.client.startingtreenode.exception.StartingNodeNotFoundException: Starting Node could not be identified from url http://127.0.0.1:44299/root.\nUnable to hande response 408",
      "receivedAt": "2026-10-16T10:20:37.580Z",
      "adapterStderr": "Oct 16, 2026 10:20:33 AM org.hibernate.jpa.boot.spi.ProviderChecker hibernateProviderNamesContain\nWARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; [org.hibernate.jpa.HibernatePersistenceProvider] will be used instead.\nOct 16, 2026 10:20:33 AM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation\nINFO: HHH000204: Processing PersistenceUnitInfo [name: pu-sql-jpa]\nOct 16, 2026 10:20:33 AM org.hibernate.Version logVersion\nINFO: HHH000412: Hibernate ORM core version [WORKING]\nOct 16, 2026 10:20:34 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>\nINFO: HCANN000001: Hibernate Commons Annotations {5.1.2.Final}\nOct 16, 2026 10:20:34 AM org.hibernate.dialect.Dialect <init>\nINFO: HHH000400: Using dialect: org.sqlite.hibernate.dialect.SQLiteDialect\nOct 16, 2026 10:20:36 AM org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator initiateService\nINFO: HHH000130: Instantiating explicit connection provider: com.zaxxer.hikari.hibernate.HikariConnectionProvider\nSLF4J: No SLF4J providers were found.\nSLF4J: Defaulting to no-operation (NOP) logger implementation\nSLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.\nOct 16, 2026 10:20:36 AM org.hibernate.dialect.Dialect <init>\nINFO: HHH000400: Using dialect: org.sqlite.hibernate.dialect.SQLiteDialect\nOct 16, 2026 10:20:37 AM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService\nINFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]\nldes.client.startingtreenode.exception.StartingNodeNotFoundException: Starting Node could not be identified from url http://127.0.0.1:44299/root.\nUnable to hande response 408\n\tat ldes.client.startingtreenode.RedirectRequestExecutor.execute(RedirectRequestExecutor.java:44)\n\tat ldes.client.startingtreenode.StartingTreeNodeFinder.determineStartingTreeNode(StartingTreeNodeFinder.java:37)\n\tat ldes.client.treenodesupplier.StartingTreeNodeSupplier.getStart(StartingTreeNodeSupplier.java:21)\n\tat ldes.client.treenodesupplier.TreeNodeProcessor.lambda$initializeTreeNodeRecordRepository$6(TreeNodeProcessor.java:152)\n\tat java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)\n\tat java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:722)\n\tat java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)\n\tat java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)\n\tat java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)\n\tat java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)\n\tat java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)\n\tat java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)\n\tat ldes.client.treenodesupplier.TreeNodeProcessor.initializeTreeNodeRecordRepository(TreeNodeProcessor.java:154)\n\tat ldes.client.treenodesupplier.TreeNodeProcessor.init(TreeNodeProcessor.java:48)\n\tat ldes.client.treenodesupplier.membersuppliers.MemberSupplierImpl.init(MemberSupplierImpl.java:39)\n\tat org.openldes.conformance.OpenLdesAdapter.main(OpenLdesAdapter.java:77)\n"
    }
  ],
  "requests": [
    {
      "sequence": 1,
      "method": "GET",
      "path": "/root",
      "headers": {
        "accept": "text/turtle",
        "host": "127.0.0.1:44299",
        "connection": "Keep-Alive",
        "user-agent": "Apache-HttpClient/4.5.13 (Java/21.0.12.1)",
        "accept-encoding": "gzip,deflate"
      },
      "phase": "default",
      "status": 408,
      "timestamp": "2026-10-16T10:20:37.558Z",
      "completedAt": "2026-10-16T10:20:37.559Z"
    }
  ],
  "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"
  ]
}
