convention.yaml.schema (meta-schema) + per-language dirs (general/ts/swift/py/ rust/gd). Seed conventions: recursive_code_workspace (the ~/Code @org tree, always-active), infra_manifest (per-project .infra.yaml + its schema), and ts/code_standards + general/git_commit (shifted from the prose agentic configs). Referenced by global config as convention:<name>(<args>). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
54 lines
2 KiB
YAML
54 lines
2 KiB
YAML
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).
|
|
appliesTo: ["@applications/*", "@projects/@cocottetech", "@projects/@magic-civilization"]
|
|
rules:
|
|
- id: own_db
|
|
level: must
|
|
text: A project needing a database declares its own logical DB + dedicated user on the shared managed cluster (data-sourced), never reusing another service's creds.
|
|
rationale: own-DB-per-service + credential separation.
|
|
- id: http_coupling
|
|
level: must
|
|
text: Cross-service dependencies are HTTP only (declared in depends_on), never shared databases.
|
|
- 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.
|
|
providesFile:
|
|
path: .infra.yaml
|
|
schema:
|
|
$schema: "https://json-schema.org/draft/2020-12/schema"
|
|
title: ProjectInfraManifest
|
|
type: object
|
|
additionalProperties: false
|
|
required: [project, provider]
|
|
properties:
|
|
project: { type: string }
|
|
provider: { type: string, enum: [digitalocean] }
|
|
database:
|
|
type: object
|
|
additionalProperties: false
|
|
required: [cluster, name, user]
|
|
properties:
|
|
cluster: { type: string, description: Shared managed cluster — data-sourced, not owned here. }
|
|
name: { type: string }
|
|
user: { type: string }
|
|
service:
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
host: { type: string }
|
|
runtime: { type: string }
|
|
port: { type: integer }
|
|
systemd_unit: { type: string }
|
|
gpu:
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
mode: { type: string, enum: [on-demand] }
|
|
droplet: { type: string }
|
|
depends_on:
|
|
type: array
|
|
items: { type: string }
|
|
description: Other services consumed over HTTP.
|