/** * Lifecycle Orchestrator — 트리거 이벤트 수신 → rule 상태 전이 적용. * * 데이터 플로우: * [T1~T5 + Meta] ─detect(state)→ LifecycleEvent[] * │ * applyEvent(rule, event) ← ──────┘ (pure) * │ * ┌────────┴────────┐ * saveRule(rule) persistEvent(event) * (rule-store.ts) (~/.forgen/state/lifecycle/{date}.jsonl) * * applyEvent 는 pure — rule → rule'. 부수효과는 saveRule / appendLifecycleEvents 에서만. * * 상태 전이 규칙 (ADR-002 §State transitions): * flag → phase='flagged' * suppress → phase='suppressed' (+ status='suppressed') * retire → phase='retired' (+ status='removed') * merge → phase='merged' (+ merged_into) * supersede → phase='superseded' (+ superseded_by) * promote/demote_mech → phase 유지, meta_promotions 는 meta-reclassifier 가 직접 기록 */ import type { Rule, LifecycleState } from '../../store/types.js'; import type { LifecycleEvent } from './types.js'; export declare function ensureLifecycle(rule: Rule): LifecycleState; /** 순수: rule + event → rule'. Mech 변경은 meta-reclassifier 가 처리하므로 여기서는 제외. */ export declare function applyEvent(rule: Rule, event: LifecycleEvent, now?: number): Rule; /** * 여러 이벤트를 rule 단위로 그룹핑 후 applyEvent 로 순차 접기. * 순수 — 호출자가 저장을 담당. */ export declare function foldEvents(rules: Rule[], events: LifecycleEvent[], now?: number): Map;