<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="touchstone" tests="221" failures="0" errors="0" skipped="11" time="39.233" timestamp="2026-10-21T13:18:22.856960779Z">
  <testcase classname="core/discovery" name="discovery-get-links-storageDescription" time="0.038"/>
  <testcase classname="core/discovery" name="discovery-link-storage-on-data-resource" time="0.048"/>
  <testcase classname="core/discovery" name="discovery-storage-description" time="0.039"/>
  <testcase classname="core/discovery" name="discovery-storage-description-default-media-type" time="0.038"/>
  <testcase classname="core/discovery" name="discovery-unauthorized-response-headers" time="0.038"/>
  <testcase classname="core/discovery" name="discovery-storage-root-is-container" time="0.044"/>
  <testcase classname="core/discovery" name="discovery-storage-description-ids-are-uris" time="0.038"/>
  <testcase classname="core/containers" name="getContainer" time="0.038"/>
  <testcase classname="core/containers" name="createContainer" time="0.043"/>
  <testcase classname="core/containers" name="createContainer-type-link" time="0.038"/>
  <testcase classname="core/containers" name="getContainer-containmentIntegrity" time="0.047"/>
  <testcase classname="core/containers" name="container-total-items-accurate" time="0.059"/>
  <testcase classname="core/containers" name="contained-resource-type-values" time="0.055"/>
  <testcase classname="core/containers" name="contained-resource-format" time="0.047"/>
  <testcase classname="core/containers" name="contained-resource-size-modified" time="0.043"/>
  <testcase classname="core/containers" name="container-conneg" time="0.019"/>
  <testcase classname="core/containers" name="container-conneg-vary" time="0.021"/>
  <testcase classname="core/containers" name="container-conneg-weighted" time="0.017"/>
  <testcase classname="core/containers" name="container-head-parity" time="0.041"/>
  <testcase classname="core/containers" name="delete-empty-container" time="0.032"/>
  <testcase classname="core/containers" name="delete-non-empty-container-409" time="0.046"/>
  <testcase classname="core/containers" name="delete-container-recursive" time="0.040"/>
  <testcase classname="core/containers" name="delete-container-recursive-deep" time="0.039"/>
  <testcase classname="core/containers" name="containment-hierarchy-consistent" time="0.005"/>
  <testcase classname="core/containers" name="container-lws-profile-ld-json" time="0.069"/>
  <testcase classname="core/containers" name="container-lws-profile-turtle" time="0.005"/>
  <testcase classname="core/data_resources" name="createDataResource" time="0.029"/>
  <testcase classname="core/data_resources" name="createDataResource-type-link" time="0.002"/>
  <testcase classname="core/data_resources" name="create-post-twice-distinct" time="0.038"/>
  <testcase classname="core/data_resources" name="create-in-missing-container-rejected" time="0.019"/>
  <testcase classname="core/data_resources" name="create-in-missing-container-404" time="0.014"/>
  <testcase classname="core/data_resources" name="create-server-managed-links-protected" time="0.028"/>
  <testcase classname="core/data_resources" name="readDataResource" time="0.029"/>
  <testcase classname="core/data_resources" name="data-resource-head-parity" time="0.030"/>
  <testcase classname="core/data_resources" name="data-resource-range-request" time="0.031"/>
  <testcase classname="core/data_resources" name="data-resource-range-unsatisfiable" time="0.027"/>
  <testcase classname="core/data_resources" name="data-resource-accept-ranges" time="0.027"/>
  <testcase classname="core/data_resources" name="updateDataResource" time="0.036"/>
  <testcase classname="core/data_resources" name="patch-json-patch-baseline" time="0.039"/>
  <testcase classname="core/data_resources" name="patch-json-patch-atomic" time="0.032"/>
  <testcase classname="core/data_resources" name="deleteDataResource" time="0.032"/>
  <testcase classname="core/data_resources" name="post-to-non-container-405" time="0.032"/>
  <testcase classname="core/data_resources" name="error-problem-details" time="0.016"/>
  <testcase classname="core/conditional_requests" name="conditional-get-304" time="0.032"/>
  <testcase classname="core/conditional_requests" name="conditional-get-container-304" time="0.019"/>
  <testcase classname="core/conditional_requests" name="conditional-get-stale-validator-200" time="0.039"/>
  <testcase classname="core/conditional_requests" name="conditional-put-stale-if-match-412" time="0.045"/>
  <testcase classname="core/conditional_requests" name="conditional-delete-stale-if-match-412" time="0.037"/>
  <testcase classname="core/conditional_requests" name="update-changes-strong-etag" time="0.036"/>
  <testcase classname="core/conditional_requests" name="delete-updates-parent-strong-etag" time="0.034"/>
  <testcase classname="core/conditional_requests" name="conditional-get-if-modified-since-304" time="0.034"/>
  <testcase classname="core/conditional_requests" name="conditional-get-if-unmodified-since-412" time="0.034"/>
  <testcase classname="core/linksets" name="getLinkset" time="0.042"/>
  <testcase classname="core/linksets" name="linkset-advertises-patch" time="0.034"/>
  <testcase classname="core/linksets" name="linkset-conditional-412" time="0.036"/>
  <testcase classname="core/linksets" name="linkset-put-405-when-unsupported" time="0.037"/>
  <testcase classname="core/linksets" name="linkset-removed-with-resource" time="0.036"/>
  <testcase classname="core/linksets" name="linkset-ready-at-create" time="0.028"/>
  <testcase classname="core/linksets" name="linkset-up-not-redirected" time="0.035"/>
  <testcase classname="core/linksets" name="linkset-patch-stays-linkset" time="0.034"/>
  <testcase classname="core/linksets" name="linkset-patch-json-patch" time="0.042"/>
  <testcase classname="core/linksets" name="linkset-patch-preserves-server-links" time="0.037"/>
  <testcase classname="core/moving" name="discovery-move-capability" time="0.020"/>
  <testcase classname="core/moving" name="move-data-resource" time="0.076"/>
  <testcase classname="core/moving" name="move-updates-container-etags" time="0.084"/>
  <testcase classname="core/moving" name="move-keeps-identifier-content-and-links" time="0.039">
    <skipped message="precondition &apos;the storage&apos;s MoveResource says it preserves identifiers (otherwise this test does not apply)&apos; does not hold: json /capability some expected some element satisfies [{&quot;pointer&quot;:&quot;/type&quot;,&quot;hasValue&quot;:&quot;MoveResource&quot;},{&quot;pointer&quot;:&quot;/preservesIdentifier&quot;,&quot;equals&quot;:true}], got [{&quot;type&quot;:&quot;MoveResource&quot;,&quot;appliesTo&quot;:[&quot;DataResource&quot;,&quot;Container&quot;],&quot;preservesIdentifier&quot;:false}]"/>
  </testcase>
  <testcase classname="core/moving" name="move-invalid-destination-refused" time="0.071"/>
  <testcase classname="core/moving" name="move-container" time="0.086"/>
  <testcase classname="core/moving" name="move-container-into-itself-refused" time="0.066"/>
  <testcase classname="core/moving" name="move-container-refused-without-container-support" time="0.028">
    <skipped message="precondition &apos;the storage moves data resources but not containers (otherwise this test does not apply)&apos; does not hold: json /capability some expected some element satisfies [{&quot;pointer&quot;:&quot;/type&quot;,&quot;hasValue&quot;:&quot;MoveResource&quot;},{&quot;pointer&quot;:&quot;/appliesTo&quot;,&quot;optional&quot;:true,&quot;none&quot;:[{&quot;pointer&quot;:&quot;&quot;,&quot;matches&quot;:&quot;^(https://www\\.w3\\.org/ns/lws#)?Container$&quot;}]}], got [{&quot;type&quot;:&quot;MoveResource&quot;,&quot;appliesTo&quot;:[&quot;DataResource&quot;,&quot;Container&quot;],&quot;preservesIdentifier&quot;:false}]"/>
  </testcase>
  <testcase classname="core/moving" name="move-refused-without-capability" time="0.031">
    <skipped message="precondition &apos;the storage describes no MoveResource capability (otherwise this test does not apply)&apos; does not hold: json /capability none expected none element satisfies [{&quot;pointer&quot;:&quot;/type&quot;,&quot;hasValue&quot;:&quot;MoveResource&quot;}], got [{&quot;type&quot;:&quot;MoveResource&quot;,&quot;appliesTo&quot;:[&quot;DataResource&quot;,&quot;Container&quot;],&quot;preservesIdentifier&quot;:false}]"/>
  </testcase>
  <testcase classname="core/moving" name="move-needs-create-in-destination" time="0.070"/>
  <testcase classname="core/moving" name="move-needs-delete-of-resource" time="0.069"/>
  <testcase classname="core/moving" name="move-notification" time="2.066"/>
  <testcase classname="core/storage_authorization" name="getContainer-private-unauthorized" time="0.015"/>
  <testcase classname="core/storage_authorization" name="protected-resource-metadata" time="0.016"/>
  <testcase classname="core/storage_authorization" name="protected-resource-metadata-data-resource" time="0.028"/>
  <testcase classname="core/storage_authorization" name="storage-root-same-origin" time="0.026"/>
  <testcase classname="core/storage_authorization" name="getContainer-authenticated-owner" time="0.019"/>
  <testcase classname="core/storage_authorization" name="createDataResource-unauthorized" time="0.025"/>
  <testcase classname="core/storage_authorization" name="updateDataResource-unauthorized" time="0.039"/>
  <testcase classname="core/storage_authorization" name="deleteDataResource-unauthorized" time="0.037"/>
  <testcase classname="core/storage_authorization" name="authz-non-owner-read-rejected" time="0.019"/>
  <testcase classname="core/storage_authorization" name="authz-non-owner-write-rejected" time="0.044"/>
  <testcase classname="core/storage_authorization" name="authz-non-owner-delete-rejected" time="0.033"/>
  <testcase classname="core/storage_authorization" name="authz-expired-token-rejected" time="0.023"/>
  <testcase classname="core/storage_authorization" name="authz-token-bad-signature-rejected" time="0.015"/>
  <testcase classname="core/storage_authorization" name="authz-token-alg-none-rejected" time="0.070"/>
  <testcase classname="core/storage_authorization" name="authz-token-unknown-key-rejected" time="0.016"/>
  <testcase classname="core/storage_authorization" name="authz-token-wrong-audience-rejected" time="0.014"/>
  <testcase classname="core/storage_authorization" name="authz-token-wrong-issuer-rejected" time="0.011"/>
  <testcase classname="core/storage_authorization" name="authz-token-not-yet-valid-rejected" time="0.013"/>
  <testcase classname="core/storage_authorization" name="authz-token-issued-in-future-rejected" time="0.015"/>
  <testcase classname="core/authorization_server" name="authz-server-metadata-well-known" time="0.011"/>
  <testcase classname="core/authorization_server" name="authz-metadata-subject-token-types" time="0.012"/>
  <testcase classname="core/authorization_server" name="authz-metadata-subject-token-types-are-uris" time="0.011"/>
  <testcase classname="core/authorization_server" name="authz-metadata-subject-identifier-types" time="0.013"/>
  <testcase classname="core/authorization_server" name="authz-token-exchange-valid" time="0.025"/>
  <testcase classname="core/authorization_server" name="authz-token-exchange-invalid-resource" time="0.016"/>
  <testcase classname="core/authorization_server" name="authz-token-exchange-missing-resource" time="0.004"/>
  <testcase classname="core/authorization_server" name="authz-token-exchange-missing-subject-token" time="0.013"/>
  <testcase classname="core/authorization_server" name="authz-issued-token-accepted-by-storage" time="0.016"/>
  <testcase classname="core/access_grants" name="access-grant-endpoint-is-container" time="0.014"/>
  <testcase classname="core/access_grants" name="access-grant-create" time="0.025"/>
  <testcase classname="core/access_grants" name="access-grant-revoke" time="0.029"/>
  <testcase classname="core/access_grants" name="getContainer-public-read" time="0.033"/>
  <testcase classname="core/access_grants" name="readDataResource-public-read" time="0.035"/>
  <testcase classname="core/access_grants" name="access-grant-authenticated-agent" time="0.040"/>
  <testcase classname="core/access_grants" name="access-grant-extra-properties-accepted" time="0.034"/>
  <testcase classname="core/access_grants" name="access-grant-inbox-notified" time="2.055"/>
  <testcase classname="core/access_grants" name="access-request-create" time="0.020"/>
  <testcase classname="core/access_grants" name="access-grant-document-shape" time="0.033"/>
  <testcase classname="core/access_grants" name="access-grant-incomplete-refused" time="0.050"/>
  <testcase classname="core/access_grants" name="access-grant-constraints-all-satisfied" time="0.045"/>
  <testcase classname="core/access_grants" name="access-grant-left-operands-accepted" time="0.057"/>
  <testcase classname="core/access_grants" name="access-grant-constraint-format" time="0.040"/>
  <testcase classname="core/access_grants" name="access-grant-constraint-type" time="0.040"/>
  <testcase classname="core/access_grants" name="access-grant-constraint-client" time="0.039"/>
  <testcase classname="core/access_grants" name="container-listing-filtered-metadata" time="0.049"/>
  <testcase classname="core/notifications" name="notification-service-advertised" time="0.015"/>
  <testcase classname="core/notifications" name="subscription-create" time="0.005"/>
  <testcase classname="core/notifications" name="subscription-missing-type-refused" time="0.013"/>
  <testcase classname="core/notifications" name="subscription-unadvertised-type-refused" time="0.014"/>
  <testcase classname="core/notifications" name="subscription-missing-topic-refused" time="0.013"/>
  <testcase classname="core/notifications" name="subscription-unreadable-topic-refused" time="0.039"/>
  <testcase classname="core/notifications" name="subscription-after-revocation-refused" time="0.038"/>
  <testcase classname="core/notifications" name="notification-delivered-create" time="2.099"/>
  <testcase classname="core/notifications" name="notification-delivered-update" time="2.022"/>
  <testcase classname="core/notifications" name="notification-delivered-delete" time="2.100"/>
  <testcase classname="core/notifications" name="notification-not-delivered-for-unreadable-resource" time="0.040">
    <skipped message="precondition &apos;bob cannot read it (otherwise access to the container reaches its members, and this test does not apply)&apos; does not hold: status code expected 403 or 404, got 200"/>
  </testcase>
  <testcase classname="core/notifications" name="notification-stops-after-revocation" time="4.020"/>
  <testcase classname="core/notifications" name="notification-actor-omitted" time="2.097"/>
  <testcase classname="core/notifications" name="notification-delivered-in-subcontainer" time="2.018"/>
  <testcase classname="core/notifications" name="notification-scope-data-resource-only" time="2.093"/>
  <testcase classname="core/pagination" name="pagination-first-page" time="0.005"/>
  <testcase classname="core/pagination" name="pagination-next-page" time="0.040"/>
  <testcase classname="core/pagination" name="pagination-single-page" time="0.030">
    <skipped message="precondition &apos;the listing is paginated and holds all five members on its page (otherwise this test does not apply)&apos; does not hold: json /items/4 selects a value expected a value at /items/4, got nothing"/>
  </testcase>
  <testcase classname="core/pagination" name="pagination-last-page" time="0.038"/>
  <testcase classname="core/pagination" name="pagination-totalitems-all-pages" time="0.033"/>
  <testcase classname="auth/oidc/manifest" name="authn-oidc-valid-id-token" time="0.140"/>
  <testcase classname="auth/oidc/manifest" name="authn-oidc-expired-id-token" time="0.010"/>
  <testcase classname="auth/oidc/manifest" name="authn-oidc-alg-none" time="0.005"/>
  <testcase classname="auth/oidc/manifest" name="authn-oidc-bad-signature" time="0.093"/>
  <testcase classname="auth/oidc/manifest" name="authn-oidc-untrusted-issuer" time="0.044"/>
  <testcase classname="auth/oidc/manifest" name="authn-oidc-missing-azp" time="0.004"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-valid-credential" time="0.008"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-unknown-kid" time="0.007"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-bad-signature" time="0.044"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-expired" time="0.005"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-alg-none" time="0.003"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-claims-mismatch" time="0.004"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-document-id-mismatch" time="0.045"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-key-not-for-authentication" time="0.044"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-key-revoked" time="0.004"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-foreign-controller" time="0.045"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-referenced-method" time="0.046"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-didkey-valid-credential" time="0.005"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-didkey-invalid-signature" time="0.002"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-didkey-alg-none" time="0.004"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-didkey-expired" time="0.002"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-didkey-claims-mismatch" time="0.002"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-didkey-audience-excludes-as" time="0.003"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-didkey-missing-exp" time="0.003"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-didkey-missing-iat" time="0.003"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-didkey-missing-subject" time="0.002"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-didkey-missing-issuer" time="0.003"/>
  <testcase classname="auth/cid/manifest" name="authn-cid-didkey-missing-client-id" time="0.003"/>
  <testcase classname="auth/saml/manifest" name="authn-saml-valid-assertion" time="0.000">
    <skipped message="the target does not declare SamlTrust"/>
  </testcase>
  <testcase classname="auth/saml/manifest" name="authn-saml-invalid-signature" time="0.000">
    <skipped message="the target does not declare SamlTrust"/>
  </testcase>
  <testcase classname="auth/saml/manifest" name="authn-saml-unsigned" time="0.000">
    <skipped message="the target does not declare SamlTrust"/>
  </testcase>
  <testcase classname="notifications/webhook/manifest" name="webhook-subscription-response" time="0.004"/>
  <testcase classname="notifications/webhook/manifest" name="webhook-subscription-expires-supported" time="0.004"/>
  <testcase classname="notifications/webhook/manifest" name="webhook-subscription-listed" time="0.010"/>
  <testcase classname="notifications/webhook/manifest" name="webhook-subscription-get-delete" time="0.006"/>
  <testcase classname="notifications/webhook/manifest" name="webhook-delivery-lws-json" time="2.090"/>
  <testcase classname="notifications/webhook/manifest" name="webhook-delivery-signed" time="2.088"/>
  <testcase classname="notifications/webhook/manifest" name="webhook-signature-components" time="2.130"/>
  <testcase classname="notifications/webhook/manifest" name="webhook-signing-key-published" time="2.133"/>
  <testcase classname="notifications/webhook/manifest" name="webhook-signature-verifies" time="2.131"/>
  <testcase classname="notifications/webhook/manifest" name="webhook-delivery-retried" time="3.047"/>
  <testcase classname="notifications/webhook/manifest" name="webhook-subscription-deactivated" time="0.051"/>
  <testcase classname="index/manifest" name="index-services-advertised" time="0.002"/>
  <testcase classname="index/manifest" name="type-index-lists-readable-types" time="0.007"/>
  <testcase classname="index/manifest" name="type-index-omits-unreadable-type" time="0.006"/>
  <testcase classname="index/manifest" name="type-index-not-shared" time="0.003"/>
  <testcase classname="index/manifest" name="type-search-by-type" time="0.002"/>
  <testcase classname="index/manifest" name="type-search-and-or" time="0.004"/>
  <testcase classname="index/manifest" name="type-search-native-classes" time="0.002"/>
  <testcase classname="index/manifest" name="type-search-no-match" time="0.002"/>
  <testcase classname="index/manifest" name="type-search-duplicate-groups" time="0.003"/>
  <testcase classname="index/manifest" name="type-search-at-members-ignored" time="0.003"/>
  <testcase classname="index/manifest" name="type-search-empty-key-absent" time="0.002"/>
  <testcase classname="index/manifest" name="type-search-empty-group-rejected" time="0.002"/>
  <testcase classname="index/manifest" name="type-search-type-not-array-rejected" time="0.001"/>
  <testcase classname="index/manifest" name="type-search-bad-element-rejected" time="0.002"/>
  <testcase classname="index/manifest" name="type-search-malformed-json-rejected" time="0.001"/>
  <testcase classname="index/manifest" name="type-search-relative-iri-rejected" time="0.002"/>
  <testcase classname="index/manifest" name="type-search-missing-content-type-rejected" time="0.001"/>
  <testcase classname="index/manifest" name="type-search-unsupported-format-rejected" time="0.001"/>
  <testcase classname="index/manifest" name="type-search-unsupported-format-accept-query" time="0.001"/>
  <testcase classname="index/manifest" name="type-search-accept-query-advertised" time="0.001"/>
  <testcase classname="index/manifest" name="type-search-not-acceptable" time="0.002"/>
  <testcase classname="index/manifest" name="type-search-unindexed-relation" time="0.003"/>
  <testcase classname="index/manifest" name="type-search-structural-relation-not-indexed" time="0.002"/>
  <testcase classname="index/manifest" name="type-search-authorization-filtered" time="0.004"/>
  <testcase classname="index/manifest" name="type-search-revoked-not-shown" time="0.004"/>
  <testcase classname="index/manifest" name="type-search-not-shared" time="0.001"/>
  <testcase classname="index/manifest" name="type-search-type-from-link-header" time="0.002"/>
  <testcase classname="index/manifest" name="type-search-type-from-content" time="0.001"/>
  <testcase classname="index/manifest" name="type-search-content-types-identical" time="0.009"/>
  <testcase classname="index/manifest" name="type-search-reflects-update" time="0.007">
    <skipped message="precondition &apos;replace it with a resource of type Beta, its Link headers replacing its linkset (otherwise the server does no combined updates, and this test does not apply)&apos; does not hold: header Preference-Applied matches expected matches /(?i)(^|[,\s])set-linkset\s*($|[,;=])/, got absent"/>
  </testcase>
  <testcase classname="index/manifest" name="type-search-reflects-delete" time="0.002"/>
  <testcase classname="index/manifest" name="type-search-vary-accept" time="0.003"/>
  <testcase classname="index/manifest" name="type-search-safe" time="0.004"/>
  <testcase classname="index/manifest" name="type-search-next-page" time="0.006"/>
  <testcase classname="index/manifest" name="type-search-relation-filter" time="0.004"/>
  <testcase classname="index/manifest" name="type-search-relation-cnf" time="0.010"/>
  <testcase classname="index/manifest" name="type-search-relation-from-link-header" time="0.004"/>
  <testcase classname="index/manifest" name="type-search-too-complex" time="0.003"/>
  <testcase classname="index/manifest" name="type-search-unrecognized-page-link" time="0.001">
    <skipped message="precondition &apos;a search names its first page (otherwise this test does not apply)&apos; does not hold: Link rel=&quot;first&quot; expected a matching link, got no Link"/>
  </testcase>
  <testcase classname="index/manifest" name="type-search-content-location-protected" time="0.002">
    <skipped message="precondition &apos;the search response names a result resource (otherwise this test does not apply)&apos; does not hold: header Content-Location present expected present, got absent"/>
  </testcase>
</testsuite>
