crear:tarea
- mutating
- requiresConfirmation
- scopes: tarea:crear
- handler: TaskService::create
Arma la tienda capacidad por capacidad. El campo acepta un módulo solo cuando todo lo que requiere ya está sembrado.
El tallo está listo para recibir módulos.
Campo listo
Selecciona una semilla o arrástrala al campo.
El juego representa módulos como nodos y sus capacidades como aristas. Cada módulo también se puede sembrar con teclado.
Lo que acabas de hacer
Validación de capacidades, ordenamiento topológico de Kahn y detección de ciclos. El runtime real lista los módulos del ciclo; la ruta A → B → A aquí es una explicación visual.
docs/GUION-WEBINAR-JUNIORS.md · getmilpa-runtime/src/Kernel.php:90-127 · getmilpa-plugin/src/ContractResolver.php:80-143.
CLI y MCP llegan a la misma acción por el mismo mecanismo de ejecución. El canal cambia el contexto y puede cambiar la policy; el tubo es compartido.
enviar_correo
Una definición declarada; dos callers con contextos explícitos.
Esperando caller
La misma acción puede entrar por CLI o por tools/call.
Mismo pipeline no significa mismo permiso
El runtime recibe un ToolContext. La configuración actual permite CLI por defecto y exige autenticación para MCP; ambas rutas sí convergen en ToolRegistry::call().
ToolRegistry.php:348-570 · JsonRpcService.php:282-300 · PolicyGate.php:34-56. Los botones simulan callers; no representan comandos incluidos hoy en el skeleton.
Una acción sensible queda pendiente hasta recibir un veredicto explícito. Aprobar, rechazar y exonerar producen datos distintos.
Dos contratos relacionados, no una sola llamada
VerificationResult modela PENDING/PASSED/FAILED/WAIVED. El anti autoaprobación vive en el flujo de gates; la exoneración con justificación vive en workflow. Esta pantalla los reúne para enseñar el sistema.
VerificationStatus.php:17-48 · HumanGate.php:101-165 · ProcessSubmitDecisionTool.php:63-99.
Un mapa de responsabilidades y dependencias declaradas. Elige un recorrido para ver qué paquetes participan sin convertir el ecosistema en una sola caja.
Las flechas son dependencias declaradas
No intentan inferir todas las llamadas en runtime. En MCP, HTTP/SSE/stdio pertenecen al host; JsonRpcService solo conoce arrays decodificados.
getmilpa-runtime/composer.json · getmilpa-orchestrator/composer.json · JsonRpcService.php:25-37 · ComponentDefinitionInterface.php:23-63 · milpa-design/package.json:11-42.
El tubo de cinco pasos es una buena entrada. La implementación real agrega límites que importan para seguridad, costos, confirmación e intercepción.
Selecciona una ruta
La cobertura de auditoría cambia según el punto de retorno.
| Salida | Callback | Evidencia de auditoría |
|---|---|---|
| Tool inexistente | No | sin log explícito |
| Args inválidos | No | validation failure |
| Policy denied | No | auth failure |
| Plan / confirmación | No | sin log explícito |
| Cache short-circuit | No | tool.executed |
| Veto puro | No | hueco conocido |
| Callback / throw | Sí | executed / failed |
La garantía se lee por rama
“Todo se audita” no describe hoy todas las salidas tempranas. Este artifact hace visibles tanto las garantías implementadas como los huecos.
getmilpa-tool-runtime/src/ToolRegistry.php:353-570 · redacción en ToolAuditLogger.php:45-57,204-232.
No se guarda current_state. Se anexan hechos y un reducer puro reconstruye el estado al reproducirlos en orden.
el estado no existe como columna persistida — se re-deriva del log en cada corte
Minimalista a propósito
El file store actual reescanea JSONL para replay y secuencia; sirve para entender el patrón y persistencia ligera, no debe presentarse como event store concurrente de gran escala.
EventStoreInterface.php:7-42 · FileEventStore.php:25-83 · orchestrator/Reducer.php:19-68.
La intención visual no termina en un documento: tokens, contratos y pares de contraste pasan por generadores y gates repetibles.
tokens/milpa-tokens.json concentra primitivas y semántica.
Genera CSS, preset Tailwind y theme.contract.json.
Contraste, gobernanza, capas, drift y skins.
Carga seis bundles y puede sobrescribir tokens por contrato.
AA pasa
El gate mide el color efectivo, no el valor alpha aislado.
Garantía concreta, alcance concreto
verify-governance valida forma básica y tokens, no todo el JSON Schema. verify-theme fuerza directamente la opacidad de --bg; otras invariantes quedan documentadas.
scripts/build-tokens.mjs:189-265 · verify-governance.mjs:38-98 · verify-contrast.mjs:28-42 · verify-theme.mjs:107-149.
El generador devuelve archivos planeados en memoria. Eso permite inspeccionar el resultado y ejecutar un preflight de colisiones antes de escribir.
entity Product
fields: nombre:string:120,
precio:decimal:10,2final class Product implements EntityInterface
{ public string $nombre; }
{ public Decimal $precio; }Produce PlannedFile(path, contents).
Aborta antes de escribir si un target existe.
Crea directorios y escribe contenidos.
Entity cierra el loop contra reglas de runtime.
Preview posible, CLI pendiente
GenerationResult ya hace inspeccionable el plan, pero el skeleton actual no expone --dry-run: hace preflight, escribe y luego verifica entidades. WriteGuard evita overwrite; no promete atomicidad ni rollback.
GenerationResult.php:7-28 · PlannedFile.php:7-14 · WriteGuard.php:7-31 · getmilpa-skeleton/src/Console/Application.php:178-274.
Una operación se declara una vez. coa, MCP y HTTP son
adaptadores del mismo handler — pero cambiar de puerta puede cambiar la política.
crear:tarea
Hueco de cobertura honesto: Esto no es una garantía deseable de HTTP. Es una
radiografía de la implementación actual. MCP aplica scopes hoy; HTTP todavía no lee scopes de
Operation. Este hueco debe cerrarse en runtime/policy antes de producción. Ver
Radiografía del runtime. Fuente: Operation.php.
coa crear:tarea --titulo=… --yes
Elige una puerta para proyectar.
tools/call · crear:tarea
Elige una puerta para proyectar.
POST /crear/tarea
Elige una puerta para proyectar.
| Superficie | Confirm | Scopes aplicados |
|---|---|---|
| coa | flag --yes | no (local/confiable) |
| MCP | gate heredado (tool-runtime) | sí (PolicyGate) |
| POST | token 428→201 | no (pendiente · middleware) |
El handler nunca cambió. Cambiaste de puerta y el framework sintetizó la invocación — pero la puerta puede cambiar la política, y hoy no todas aplican los mismos scopes.
Modelo didáctico sobre implementación auditada. Este artifact no afirma que HTTP aplique scopes ni que el token store in-memory sea de producción.
milpa/command: getmilpa-command/src/Operation.php,
CommandProvider.php, SurfaceProjector.php.skeleton, ns App\Command, no parte del paquete):
getmilpa-skeleton/src/Command/{CliProjector,McpProjector,HttpProjector}.php.ConfirmTokenStore.php (in-memory, single-process — no
producción), SchemaCoercer.php.docs/GUION-WEBINAR-JUNIORS.md (Artifact 2).