# Schema Validation

Record: `arch:schema-validation`
Kind: mechanism
Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
Severity: mandatory
Scope: data, API, message
Canonical: https://banes-lab.com/ontology#arch-schema-validation

## Repair

- Refactored by: Add Schema Validator, Add DTO
- Detected by: missing validator at boundary
- Violated by: accepting unvalidated payloads
- Measured by: validation coverage
- Enforced by: [runtime validation](https://banes-lab.com/records/reason/technique-runtime-validation.md), CI schema checks

## requires

- [Schema Contract](https://banes-lab.com/records/arch/schema-contract.md)

## reinforces

- [Correctness](https://banes-lab.com/records/arch/correctness.md)
- [Data Contract](https://banes-lab.com/records/arch/data-contract.md)

## enables

- [Fail Fast](https://banes-lab.com/records/arch/fail-fast.md)
- [Interoperability](https://banes-lab.com/records/arch/interoperability.md)

## conflicts-with

- [Untyped Payloads](https://banes-lab.com/records/lex/untyped-payloads.md)

## tensions-with

- [Flexible Input](https://banes-lab.com/records/lex/flexible-input.md)

## tensions

- [Schema Validation Flexible Input](https://banes-lab.com/records/tension/flexible-input-schema-validation.md)

## referenced-by

- [Schema Contract](https://banes-lab.com/records/arch/schema-contract.md)
- [Declarative Configuration](https://banes-lab.com/records/arch/declarative-configuration.md)
- [Canonical Schema](https://banes-lab.com/records/arch/canonical-schema.md)
