feat(drain): in-process stream drain; external /worker demoted to optional safety net
- notify::stream_drain shared core + tokio::spawned run_stream_drain (10s loop,
consumer INPROC_CONSUMER), plus immediate one-shot drain after each
successful push_reconcile_delta; /worker route unchanged, still a no-op
when the shared consumer group already claimed a message.
- 3 new stream_drain unit tests on MemoryState (success/commit/ack,
retry-to-DLQ, pre-committed short-circuit): 111 passed / 0 failed / 4 ignored.
- Doc sync in the same change: README §3.8-3.11, design/.zh §5.4/§10.5/§11.2,
reference/.zh §9.3, opengaps/.zh item #4 + deployment-defects section,
charter/.zh test baseline + C-NO-LONG-CONN + invariant 21, retired/.zh
push-register lock anchor drift (notify.rs:1805-1825), cron-drain.sh header.
- GATE-P0 green (fmt/check/clippy/tests 111/0/4); GATE-DOCS 6/6 PASS
(reachability only, not semantic correctness).
Co-Authored-By: Claude Code <noreply@anthropic.com>