Milpa no promete ahorrarte pensar. Milpa promete enseñarte a pensar mientras construyes.

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.

Artifact 09 Ingeniería · inspeccionar

El átomo y sus 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

  • mutating
  • requiresConfirmation
  • scopes: tarea:crear
  • handler: TaskService::create

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 · CLI

coa crear:tarea --titulo=… --yes

resolver

validar

autorizar

ejecutar

auditar

Elige una puerta para proyectar.

MCP · agente

tools/call · crear:tarea

resolver

validar

autorizar

ejecutar

auditar

Elige una puerta para proyectar.

POST · HTTP

POST /crear/tarea

resolver

validar

autorizar

ejecutar

auditar

Elige una puerta para proyectar.

Garantías por superficie
SuperficieConfirmScopes aplicados
coaflag --yesno (local/confiable)
MCPgate heredado (tool-runtime) (PolicyGate)
POSTtoken 428→201 (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.

Evidencia y alcance

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.

Fuentes auditadas

  • Contrato publicado milpa/command: getmilpa-command/src/Operation.php, CommandProvider.php, SurfaceProjector.php.
  • Proyectores de referencia (skeleton ≥0.7.0, ns App\Command, no parte del paquete): getmilpa-skeleton/src/Command/{CliProjector,McpProjector,HttpProjector}.php.
  • Enforcement de scopes en HTTP: milpa/auth ≥0.1, RequireScopeMiddleware.php + el mismo PolicyGate que usa MCP.
  • Stand-ins didácticos: ConfirmTokenStore.php (in-memory, single-process — no producción), SchemaCoercer.php.
  • Semilla junior: docs/GUION-WEBINAR-JUNIORS.md (Artifact 2).