HttpRouteModel
Una operación vista desde HTTP: el verbo, la ruta y qué política exige. Vive en `milpa/command` y no junto a su projector por una razón medida: `HttpProjector` importa `milpa/auth` —37 referencias, todas en su mitad de enforcement— y ese paquete está fuera del piso mínimo del framework. El MODELO, en cambio, es sólo datos de ruta y no necesita nada. Separarlos permite que cualquiera lea qué rutas expone una operación sin arrastrar identidad. Que aquí aparezcan `scopes` y `permission` no contradice eso: son lo que la operación DECLARA, no lo que alguien verifica. Declarar es del modelo; verificar es de otra capa, y desenredar esa distinción dentro de `HttpProjector` es lo que falta (P13.3).
HttpRouteModel::__construct()
public function __construct(string $method, string $path, string $name, array $scopes = [], ?string $permission = null):Parameters
| Name | Type | Description |
|---|---|---|
| $method | string | |
| $path | string | |
| $name | string | |
| $scopes | list<string> | |
| $permission | ?string |
HttpRouteModel::surface()
public function surface(): stringLa superficie de este modelo — `http`.
HttpRouteModel::toArray()
public function toArray(): arrayEl modelo como datos planos: lo que una tabla de rutas, un cliente generado o un diff entre versiones del API necesitan leer sin montar la superficie.