# Canonicalization

> A technique for converting equivalent values to one normal form before they are compared, stored or checked.

Record: `architecture:canonicalization`
Kind: technique
Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
Severity: recommended
Scope: input, data, security
Canonical: https://banes-lab.com/ontology#architecture-canonicalization

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Canonical Schema](https://banes-lab.com/records/architecture/canonical-schema.md) and before [Single Source of Truth](https://banes-lab.com/records/architecture/single-source-of-truth.md).

## Repair

- Refactored by: Normalize Input, Canonicalize Before Compare
- Detected by: duplicate semantically equivalent values
- Violated by: comparing non-normalized forms
- Measured by: normalization defect count
- Enforced by: validation pipeline

## Requires

- [Canonical Format](https://banes-lab.com/records/lexicon/canonical-format.md)

## Reinforces

- [Validation](https://banes-lab.com/records/architecture/validation.md)
- [Deduplication](https://banes-lab.com/records/lexicon/deduplication.md)

## Enables

- [Idempotency](https://banes-lab.com/records/architecture/idempotency.md)
- [Security Checks](https://banes-lab.com/records/lexicon/security-checks.md)

## Conflicts with

- [Ambiguous Encoding](https://banes-lab.com/records/lexicon/ambiguous-encoding.md)

## In tension with

- [Lossless Preservation](https://banes-lab.com/records/lexicon/lossless-preservation.md)

## Tensions

- [Canonicalization / Lossless Preservation](https://banes-lab.com/records/tension/canonicalization-lossless-preservation.md)

## Severity

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

## Category

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

## Linked from

- [Correctness / Determinism / Verification](https://banes-lab.com/ontology/principles/architecture-category-correctness-determinism-verification.md)
- [Transactions / State / Concurrency](https://banes-lab.com/ontology/principles/architecture-category-transactions-state-concurrency.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/lexicon/lexicon-category-schema-canonical-data-semantics.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
