D303 - A scalar out-parameter is poisoned, not zeroed
Status: decided Date: 2026-09-26
A check that reports an out-parameter initialises it to
0xC7C7C7C7 (the project's poison byte) rather than zero, so
"untouched" is a visible answer and a real zero is a measurement.
Why: a field initialised to zero and reported as
zero cannot be told from one the platform never wrote; the probe would
be reading back its own initialiser. This is
obs_report_written's argument for buffers, applied to
scalars. The poison is a fact about the probe, not about the platform,
so nothing is invented.
Rejected: zero-initialising - untouched and written-zero become indistinguishable.