Enum Casing Conventions
- ADR: 0013
- Proposal Author(s): @jpower432
- Status: Accepted
Context
Enum values across the schema used inconsistent casing: some Title Case, some lowercase, some kebab-lower. No documented convention existed to guide contributors.
Decision
Title Case is the convention for all enum values. Exceptions need to be justified, but as a rule casing convention should optimize for the author, not the potential export format.
Title Case provides visual distinction from kebab-lower field names, making artifacts easier to scan. Multi-word values use spaces, not hyphens (e.g. "Not Applicable", not "Not-Applicable").
Consequences
- Breaking change for consumers using lowercase
#Lifecycle,#MethodType, and#ModTypevalues - Breaking change for consumers referencing
"Software-Assisted"in#ActorType - Breaking change for consumers referencing
"Not Set"in#ConfidenceLevel
Alternatives Considered
- kebab-lower: Aligns with OSCAL, STIX, and CycloneDX. However, field names are already kebab-lower, so values become visually indistinct from keys in authored YAML.
- camelCase: Highest cognitive load for authors. Uncommon in YAML-heavy ecosystems.
- PascalCase: Removes space/hyphen ambiguity, but multi-word values lose readability (
"NotApplicable"). Optimizes for developers, not YAML authors.