{
  "code": null,
  "collection": "architecture",
  "href": "https://banes-lab.com/ontology#architecture-closed-vocabulary",
  "id": "closed-vocabulary",
  "kind": "principle",
  "layer": {
    "href": "https://banes-lab.com/ontology/schema#layer-structural-core",
    "json": "https://banes-lab.com/json/records/layer/structural-core",
    "label": "Structural Core",
    "markdown": "https://banes-lab.com/records/layer/structural-core.md",
    "ref": "layer:structural-core"
  },
  "name": "Closed Vocabulary",
  "ref": "architecture:closed-vocabulary",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-vocabulary-admission",
          "json": "https://banes-lab.com/json/records/lexicon/vocabulary-admission",
          "label": "Vocabulary Admission",
          "markdown": "https://banes-lab.com/records/lexicon/vocabulary-admission.md",
          "ref": "lexicon:vocabulary-admission"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-rejection-table",
          "json": "https://banes-lab.com/json/records/lexicon/rejection-table",
          "label": "Rejection Table",
          "markdown": "https://banes-lab.com/records/lexicon/rejection-table.md",
          "ref": "lexicon:rejection-table"
        }
      ],
      "relation": "requires"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-single-source-of-truth",
          "json": "https://banes-lab.com/json/records/architecture/single-source-of-truth",
          "label": "Single Source of Truth",
          "markdown": "https://banes-lab.com/records/architecture/single-source-of-truth.md",
          "ref": "architecture:single-source-of-truth"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-ubiquitous-language",
          "json": "https://banes-lab.com/json/records/architecture/ubiquitous-language",
          "label": "Ubiquitous Language",
          "markdown": "https://banes-lab.com/records/architecture/ubiquitous-language.md",
          "ref": "architecture:ubiquitous-language"
        }
      ],
      "relation": "reinforces"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-placement-predictability",
          "json": "https://banes-lab.com/json/records/lexicon/placement-predictability",
          "label": "Placement Predictability",
          "markdown": "https://banes-lab.com/records/lexicon/placement-predictability.md",
          "ref": "lexicon:placement-predictability"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-concern-folder-correspondence",
          "json": "https://banes-lab.com/json/records/architecture/concern-folder-correspondence",
          "label": "Concern-Folder Correspondence",
          "markdown": "https://banes-lab.com/records/architecture/concern-folder-correspondence.md",
          "ref": "architecture:concern-folder-correspondence"
        }
      ],
      "relation": "enables"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-vocabulary-inflation",
          "json": "https://banes-lab.com/json/records/lexicon/vocabulary-inflation",
          "label": "Vocabulary Inflation",
          "markdown": "https://banes-lab.com/records/lexicon/vocabulary-inflation.md",
          "ref": "lexicon:vocabulary-inflation"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-nominalized-process-word",
          "json": "https://banes-lab.com/json/records/lexicon/nominalized-process-word",
          "label": "Nominalized Process Word",
          "markdown": "https://banes-lab.com/records/lexicon/nominalized-process-word.md",
          "ref": "lexicon:nominalized-process-word"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-adjective-slot-word",
          "json": "https://banes-lab.com/json/records/lexicon/adjective-slot-word",
          "label": "Adjective Slot Word",
          "markdown": "https://banes-lab.com/records/lexicon/adjective-slot-word.md",
          "ref": "lexicon:adjective-slot-word"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-plural-subject",
          "json": "https://banes-lab.com/json/records/lexicon/plural-subject",
          "label": "Plural Subject",
          "markdown": "https://banes-lab.com/records/lexicon/plural-subject.md",
          "ref": "lexicon:plural-subject"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-measurement-word",
          "json": "https://banes-lab.com/json/records/lexicon/measurement-word",
          "label": "Measurement Word",
          "markdown": "https://banes-lab.com/records/lexicon/measurement-word.md",
          "ref": "lexicon:measurement-word"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-instance-identifier-word",
          "json": "https://banes-lab.com/json/records/lexicon/instance-identifier-word",
          "label": "Instance Identifier Word",
          "markdown": "https://banes-lab.com/records/lexicon/instance-identifier-word.md",
          "ref": "lexicon:instance-identifier-word"
        }
      ],
      "relation": "conflicts-with"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-naming-expressiveness",
          "json": "https://banes-lab.com/json/records/lexicon/naming-expressiveness",
          "label": "Naming Expressiveness",
          "markdown": "https://banes-lab.com/records/lexicon/naming-expressiveness.md",
          "ref": "lexicon:naming-expressiveness"
        }
      ],
      "relation": "tensions-with"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/schema#tension-closed-vocabulary-naming-expressiveness",
          "json": "https://banes-lab.com/json/records/tension/closed-vocabulary-naming-expressiveness",
          "label": "Closed Vocabulary / Naming Expressiveness",
          "markdown": "https://banes-lab.com/records/tension/closed-vocabulary-naming-expressiveness.md",
          "ref": "tension:closed-vocabulary-naming-expressiveness"
        }
      ],
      "relation": "tensions"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/algorithms#algorithms-vocabulary-admission-gate",
          "json": "https://banes-lab.com/json/records/algorithms/vocabulary-admission-gate",
          "label": "Vocabulary Admission Gate",
          "markdown": "https://banes-lab.com/records/algorithms/vocabulary-admission-gate.md",
          "ref": "algorithms:vocabulary-admission-gate"
        },
        {
          "href": "https://banes-lab.com/ontology/algorithms#algorithms-taxonomy-kernel",
          "json": "https://banes-lab.com/json/records/algorithms/taxonomy-kernel",
          "label": "Taxonomy Kernel",
          "markdown": "https://banes-lab.com/records/algorithms/taxonomy-kernel.md",
          "ref": "algorithms:taxonomy-kernel"
        }
      ],
      "relation": "contracts"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-vocabulary-inflation",
          "json": "https://banes-lab.com/json/records/lexicon/vocabulary-inflation",
          "label": "Vocabulary Inflation",
          "markdown": "https://banes-lab.com/records/lexicon/vocabulary-inflation.md",
          "ref": "lexicon:vocabulary-inflation"
        }
      ],
      "relation": "violated-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-rename-to-a-declared-word",
          "json": "https://banes-lab.com/json/records/lexicon/rename-to-a-declared-word",
          "label": "Rename to a Declared Word",
          "markdown": "https://banes-lab.com/records/lexicon/rename-to-a-declared-word.md",
          "ref": "lexicon:rename-to-a-declared-word"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-vocabulary-admission",
          "json": "https://banes-lab.com/json/records/lexicon/vocabulary-admission",
          "label": "Vocabulary Admission",
          "markdown": "https://banes-lab.com/records/lexicon/vocabulary-admission.md",
          "ref": "lexicon:vocabulary-admission"
        }
      ],
      "relation": "refactored-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/schema#vocabulary-severity-mandatory",
          "json": "https://banes-lab.com/json/records/vocabulary/severity-mandatory",
          "label": "mandatory",
          "markdown": "https://banes-lab.com/records/vocabulary/severity-mandatory.md",
          "ref": "vocabulary:severity-mandatory"
        }
      ],
      "relation": "severity"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-category-taxonomy-classification-naming",
          "json": "https://banes-lab.com/json/records/architecture-category/taxonomy-classification-naming",
          "label": "Taxonomy / Classification / Naming",
          "markdown": "https://banes-lab.com/records/architecture-category/taxonomy-classification-naming.md",
          "ref": "architecture-category:taxonomy-classification-naming"
        }
      ],
      "relation": "category"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/governance#file-governance-codemods-validators-field-vocabulary-validator-ts",
          "json": "https://banes-lab.com/json/source/governance/codemods/validators/field.vocabulary.validator.ts",
          "label": "codemods/validators/field.vocabulary.validator.ts",
          "markdown": "https://banes-lab.com/source/governance/codemods/validators/field.vocabulary.validator.ts.md",
          "ref": "anatomy:file-governance-codemods-validators-field-vocabulary-validator-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/governance#file-governance-rules-entrypoints-taxonomy-entrypoint-ts",
          "json": "https://banes-lab.com/json/source/governance/rules/entrypoints/taxonomy.entrypoint.ts",
          "label": "rules/entrypoints/taxonomy.entrypoint.ts",
          "markdown": "https://banes-lab.com/source/governance/rules/entrypoints/taxonomy.entrypoint.ts.md",
          "ref": "anatomy:file-governance-rules-entrypoints-taxonomy-entrypoint-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/context#file-context-runtime-entrypoints-ontology-entrypoint-ts",
          "json": "https://banes-lab.com/json/source/context/runtime/entrypoints/ontology.entrypoint.ts",
          "label": "runtime/entrypoints/ontology.entrypoint.ts",
          "markdown": "https://banes-lab.com/source/context/runtime/entrypoints/ontology.entrypoint.ts.md",
          "ref": "anatomy:file-context-runtime-entrypoints-ontology-entrypoint-ts"
        }
      ],
      "relation": "enforced-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-carrier-and-payload-split",
          "json": "https://banes-lab.com/json/records/architecture/carrier-and-payload-split",
          "label": "Carrier and Payload Split",
          "markdown": "https://banes-lab.com/records/architecture/carrier-and-payload-split.md",
          "ref": "architecture:carrier-and-payload-split"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-positional-slot-resolution",
          "json": "https://banes-lab.com/json/records/architecture/positional-slot-resolution",
          "label": "Positional Slot Resolution",
          "markdown": "https://banes-lab.com/records/architecture/positional-slot-resolution.md",
          "ref": "architecture:positional-slot-resolution"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-agnostic-first-vocabulary",
          "json": "https://banes-lab.com/json/records/architecture/agnostic-first-vocabulary",
          "label": "Agnostic-First Vocabulary",
          "markdown": "https://banes-lab.com/records/architecture/agnostic-first-vocabulary.md",
          "ref": "architecture:agnostic-first-vocabulary"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-guided-vocabulary-refusal",
          "json": "https://banes-lab.com/json/records/architecture/guided-vocabulary-refusal",
          "label": "Guided Vocabulary Refusal",
          "markdown": "https://banes-lab.com/records/architecture/guided-vocabulary-refusal.md",
          "ref": "architecture:guided-vocabulary-refusal"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-sanctioned-generic-subject",
          "json": "https://banes-lab.com/json/records/architecture/sanctioned-generic-subject",
          "label": "Sanctioned Generic Subject",
          "markdown": "https://banes-lab.com/records/architecture/sanctioned-generic-subject.md",
          "ref": "architecture:sanctioned-generic-subject"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-case-dialect",
          "json": "https://banes-lab.com/json/records/architecture/case-dialect",
          "label": "Case Dialect",
          "markdown": "https://banes-lab.com/records/architecture/case-dialect.md",
          "ref": "architecture:case-dialect"
        }
      ],
      "relation": "reinforced-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-externally-resolved-slot",
          "json": "https://banes-lab.com/json/records/architecture/externally-resolved-slot",
          "label": "Externally Resolved Slot",
          "markdown": "https://banes-lab.com/records/architecture/externally-resolved-slot.md",
          "ref": "architecture:externally-resolved-slot"
        }
      ],
      "relation": "required-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/pag#what-is-pag",
          "json": "https://banes-lab.com/json/pag/introduction/what-is-pag",
          "label": "What PAG is",
          "markdown": "https://banes-lab.com/pag/introduction/what-is-pag.md",
          "ref": "chapter:/pag#what-is-pag"
        },
        {
          "href": "https://banes-lab.com/disciplined-methodology/build#a-check-matches-a-shape",
          "json": "https://banes-lab.com/json/disciplined-methodology/build/a-check-matches-a-shape",
          "label": "A check matches a shape",
          "markdown": "https://banes-lab.com/disciplined-methodology/build/a-check-matches-a-shape.md",
          "ref": "chapter:/disciplined-methodology/build#a-check-matches-a-shape"
        },
        {
          "href": "https://banes-lab.com/disciplined-methodology/build#one-home",
          "json": "https://banes-lab.com/json/disciplined-methodology/build/one-home",
          "label": "One home",
          "markdown": "https://banes-lab.com/disciplined-methodology/build/one-home.md",
          "ref": "chapter:/disciplined-methodology/build#one-home"
        },
        {
          "href": "https://banes-lab.com/disciplined-methodology/build#placement-is-a-grammar",
          "json": "https://banes-lab.com/json/disciplined-methodology/build/placement-is-a-grammar",
          "label": "Placement is a grammar",
          "markdown": "https://banes-lab.com/disciplined-methodology/build/placement-is-a-grammar.md",
          "ref": "chapter:/disciplined-methodology/build#placement-is-a-grammar"
        },
        {
          "href": "https://banes-lab.com/disciplined-methodology/verify#coverage-is-derived",
          "json": "https://banes-lab.com/json/disciplined-methodology/verify/coverage-is-derived",
          "label": "Coverage is derived",
          "markdown": "https://banes-lab.com/disciplined-methodology/verify/coverage-is-derived.md",
          "ref": "chapter:/disciplined-methodology/verify#coverage-is-derived"
        },
        {
          "href": "https://banes-lab.com/software-architecture#definitions-own-what",
          "json": "https://banes-lab.com/json/software-architecture/model/definitions-own-what",
          "label": "Definitions own what, code owns how",
          "markdown": "https://banes-lab.com/software-architecture/model/definitions-own-what.md",
          "ref": "chapter:/software-architecture#definitions-own-what"
        },
        {
          "href": "https://banes-lab.com/software-architecture#the-layer-spine",
          "json": "https://banes-lab.com/json/software-architecture/model/the-layer-spine",
          "label": "The layer spine",
          "markdown": "https://banes-lab.com/software-architecture/model/the-layer-spine.md",
          "ref": "chapter:/software-architecture#the-layer-spine"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-schema-canonical-data-semantics",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-schema-canonical-data-semantics",
          "label": "Schema / Canonical Data / Semantics",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-schema-canonical-data-semantics.md",
          "ref": "chapter:/ontology#architecture-category-schema-canonical-data-semantics"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-coordination-surfaces",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-coordination-surfaces",
          "label": "Coordination Surfaces",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-coordination-surfaces.md",
          "ref": "chapter:/ontology#architecture-category-coordination-surfaces"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-taxonomy-classification-naming",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-taxonomy-classification-naming",
          "label": "Taxonomy / Classification / Naming",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-taxonomy-classification-naming.md",
          "ref": "chapter:/ontology#architecture-category-taxonomy-classification-naming"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-taxonomy-classification-naming",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-taxonomy-classification-naming",
          "label": "Taxonomy / Classification / Naming",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-taxonomy-classification-naming.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-taxonomy-classification-naming"
        },
        {
          "href": "https://banes-lab.com/ontology/algorithms#algorithms-domain-taxonomy",
          "json": "https://banes-lab.com/json/ontology/algorithms/algorithms-domain-taxonomy",
          "label": "Taxonomy",
          "markdown": "https://banes-lab.com/ontology/algorithms/algorithms-domain-taxonomy.md",
          "ref": "chapter:/ontology/algorithms#algorithms-domain-taxonomy"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#the-vocabulary-severity",
          "json": "https://banes-lab.com/json/ontology/schema/the-vocabulary-severity",
          "label": "Severity levels",
          "markdown": "https://banes-lab.com/ontology/schema/the-vocabulary-severity.md",
          "ref": "chapter:/ontology/schema#the-vocabulary-severity"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#the-resolutions",
          "json": "https://banes-lab.com/json/ontology/schema/the-resolutions",
          "label": "The resolutions",
          "markdown": "https://banes-lab.com/ontology/schema/the-resolutions.md",
          "ref": "chapter:/ontology/schema#the-resolutions"
        }
      ],
      "relation": "linked-from"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-validators-taxonomy-validator-ts",
          "json": "https://banes-lab.com/json/source/coordination/tools/core/validators/taxonomy.validator.ts",
          "label": "checkNaming",
          "markdown": "https://banes-lab.com/source/coordination/tools/core/validators/taxonomy.validator.ts.md",
          "ref": "anatomy:file-coordination-tools-core-validators-taxonomy-validator-ts"
        }
      ],
      "relation": "evidence"
    }
  ],
  "summary": "A design rule that every word in a name slot comes from a declared list, and a new word enters the list only by an approved edit.",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/ontology#architecture-positional-slot-resolution",
      "json": "https://banes-lab.com/json/records/architecture/positional-slot-resolution",
      "label": "Positional Slot Resolution",
      "markdown": "https://banes-lab.com/records/architecture/positional-slot-resolution.md",
      "ref": "architecture:positional-slot-resolution"
    },
    "previous": {
      "href": "https://banes-lab.com/ontology#architecture-hand-kept-index",
      "json": "https://banes-lab.com/json/records/architecture/hand-kept-index",
      "label": "Hand-Kept Index",
      "markdown": "https://banes-lab.com/records/architecture/hand-kept-index.md",
      "ref": "architecture:hand-kept-index"
    }
  },
  "up": {
    "href": null,
    "json": "https://banes-lab.com/json/api/records/architecture",
    "label": "Architecture principles",
    "markdown": "https://banes-lab.com/api/records/architecture.md",
    "ref": "api:records/architecture"
  },
  "aliases": [],
  "exemplar": {
    "after": "<container>/coordinators/foo.coordinator.ts → the declared concern that already covers the role",
    "before": "<container>/managers/foo.manager.ts → neither \"managers\" nor \"manager\" is a declared word",
    "lang": "flow",
    "medium": "composite"
  },
  "formedBy": null,
  "scope": [
    "repository",
    "folder",
    "filename"
  ],
  "severity": "mandatory"
}
