RocJITsu corpus policy
gfx1250_b0_a0_semantic_tests.json selects semantic programs whose instruction
forms have implemented runtime translations. The companion
gfx1250_b0_a0_semantic_rewrites.json pins the exact positive offline rewrite
count for every selected executable.
Four source-coverage programs are intentionally outside this qualification until their translations are implemented:
barrier_signal_isfirst_testfp8_e5m3_pack_testwmma_split_f16_testwmma_split_fp4_test
The offline translator currently rejects those forms as unsupported. They are not silently accepted or treated as passing translations.
Offline translation SHA baseline
The rocjitsu-test-corpus workflow records the SHA-256 of every successful
gfx1250 B0-to-A0 input and translated output after the release-lane corpus
tests succeed. A develop push uploads the canonical manifest as the
gfx1250-b0-a0-sha-pairs workflow artifact for 45 days. A manual workflow
dispatch on the develop branch also refreshes the baseline when the official
corpus repository and pinned gfx1250 corpus ref are left unchanged. The
manifest includes the fixed translation profile, pinned corpus commit,
input-manifest hash, package-lock hash, ROCm SDK version, and source commit; it
never contains the code objects themselves.
Pull-request runs upload a seven-day candidate manifest without receiving write access. A separate trusted workflow selects the newest completed, unexpired artifact from a successful develop push or canonical manual run, then compares output hashes only when the corpus, input manifest, package lock, and SDK provenance match. Before using a candidate artifact, the trusted workflow also requires the expected source workflow path and an exact match to the current head of a same-repository PR. Changed outputs or incompatible provenance create or update one non-blocking warning comment on the PR. When a later run matches, the workflow removes its stale comment.
record-gfx1250-dbt-sha-pairs.py runs a bounded, translation-only collection
pass after the corpus tests and validates the resulting manifest. The external
corpus harness does not expose the translated bytes, so keeping collection
separate avoids coupling its interface to this workflow. The preceding
harness run qualifies the included input set under its timeout and memory
policy; the collector repeats the per-object timeout and does not rerun
declared exclusions. It streams each output through a temporary file and
retains only its size and SHA-256. Its finalize command requires every pinned
corpus input to have either a successful pair or a matching declared
exclusion, which prevents partial runs from becoming a develop baseline.