{
  "uid": "cogitave.learn.apply-naming-standards.keywords-and-codenames",
  "kind": "moduleUnit",
  "href": "/modules/apply-naming-standards/keywords-and-codenames/",
  "title": "Keywords and codenames",
  "summary": "",
  "type": null,
  "products": [],
  "roles": [],
  "levels": [],
  "subjects": [],
  "headings": [
    "Keyword-first, no redundant prefix",
    "What a codename is",
    "Three names, kept distinct",
    "When a codename is allowed"
  ],
  "source": "The naming rules give you plain, keyword-first *functional* names. A **codename**\nis a different thing: the durable internal identity of a *product* or major\ninitiative. Confusing the two is the most common naming mistake, so this unit\nkeeps them apart.\n\n## Keyword-first, no redundant prefix\n\nThe estate names functional artifacts with **plain keywords** and drops the\nredundant `cogitave-` prefix, because the parent org or folder already provides\nthe namespace. This is the decision recorded in\n[ADR-0007](../../../../standards/docs/decisions/0007-keyword-naming.md): names are\nkeyword-based and plain - `bootstrap`, `core`, `standards` - not\n`cogitave-bootstrap`. Where a GitHub org login must be globally unique, the\nclean-name-to-login mapping lives in `estate.yaml` so the local name stays simple.\n\n## What a codename is\n\nThe [codename standard](../../../../standards/docs/standards/codenames.md) defines\na codename as a **short, evocative, single-word name for a foundational concept**,\ndrawn from ancient and root languages. Cogitave calls this lexicon **Roots**, and\nit is seeded by the two existing products:\n\n- **`yuva`** - nest, home, dwelling: the place agents live and run (the Agent OS).\n- **`namzu`** - name, naming, designation: what defines an agent (the Agent\n  Kernel).\n\nThe family rule keeps a codename a single lowercase token of one to three\nsyllables, with no spaces, hyphen, or number, mapping to a foundational concept\nwhose connotation fits the product. The Roots lexicon is **promotion-grade by\ndesign** - `yuva` and `namzu` are already public names too.\n\n## Three names, kept distinct\n\nA product can carry three names, bound together in the codename **registry**:\n\n- **Codename** - the Roots token; one per product, its durable internal identity.\n- **Public / marketing name** - what customers see, usually the same token.\n- **Repo name** - a plain keyword. It is **either** the codename, when the product\n  leads with its name (`yuva`, `namzu`), **or** the descriptive category keyword,\n  when the category is the clearest identifier (`browser`, `editor`).\n\n> [!CAUTION]\n> **Never concatenate** a codename with its category - not `yuva-os`,\n> `duru-browser`, or `editor-kalem`. The registry holds the mapping; the name\n> stays simple. This is the same no-redundant-prefix principle applied to\n> products.\n\n## When a codename is allowed\n\n- **One codename per product** or major externally-distinct initiative, for its\n  lifetime.\n- **Platform and infrastructure primitives are codename-exempt.** `core`,\n  `bootstrap`, `standards`, `agents`, `infra` run under their **descriptive\n  keyword** names - they are substrate, not marketed surfaces.\n- **Allocation is gated, not first-come.** A name is `proposed` only after a fast\n  **knockout** check (trademark registers, package and handle availability,\n  internal collision, cross-language safety); it goes `active` only with founder\n  sign-off and full legal **clearance**. A retired codename is tombstoned, never\n  reused.\n",
  "partOf": "cogitave.learn.apply-naming-standards",
  "durationInMinutes": 7,
  "quiz": null
}