Specification

Cases, corpus version 1

All 111 cases, in seven groups. Each row gives the level the case proves, the operation it runs, the sections it tests and its expected result.

How a case is compared, and what version 1 does not test: How conformance works

The case files are not part of this publication; each case is listed below by name, level and expected outcome.

  • Outside the corpus Outside the corpus: the case reads a pack kept outside the corpus directory. 19 cases.
  • Four cases are listed by row number.

Group negative

Inputs that must fail, each with exactly one error kind.

Table 1. Group negative (53)
CaseLevelOperationSpecificationExpected
neg-align-csdt-offset-not-64Reader-Coreopen§9 step 5fails with appendix_alignment
neg-align-log2-64Reader-Appendixappendix§7.2, §7.3fails with appendix_alignment
neg-app-csdt-bad-magicReader-Appendixappendix§7.2, §7.3fails with appendix_invalid
neg-app-csdt-version-2Reader-Appendixappendix§7.2, §7.3fails with appendix_invalid
neg-app-csdt-version-9Reader-Appendixappendix§7.2, §7.3fails with appendix_invalid
neg-app-data-range-past-eofReader-Appendixappendix§7.2, §7.3fails with appendix_invalid
neg-app-descriptor-reserved-nonzeroReader-Appendixappendix§7.2, §7.3fails with appendix_invalid
neg-app-table-offset-near-u64-maxReader-Appendixappendix§7.2, §7.3fails with appendix_invalid
neg-app-table-offset-past-eofReader-Appendixappendix§7.2, §7.3fails with appendix_invalid
neg-app-zero-count-table-past-eofReader-Appendixappendix§7.2, §7.3fails with appendix_invalid
neg-bind-ext-no-csdt-refReader-Appendixbind§9 step 10fails with dangling_embref
neg-bind-local-record-oobReader-Appendixbind§9 step 10fails with dangling_embref
neg-bind-local-section-oobReader-Appendixbind§9 step 10fails with dangling_embref
neg-bind-no-appendixReader-Appendixbind§9 step 10fails with dangling_embref
neg-bind-wrong-dtypeReader-Appendixbind§9 step 10fails with section_type_mismatch
neg-bind-wrong-stride Outside the corpusReader-Appendixbind§9 step 10fails with section_type_mismatch
neg-bind-wrong-type Outside the corpusReader-Appendixbind§9 step 10fails with section_type_mismatch
neg-body-non-utf8Reader-Coreopen§4.1, §9 step 7fails with invalid_utf8
neg-crc-section-flip Outside the corpusReader-Appendixappendix§7.3fails with appendix_crc_mismatch
neg-crc-section-tableReader-Appendixappendix§7.2, §7.3fails with appendix_crc_mismatch
neg-header-bad-magicReader-Coreopen§3.1, §9 step 2fails with invalid_header
neg-header-multibyte-byte80Reader-Coreopen§9 step 2fails with invalid_header
neg-header-non-numeric-recordsReader-Coreopen§3.1fails with invalid_header
neg-header-too-shortReader-Coreopen§2 rule 2, §9 step 1fails with invalid_header
neg-header-version-7Reader-Coreopen§3.2, §9 step 2fails with unsupported_version
neg-hf-neither-final-nor-placeholderReader-Coreopen§3.3fails with header_footer_mismatch
neg-hf-records-disagreeReader-Coreopen§9 step 4fails with header_footer_mismatch
neg-hf-sha-disagreeReader-Coreopen§3.3, §9 step 4fails with header_footer_mismatch
neg-io-missing-pathReader-Coreopen—fails with io
neg-json-lone-surrogateReader-Coreopen§10.2fails with json
neg-json-syntaxReader-Coreopen§4.1fails with json
neg-json-typed-schemaReader-Coreopen§4.3fails with json
neg-limit-gzip-inflate-capReader-Coreopen§11fails with limit_exceeded
neg-limit-input-cap-plainReader-Coreopen—fails with limit_exceeded
neg-merge-legacy-v3-appendixMergermerge§7.2, §8.1 precondition 2fails with appendix_legacy_version
neg-merge-tensorindex-section Outside the corpusMergermerge§8.1 precondition 3fails with merge_conflict
neg-merge-unregistered-section-typeMergermerge§8.1 precondition 4fails with merge_conflict
neg-record-appendix-without-markerReader-Coreopen§2 rule 4, §9 step 7fails with invalid_record
neg-record-marker-mid-bodyReader-Coreopen§4.1, §9 step 7fails with invalid_record
neg-record-missing-kReader-Coreopen§4.2fails with invalid_record
neg-record-not-objectReader-Coreopen§4.2, §9 step 7fails with invalid_record
neg-sha-appendix-flip-open Outside the corpusReader-Coreopen§6, §9 step 6fails with checksum_mismatch
neg-sha-body-flip Outside the corpusReader-Coreopen§6, §9 step 6fails with checksum_mismatch
neg-unsupported-payload-classReader-Appendixappendix§7.4fails with unsupported

Group positive

Well-formed packs and the record lines a reader emits for them: one pack per typed kind, number spelling, member order, an unknown kind, a reserved kind, and a typed kind at a higher version.

Table 2. Group positive (29)
CaseLevelOperationSpecificationExpected
pos-fixture-empty Outside the corpusReader-Coreopen§2, §4, §6, §9 steps 1-8passes
— Outside the corpusReader-Coreopen§2, §4, §6, §9 steps 1-8passes
— Outside the corpusReader-Coreopen§2, §4, §6, §9 steps 1-8passes
— Outside the corpusReader-Coreopen§2, §4, §6, §9 steps 1-8passes
pos-kind-citationWriterrecords§4.3, §5.1, §5.3passes
pos-kind-clauseWriterrecords§4.3, §5.1, §5.3passes
pos-kind-codebook-manifestWriterrecords§4.3, §5.1, §5.3passes
pos-kind-csdt-refWriterrecords§4.3, §5.1, §5.3passes
pos-kind-discoveryWriterrecords§4.3, §5.1, §5.3passes
pos-kind-embrefWriterrecords§4.3, §5.1, §5.3passes
pos-kind-entWriterrecords§4.3, §5.1, §5.3passes
pos-kind-grounded-answerWriterrecords§4.3, §5.1, §5.3passes
pos-kind-hyperWriterrecords§4.3, §5.1, §5.3passes
pos-kind-knob-setWriterrecords§4.3, §5.1, §5.3passes
pos-kind-metaWriterrecords§4.3, §5.1, §5.3passes
pos-kind-outcomeWriterrecords§4.3, §5.1, §5.3passes
pos-kind-payloadWriterrecords§4.3, §5.1, §5.3passes
pos-kind-promoWriterrecords§4.3, §5.1, §5.3passes
pos-kind-provWriterrecords§4.3, §5.1, §5.3passes
pos-kind-relWriterrecords§4.3, §5.1, §5.3passes
pos-kind-sessionWriterrecords§4.3, §5.1, §5.3passes
pos-kind-session-endWriterrecords§4.3, §5.1, §5.3passes
pos-kind-sevWriterrecords§4.3, §5.1, §5.3passes
pos-member-order-preservedWriterrecords§10.1, §10.3passes
pos-numbersWriterrecords§10.2, §10.4passes
pos-numbers-d96Writerrecords§10.2passes
pos-opaque-future-kindWriterrecords§4.4 rule 1, §5.3passes
—Writerrecords§5.2passes
pos-typed-kind-higher-vWriterrecords§4.4 rule 2, §5.3 notepasses

Group graph

Whole packs: empty, without an appendix, gzip, with a placeholder header, with an appendix, and the verify reports for them.

Table 3. Group graph (13)
CaseLevelOperationSpecificationExpected
graph-appendix-sections Outside the corpusReader-Appendixappendix§7.4passes
graph-appendix-v3-readReader-Appendixappendix§7.2passes
graph-bind-s2-a Outside the corpusReader-Appendixbind§9 step 10passes
graph-emptyReader-Coreopen§2passes
graph-gzipReader-Coreopen§11passes
graph-no-appendixReader-Coreopen§2 rule 3passes
graph-open-verify-opt-out Outside the corpusReader-Coreverify§9 step 6passes
graph-placeholder-headerReader-Coreopen§3.3passes
graph-section-b2048 Outside the corpusReader-Appendixappendix§7.3, §7.4passes
graph-verify-compact Outside the corpusReader-Appendixverify§9 steps 1-10passes
graph-verify-dangling-countsReader-Appendixverify§9 step 10passes
graph-verify-type-mismatch-counts Outside the corpusReader-Appendixverify§9 step 10passes

Group merge

One case per merge strategy, stub resolution, the same pair merged in both orders, and a key shared by two different records.

Table 4. Group merge (8)
CaseLevelOperationSpecificationExpected
merge-commutative-abMergermerge§8.1 property 1passes
merge-commutative-baMergermerge§8.1 property 1passes
merge-higher-salienceMergermerge§8.1passes
merge-id-dedup-trapMergermerge§5.3, §8.1 rule 5passes
merge-latestMergermerge§8.1passes
merge-manualMergermerge§8.1passes
merge-stub-resolutionMergermerge§8.1 rule 4passes
merge-unionMergermerge§8.1passes

Group diff

Added, removed and changed records, duplicate keys, a changed appendix section, and a difference in member order only.

Table 5. Group diff (4)
CaseLevelOperationSpecificationExpected
diff-add-remove-changeDifferdiff§8.2passes
diff-appendix-section-changed Outside the corpusDifferdiff§8.2 rule 4passes
diff-duplicate-keysDifferdiff§8.2 rule 1passes
diff-member-order-onlyDifferdiff§8.2 last paragraph, §10.3passes

Group filter

Selecting records by kind and by primary-id prefix.

Table 6. Group filter (2)
CaseLevelOperationSpecificationExpected
filter-id-prefix Outside the corpusReader-Corefilter§5.3passes
filter-kinds Outside the corpusReader-Corefilter§5.3passes

Group write

Writing a pack without an appendix, and an opaque record through a write and a read.

Table 7. Group write (2)
CaseLevelOperationSpecificationExpected
write-no-appendixWriterwrite§2, §3, §4.3, §5.3, §6, §10.0passes
write-opaque-roundtripWriterwrite§4.4, §10.1passes
Sections