AI glossary Operations
What is a living specification?
← All glossary termsA specification kept in version control next to the code and updated with every change to the system, rather than a static document that goes out of date.
Explained
A living specification is a description of what a system must do and how its parts fit together, kept in the same repository as the code and updated whenever the system changes. It usually combines readable documents with machine-readable artefacts: API contracts such as OpenAPI files, architecture decision records, policies and evaluation definitions. Because it is versioned and reviewed like code, it stays true to the running system instead of drifting like a PDF. AI tools can read it to generate code and tests, spot differences between spec and implementation and propose updates when contracts change.
What it contains
- Functional descriptions: goals, users, flows and acceptance criteria.
- Contracts: API definitions (for example OpenAPI), event schemas and data models.
- Architecture decision records that explain why things are built the way they are.
- Policies and constraints: security, privacy, performance and compliance rules.
- Tests and evaluation definitions that check the system against the spec.
Living spec vs static document
A static specification is written once, approved and then left behind as the code moves on. After a few releases, nobody trusts it.
A living specification changes in the same pull request as the code. Reviews cover both, history shows when and why each requirement changed, and automated checks can fail the build when the implementation no longer matches the contract. The spec becomes a working tool, not an archive.
Why it matters with AI
AI coding assistants and agents work best with clear, current context. A living spec gives them the intent, rules and contracts they need, which reduces guesswork and inconsistent code.
It also works in the other direction. AI can compare specs with code, suggest migrations when a contract changes, regenerate tests and summarise what changed between versions. Approaches such as spec-driven development put the specification at the centre of this loop.
Frequently asked questions
What is a living specification?
It is a specification that lives in version control alongside the code and is updated with every change to the system. It describes intent, rules and contracts, and stays accurate because it is reviewed and maintained like code.
What is the difference between living documentation and a living specification?
Living documentation describes how the system currently works, often generated from code or tests. A living specification states what the system must do, and serves as the reference that code and tests are checked against. In practice the two overlap and are often kept together.
What tools are used for living specifications?
Common elements are Markdown documents in Git, OpenAPI or AsyncAPI contracts, architecture decision records, schema files and test suites linked to requirements. Spec-driven toolkits for AI coding assistants also structure specs, plans and tasks in the repository.
How does a living specification help AI coding agents?
It gives the agent current, authoritative context: what to build, which rules apply and which contracts must be respected. That leads to code that fits the system, and makes it easier to check the agent's output against the spec.
Decision guides that use this term
Where it shows up at Thinkia
Further reading
Related terms
Sources
- OpenAPI Initiative · OpenAPI Specification (GitHub)
- ADR GitHub organisation · Architectural decision records
- GitHub · Spec Kit, toolkit for spec-driven development
- Gojko Adzic · Specification by Example
Updated: 2026-10-21