# Predictability

Record: `arch:predictability`
Kind: quality-attribute
Layer: [Computation Core](https://banes-lab.com/records/layer/computation-core.md)
Severity: recommended
Scope: API, module, runtime
Canonical: https://banes-lab.com/ontology#arch-predictability

## Repair

- Refactored by: Make Behavior Explicit, Add Contracts
- Detected by: nondeterministic tests, ambiguous APIs
- Violated by: surprising side effects, implicit ordering
- Measured by: flake/misuse rate
- Enforced by: [tests](https://banes-lab.com/records/lex/tests.md), [contracts](https://banes-lab.com/records/lex/contracts.md), linting

## requires

- [Determinism](https://banes-lab.com/records/arch/determinism.md)
- [Explicit Contracts](https://banes-lab.com/records/arch/explicit-contracts.md)

## reinforces

- [Principle of Least Surprise](https://banes-lab.com/records/arch/principle-of-least-surprise.md)

## enables

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

## conflicts-with

- [Hidden Behavior](https://banes-lab.com/records/lex/hidden-behavior.md)

## tensions-with

- [Dynamic Runtime Behavior](https://banes-lab.com/records/lex/dynamic-runtime-behavior.md)

## tensions

- [Predictability Dynamic Runtime Behavior](https://banes-lab.com/records/tension/dynamic-runtime-behavior-predictability.md)

## referenced-by

- [Pattern Consistency](https://banes-lab.com/records/arch/pattern-consistency.md)
- [Design by Contract](https://banes-lab.com/records/arch/design-by-contract.md)
- [Explicit Contracts](https://banes-lab.com/records/arch/explicit-contracts.md)
- [API Contract](https://banes-lab.com/records/arch/api-contract.md)
- [Postconditions](https://banes-lab.com/records/arch/postconditions.md)
- [Determinism](https://banes-lab.com/records/arch/determinism.md)
- [Immutability](https://banes-lab.com/records/arch/immutability.md)
- [Repeatability](https://banes-lab.com/records/arch/repeatability.md)
- [Declarative Configuration](https://banes-lab.com/records/arch/declarative-configuration.md)
- [Convention over Configuration](https://banes-lab.com/records/arch/convention-over-configuration.md)
- [Runtime Discovery](https://banes-lab.com/records/arch/runtime-discovery.md)
- [Late Binding](https://banes-lab.com/records/arch/late-binding.md)
- [Runtime Extensibility](https://banes-lab.com/records/arch/runtime-extensibility.md)
- [Principle of Least Surprise](https://banes-lab.com/records/arch/principle-of-least-surprise.md)
- [State Isolation](https://banes-lab.com/records/arch/state-isolation.md)
- [Controlled Side Effects](https://banes-lab.com/records/arch/controlled-side-effects.md)
