Saltar a contenido

Core — Calendario 260 (alias "Tzolkin")

Módulo del Core que, dado un instant gregoriano (ISO), calcula: - kin ∈ [1..260] - tono ∈ [1..13] - sello ∈ [1..20]

Correlaciones (configurables por entorno)

La correlación activa se define en pit-api con la variable:

CAL260_CORRELATION = ds | gmt
  • ds (Dreamspell) — ancla: JDN = 2447003 (Kin 1 en 1987-07-26)
    Fórmula:

    kin = ((JDN - 2447003) mod 260) + 1
    

  • gmt (Tradicional GMT 584283) — ancla: JDN = 584283, offset +159
    Fórmula:

    kin = ((JDN - 584283 + 159) mod 260) + 1
    

Cambiar la correlación no requiere deploy de código; basta con actualizar la variable y esperar el redeploy de Cloudflare Pages para pit-api.

Cálculo (JDN)

  1. Normalizar instant a fecha UTC (YYYY-MM-DD).
  2. Calcular JDN entero del día civil.
  3. Aplicar la fórmula según ds o gmt.
  4. Derivar:
    tono = ((kin - 1) mod 13) + 1
    sello = ((kin - 1) mod 20) + 1
    

API de Conversión

POST https://pit-api.pages.dev/api/v1/convert
Headers: - Content-Type: application/json - Accept: application/vnd.pit.v1+json - x-pit-key: <tu_clave> (si está protegido)

Body:

{ "from": "gregorian", "to": "calendario-260", "instant": "YYYY-MM-DDT00:00:00Z" }

Respuesta (ejemplo)

{
  "value": {
    "kin": 158,
    "tono": { "id": 2, "nombre": "Lunar", "clave": "lunar" },
    "sello": { "id": 18, "nombre": "Espejo", "clave": "espejo" },
    "meta": {
      "provisional": false,
      "correlation": "ds",
      "anchorJDN": 2447003,
      "offset": 0,
      "formula": "JDN",
      "correlationSource": "env"
    }
  },
  "meta": { "module": "calendario-260", "versions": { "api": "v1", "module": "1.0.0" } }
}

Ejemplo canónico (validado por CI)

Fecha: 2025-09-21

  • dskin = 158 (Tono 2, Sello 18)
  • gmtkin = 137 (Tono 7, Sello 17)

El pipeline CI de pit-api verifica automáticamente este caso según la correlación activa.

Contrato del Módulo (Core)

  • Entrada (convert): { from: "gregorian", to: "calendario-260", instant, tz? }
  • Salida: { kin, tono, sello, meta }
  • meta siempre incluye: correlation, anchorJDN, offset, formula, correlationSource.

Notas

  • El cálculo usa día civil (UTC), no hora local.
  • La lista de tonos y sellos está normalizada (ES) y versionada junto al módulo.