# Referential Transparency

Record: `arch:referential-transparency`
Kind: principle
Layer: [Computation Core](https://banes-lab.com/records/layer/computation-core.md)
Severity: contextual
Scope: function, expression
Canonical: https://banes-lab.com/ontology#arch-referential-transparency

## Repair

- Refactored by: Extract Pure Function, Inject Dependency
- Detected by: hidden dependency on time/random/global state
- Violated by: same input producing different output
- Measured by: pure function coverage
- Enforced by: [code review](https://banes-lab.com/records/arch/code-review.md), functional boundaries

## requires

- [Pure Functions](https://banes-lab.com/records/arch/pure-functions.md)
- [Immutability](https://banes-lab.com/records/arch/immutability.md)

## reinforces

- [Determinism](https://banes-lab.com/records/arch/determinism.md)
- [Testability](https://banes-lab.com/records/arch/testability.md)

## enables

- [Safe Substitution](https://banes-lab.com/records/lex/safe-substitution.md)

## conflicts-with

- [Side Effects](https://banes-lab.com/records/lex/side-effects.md)

## tensions-with

- [Stateful IO](https://banes-lab.com/records/lex/stateful-io.md)

## tensions

- [Referential Transparency Stateful IO](https://banes-lab.com/records/tension/referential-transparency-stateful-io.md)

## referenced-by

- [Pure Functions](https://banes-lab.com/records/arch/pure-functions.md)
