{
  "uid": "cogitave.learn.apply-naming-standards.introduction",
  "kind": "moduleUnit",
  "href": "/modules/apply-naming-standards/introduction/",
  "title": "Introduction",
  "summary": "",
  "type": null,
  "products": [],
  "roles": [],
  "levels": [],
  "subjects": [],
  "headings": [
    "Two ideas, kept apart",
    "What you will get from this module"
  ],
  "source": "A name is the first thing anyone reads - a human scanning a repo list, an agent\nresolving a UID, a linter deciding whether your commit lands. In most codebases\nnaming is a matter of taste, argued in review and settled inconsistently. In the\nCogitave estate it is a **standard**, and the standard is **machine-enforced**:\nevery rule maps to a CI gate, so a naming violation fails the build the same as a\nfailing test.\n\nThat standard is the\n[naming standard](../../../../standards/docs/standards/naming.md). It owns the\n**cross-cutting principles** and the per-language and per-domain conventions -\nfrom a Rust type to an AWS tag to a Kafka topic - so a human or an agent meets\none predictable convention everywhere. Where another standard already owns a\nslice (API field casing, env-var names, commit and branch *types*), the naming\nstandard **references it, not restates it**.\n\n> [!IMPORTANT]\n> Naming is machine-enforced, not reviewer goodwill. Every rule in the naming\n> standard maps to a linter or policy gate - `rustfmt` and `clippy`, `gofmt` and\n> `go vet`, ESLint, `tflint`, tag policies, OPA - and fails CI when broken. Learn\n> the rule from the standard; the gate will hold you to it.\n\n## Two ideas, kept apart\n\nThis module teaches two things that are easy to confuse:\n\n- **The naming rules** - how you name a *functional* thing: an identifier, a\n  file, a repo, a branch. The keyword-first principle governs here: names are\n  plain keywords, with no redundant `cogitave-` prefix, because the hierarchy\n  already provides the namespace\n  ([ADR-0007](../../../../standards/docs/decisions/0007-keyword-naming.md)).\n- **Codenames** - the durable internal identity of a *product*, drawn from a\n  deliberate thematic lexicon, allocated through a gated process. A codename is\n  not a functional name and is not always allowed.\n\n## What you will get from this module\n\nNot a style opinion - a working command of the estate's naming rules, the ability\nto name a new artifact correctly on the first try, and a clear line between a\nfunctional keyword and a product codename so you know which one a situation calls\nfor. Throughout, the move is the same: follow the standard to the owning rule\nrather than paraphrasing it from memory.\n",
  "partOf": "cogitave.learn.apply-naming-standards",
  "durationInMinutes": 4,
  "quiz": null
}