# Single-Pass Processing

> A design rule that large input is read once, with every result it feeds computed in that one pass.

Record: `architecture:single-pass-processing`
Kind: principle
Layer: [Execution Core](https://banes-lab.com/records/layer/execution-core.md)
Severity: contextual
Scope: algorithm, stream, parser
Canonical: https://banes-lab.com/ontology#architecture-single-pass-processing

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Streaming Architecture](https://banes-lab.com/records/architecture/streaming-architecture.md) and before [Pipeline Architecture](https://banes-lab.com/records/architecture/pipeline-architecture.md).

## Repair

- Refactored by: Fuse Passes, Use Iterator/Accumulator
- Detected by: multiple loops/materializations over same large input
- Violated by: repeated scans over large data where avoidable
- Measured by: pass count, memory use
- Enforced by: performance review

## Requires

- [Forward-Only State Model](https://banes-lab.com/records/lexicon/forward-only-state-model.md)

## Reinforces

- [Memory Efficiency](https://banes-lab.com/records/architecture/memory-efficiency.md)

## Enables

- [Large Input Handling](https://banes-lab.com/records/lexicon/large-input-handling.md)

## In tension with

- [Global Optimization](https://banes-lab.com/records/lexicon/global-optimization.md)
- [Multi-Pass Full Materialization](https://banes-lab.com/records/lexicon/multi-pass-full-materialization.md)

## Tensions

- [Single-Pass Processing / Global Optimization](https://banes-lab.com/records/tension/global-optimization-single-pass-processing.md)
- [Single-Pass Processing / Multi-Pass Full Materialization](https://banes-lab.com/records/tension/multi-pass-full-materialization-single-pass-processing.md)

## Severity

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

## Category

- [Streaming / Pipeline / Dataflow Processing](https://banes-lab.com/records/architecture-category/streaming-pipeline-dataflow-processing.md)

## Reinforced by

- [Streaming Architecture](https://banes-lab.com/records/architecture/streaming-architecture.md)
- [Forward-Only Processing](https://banes-lab.com/records/architecture/forward-only-processing.md)

## Linked from

- [Scalability / Performance / Optimization](https://banes-lab.com/ontology/principles/architecture-category-scalability-performance-optimization.md)
- [Streaming / Pipeline / Dataflow Processing](https://banes-lab.com/ontology/principles/architecture-category-streaming-pipeline-dataflow-processing.md)
- [Core Vocabulary](https://banes-lab.com/ontology/lexicon/lexicon-category-core-vocabulary.md)
- [Streaming / Pipeline / Dataflow Processing](https://banes-lab.com/ontology/lexicon/lexicon-category-streaming-pipeline-dataflow-processing.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
