# Ch426 — authentic vertex-alpha repair and atmospheric composite

## Root cause

The scheduler generator's `--auth-color-tfx` path preserved captured RGB but
called `bake.rgbaq_with_q()`, a legacy helper that always writes alpha
`0xff`.  The first captured alpha fan actually uses vertex alpha `0x03` at
the anchor and `0x00` at the remaining vertices.  Under MODULATE+TCC, forcing
that alpha to `0xff` made the authentic additive blend roughly two orders of
magnitude stronger and produced Ch425's white rectangles.

`gs_make_sh3_scheduler_fixture.py` now packs the complete captured 32-bit
RGBA word when authentic color is enabled.  It also fails closed if emitted
RGBAQ alpha differs from the canonicalized source vertex.  Legacy fixtures
without authentic color retain their old opaque-alpha behavior.

## Repaired fixture

`zsrt139f22` regenerates the same 53 visible PSMT8 fan draws used by Ch405,
in three exact-state groups, with:

- captured RGBAQ alpha;
- native GS 12.4 screen coordinates;
- parsed kick semantics, authentic scissor, and framebuffer clipping;
- authentic Z/TEST/ZMSK and ALPHA state;
- runtime CLUT, MODULATE color, and production bilinear sampling.

The repaired geometry expands to 218 one-triangle bounded epochs.  The final
chronological candidate `zsrt139f23` is Ch424's 125 epochs followed by the 20
authentic CT32 darken epochs and the 218 repaired alpha epochs: 363 total.
The rejected PSMT4 pass is not included.

## Production RTL acceptance

The complete replay passed:

- 1,009,406 fragments fed; 990,062 passed;
- 363 markers, zero fragment drops, zero color overflows, zero AXI errors;
- Z mismatch 0/307,200 and color mismatch 0/245,314;
- framebuffer SHA-256
  `ccf574d7e7ab06a519488c187da08b8c56dce5b923b6909dafba11cad6b4ce4a`.

Against the PCSX2 frame, the accepted display mapping measures MAE 20.0713 /
RMSE 28.9639, improving on Ch424's 20.9469 / 29.7626.  The new image adds a
soft captured atmospheric veil without the false white rectangles.

A controlled no-darken replay (`zsrt139f24`, Ch424 + repaired alpha) also
passed exactly but measured 20.0890 / 29.0439.  The chronological CT32 pass
therefore provides a small measured improvement as well as preserving the
captured order; `zsrt139f23` remains the accepted candidate.

## Silicon acceptance

No new Quartus compile was needed.  The timing-clean Ch423 RBF
(`17d1c1b49aac4d893ed56285cf0703bf375db2ee9f472ea36862cca376ae63fe`)
ran all 363 epochs on the DE25.  Every texture CRC, palette checksum, staged
record count, ordered drain, and zero-drop gate passed; the host returned
`rc=0` and enabled the HDMI line-buffer source.

The board dumped all 307,200 words with 196,889 nonzero pixels, bounds
`(0,0)..(511,479)`, sum32 `0xb59376d4`, and xor32 `0x28c61f44`.  Board and RTL
framebuffer dumps are byte-identical and share the SHA-256 above.  Ch426 is
accepted on silicon and is the current live HDMI baseline.
