//! Tier 1 heuristics — local pattern matchers that produce candidate
//! / accepted memory signals from transcript text.
//!
//! ## Why two flavors?
//! Per ADR (`docs/adr/0003-mcp-sampling-async-distill.md` and PRD §B):
//!
//! - [`self_tag`] detects **explicit user self-tags**
//! ("记一下", "decide", "from now on", …). Hits are written to the
//! ledger as `accepted` — the user already approved them by typing
//! the marker. Bypasses pending-review and lands directly in the
//! wakeup pool.
//!
//! - [`extraction`] (R3c) does behavioral pattern mining: repeated
//! corrections, decision-style commit messages, error patterns.
//! Hits land as `candidate` and require user review before becoming
//! wakeup-eligible.
//!
//! Both modules emit serializable signal envelopes; the Stop hook
//! consumes them, runs them through [`super::redact`], and writes via
//! `LifecycleService::record_manual` (self-tag) or `propose_ai`
//! (extraction).