ConSan assigns a stable textual identity to each synchronization event found while analyzing a GPU code object. A representative identity has this shape:
fnv1a64:<code-object-fingerprint>
|kernel=
Every workload retained in the active matrix is simultaneously green. Final
audit artifact consan-validation-gfx1250-final-audit-149 reruns every one of
the 40 cells at committed tip 9acc4dd9b0 with one hook identity. Cell text
reports progress within blue;
successful process launch or focused unit coverage alone does not promote a
cell.
| Workload | SuperCollider | Record/Replay | Sampled | Inline Shadow |
This is the gfx1250 workload × instrumentation evidence ledger. It follows
the acceptance standard of STATUS_RDNA4.md, but inherits no
coverage denominator, machine-code identity, fault expectation, timing,
provenance, or green cell from another architecture.
The executable authority is
consan_validation.py, with the
experiment contract described by VALIDATION.md. Porting work
Measured on 2026-07-19 using the same gfx1250 workload binaries and the workspace TheRock ROCm runtime. Each reported row passed its independent correctness oracle. FFM used its default worker configuration; forcing eight workers was separately found to cause severe slowdowns and is not represented in the table.
| Test | RocJitsu | FFM | Comparison |
|---|
| Priority workload | SuperCollider | Record/Replay | Sampled | Inline Shadow |
|---|---|---|---|---|
| P0 Qwen3-0.6B prefill | 🟩 20/20; clean + exact-fault trap; overhead: 1.0x | 🟩 20/20; clean + qualified miss; overhead: 1.0x | 🟩 20/20; clean + measured statistical detection; repeated-dispatch metadata hardening tracked; overhead: 1.0x | 🟩 20/20; clean + attributed diagnostic; overhead: 1.0x |
| P1 Sharktank TP1 prefill | 🟩 Clean 352/352; exact pair removal is a schedule-masked qualified miss; instability marker retained; overhead: 1.1x | 🟩 Clean 352/352 + 92/92 barriers; exact pair removal corrupts oracle, qualified replay miss; overhead: 1.7x | 🟩 Clean 352/352; exact pair removal is a schedule-masked qualified miss; four unpatched supported barriers are decode-only; overhead: 1.0x | 🟩 Clean 352/352 + 92/92; exact pair removal emits an attributed diagnostic; overhead: 4.4x |
| P1 Sharktank TP1 decode/combined | 🟩 Clean 352/352; exact pair removal is a schedule-masked qualified miss; c |
| Priority workload | SuperCollider | Record/Replay | Sampled | Inline Shadow |
|---|---|---|---|---|
| P0 Qwen3-0.6B prefill | 🟩 20/20; clean + exact-fault trap; overhead: 1.0x | 🟩 20/20; clean + qualified miss; overhead: 1.0x | 🟩 20/20; clean + measured statistical detection; repeated-dispatch metadata hardening tracked; overhead: 1.0x | 🟩 20/20; clean + attributed diagnostic; overhead: 1.0x |
| P1 Sharktank TP1 prefill | 🟩 Clean 352/352; exact pair removal is a schedule-masked qualified miss; instability marker retained; overhead: 1.1x | 🟩 Clean 352/352 + 92/92 barriers; exact pair removal corrupts oracle, qualified replay miss; overhead: 1.7x | 🟩 Clean 352/352; exact pair removal is a schedule-masked qualified miss; four unpatched supported barriers are decode-only; overhead: 1.0x | 🟩 Clean 352/352 + 92/92; exact pair removal emits an attributed diagnostic; overhead: 4.4x |
| P1 Sharktank TP1 decode/combined | 🟨 Clean decode + combined; 352/352; instability marker | 🟨 Clean decode + |
| Priority workload | SuperCollider | Record/Replay | Sampled | Inline Shadow |
|---|---|---|---|---|
| P0 Qwen3-0.6B prefill | 🟩 20/20; clean + exact-fault trap; overhead pending refresh | 🟩 20/20; clean + qualified miss; overhead pending refresh | 🟩 20/20; clean + measured statistical detection; overhead pending refresh | 🟩 20/20; clean + attributed diagnostic; overhead pending refresh |
| P1 Sharktank TP1 prefill | 🟨 Clean 352/352; instability marker | 🟨 Clean 352/352 + 92/92 barriers | 🟨 Clean 352/352 + 18/22 barriers; automatic standard sampling profile | 🟨 Clean 352/352 + 92/92; dynamic undercoverage |
| P1 Sharktank TP1 decode/combined | 🟨 Clean decode + combined; 352/352; instability marker | 🟨 Clean decode + combined; 352/352 + 92/92 | 🟨 Clean decode + combined; 352/352 + 18/22 barriers; automatic standard sampling profile | 🟨 Clean decode + combined; 352/352 + 92/92; dynamic undercoverage |
| P2 Sharktank TP2 family | 🟨 Clean 992/992; instability marker | 🟨 Clean 992/992 + |
| Priority workload | SuperCollider | Record/Replay | Sampled | Inline Shadow |
|---|---|---|---|---|
| P0 Qwen3-0.6B prefill | 🟩 20/20; clean + exact-fault trap; overhead pending refresh | 🟩 20/20; clean + qualified miss; overhead pending refresh | 🟩 20/20; clean + measured statistical detection; overhead pending refresh | 🟩 20/20; clean + attributed diagnostic; overhead pending refresh |
| P1 Sharktank TP1 prefill | 🟨 Clean 352/352; instability marker | 🟨 Clean 352/352 + 92/92 barriers | 🟨 Clean 352/352 + 18/22 barriers; automatic standard sampling profile | 🟨 Clean 352/352 + 92/92; dynamic undercoverage |
| P1 Sharktank TP1 decode/combined | 🟨 Clean decode + combined; 352/352; instability marker | 🟨 Clean decode + combined; 352/352 + 92/92 | 🟨 Clean decode + combined; 352/352 + 18/22 barriers; automatic standard sampling profile | 🟨 Clean decode + combined; 352/352 + 92/92; dynamic undercoverage |
| P2 Sharktank TP2 family | 🟨 Clean 992/992; instability marker | 🟨 Clean 992/992 + |
Thanks for freezing the DAG. That is the reasonable thing to do now. You can take the next 2 hours to fully wrap up. It's 7 AM now; you can take until 9 AM if necessary.
Can you help me understand: What is the shape of the useful new scope that you kept discovering? Did you literally find new bugs in existing code that were only discovered by the new testing scope? Or was it more like pulling threads?
Both happened, but the dominant pattern was: New tests found literal bugs; fixing or validating each bug exposed a deeper missing invariant. Some concrete examples:
The scope increase was not simply the predictable result of “more tests.” The new iree-test-suites/LLM corpus and systematic bug injection invalidated several assumptions under which the earlier ConSan prototype appeared usable. Small kernels had spare registers, simple code-object ownership, familiar LDS barriers, and faults that could be represented by dropping one instruction. Production IREE models instead supplied register-saturated kernels, multiple processes and code objects, mixed FLAT/VGLOBAL/LDS operations, subtle atomic protocols, and enough runtime complexity that a run could look successful even when no intended kernel had been instrumented. Fault injection then made semantic incompleteness observable: an engine could run cleanly yet miss a wrong address, weakened ordering, failed compare-exchange, or slightly displaced barrier. The resulting work is the machinery needed to make the original claim—usable end-to-end conc