# GDR-8050L v256 READ front-dispatch closure probe

- ok: `true`
- firmware_derived_host_lba: `true`
- parser_descriptor_proof_complete_read10: `true`
- firmware_derived_delta: `false`

## Static front-dispatch tables

| table | opcode | command | class | handler pointer |
|---|---:|---|---:|---:|
| `normal` | `0x28` | `READ(10)` | `0x48` | `0x9002EA7C` |
| `normal` | `0xA8` | `READ(12)` | `0x14` | `0x9001C8C8` |
| `alternate` | `0x28` | `READ(10)` | `0x48` | `0x9002EA7C` |
| `alternate` | `0xA8` | `READ(12)` | `0x49` | `0x9002EA89` |

## CPU front-dispatch cases

| case | opcode | table return | expected class | 0x06F4 pointer | wrapper/handler | LBA -> 0x05EC | 0x05F0=0x11 | 0x06F1=0x04 | ok |
|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|
| `front_read10_normal_table_video_lba` | `0x28` | `0` | `0x48` | `0x9002EA7C` | `True` | `True` | `True` | `True` | `True` |
| `front_read10_alt_table_unlocked_max_lba` | `0x28` | `1` | `0x48` | `0x9002EA7C` | `True` | `True` | `True` | `True` | `True` |
| `front_read12_normal_table_metadata_handler_only` | `0xA8` | `0` | `0x14` | `0x9001C8C8` | `False` | `True` | `False` | `False` | `True` |
| `front_read12_alt_table_read_wrapper_boundary_lba` | `0xA8` | `1` | `0x49` | `0x9002EA89` | `True` | `True` | `True` | `True` | `True` |

## Closure status

- front_dispatch_table_to_handler_ok: `True`
- read10_scheduler_descriptor_ok: `True`
- parser_descriptor_proof_complete_read10: `True`

This closes the READ(10) host-LBA parser/dispatch/scheduler/descriptor proof at the firmware-control-flow level currently modeled: front dispatch selects the READ wrapper and handler from the opcode tables, the handler writes host LBA to `0x05EC`, and the proven v255 scheduler stage copies that LBA into descriptor SRAM `0x06E4` and arms transfer flag `0x06E0=0xF0`.

It still does **not** prove the Redump/unlocked media-window delta. Keep `firmware_derived_delta=false` until a firmware window/selector path is proven to consume or compute that offset.
