﻿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.
