D104 - Platform backends are chosen by the source list

Status: decided Date: 2026-09-26

Where the host and the target need different platform calls (the file sink, the socket, the GPU), the shared logic lives in one file and each backend in its own (sink_host.c, sink_target.c), and the Makefile compiles exactly one.

Why: an untaken #if branch is never parsed and rots. A source list says in one place which backend a target gets, and lets the host stub stay honest for the checks while the backend under it does real work.

Rejected: preprocessor branches inside one file.