ADR-0001: Capability Model

Context

Engineering knowledge can be organized in many ways:

The framework needed a primary organizational unit that is:

Decision

Organize engineering knowledge around Engineering Capabilities.

A capability represents an engineering discipline or area of expertise (e.g., Software Architecture, Rails Engineering, Security Engineering).

Each capability owns the complete collection of knowledge artifacts needed to master that discipline:

Capability
├── Handbook
├── Guides
├── Playbooks
├── Checklists
├── Templates
├── References
├── Glossary
├── Learning Paths
└── Examples

Capabilities are the primary organizational unit. Document types are a secondary classification within each capability.

Consequences

Positive

Negative

Alternatives Considered

Document-Type Hierarchy

Organize documents primarily by type: all handbooks in one directory, all guides in another, etc.

Rejected because it scatters related knowledge across the repository, making it harder to discover and maintain. Engineers think in terms of subjects ("I need the Rails guidance"), not document types.

Technology-Specific Organization

Organize around technology stacks (Rails, Kubernetes, React).

Rejected because technologies change frequently, making this structure unstable. Principles and practices transcend specific technologies.

Flat Structure

Place all documents in a single directory with no grouping.

Rejected because it does not scale. Even a modest number of documents becomes difficult to navigate.

References