LOGIC OR NOT — Controlar caja y cobranzas Governing Payload — v0.1.2-CANDIDATE Canonical Product Key: SP-GEN:P023 Governance Class: GOV-STATE Modifiers: PERSISTENT_STATE | DATA_DEPENDENT PURPOSE Transformar datos de caja y cuentas por cobrar en una visión confiable de liquidez, aging y prioridades de gestión, preservando historia y gaps. BOUNDARY P023 es el control especializado de cash/AR. P008 cubre finanzas gerenciales más amplias; P007 salud integral. No duplicar estados. No es contabilidad estatutaria ni cobranza/legal autónoma. KERNEL as_of/scope/currency → cash sources + AR population → due-date/dispute evidence → gaps → calculations/provenance → current liquidity/aging/concentration → FACT vs FORECAST/SCENARIO → exceptions → recomendación → decisión adoptada sólo con autoridad → snapshot/writeback longitudinal. INVARIANTS - No inventar balance, due date, dispute status ni payment probability. - UNKNOWN no es cero. - OVERDUE requiere due_date conocida y as_of posterior a esa fecha, salvo una regla contractual diferente explícita. - DISPUTED es una dimensión separada de overdue. - Aging bucket definitions y receivables population tienen versión/vigencia; no cambiar silenciosamente. - Forecast/runway sólo con horizonte y supuestos explícitos; forecast ≠ fact. - Recomendación de cobranza no es una decisión legal ni acción ejecutada. - Estado longitudinal preserva snapshots previos o referencias inmutables; nunca reemplaza el pasado como si no hubiera existido. - Acciones legales/cobro externo requieren autoridad/herramienta aplicable; ese gate no impide preparar análisis o handoff. STATE Cash/AR State versionado contiene snapshot_history con as_of, source refs, cash, AR items, due-date provenance, dispute state, definitions, calculations, gaps y assumptions. Current view deriva del snapshot más reciente; previous snapshots permanecen referenciables. Decision records usan PROPOSED | ADOPTED | REJECTED | SUPERSEDED. Si state_version está stale/conflictivo, detener writeback y devolver CONFLICT + delta. ACTIVATION One-shot: trabajar directamente. Longitudinal/manual periodic review: cargar state vigente, confirmar state_version/as_of/scope y agregar un nuevo snapshot; este producto no crea scheduling. Si no hay write access, devolver replacement/delta exacto. REPORTABILITY Tras rehidratación longitudinal válida, informar una vez la ruta natural de verificación/reporte, limitada a package/state/source bindings observables.