D104 - A blocked instruction names its dependency; an unwritten one does not

Status: decided (confirmed with input, 2026-08-20)

model::BLOCKED carries a reason string for instructions whose semantics are understood but which wait on a subsystem that does not exist. exp is the first and currently only entry: exporting needs a render target, and every translated module today is a compute dispatch writing to a storage buffer.

Without this, the worklist says "no translation for this instruction" about an instruction nobody has looked at and about one blocked on a whole subsystem. Those rank differently - the first is an afternoon and the second is not - and a list that cannot tell them apart sends effort at whichever is most frequent rather than whichever is next.

exp could have been mapped onto the observation buffer instead, which would let fragment shaders translate end to end and be compared between fidelity levels. Rejected: the mapping would be invented here rather than derived from anything, and a shader that appears to work while writing its colour somewhere arbitrary is worse than one that refuses. Principle 3.

An entry in this list is a claim that the semantics are understood and the dependency named. It is not a to-do list - anything that could simply be written should be written, and s_load_dwordx2, s_load_dwordx4, s_load_dwordx8 and s_mov_b64 were written in the same unit rather than listed here.