HyprTile F11 Wallpaper Pipeline - Stage Blend Modes Verification
================================================================

Scope
-----
This verification targets the new per-stage blend model, its F11 integration,
configuration compatibility and the stage compositor semantics.

Passed checks
-------------
1. app_config.c syntax check with clang -std=gnu11 -Wall -Wextra.
2. overlay_hyprland_config.c syntax check with project headers and minimal SDL
   compile stubs. The only stub-induced warning is an unused clip variable
   because the SDL_SetRenderClipRect stub is a no-op.
3. Canonical blend vocabulary harness:
   normal, screen, add, multiply, overlay, softlight, difference.
   Aliases additive, mul, soft-light, soft_light and diff normalize correctly.
4. Real app_config load -> save -> reload harness:
   - missing blend -> normal
   - blend_mode alias is accepted
   - invalid blend -> normal
   - disabled stages retain text/font/font-size/opacity/blend
   - saved JSON parses successfully
5. wallpaperd blend parser/stage-assignment harness:
   --pack-blend affects exactly the passes of the immediately preceding pack;
   invalid modes are rejected.
6. Static renderer consistency:
   - config mode order matches wallpaperd enum order
   - both normal HyprTile startup and F11 startup/preview emit --pack-blend
   - non-normal stage modes preserve the pre-stage texture
   - internal manifest pass opacity remains STAGE_BLEND_NORMAL
   - final stage composition receives stage opacity + stage blend
7. Blend math domain test:
   7 modes x 10,000 random RGB-channel samples, all finite and within [0,1].
   Identity/boundary checks cover screen/black, multiply/white, add/black,
   difference/same-color and opacity 0/1.
8. F11 action range check:
   240 + 12 * 17 = 444, below catalog action base 480.
9. Shader catalog remains intact: 346 .wallpaper presets are present.
10. glass-stream-song station/title files remain present in the final source tree.

Native build environment limitation
-----------------------------------
A real `make hyprtile-wallpaperd` was attempted. This container does not have
HyprTile's native development stack installed (Wayland/EGL/GLES, SDL3/SDL3_ttf,
Fontconfig, FFmpeg/LibAV, PulseAudio, FFTW and other pkg-config dependencies).
The target therefore stops at missing system packages/headers before it can
compile wallpaperd. This is an environment dependency failure, not a source
compiler diagnostic from the blend-mode changes.

Recommended on-target smoke test
--------------------------------
After building on the normal HyprTile development machine, test at least:
- spectrum normal @ 100% + matrix screen @ 20-35%
- spectrum normal @ 100% + glow add @ 10-25%
- image/generative stage + multiply @ 20-40%
- a multi-pass preset with overlay/softlight and non-100% opacity
- Preview -> Revert Wall -> Apply All -> HyprTile restart
