Ir al contenido

ADRs — Architecture Decision Records

Un ADR (Architecture Decision Record) es una decisión de arquitectura documentada: el contexto que la motivó, las opciones evaluadas, el rumbo elegido y las consecuencias. Los ADRs son la memoria del equipo. Sin ellos, las decisiones que llevaron semanas de debate se vuelven a discutir cada 6 meses porque nadie recuerda por qué se eligió X sobre Y.

bjungle mantiene sus ADRs en website/.../content/docs/conceptos/ porque son públicos — los lee tanto el equipo interno como los clientes técnicos que evalúan si bjungle es la fit correcta para su problema.

  • Status: Draft | Proposed | Accepted | Superseded | Deprecated.
  • Fecha: cada ADR tiene Accepted: YYYY-MM-DD. Si se modifica, se publica un ADR nuevo que Supersedes al anterior; el viejo queda marcado Superseded pero no se borra.
  • Re-evaluar: cada ADR declara las condiciones bajo las cuales amerita revisión. No es expiración — es trigger.
IDTítuloStatusFecha
Visión general del ecosistemaAccepted2025
Wallet SSI — Modelo C híbridoAccepted2026-04-22
Wallet de identidad — UXAccepted2026-04-22
Trust policy por flowAccepted2026-04-22
Data dividends 20/7/5Accepted2026-04-22
IDTítuloStatusFecha
ADR-001Audiencias de autenticaciónAccepted2026-05-30
ADR-002Face-MFA y recovery del walletAccepted2026-05-30
ADR-003Sign-in with bjungle (OIDC)Accepted2026-05-30
ADR-004API keys — scopes + rotation + auditAccepted2026-05-30
ADR-005Multi-operator walletAccepted2026-05-30
ADR-006Composición de flows + LoA matrixAccepted2026-05-30
IDTítuloStatusFecha
Stack frontendAccepted2025
Desarrollo localAccepted2025
Suscripción y pagosAccepted2025
IDTítuloStatusFecha
Blockchain strategy (anchoring + Açaí)Implemented-Phase-12026-05-31
ADR-007bhawk como compliance engine — (en repo aparte)Accepted2026-05

Cashpaya como primer cliente (Wave A → D, 2026-06)

Sección titulada «Cashpaya como primer cliente (Wave A → D, 2026-06)»
IDTítuloStatusFecha
ADR-009Cashpaya como primer cliente — modelo de integraciónDraft2026-06-05
ADR-010Mercado Pago Açaí topup públicoDraft2026-06-05
ADR-011Multi-firma bseal para docs bipartitosDraft2026-06-05
ADR-012SARLAFT continuo parametrizableDraft2026-06-05
ADR-013X.509 cert genérica bjungle + tenant opt-inDraft2026-06-05

Estos 5 ADRs son gate antes de implementar las Waves A/A+/B/C/D del backlog cashpaya-integration-backlog.md. Sin ellos en estado Accepted, ningún backend-dev arranca código de Wave A o posterior.

Mapa de dependencias dentro del bloque:

ADR-009 (frontera DJ ↔ cashpaya)
├─── ADR-010 (MP Açaí topup)
├─── ADR-012 (SARLAFT continuo)
└─── ADR-013 (X.509 cert) ───┐
ADR-011 (multi-firma)

ADR-011 depende de ADR-013 (necesita el modelo de cert para firma corporativa). Los demás son hijos directos de ADR-009.

wallet-modelo-c
┌──────────────┐
wallet-identidad │ │ data-dividends
│ │ │ │
▼ ▼ ▼ ▼
ADR-001 audiencias ◄─────────────┐
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ │
002 003 004 005 006 flow-composition
face OIDC keys multi LoA │
◄─────────────────┘
trust-policy

ADR-001 es el centro: todos los demás de auth/portabilidad lo referencian. ADR-006 (flow composition) es la herramienta concreta para que cada tenant arme su onboarding según su vertical, leyendo el catálogo de ADR-001.

Decisiones que estamos por tomar, en orden de prioridad. (ADRs 009-013 ya escritos arriba en estado Draft; este roadmap es lo que sigue.)

ID propuestoTemaTrigger
ADR-014KYB del tenant (verificación de empresa)cuando llegue el segundo tenant en producción regulada
ADR-015Webhook retry + DLQ strategy genéricacuando crucemos los 10 tenants en prod
ADR-016Federación con eIDAS / EU Digital Identity Walletcuando un cliente Europeo lo pida
ADR-017Selective disclosure con BBS+ signaturescuando el caso “edad sin DOB completo” lo amerite a escala
ADR-018PAdES B-LT embedded en bsealcuando un juez pida ver “firma dentro del PDF”
ADR-019UIAF reporting automatizadopost-launch cashpaya, cuando volumen lo justifique

Cada uno se crea como Draft cuando alguien lo propone y se promueve a Accepted después de discusión documentada en el archivo.

  1. Copiar uno reciente como template (e.g. ADR-001 o ADR-006).
  2. Frontmatter: title corto, description que explique el problema en una línea.
  3. Estructura sugerida:
    • Resumen del problema (1-3 párrafos)
    • Opciones evaluadas (qué se consideró, por qué)
    • Decisión con tabla resumen al final
    • Implicaciones para otros ADRs
    • Anti-patrones que esta decisión previene
  4. PR review por al menos 2 miembros del equipo + un Tech Lead.
  5. Mergeado → status pasa a Accepted.
Draft Un equipo individual lo escribió, falta revisión.
Proposed En review, abierto a comentarios.
Accepted Decisión vigente. Es lo que el código implementa.
Superseded Reemplazado por otro ADR (link al sucesor en el header).
Deprecated Sin sucesor pero ya no aplica (e.g. funcionalidad removida).