feat(recursive_code_workspace): one forge per producer + tf-forge module

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>
This commit is contained in:
Natalie 2026-06-29 11:19:15 -04:00
parent 62258be795
commit d1629a7545

View file

@ -28,23 +28,22 @@ rules:
namespace. A repo's path is ~/Code/<producer>/<kind-org>/<repo>, e.g.
~/Code/@quinn/@packages/<lib> (never ~/Code/@packages/<lib>). @quinn is the default
producer, so personal / unscoped work lands under ~/Code/@quinn/<kind-org>/.
rationale: "Producer is the PRIMARY partition, kind is secondary. The path mirrors the forge — ~/Code/<producer>/<kind-org>/<repo> <-> <forge-host>/<producer-or-org>/<repo>."
rationale: "Producer is the PRIMARY partition, kind is secondary. The path mirrors that producer's forge — ~/Code/<producer>/<kind-org>/<repo> <-> <producer-forge>/<kind-org>/<repo>."
- id: producer_namespaces
level: must
text: >
A producer namespace groups everything one producer builds and MIRRORS its forge layout.
There are exactly TWO forge HOSTS — ct-forge (134.199.243.61) and mc-forge (159.203.170.249,
magic civilization) — and THREE producer namespaces:
@ct (cocotte tech; ct-forge orgs applications/packages/platform/developer; symlink to
@projects/@cocottetech),
@mc (magic civilization; mc-forge),
@quinn (the DEFAULT producer for anything not distinctly @ct or @mc; hosted on ct-forge
under the `quinn/` user namespace).
No other forges exist — the former black.lan/lilith forge is retired and all its repos
migrate to ct-forge (ct orgs for @ct work, quinn/ for @quinn work).
A producer namespace groups everything one producer builds and MIRRORS its OWN forge
1:1 — one forge per producer, no sharing. Three producers, three forges:
@ct (cocotte tech; ct-forge 134.199.243.61),
@mc (magic civilization; mc-forge 159.203.170.249),
@quinn (the DEFAULT producer for anything not distinctly @ct or @mc; quinn-forge).
Each forge is stood up from the SAME reusable module @quinn/@developer/tf-forge (DO project
+ droplet + Forgejo + Verdaccio + PAT), parameterized per producer — so a new producer's
forge is created the way the first two were. The retired black.lan/lilith forge's repos
migrate to the appropriate producer forge.
Inside a producer namespace live its kind-orgs: e.g. @ct/@applications, @ct/@packages,
@ct/@platform, @ct/@developer — each the workspace checkout of the matching forge path.
rationale: Producer is stable; license/distribution is not. A project released OSS later still belongs to its producer namespace — organize by who builds it, not by how it ships. Default to @quinn when no distinct company/product producer applies. "lilith"/"egirl" are NOT producers — they are version names of the ct platform lineage (see platform_versions).
@ct/@platform, @ct/@developer — each the workspace checkout of the matching forge org.
rationale: Producer is stable; license/distribution is not. A project released OSS later still belongs to its producer namespace — organize by who builds it, not by how it ships. Default to @quinn when no distinct company/product producer applies. "lilith"/"egirl" are NOT producers — they are version names of the ct platform lineage (see platform_versions). One forge per producer keeps creds/projects isolated and the workspace<->forge mirror exact.
- id: kind_orgs
level: must
text: >