TAP version 13
# Subtest: verified approval releases one immutable PDF and reader downloads exact digest
ok 1 - verified approval releases one immutable PDF and reader downloads exact digest
  ---
  duration_ms: 17.987129
  type: 'test'
  ...
# Subtest: pending metadata cannot be downloaded, reviewed or released
ok 2 - pending metadata cannot be downloaded, reviewed or released
  ---
  duration_ms: 7.109026
  type: 'test'
  ...
# Subtest: declared digest and size reject a different upload
ok 3 - declared digest and size reject a different upload
  ---
  duration_ms: 8.296253
  type: 'test'
  ...
# Subtest: non PDF content cannot pass verification by matching its own digest
ok 4 - non PDF content cannot pass verification by matching its own digest
  ---
  duration_ms: 7.403811
  type: 'test'
  ...
# Subtest: stored file survives finalization rollback and is recoverable
ok 5 - stored file survives finalization rollback and is recoverable
  ---
  duration_ms: 12.499184
  type: 'test'
  ...
# Subtest: upload and finalize retries retain one verification audit
ok 6 - upload and finalize retries retain one verification audit
  ---
  duration_ms: 11.669209
  type: 'test'
  ...
# Subtest: approval cannot be transferred between digests
ok 7 - approval cannot be transferred between digests
  ---
  duration_ms: 8.554854
  type: 'test'
  ...
# Subtest: an author cannot review their own revision even with reviewer role
ok 8 - an author cannot review their own revision even with reviewer role
  ---
  duration_ms: 8.341072
  type: 'test'
  ...
# Subtest: new revision makes earlier approval stale without moving current release
ok 9 - new revision makes earlier approval stale without moving current release
  ---
  duration_ms: 13.504587
  type: 'test'
  ...
# Subtest: release compare and swap checks expected release version
ok 10 - release compare and swap checks expected release version
  ---
  duration_ms: 12.079553
  type: 'test'
  ...
# Subtest: replacement release preserves superseded revision and digest
ok 11 - replacement release preserves superseded revision and digest
  ---
  duration_ms: 16.984439
  type: 'test'
  ...
# Subtest: rejected revision cannot be released or rewritten
ok 12 - rejected revision cannot be released or rewritten
  ---
  duration_ms: 10.401124
  type: 'test'
  ...
# Subtest: stale expected latest does not allocate a duplicate revision
ok 13 - stale expected latest does not allocate a duplicate revision
  ---
  duration_ms: 7.143534
  type: 'test'
  ...
# Subtest: reader access is checked on direct file route and metadata
ok 14 - reader access is checked on direct file route and metadata
  ---
  duration_ms: 13.494272
  type: 'test'
  ...
# Subtest: reconciliation reports missing, mismatched, orphan and pending objects separately
ok 15 - reconciliation reports missing, mismatched, orphan and pending objects separately
  ---
  duration_ms: 20.326637
  type: 'test'
  ...
# Subtest: export and restore preserve revisions, reviews, audit and PDF digests
ok 16 - export and restore preserve revisions, reviews, audit and PDF digests
  ---
  duration_ms: 44.150055
  type: 'test'
  ...
# Subtest: damaged export checksum is rejected before destination creation
ok 17 - damaged export checksum is rejected before destination creation
  ---
  duration_ms: 12.504521
  type: 'test'
  ...
# Subtest: seed is repeatable and includes a restricted drawing
ok 18 - seed is repeatable and includes a restricted drawing
  ---
  duration_ms: 17.511703
  type: 'test'
  ...
# Subtest: HTTP upload, verify, review, release and authenticated file download
ok 19 - HTTP upload, verify, review, release and authenticated file download
  ---
  duration_ms: 66.415211
  type: 'test'
  ...
# Subtest: HTTP roles block reader mutation, author release and unauthorized direct files
ok 20 - HTTP roles block reader mutation, author release and unauthorized direct files
  ---
  duration_ms: 31.723585
  type: 'test'
  ...
# Subtest: HTTP authentication, CSRF, Origin and Host are enforced
ok 21 - HTTP authentication, CSRF, Origin and Host are enforced
  ---
  duration_ms: 15.622387
  type: 'test'
  ...
# Subtest: HTTP exports a restorable bundle and serves bounded static paths
ok 22 - HTTP exports a restorable bundle and serves bounded static paths
  ---
  duration_ms: 21.336242
  type: 'test'
  ...
# Subtest: HTTP competing releases accept only the latest approved revision
ok 23 - HTTP competing releases accept only the latest approved revision
  ---
  duration_ms: 21.206347
  type: 'test'
  ...
# Subtest: restore rejects a current release with no matching approval
ok 24 - restore rejects a current release with no matching approval
  ---
  duration_ms: 13.57198
  type: 'test'
  ...
1..24
# tests 24
# suites 0
# pass 24
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 552.184061

