# Type Safety

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

## Repair

- Refactored by: Add Types, Replace Map with DTO, Narrow Types
- Detected by: weak type usage, unsafe casts
- Violated by: any/unknown maps crossing boundaries
- Measured by: type coverage, unsafe cast count
- Enforced by: compiler flags, type checker

## requires

- [Explicit Types](https://banes-lab.com/records/lex/explicit-types.md)

## reinforces

- [Correctness](https://banes-lab.com/records/arch/correctness.md)
- [Contracts](https://banes-lab.com/records/lex/contracts.md)

## enables

- [Static Analysis](https://banes-lab.com/records/arch/static-analysis.md)

## conflicts-with

- [Dynamic Untyped Boundaries](https://banes-lab.com/records/lex/dynamic-untyped-boundaries.md)
- [Stringly Typed Programming](https://banes-lab.com/records/arch/stringly-typed-programming.md)

## tensions-with

- [Rapid Scripting](https://banes-lab.com/records/lex/rapid-scripting.md)

## tensions

- [Type Safety Rapid Scripting](https://banes-lab.com/records/tension/rapid-scripting-type-safety.md)

## referenced-by

- [Explicit Contracts](https://banes-lab.com/records/arch/explicit-contracts.md)
- [Data Contract](https://banes-lab.com/records/arch/data-contract.md)
- [Static Analysis](https://banes-lab.com/records/arch/static-analysis.md)
- [Compile-Time Evaluation](https://banes-lab.com/records/arch/compile-time-evaluation.md)
- [Liskov Substitution Principle (LSP)](https://banes-lab.com/records/arch/liskov-substitution.md)
- [Composite Pattern](https://banes-lab.com/records/arch/composite-pattern.md)
