diff --git a/programming_general/infra_manifest.yaml b/programming_general/infra_manifest.yaml index a6ccbf6..020b13a 100644 --- a/programming_general/infra_manifest.yaml +++ b/programming_general/infra_manifest.yaml @@ -1,11 +1,11 @@ apiVersion: conventions/v1 -version: 0.1.0 +version: 0.2.0 updated: "2026-06-29" name: infra_manifest title: Per-project infra manifest (.infra.yaml) scope: general status: draft -summary: Every deployable project declares its infrastructure in a root .infra.yaml; a future infra-apply tool renders it to the provider (DO / Terraform). +summary: Every deployable project declares its infrastructure in a root .infra.yaml; `service.host` must be a host in net-tools mesh-hosts.json, so the infra-net reconciler can build the live picture. A future infra-apply renders the DO parts. appliesTo: ["@applications/*", "@projects/@cocottetech", "@projects/@magic-civilization"] rules: - id: own_db @@ -18,6 +18,9 @@ rules: - id: gpu_ondemand level: should text: GPU workloads are on-demand — provision, keep warm while the queue is deep, release on idle. Never a standing GPU. + - id: host_in_mesh + level: must + text: "`service.host` is a host name from net-tools mesh-hosts.json (lime, fennel, redroid, …) — the infra-net reconciler validates this and regenerates the mesh-hosts services map from all .infra.yaml." providesFile: path: .infra.yaml schema: @@ -29,7 +32,7 @@ providesFile: properties: apiVersion: { type: string, const: "infra/v1", description: "Manifest contract version (independent of the convention's own version)." } project: { type: string } - provider: { type: string, enum: [digitalocean] } + provider: { type: string, enum: [digitalocean, mac, bare-metal, local], description: "Where it physically runs: digitalocean droplet, a mac (e.g. fennel), bare-metal, or local." } database: type: object additionalProperties: false @@ -42,7 +45,7 @@ providesFile: type: object additionalProperties: false properties: - host: { type: string } + host: { type: string, description: "A host name from net-tools mesh-hosts.json (lime, fennel, redroid, …)." } runtime: { type: string } port: { type: integer } systemd_unit: { type: string }