crear:tarea
- mutating
- requiresConfirmation
- scopes: tarea:crear
- handler: TaskService::create
Imaginá que le pides lo mismo a tres mensajeros distintos — una línea de comandos, un asistente de IA, un formulario web — y cada uno lo resuelve un poco distinto: uno te pide confirmar antes de actuar, otro revisa primero si tienes permiso, el tercero todavía no revisa nada. Es la misma orden, dicha de tres formas, con tres niveles de cuidado distintos. Eso es lo que vas a ver acá, ya con su nombre técnico: una Operación, proyectada a tres puertas.
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).