//! 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).

pub mod extraction;
pub mod self_tag;
