# Protocol Independence

Record: `arch:protocol-independence`
Kind: principle
Layer: [Resource Core](https://banes-lab.com/records/layer/resource-core.md)
Severity: recommended
Scope: integration, service boundary
Canonical: https://banes-lab.com/ontology#arch-protocol-independence

## Repair

- Refactored by: Add Port, Add Protocol Adapter
- Detected by: protocol imports in core layer
- Violated by: HTTP/gRPC/etc. types in domain core
- Measured by: protocol leakage count
- Enforced by: import rules

## requires

- [Adapter/Port Abstraction](https://banes-lab.com/records/lex/adapter-port-abstraction.md)

## reinforces

- [Portability](https://banes-lab.com/records/arch/portability.md)
- [Replaceability](https://banes-lab.com/records/arch/replaceability.md)

## enables

- [Protocol Swap](https://banes-lab.com/records/lex/protocol-swap.md)

## conflicts-with

- [Protocol-Coupled Domain Logic](https://banes-lab.com/records/lex/protocol-coupled-domain-logic.md)

## tensions-with

- [Protocol-Specific Features](https://banes-lab.com/records/lex/protocol-specific-features.md)

## tensions

- [Protocol Independence Protocol-Specific Features](https://banes-lab.com/records/tension/protocol-independence-protocol-specific-features.md)
