# Stringly Typed Programming

> A defect in which states, types or permissions are encoded as unchecked strings.

Record: `architecture:stringly-typed-programming`
Kind: anti-pattern
Layer: [Enforcement Core](https://banes-lab.com/records/layer/enforcement-core.md)
Severity: discouraged
Scope: architecture_evolution
Canonical: https://banes-lab.com/ontology#architecture-stringly-typed-programming

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Primitive Obsession](https://banes-lab.com/records/architecture/primitive-obsession.md) and before [Boolean Trap](https://banes-lab.com/records/architecture/boolean-trap.md).

## Repair

- Refactored by: add_enum, add_discriminated_union, centralize_constants, schema_validate
- Detected by: string_mode_switch, repeated_string_constants, string_permissions, string_status_values
- Violated by: Encode behavior, types, states, permissions, or protocols as unchecked strings.
- Measured by: string comparisons against values of a closed set
- Enforced by: lint rules that require an enum or a discriminated union for a closed set

## 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

- [Architecture evolution](https://banes-lab.com/records/force/architecture-evolution.md)

## Detected by

- [rules/eslint/no-string-literal-ids.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/no-string-literal-ids.eslint.rule.ts.md)

## Negated by

- [Type Safety](https://banes-lab.com/records/architecture/type-safety.md)

## Linked from

- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/principles/architecture-category-schema-canonical-data-semantics.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/lexicon/lexicon-category-schema-canonical-data-semantics.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The forces](https://banes-lab.com/ontology/schema/the-forces.md)
