feat(recursive_code_workspace): root holds producers only; add @projects kind-org

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

View file

@ -15,10 +15,20 @@ rules:
- id: org_dirs
level: must
text: >
Every @org dir is one of two things: a PRODUCER NAMESPACE (who builds it — e.g.
@ct, @lilith, @magic-civilization) or a KIND-ORG (what kind of artifact — @applications,
@packages, @platform, @developer). The same names recur at any depth; an @org's
meaning is positional, never global.
Every @org dir is one of two things: a PRODUCER NAMESPACE (who builds it — @ct, @mc,
@quinn) or a KIND-ORG (what kind of artifact — @applications, @projects, @packages,
@platform, @developer). The same names recur at depth; an @org's meaning is positional,
never global.
- id: root_is_producers
level: must
text: >
The workspace root (~/Code) contains ONLY producer namespaces (@ct, @mc, @quinn) plus the
cross-cutting support buckets. KIND-ORGS NEVER APPEAR AT ROOT — every @applications /
@projects / @packages / @platform / @developer lives one level down, INSIDE a producer
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>."
- id: producer_namespaces
level: must
text: >
@ -39,8 +49,10 @@ rules:
level: must
text: >
Kind-orgs partition a producer's repos by artifact role:
@applications = deployable products you operate (a composition of clients + backends +
databases serving real consumers);
@applications = single deployable products you operate (a composition of clients + backends
+ databases serving real consumers);
@projects = project-shaped initiatives that aren't one deployable app (multi-component
efforts, experiments, creative / personal work);
@packages = shared libraries consumed by apps;
@platform = the core platform product, kept as VERSIONED GENERATIONS (current + archived);
@developer = dev-infra / meta repos (conventions, tooling).
@ -86,5 +98,6 @@ rules:
level: may
text: >
Cross-cutting or transient items live in the top-level support buckets (@scripts /
@docs / @forks / @external / @archives / @work), not inside project repos. These sit
beside the producer namespaces and kind-orgs at the workspace root.
@docs / @forks / @external / @archives / @work), not inside project repos. These are the
ONLY non-producer entries at the workspace root — they sit beside the producer namespaces
(@ct / @mc / @quinn), never kind-orgs.