## Iteration 34 — Phase 8 (close): Kernel cleanup → 7.0-14 SHIPPING

Closes 2026-05-14, fifth campaign-day milestone. Strips iter33 VP8 diagnostic printks, ships clean kernel matching the 5/5 PASS state.

### Goal

Remove the iter33 `vpu2_iter33_vp8` printk in `rockchip_vpu2_hw_vp8_dec.c` (and the dead `hantro_iter33_vp8` block in `hantro_g1_vp8_dec.c` that was added to the wrong function in iter33 first attempt). Ship clean 7.0-14.

### Result

- `linux-fresnel-fourier 7.0-14` built + deployed.
- 5/5 codec regression PASS on the clean kernel — libva == kdirect bit-exact for all 5 codecs (H264, HEVC, VP9, VP8, MPEG-2). 4/5 also bit-equal to SW reference (MPEG-2 differs from SW by ≤1 LSB IDCT precision artifact — same as iter33).
- `dmesg | grep iter` empty — diagnostic printks gone.

### Devices on 7.0-14 (note: enumeration shifted from 7.0-13)

| Driver | Video device | Media device |
|---|---|---|
| rockchip-rga | /dev/video0 | n/a |
| rk3399-vpu-enc (encoder) | /dev/video1 | (shared with hantro) |
| rk3399-vpu-dec (hantro) | /dev/video2 | /dev/media0 |
| rkvdec | /dev/video3 | /dev/media1 |
| uvcvideo (USB cam) | /dev/video4-5 | /dev/media2 |

The /dev/video* and /dev/media* numbers shift between kernel boots based on probe order. Always re-probe via `v4l2-ctl --info` and `media-ctl -d /dev/mediaN -p` before hard-coding paths in test scripts.

### Substrate state at iter34 close

Backend fork tip `7e0848d` (α-25 + α-29 + α-30 + iter29/30/33 env-gated DIAG probes; all three letter-fixes are load-bearing).

Kernel `linux-fresnel-fourier 7.0-14` clean, no diagnostic printks.

### Open items (post iter34)

1. Backend env-gated DIAG cleanup (low priority): iter29 `LIBVA_HEVC_DUMP_SLICE_TAIL`, iter30 `LIBVA_TS_SCALE`, iter33 `LIBVA_VP8_DUMP_FRAME`. Env-gated, no behavior change without env set. Could clean up to keep ship-ready source minimal. Or leave for future regression debugging.
2. α-26 cosmetic revert (`decode_params->short_term_ref_pic_set_size = picture->st_rps_bits` — mis-routed; rkvdec doesn't use). Could revert to 0 to match V4L2 spec semantics.
3. Libva multi-device probe — let auto-detect support both rkvdec and hantro in a single session, instead of requiring LIBVA_V4L2_REQUEST_VIDEO_PATH override per codec. Architectural change in libva backend.

### Campaign FINAL state

| Bug | Status | Fix |
|---|---|---|
| Bug 4 (H.264 keyframe-partial) | FIXED iter25 α-25 | rkvdec image_fmt pre-seed |
| Bug 5 (HEVC libva all-zero CAPTURE) | FIXED iter25 + iter31 | α-25 + α-29 (st_rps_bits to slice_params) |
| VP8 wrong output through libva | FIXED iter33 α-30 | prepend VP8 uncompressed header to OUTPUT |
| MPEG-2 HW differs from SW | NOT A BUG | hantro IDCT precision, libva==kdirect bit-exact |
| Kernel diagnostic printks | CLEANED iter32 + iter34 | 7.0-14 ship |

| Codec | libva 10F sha | kdirect 10F sha | SW 10F sha | L==K | L==SW |
|---|---|---|---|---|---|
| H.264 | dd4f5f2d552c07bc | same | same | ✓ | ✓ |
| HEVC  | 108f925bb6cbb6c9 | same | same | ✓ | ✓ |
| VP9   | cf35908ae0f9ab60 | same | same | ✓ | ✓ |
| VP8   | d3231e5b6c0ee10b | same | same | ✓ | ✓ |
| MPEG-2| 95c5905890c937d4 | same | 933b744134e47ba4 | ✓ | ~ (≤1 LSB diff) |

**5/5 codecs PASS** the libva-vs-kdirect bit-exact contract. Campaign closed.
