crear:tarea
- mutating
- requiresConfirmation
- scopes: tarea:crear
- handler: TaskService::create
Imagina 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 con un cuidado distinto: uno te pide confirmar antes de actuar porque es local y confía en quien lo usa; los otros dos revisan primero si tienes permiso, con la misma regla. Es la misma orden, dicha de tres formas, con dos niveles de cuidado bien definidos. 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
Cobertura por superficie: MCP y HTTP aplican hoy los mismos scopes: HTTP corre RequireScopeMiddleware y después el mismo PolicyGate que usa MCP. coa no aplica scopes — es la superficie local/confiable, por diseño. Esto fue un hueco de cobertura real; se cerró cuando HttpProjector empezó a exigir scopes. La Radiografía del runtime muestra el pipeline completo ya gobernado. Fuente: Operation.php, HttpProjector.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 | sí (RequireScopeMiddleware + PolicyGate) |
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 sí afirma que HTTP aplica scopes (vía HttpProjector + PolicyGate) — no afirma que el token store in-memory sea de producción.
milpa/command: getmilpa-command/src/Operation.php, CommandProvider.php, SurfaceProjector.php.skeleton ≥0.7.0, ns App\Command, no parte del paquete): getmilpa-skeleton/src/Command/{CliProjector,McpProjector,HttpProjector}.php.milpa/auth ≥0.1, RequireScopeMiddleware.php + el mismo PolicyGate que usa MCP.ConfirmTokenStore.php (in-memory, single-process — no producción), SchemaCoercer.php.docs/GUION-WEBINAR-JUNIORS.md (Artifact 2).