v0.15.19 — fix(task): a gate could be filed, report as pinged, and record NOTHING (DIVE-1968)
task_need_notify now refuses to exit without a delivery verdict. Two shapes, deliberately NOT collapsed:
- delivered-but-unrecorded (the send succeeded, no row was written) gets an ok row BACKFILLED and keeps rc 0.
- neither-delivered-nor-recorded gets a synthesised error row, a loud warn at the filer, and rc 0 downgraded to 3 — filed unnotified, re-nag escalates.
Collapsing those two would manufacture error rows for gates that DID reach their human, which is the mirror of the bug being fixed. The split was forced by two PRE-EXISTING tests (gate_channelless_escalation, gate_filer_own_channel) going red on the first cut: they were right, and the fix went into the CODE — neither test file appears in this diff.
Default-on, no env flag. An opt-in would leave the default as a rail that reports success having reached nobody, which is the behaviour being removed; you do not fix an opt-out failure with a different opt-in.
DIVE-1968 REMAINS OPEN and this release does not close it. Criterion 4, post-ship evidence, is VACUOUS as of shipping: zero gate rows of any kind had been written since the fenced binary went live, so a zero-error-rows bar would pass trivially — an absence of the opportunity to fail is not evidence. The soak needs a window with real gate traffic on production idents before anyone grades it.