Documentation
¶
Overview ¶
Command dectestconv runs the decTest corpus workflow: provisioning, conversion and classification of the General Decimal Arithmetic testcases.
Provisioning (-provision) downloads the corpus from the speleotrove URLs listed in the committed download list (testdata/dectest/downloads.txt) into a gitignored local directory (.cache/dectest) and SHA-256-verifies every file against it. Download unavailability, a hash or size mismatch, or zero matched files is a loud failure, never a skip; already-present files with matching hashes are reused (idempotent local runs).
Conversion (-convert) parses .decTest text into the internal fixture representation and validates every case against the hand-maintained adoption manifest (testdata/dectest/manifest.json): each committed case id must be present with an exactly matching content hash, and the manifest may not reference cases the file does not contain. Corpus bytes never enter the tree; committed fixtures carry provenance, and the five-class deviation taxonomy (adopted, intentional-exclusion, divergence-re-derived, corpus-beta, defect) is enforced by the manifest schema.
The per-case content hash is defined as
sha256(join("\x1f", [id, op, directives, operands, expected, conditions]))
where directives joins "key=value" pairs in the fixed order version, precision, rounding, maxexponent, minexponent, extended, clamp (lowercase keys, absent keys omitted), operands joins with "\x1e", and conditions join with "," in file order.