From 578233c1b48f6f1b939c1229decb4b495bcee458 Mon Sep 17 00:00:00 2001 From: Natalie Date: Mon, 29 Jun 2026 10:10:16 -0400 Subject: [PATCH] =?UTF-8?q?feat(infra=5Fmanifest):=20v0.2.0=20=E2=80=94=20?= =?UTF-8?q?host=E2=88=88mesh-hosts=20rule,=20broaden=20provider=20(mac/bar?= =?UTF-8?q?e-metal/local)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- programming_general/infra_manifest.yaml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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 }