Review P5-8: core handler fragment split

2026-09-19: replace the 8,759-line 09a-handlers.wat monolith with six contiguous, ordered fragments. No functions, data, globals, layouts or comments are reordered or rewritten; concatenation differs by one blank line.

Fragment Lines Contents
09a-handlers.wat 847 ABI layouts, timer and posted-message queue helpers
09a-handlers0-sound.wat 201 PlaySound/sndPlaySound shared implementation
09a-handlers1-user.wat 2,950 USER/window/dialog, shell and common-dialog APIs
09a-handlers2-runtime.wat 1,588 Legacy CRT/string, registry/heap and paint/clipboard APIs
09a-handlers3-sync.wat 1,168 Process/thread APIs and synchronization
09a-handlers4-late.wat 2,004 Pointer probes, late USER/GDI, IME and character conversion

The older API-number ordering mixes some subsystems. These are honest contiguous splits, not a claim that every API now lives beside its family. main.watx remains the only include-order authority. Four affected region owners move with their symbols; region layouts and generated mirrors do not change. CLAUDE's source map and API-addition guidance now point at subsystem fragments instead of directing everything into one monolith.

Gates and verification

Local logs: /private/tmp/wa-core-split-equivalence.log, wa-core-split-build{,2,3}.log, wa-core-split-format.log, wa-core-split-compact.log, wa-core-split-union.log, wa-core-split-owners.log, wa-core-split-sound.log, wa-core-split-timer.log.

The original 09a and large 09c3 wndproc monoliths are now split. Other large subsystem files (notably OLE and DirectX) and the six existing raw literals remain separate cleanup candidates. No API behavior or performance change is claimed.