Ir al contenido

F02 — Domain & Capability Discovery

Phase 2 — Event Storming & Bounded Contexts

Sección titulada «Phase 2 — Event Storming & Bounded Contexts»

Comprender el negocio modelando eventos, comandos, actores, politicas, agregados y bounded contexts. Producir un mapa del dominio que guie las decisiones de arquitectura AI/deterministica.


Workshop colaborativo donde el equipo modela un proceso de negocio usando sticky notes (fisicos o digitales). Produce un flujo temporal de eventos que revela la complejidad real del dominio.

ElementoColorPregunta que respondeEjemplo
Domain EventNaranjaQue paso? (pasado)“Pedido Creado”, “Pago Confirmado”
CommandAzulQue lo disparo?”Crear Pedido”, “Procesar Pago”
ActorAmarilloQuien lo hizo?”Cliente”, “Agente AI de Soporte”
PolicyLilaQue regla aplica?”Si monto > $1000, requiere aprobacion”
Read ModelVerdeQue info necesita el actor?”Dashboard de pedidos”, “Historial”
External SystemRosaQue sistema externo participa?”Pasarela de pago”, “LLM API”
HotspotRojoDonde hay confusion o conflicto?”No sabemos quien aprueba descuentos”
1. CHAOTIC EXPLORATION (30 min)
→ Todos escriben domain events en naranja, los pegan en la pared
→ No hay orden, no hay critica, solo volumen
2. TIMELINE (30 min)
→ Ordenar eventos de izquierda a derecha cronologicamente
→ Identificar duplicados, resolver conflictos
3. REVERSE NARRATIVE (30 min)
→ Para cada evento: que comando lo disparo? que actor ejecuto el comando?
→ Agregar commands (azul) y actors (amarillo)
4. POLICIES & RULES (20 min)
→ Para cada transicion: hay alguna regla? automatica o manual?
→ Agregar policies (lila)
5. EXTERNAL SYSTEMS (15 min)
→ Que sistemas externos participan?
→ Agregar external systems (rosa) — incluir LLM APIs, MCP servers
6. BOUNDED CONTEXTS (30 min)
→ Agrupar clusters de eventos con fronteras claras
→ Nombrar cada cluster = un bounded context candidato
7. AI OVERLAY (20 min) ← Especifico de este framework
→ Para cada bounded context: necesita IA? (Nivel 0-3)
→ Marcar con tag: [AI-L0], [AI-L1], [AI-L2], [AI-L3]
project/F02_domain/bounded_contexts.yaml
bounded_contexts:
- name: "Order Management"
description: "Ciclo de vida completo del pedido"
ai_level: 0 # Deterministic CRUD
actors: ["Customer", "Sales Agent"]
core_events:
- "OrderCreated"
- "OrderApproved"
- "OrderShipped"
- "OrderDelivered"
aggregates: ["Order", "OrderLine"]
policies:
- "Orders > $1000 require manager approval"
external_systems: ["Payment Gateway", "Shipping API"]
- name: "Customer Support"
description: "Atencion al cliente con AI assistant"
ai_level: 2 # Service + MCP Tools
actors: ["Customer", "AI Support Agent", "Human Escalation Agent"]
core_events:
- "TicketOpened"
- "AIResponseGenerated"
- "EscalatedToHuman"
- "TicketResolved"
aggregates: ["Ticket", "Conversation"]
policies:
- "Refunds > $500 always escalate to human"
- "AI confidence < 70% triggers escalation"
external_systems: ["LLM API", "Knowledge Base (RAG)", "CRM"]
mcp_servers: ["crm-server", "knowledge-base-server"]
project/F02_domain/capability_map.yaml
capabilities:
- name: "Product Search"
bounded_context: "Product Catalog"
ai_level: 1 # RAG
priority: "must-have"
description: "Busqueda semantica de productos por lenguaje natural"
- name: "Order Processing"
bounded_context: "Order Management"
ai_level: 0 # Deterministic
priority: "must-have"
description: "CRUD de pedidos, validaciones, estados"
- name: "Customer Support Chat"
bounded_context: "Customer Support"
ai_level: 2 # MCP Tools
priority: "should-have"
description: "Chat con AI que consulta CRM y knowledge base"
TerminoDefinicionBounded ContextSinonimos a evitar
OrderSolicitud de compra de un clienteOrder Management”Pedido”, “Request” (usar solo “Order”)
TicketCaso de soporte abierto por clienteCustomer Support”Issue”, “Case” (usar solo “Ticket”)
AgentAgente AI de soporte (NO persona)Customer SupportEvitar “bot”, “assistant”

5. AI Overlay — Decision por Bounded Context

Sección titulada «5. AI Overlay — Decision por Bounded Context»

Para cada bounded context, aplicar el arbol de decision del Manifesto (§7):

¿El contexto necesita entender lenguaje natural?
├── NO → Nivel 0: Deterministico
└── SI → ¿Solo buscar en documentos?
├── SI → Nivel 1: RAG
└── NO → ¿Ejecutar acciones en otros sistemas?
├── SI sin razonamiento multi-paso → Nivel 2: MCP Tools
└── SI con razonamiento complejo → Nivel 3: Agente autonomo
  • Event Storming realizado (o equivalente de modelado de dominio)
  • Bounded contexts identificados y nombrados
  • Capability map con prioridades
  • Domain glossary con terminos clave (evitar ambiguedad)
  • AI Overlay: nivel AI asignado a cada bounded context
  • Hotspots documentados y resueltos (o escalados)
ArtefactoSoloLeanFull
capability_map.yaml3-5 capabilitiesCompletoCompleto + priorizado
Bounded ContextsInformal (en CLAUDE.md)bounded_contexts.yamlYAML + diagrama
Domain GlossaryEn CLAUDE.mdTabla markdownYAML versionado
Event StormingNo requeridoLigero (1h)Completo (2-4h)
AI OverlayInline en configPor bounded contextFormal con justificacion
  • CORE_F02_Product_Discovery_Requirements.md — discovery de producto
  • framework/guides/AI_First_SDLC_Workflow_Guide.md — flujo completo
  • Schema: scripts/schemas/capability_map.schema.json
  • Skill: /f02_domain

AI-First Engineering Framework v6.5 — Phase 2: Domain & Capability Discovery