• 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 #ModType values
  • 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.