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: 20.273147
  type: 'test'
  ...
# Subtest: pending metadata cannot be downloaded, reviewed or released
ok 2 - pending metadata cannot be downloaded, reviewed or released
  ---
  duration_ms: 11.074948
  type: 'test'
  ...
# Subtest: declared digest and size reject a different upload
ok 3 - declared digest and size reject a different upload
  ---
  duration_ms: 7.182443
  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.535835
  type: 'test'
  ...
# Subtest: stored file survives finalization rollback and is recoverable
ok 5 - stored file survives finalization rollback and is recoverable
  ---
  duration_ms: 11.56046
  type: 'test'
  ...
# Subtest: upload and finalize retries retain one verification audit
ok 6 - upload and finalize retries retain one verification audit
  ---
  duration_ms: 10.468805
  type: 'test'
  ...
# Subtest: approval cannot be transferred between digests
ok 7 - approval cannot be transferred between digests
  ---
  duration_ms: 8.643063
  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: 9.19831
  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: 14.404434
  type: 'test'
  ...
# Subtest: release compare and swap checks expected release version
ok 10 - release compare and swap checks expected release version
  ---
  duration_ms: 12.61596
  type: 'test'
  ...
# Subtest: replacement release preserves superseded revision and digest
ok 11 - replacement release preserves superseded revision and digest
  ---
  duration_ms: 15.431753
  type: 'test'
  ...
# Subtest: rejected revision cannot be released or rewritten
ok 12 - rejected revision cannot be released or rewritten
  ---
  duration_ms: 12.299193
  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: 6.694618
  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: 10.766854
  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: 14.689164
  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: 32.516006
  type: 'test'
  ...
# Subtest: damaged export checksum is rejected before destination creation
ok 17 - damaged export checksum is rejected before destination creation
  ---
  duration_ms: 11.230542
  type: 'test'
  ...
# Subtest: seed is repeatable and includes a restricted drawing
ok 18 - seed is repeatable and includes a restricted drawing
  ---
  duration_ms: 15.729151
  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: 97.006997
  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: 38.064225
  type: 'test'
  ...
# Subtest: HTTP authentication, CSRF, Origin and Host are enforced
ok 21 - HTTP authentication, CSRF, Origin and Host are enforced
  ---
  duration_ms: 24.286415
  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: 29.266199
  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: 32.208141
  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: 18.658536
  type: 'test'
  ...
# Subtest: restore database failure removes only its own new destination
ok 25 - restore database failure removes only its own new destination
  ---
  duration_ms: 22.124518
  type: 'test'
  ...
# Subtest: a killed restore marker prevents startup of partial data
ok 26 - a killed restore marker prevents startup of partial data
  ---
  duration_ms: 0.507384
  type: 'test'
  ...
1..26
# tests 26
# suites 0
# pass 26
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 714.138513
