# Statecharts

Record: `arch:statecharts`
Kind: model
Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)
Severity: contextual
Scope: behavior, state modeling, hierarchy
Canonical: https://banes-lab.com/ontology#arch-statecharts

## Repair

- Refactored by: Introduce nested and parallel statechart regions
- Detected by: combinatorial state growth from independent concerns modeled in one flat machine
- Violated by: a flat FSM duplicating shared transitions across many near-identical states
- Measured by: transition duplication across sibling states
- Enforced by: state model review

## requires

- [Finite State Machine](https://banes-lab.com/records/arch/finite-state-machine.md)

## reinforces

- [Finite State Machine](https://banes-lab.com/records/arch/finite-state-machine.md)
- [Separation of Concerns](https://banes-lab.com/records/arch/separation-of-concerns.md)

## enables

- [Hierarchical States](https://banes-lab.com/records/lex/hierarchical-states.md)
- [Parallel Regions](https://banes-lab.com/records/lex/parallel-regions.md)
- [Guarded Transitions](https://banes-lab.com/records/lex/guarded-transitions.md)

## conflicts-with

- [Flat State Explosion](https://banes-lab.com/records/lex/flat-state-explosion.md)

## tensions-with

- [Tooling Complexity](https://banes-lab.com/records/lex/tooling-complexity.md)

## tensions

- [Statecharts Tooling Complexity](https://banes-lab.com/records/tension/statecharts-tooling-complexity.md)

## contracts

- [Statecharts](https://banes-lab.com/records/algo/statecharts.md)
