# Single Source of Truth

> A design rule that each fact, rule or configuration value has one owning definition, and every other value is derived from it.

Record: `architecture:single-source-of-truth`
Kind: principle
Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
Severity: mandatory
Scope: configuration, data, rule, schema
Canonical: https://banes-lab.com/ontology#architecture-single-source-of-truth

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Canonicalization](https://banes-lab.com/records/architecture/canonicalization.md) and before [Normalization](https://banes-lab.com/records/architecture/normalization.md).

## Repair

- Refactored by: Centralize Definition, Reference Shared Source
- Detected by: conflicting definitions
- Violated by: duplicate configs/rules/schemas
- Measured by: duplicate authority count
- Enforced by: config governance, schema registry

## Requires

- [Ownership](https://banes-lab.com/records/lexicon/ownership.md)
- [Canonical Definition](https://banes-lab.com/records/lexicon/canonical-definition.md)

## Reinforces

- [Do Not Repeat Yourself (DRY)](https://banes-lab.com/records/architecture/duplicate-code.md)
- [Consistency](https://banes-lab.com/records/architecture/consistency.md)

## Enables

- [Governance](https://banes-lab.com/records/architecture/governance.md)
- [Correctness](https://banes-lab.com/records/architecture/correctness.md)

## Conflicts with

- [Duplicated Authority](https://banes-lab.com/records/lexicon/duplicated-authority.md)
- [Magic Value](https://banes-lab.com/records/architecture/magic-value.md)

## In tension with

- [Availability](https://banes-lab.com/records/lexicon/availability.md)
- [Decentralization](https://banes-lab.com/records/architecture/decentralization.md)

## Tensions

- [Single Source of Truth / Availability](https://banes-lab.com/records/tension/availability-single-source-of-truth.md)
- [Single Source of Truth / Decentralization](https://banes-lab.com/records/tension/decentralization-single-source-of-truth.md)

## Contracts

- [Structural Core](https://banes-lab.com/records/algorithms/structural-core.md)
- [Centralization Kernel](https://banes-lab.com/records/algorithms/centralization-kernel.md)
- [CSS Type-Cascade Kernel](https://banes-lab.com/records/algorithms/css-type-cascade-concern.md)

## Severity

- [mandatory](https://banes-lab.com/records/vocabulary/severity-mandatory.md)

## Category

- [Schema / Canonical Data / Semantics](https://banes-lab.com/records/architecture-category/schema-canonical-data-semantics.md)

## Enforced by

- [codemods/entrypoints/location.entrypoint.ts](https://banes-lab.com/source/governance/codemods/entrypoints/location.entrypoint.ts.md)
- [codemods/entrypoints/vocabulary.entrypoint.ts](https://banes-lab.com/source/governance/codemods/entrypoints/vocabulary.entrypoint.ts.md)
- [rules/entrypoints/writing.entrypoint.ts](https://banes-lab.com/source/governance/rules/entrypoints/writing.entrypoint.ts.md)
- [rules/eslint/centralized-strings.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/centralized-strings.eslint.rule.ts.md)
- [rules/eslint/closure-no-browser-derivation.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/closure-no-browser-derivation.eslint.rule.ts.md)
- [rules/eslint/closure-paths-via-ssot.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/closure-paths-via-ssot.eslint.rule.ts.md)
- [rules/eslint/closure-rule-declarations-resolve.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/closure-rule-declarations-resolve.eslint.rule.ts.md)
- [rules/eslint/no-exclusion-membership.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/no-exclusion-membership.eslint.rule.ts.md)
- [rules/eslint/no-hardcoded-exclusions.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/no-hardcoded-exclusions.eslint.rule.ts.md)
- [rules/eslint/no-inline-asset-path.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/no-inline-asset-path.eslint.rule.ts.md)
- [rules/eslint/no-inline-icon-options.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/no-inline-icon-options.eslint.rule.ts.md)
- [rules/eslint/no-literal-strings.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/no-literal-strings.eslint.rule.ts.md)
- [rules/eslint/no-redundant-type-shim.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/no-redundant-type-shim.eslint.rule.ts.md)
- [rules/eslint/no-string-literal-ids.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/no-string-literal-ids.eslint.rule.ts.md)
- [rules/eslint/retired-collection-id.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/retired-collection-id.eslint.rule.ts.md)
- [rules/eslint/strings-derived-numbering.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/strings-derived-numbering.eslint.rule.ts.md)
- [rules/eslint/strings-link-construction.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/strings-link-construction.eslint.rule.ts.md)
- [runtime/entrypoints/coverage.entrypoint.ts](https://banes-lab.com/source/build/runtime/entrypoints/coverage.entrypoint.ts.md)

## Reinforced by

- [Canonical Model](https://banes-lab.com/records/architecture/canonical-model.md)
- [Database Normalization](https://banes-lab.com/records/architecture/database-normalization.md)
- [Derived Record State](https://banes-lab.com/records/architecture/derived-record-state.md)
- [Projection Channel](https://banes-lab.com/records/architecture/projection-channel.md)
- [Two-Direction Index](https://banes-lab.com/records/architecture/two-direction-index.md)
- [Period-Decided Disposition](https://banes-lab.com/records/architecture/period-decided-disposition.md)
- [Single Aggregate](https://banes-lab.com/records/architecture/single-aggregate.md)
- [Closed Vocabulary](https://banes-lab.com/records/architecture/closed-vocabulary.md)
- [Declared Jurisdiction](https://banes-lab.com/records/architecture/declared-jurisdiction.md)
- [Collision Consolidation](https://banes-lab.com/records/architecture/collision-consolidation.md)
- [Externally Resolved Slot](https://banes-lab.com/records/architecture/externally-resolved-slot.md)

## Required by

- [Derived Naming Registry](https://banes-lab.com/records/architecture/derived-naming-registry.md)

## Linked from

- [Integrating algorithms](https://banes-lab.com/pag/patterns/algorithm-integration.md)
- [The loop](https://banes-lab.com/disciplined-methodology/start/the-loop.md)
- [The stance](https://banes-lab.com/disciplined-methodology/start/the-stance.md)
- [Three encodings](https://banes-lab.com/disciplined-methodology/start/three-encodings.md)
- [Rules with names](https://banes-lab.com/disciplined-methodology/start/rules-with-names.md)
- [The behavior document](https://banes-lab.com/disciplined-methodology/start/the-behavior-document.md)
- [The drop-in](https://banes-lab.com/disciplined-methodology/start/onboarding.md)
- [One home](https://banes-lab.com/disciplined-methodology/build/one-home.md)
- [Definitions own what, code owns how](https://banes-lab.com/software-architecture/model/definitions-own-what.md)
- [The canon is grouped twice](https://banes-lab.com/software-architecture/principles/the-canon-is-grouped-twice.md)
- [The structural domain](https://banes-lab.com/software-architecture/principles/the-structural-domain.md)
- [Separate, trade, or mitigate](https://banes-lab.com/software-architecture/principles/separate-trade-or-mitigate.md)
- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Domain Architecture](https://banes-lab.com/ontology/principles/architecture-category-domain-architecture.md)
- [Control / Coordination / Centralization](https://banes-lab.com/ontology/principles/architecture-category-control-coordination-centralization.md)
- [Correctness / Determinism / Verification](https://banes-lab.com/ontology/principles/architecture-category-correctness-determinism-verification.md)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/principles/architecture-category-schema-canonical-data-semantics.md)
- [Security / Privacy / Compliance / Governance](https://banes-lab.com/ontology/principles/architecture-category-security-privacy-compliance-governance.md)
- [Coordination Surfaces](https://banes-lab.com/ontology/principles/architecture-category-coordination-surfaces.md)
- [Taxonomy / Classification / Naming](https://banes-lab.com/ontology/principles/architecture-category-taxonomy-classification-naming.md)
- [Transactions / State / Concurrency](https://banes-lab.com/ontology/principles/architecture-category-transactions-state-concurrency.md)
- [Core Vocabulary](https://banes-lab.com/ontology/lexicon/lexicon-category-core-vocabulary.md)
- [Quality Attributes](https://banes-lab.com/ontology/lexicon/lexicon-category-quality-attributes.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/lexicon/lexicon-category-schema-canonical-data-semantics.md)
- [Architectural Clusters](https://banes-lab.com/ontology/algorithms/algorithms-domain-architectural-clusters.md)
- [Centralization](https://banes-lab.com/ontology/algorithms/algorithms-domain-centralization.md)
- [CSS cascade](https://banes-lab.com/ontology/algorithms/algorithms-domain-css-cascade.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)

## Evidence in the code

- [configuration/strings](https://banes-lab.com/anatomy/tree/folder-configuration-strings.md)
- [core/ids](https://banes-lab.com/anatomy/tree/folder-core-ids.md)
- [tabLink](https://banes-lab.com/source/tree/core/assets/link.assets.ts.md)
