Commit graph

7 commits

Author SHA1 Message Date
Natalie
7a32fa18fc infra_manifest v0.7.0: deployment model rules (manage-apps, systemd, mesh)
Capture the deployment/supervision model now implemented by @quinn/manage-apps:
- manage_apps_orchestrator: manage-apps auto-discovers .infra.yaml (no registry);
  retire per-app app.manifest.yaml and hand-rolled start/deploy ssh scripts.
- systemd_supervision: standing cloud services run as systemd units (not
  foreground ssh / PID files); deploy installs the unit, manage-apps drives it.
- mesh_host_resolution: service.host is an ssh alias from net-tools host-apply;
  internal traffic rides the WG mesh (no auth on-mesh, no public app ports).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 03:30:10 -04:00
Natalie
cf2f1532c7 feat(infra_manifest): global droplet tier com.uvlava.<role> (DNS)
Add a global tier (no producer segment) for cross-producer shared services:
com.uvlava.dns (DNS), com.uvlava.wg (mesh hub). Pattern now allows optional
producer segment. Producer hosts stay com.uvlava.<producer>.<role>.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 02:17:41 -04:00
Natalie
5024ee517d infra_manifest: mandate DigitalOcean + reverse-DNS droplet naming
Add two must-rules and a schema pattern:
- cloud_provider: standing cloud hosts run on DO (nyc3 default), uvlava TF.
- droplet_naming: com.uvlava.<producer>.<role>; name is ForceNew → rename
  live via doctl + ignore_changes=[name], never a destructive apply.
- droplets[].name pattern ^com\.uvlava\.(ct|mc|quinn)\.[a-z0-9-]+$

Reflects the live fleet: com.uvlava.{ct.services,ct.redroid,quinn.artifacts,quinn.infra}.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 20:42:20 -04:00
Natalie
11fc015686 feat(infra_manifest): producer-level shared-infra droplets topology
Add optional `droplets` array for producer-root manifests (@quinn/.infra.yaml):
one shared services droplet (all forges + npm/pypi/swift registries + DNS + edge)
+ a dedicated MCP droplet, instead of one droplet per producer. v0.3.0->0.4.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 14:16:22 -04:00
Natalie
f2242e969a feat(infra_manifest): optional .infra.<env>.yaml dev/prod variants (v0.3.0)
Add an optional 'environment' field (default prod) and document sibling
.infra.dev.yaml manifests (same schema) so a project can declare a distinct
non-prod deployment — e.g. a local mac operator instance alongside the DO prod
service. Run-only/access config (passcodes, bind addrs) stays out of the manifest.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 10:20:12 -04:00
Natalie
578233c1b4 feat(infra_manifest): v0.2.0 — host∈mesh-hosts rule, broaden provider (mac/bare-metal/local)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 10:10:16 -04:00
Natalie
59656b5b93 feat(conventions): apiVersion+semver versioning, run lint:yaml CLI, rename infra_manifest
Add document apiVersion (conventions/v1) + per-convention semver + updated date to
the schema and all seed conventions; manifest files carry their own apiVersion
(infra/v1). New ./run (symlink -> scripts/cli/run) with lint:yaml validating every
programming_*/<name>.yaml against the schema (name==filename, scope==dir). Rename
infra-manifest.yaml -> infra_manifest.yaml for name match. 4/4 valid.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 08:36:10 -04:00
Renamed from programming_general/infra-manifest.yaml (Browse further)