39 lines
1.6 KiB
Markdown
39 lines
1.6 KiB
Markdown
|
|
# 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.
|