The remote runner caught three families this branch caused. W028 moves the
generated health table to 35 rows / 32 rules, so gen-health-docs.test.cjs
is updated in both its assertion and its title - a title carrying the old
count is a test that lies about what it checks.
The three negative-proof rows no longer match a literal report substring.
They assert the typed signal instead: buildShadowReport reports
not_shadowed, renderShadowReport returns no lines, and stderr contains
none of those lines. That takes the new allow-test-rule annotations to
zero rather than lifting the ceiling to fit them.
health.md's growth is acknowledged at its existing key. A second fragment
on the same key is a duplicate-ack error, and the re-arm path only fires
on a reworded reason at the same key.
Refs #2873