Architecture Decision Records¶
Decisiones arquitectónicas significativas tomadas durante el análisis de Camunda 8 y diseño del MVP simplificado. Formato MADR (Markdown Architectural Decision Records). Cada ADR documenta contexto, alternativas evaluadas, decisión, y consecuencias.
Status legend¶
- 🟢 Accepted — decisión vigente
- 🟡 Proposed — sugerida, pendiente de validación
- 🔴 Deprecated — superseded por otra ADR
- ⚪ Superseded — reemplazada por una nueva
Index¶
Core engine¶
| # | Título | Status |
|---|---|---|
| adrs/adr-001-bpmn-as-workflow-language | BPMN 2.0 como lenguaje de workflow | 🟢 Accepted |
| adrs/adr-002-postgresql-as-state-store | PostgreSQL como state store único | 🟢 Accepted |
| adrs/adr-003-single-node-mvp-incremental-scaling | Single-node MVP, escalar incrementalmente | 🟢 Accepted |
| adrs/adr-004-no-fork-consensus-protocols | NO forkear protocolos de consensus | 🟢 Accepted |
| adrs/adr-005-stream-processing-command-sourcing | Stream processing con command sourcing | 🟢 Accepted |
| adrs/adr-006-single-threaded-per-partition | Single-threaded processing por partition | 🟢 Accepted |
| adrs/adr-007-at-least-once-idempotent-workers | At-least-once delivery, workers idempotentes | 🟢 Accepted |
| adrs/adr-019-replay-determinism-invariant | Replay determinism como invariante testeable | 🟢 Accepted |
Webapps & UI¶
| # | Título | Status |
|---|---|---|
| adrs/adr-008-reuse-camunda-modeler | Reusar Camunda Modeler (no rebuild) | 🟢 Accepted |
| adrs/adr-009-skip-optimize-use-grafana | Skip Optimize, usar Grafana + SQL | 🟢 Accepted |
| adrs/adr-010-hybrid-monitoring-apm-inspector | Hybrid monitoring: APM + Process Inspector | 🟢 Accepted |
| adrs/adr-018-build-tasklist-completo | Build Tasklist completo (no skipeable) | 🟢 Accepted |
Identity & Security¶
| # | Título | Status |
|---|---|---|
| adrs/adr-013-simple-rbac-three-roles | RBAC simple: 3 roles (admin/operator/worker) | 🟢 Accepted |
| adrs/adr-014-oidc-single-idp | OIDC single IdP en Phase 1 | 🟢 Accepted |
Integration¶
| # | Título | Status |
|---|---|---|
| adrs/adr-015-skip-inbound-connectors | Skip inbound connectors, usar REST API | 🟢 Accepted |
| adrs/adr-016-minimal-outbound-worker-sdk | SDK outbound minimal (no framework) | 🟢 Accepted |
Data & Serialization¶
| # | Título | Status |
|---|---|---|
| adrs/adr-012-json-schema-forms | JSON Schema para forms | 🟢 Accepted |
| adrs/adr-017-json-serialization-not-sbe | JSON serialization (no SBE/MessagePack) | 🟢 Accepted |
Infrastructure & Operations¶
| # | Título | Status |
|---|---|---|
| adrs/adr-011-opentelemetry-instrumentation | OpenTelemetry para instrumentación | 🟢 Accepted |
| adrs/adr-020-patroni-postgres-ha | Patroni para Postgres HA (Phase 1) | 🟢 Accepted |
| adrs/adr-021-citus-horizontal-scaling | Citus para horizontal scaling (Phase 4) | 🟡 Proposed |
Core engine (continued)¶
| # | Título | Status |
|---|---|---|
| adrs/adr-022-cel-for-expressions | CEL para expressions (con FEEL-lite shim) | 🟢 Accepted |
Identity & Security (continued)¶
| # | Título | Status |
|---|---|---|
| adrs/adr-023-tls-only-production | TLS 1.3 mandatory en producción | 🟢 Accepted |
| adrs/adr-024-postgres-rls-defense-in-depth | Postgres RLS as defense in depth | 🟢 Accepted |
| adrs/adr-025-audit-logging-mandatory | Audit logging mandatory para security ops | 🟢 Accepted |
Technology Stack¶
| # | Título | Status |
|---|---|---|
| adrs/adr-026-go-as-implementation-language | Go como lenguaje de implementación (engine + CLI) | 🟢 Accepted |
Por categoría — vista de árbol¶
ADRs/
├── Core engine (8)
│ ├── ADR-001 BPMN 2.0
│ ├── ADR-002 PostgreSQL store
│ ├── ADR-003 Single-node MVP
│ ├── ADR-004 No fork consensus
│ ├── ADR-005 Stream processing
│ ├── ADR-006 Single-threaded
│ ├── ADR-007 At-least-once
│ └── ADR-019 Replay determinism
│
├── Webapps & UI (4)
│ ├── ADR-008 Reuse Modeler
│ ├── ADR-009 Skip Optimize
│ ├── ADR-010 Hybrid monitoring
│ └── ADR-018 Build Tasklist
│
├── Identity & Security (2)
│ ├── ADR-013 RBAC 3 roles
│ └── ADR-014 OIDC single IdP
│
├── Integration (2)
│ ├── ADR-015 Skip inbound connectors
│ └── ADR-016 Minimal outbound SDK
│
├── Data & Serialization (2)
│ ├── ADR-012 JSON Schema forms
│ └── ADR-017 JSON serialization
│
└── Infrastructure & Ops (3)
├── ADR-011 OpenTelemetry
├── ADR-020 Patroni HA
└── ADR-021 Citus scaling
Total: 21 ADRs.
Cómo usar este directory¶
Para review¶
- Leer el index para overview rápido
- Cada ADR es self-contained (~1-2 pages)
- Cross-references vía wikilinks
Para proponer cambio¶
- Crear nuevo ADR con número siguiente
- Status: Proposed
- Si supersedes a otro ADR existente, marcar el viejo como Deprecated y referenciar
Para implementación¶
Los ADRs son inputs al planning, no especificación detallada. Para implementación ver: - analysis/blueprint-plataforma-simplificada — Spec técnico - analysis/scaling-strategy-postgres — Roadmap de fases - analysis/operate-tasklist-mvp-detailed — Spec de webapps
Formato MADR¶
Cada ADR sigue el formato MADR 2.x:
# ADR-NNNN: Título
* Status: Accepted | Proposed | Deprecated | Superseded
* Date: YYYY-MM-DD
* Tags: relevant tags
## Context and Problem Statement
## Decision Drivers
## Considered Options
## Decision Outcome
### Positive Consequences
### Negative Consequences
## Pros and Cons of the Options
## Links
Referencias¶
- MADR specification
- Documenting Architecture Decisions — Michael Nygard (original)
- ADR tools