# Hidden Side Effect

> A defect in which an operation that looks like a query mutates state or performs I/O that its name and signature do not show.

Record: `architecture:hidden-side-effect`
Kind: anti-pattern
Layer: [Enforcement Core](https://banes-lab.com/records/layer/enforcement-core.md)
Severity: discouraged
Scope: event_messaging
Aliases: Hidden Side Effects
Canonical: https://banes-lab.com/ontology#architecture-hidden-side-effect

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Temporal Coupling](https://banes-lab.com/records/architecture/temporal-coupling.md) and before [Action at a Distance](https://banes-lab.com/records/architecture/action-at-a-distance.md).

## Repair

- Refactored by: rename_command, separate_query_from_command, make_effect_explicit, move_to_effect_boundary
- Detected by: getter_mutates_state, query_writes, function_emits_event_unexpectedly, global_context_modified
- Violated by: Make an operation appear like a query or pure function while it mutates state, performs I/O, emits events, or changes global context.
- Measured by: queries that write or emit
- Enforced by: command–query separation rules in lint, effect-boundary review

## Severity

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

## Category

- [Anti-patterns](https://banes-lab.com/records/architecture-category/anti-patterns.md)

## Force

- [Event messaging](https://banes-lab.com/records/force/event-messaging.md)

## Negated by

- [Principle of Least Surprise](https://banes-lab.com/records/architecture/principle-of-least-surprise.md)
- [Controlled Side Effects](https://banes-lab.com/records/architecture/controlled-side-effects.md)

## Linked from

- [Instruction patterns](https://banes-lab.com/pag/patterns/instruction-patterns.md)
- [Fail at the boundary](https://banes-lab.com/disciplined-methodology/build/fail-at-the-boundary.md)
- [A system is a graph](https://banes-lab.com/software-architecture/model/a-system-is-a-graph.md)
- [Seven controls, seven classes](https://banes-lab.com/software-architecture/decay/seven-controls-seven-classes.md)
- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/principles/architecture-category-schema-canonical-data-semantics.md)
- [Transactions / State / Concurrency](https://banes-lab.com/ontology/principles/architecture-category-transactions-state-concurrency.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The forces](https://banes-lab.com/ontology/schema/the-forces.md)
