# Opción A — Owner por servicio (recomendada) Demo principal de la sesión de presentación. Modela una decisión universal ("cada servicio tiene un owner asignado") como contrato Nickel y muestra cómo el typecheck rechaza una violación de la misma. ## Por qué esta opción - **Reconocible al instante** — cualquier developer ha vivido el postmortem donde nadie sabe quién mantiene el servicio - **Modelable en pocas líneas** — el contrato es un record con dos campos - **Error de typecheck legible** — `missing field 'owner'` no necesita explicación ## Archivos | Archivo | Paso de la demo | Resultado de `nickel export` | |---|---|---| | `core.start.ncl` | Paso 2 — sin contrato | ✓ exporta JSON (pero no valida nada) | | `core.with-contract.ncl` | Paso 3 — contrato aplicado | ✓ exporta JSON (estructura validada) | | `core.broken.ncl` | Paso 4 — violación | ✗ error: `missing definition for 'owner'` | > **Por qué `nickel export` y no `nickel typecheck`**: los contratos > `| Array Service` se ejecutan durante la evaluación, no durante el chequeo > de tipos. `nickel typecheck core.broken.ncl` pasa silenciosamente porque > solo verifica tipos estáticos. `nickel export` evalúa el archivo entero y > aplica los contratos — eso es lo que activa el error. ## Verificación rápida (ensayo) ```bash cd /Users/Akasha/Development/ontoref/assets/work-group-ore/demo/option-a-owner nickel export core.start.ncl # exporta JSON nickel export core.with-contract.ncl # exporta JSON nickel export core.broken.ncl # falla con error legible — esperado ``` Ver `../script.md` para el guion completo de la demo.