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>
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>
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>
Each producer has its OWN forge (no sharing): ct-forge, mc-forge, quinn-forge.
@quinn moves from the interim ct-forge quinn/ user namespace to a dedicated
quinn-forge. All three forges are stood up from the same reusable module
@quinn/@developer/tf-forge (DO project + droplet + Forgejo + Verdaccio + PAT).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Root (~/Code) contains ONLY producer namespaces (@ct/@mc/@quinn) + support
buckets. Kind-orgs never appear at root — they nest one level down under a
producer: path is ~/Code/<producer>/<kind-org>/<repo> (e.g. ~/Code/@quinn/
@packages, never ~/Code/@packages). Add @projects as a kind-org (project-shaped
initiatives vs single deployable @applications).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add @quinn as the default producer namespace (Quinn's user account) for any
repo not distinctly @ct or @mc. Two forge hosts (ct-forge, mc-forge); three
producer namespaces (@ct/@mc org-backed, @quinn user-backed on ct-forge quinn/).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Confirmed via README version markers + git history: egirl=v0, lilith-platform=v1,
lilith-platform.live=v2 (still live prod), atlilith=v3, cocottetech=v4.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Correct the producer model: exactly two producers/forges — @ct (ct-forge)
and @mc (mc-forge); black.lan retired. "lilith"/"egirl" are NOT producers
but version names of the single ct platform lineage: egirl=v0, lilith=v1-v3,
cocotte=v4.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Encode the abstract workspace model: @org dirs are either producer
namespaces (@ct) mirroring a forge, or kind-orgs (@applications/@packages/
@platform/@developer). Add rules for forge-mirroring, scope-by-repo-boundary,
3-tier package placement, and versioned @platform generations. v0.1.0->0.2.0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
Mined the egirl->cocotte lineage + the prose agentic configs. Per-language
standards (py/rust/gd) and general conventions: service_architecture,
multi_agent_workflow, error_handling_logging, mcp_server_patterns,
naming_conventions, tenancy_patterns (draft), database_patterns. Captures the
canonical/latest where versions diverged. 14/14 lint:yaml-valid.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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>
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>