# Package by Feature

Record: `arch:package-by-feature`
Kind: principle
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: recommended
Scope: package, module
Canonical: https://banes-lab.com/ontology#arch-package-by-feature

## Repair

- Refactored by: Repackage by Feature, Move Classes
- Detected by: change sets spanning many layer packages
- Violated by: feature logic scattered across technical folders
- Measured by: change locality
- Enforced by: package conventions

## requires

- [Feature Cohesion](https://banes-lab.com/records/lex/feature-cohesion.md)

## reinforces

- [Modularity](https://banes-lab.com/records/arch/modularity.md)
- [Bounded Context](https://banes-lab.com/records/arch/bounded-context.md)

## enables

- [Locality of Change](https://banes-lab.com/records/lex/locality-of-change.md)

## conflicts-with

- [Package by Technical Layer Only](https://banes-lab.com/records/lex/package-by-technical-layer-only.md)

## tensions-with

- [Shared Technical Concerns](https://banes-lab.com/records/lex/shared-technical-concerns.md)

## tensions

- [Package by Feature Shared Technical Concerns](https://banes-lab.com/records/tension/package-by-feature-shared-technical-concerns.md)
