> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Cómo funciona Lerian SILOC

> Ciclo de vida de la conexión del gateway, ingestión SFN optativa, despacho de mensajes compatibles, entrega al-menos-una-vez con deduplicación durable y certificados.

Lerian SILOC expone un conjunto reducido de operaciones tipadas sobre la superficie `/api/v1/siloc`. La superficie viva cubre conectividad y administración. La ingestión SFN es optativa; cuando está habilitada, el servicio despacha sus códigos de mensaje compatibles. También conserva los registros de participantes, certificados y cobertura que sostienen este trabajo.

## Ciclo de vida de la conexión del gateway

***

El servicio abre y mantiene **una** conexión de gateway de mensajería a SILOC de Nuclea sobre la red nacional del sistema financiero. Cuatro guardas protegen la conexión:

* un **circuit breaker** que se dispara ante fallas repetidas,
* **reconexión automática** con un backoff acotado,
* una **parada por credencial deshabilitada** que detiene el gateway tras la revocación de un certificado, y
* una **sonda de readiness** que reporta la conexión y la salud del gateway.

`SFN_INGEST_ENABLED` tiene el valor predeterminado `false`. Establécelo en `true` para habilitar el consumidor; cuando está habilitada, el servicio descifra y decodifica mensajes entrantes desde el envelope regulado antes de despachar un mensaje compatible.

## Despacho SFN entrante

***

Después de decodificarlo, el ingreso despacha un mensaje compatible por su `CodMsg`. Acepta los siguientes códigos:

| Código                  | Despacho                |
| ----------------------- | ----------------------- |
| **PAG0102**             | Apertura de período     |
| **LDL0021**             | Instrucción de depósito |
| **LDL0020 / LDL0020R2** | Crédito liquidado       |
| **LDL0006 / LDL0006R2** | Crédito devuelto        |
| **PAG0103**             | Cierre de período       |

El ingreso **no** enruta `PAG0101`. Un código no compatible no es reintentable y sigue la ruta de mensajes muertos. Un envelope que no se puede decodificar o un mensaje con `BCMSG.NUOp` vacío no tiene una clave de deduplicación de mensajes procesados.

## Despacho al-menos-una-vez con deduplicación durable

***

La fuente puede reentregar un mensaje, por lo que el despacho es **al-menos-una-vez**. Para un mensaje decodificado y compatible con un `BCMSG.NUOp` no vacío, el servicio consulta la deduplicación durable mediante la clave compuesta **(`BCMSG.NUOp`, `CodMsg`)** antes del despacho. No deduplica solo por el id de un mensaje.

El servicio escribe el registro de mensaje procesado solo después de un despacho exitoso y antes de confirmar la fuente. No crea ese registro para un mensaje no decodificado o no compatible. Una falla antes de escribir el registro puede dejar el mensaje elegible para otra entrega. No trates este comportamiento como una garantía incondicional de exactamente una vez de extremo a extremo.

## Resultados de fallas

***

* Una falla de despacho **reintentable** queda sin confirmar. Con commits de fuente seguros por offset, el mensaje se vuelve a leer después de un reinicio desde el último offset confirmado; una falla transitoria persistente puede bloquear su partición hasta el reinicio.
* Una falla **no reintentable**, como un envelope malformado o un código no compatible, sigue la ruta de mensajes muertos y se confirma para que la partición pueda avanzar.
* El registro de mensajes procesados protege únicamente los mensajes decodificados y compatibles descritos antes. No promete la retención de cada frame ni efectos exactamente-una-vez en todos los sistemas aguas abajo.

## Observabilidad de la ingestión

***

* **Listar mensajes procesados** — el feed de auditoría de los mensajes SFN compatibles que el servicio despachó.
* **Leer el estado de la ingestión** — el estado de salud actual de la ruta de ingestión habilitada, más la marca de tiempo del último despacho.

## Directorio de participantes

***

Lerian SILOC mantiene un directorio de los participantes de SILOC por los que liquida. **Registras**, **listas**, **obtienes** y **actualizas** un participante, y lees el **estado** de un participante. Cada participante lleva su ISPB, su rol y su estado operativo.

Cada registro siembra una entrada de historial de estado y emite un hecho de participante. Las escrituras de registro son idempotentes mediante una clave de idempotencia, de modo que un registro reintentado no crea un duplicado.

| Rol                        | Significado                                                           |
| -------------------------- | --------------------------------------------------------------------- |
| **Directo**                | Un participante directo de SILOC.                                     |
| **Indirecto**              | Un participante que liquida a través de otra institución.             |
| **Institución liquidante** | La institución que liquida en nombre de los participantes indirectos. |

El estado operativo usa el dominio de estados de siete valores de SILOC:

| Valor | Estado                         |
| ----- | ------------------------------ |
| 1     | Participando                   |
| 2     | Excluido del ciclo             |
| 3     | Excluido de SILOC              |
| 6     | En ciclo, excluido de SILOC    |
| 7     | Suspendido                     |
| 8     | Suspendido, excluido del ciclo |
| 9     | Inoperante (régimen especial)  |

## Certificados regulados

***

El servicio conserva los certificados regulados de la conexión como referencias, no como secretos. **Registras** un certificado público junto con una **referencia de custodia externa**. El servicio analiza el certificado por su sujeto, serie y ventana de validez, y no almacena **ninguna** clave privada. Luego **listas**, **obtienes** y **revocas** certificados sobre la misma superficie.

## Cobertura de capacidades

***

Un **listado de capacidades** de solo lectura describe las capacidades de cobertura de liquidación como una superficie de transparencia. Para cada tipo de mensaje, reporta la dirección, el estado de implementación y la disposición.
