Document Control¶
How document control works in Open QMS¶
Every controlled document lives in a Git repository. Changes follow the PR workflow:
- Author creates a branch and edits the document
- Author opens a Pull Request
- CI checks document metadata (document_id, version, effective_date, owner, status)
- CODEOWNERS routes the PR to required reviewers
- Reviewers approve (this is the controlled document approval)
- Merge to main = document is effective
Document metadata¶
Every controlled document must include YAML frontmatter:
---
document_id: SOP-QA-001
title: "Document Title"
version: "2.1"
effective_date: 2026-04-15
owner: "Jane Smith, Quality Manager"
status: effective
approved_by: "John Doe, VP Quality"
approval_date: 2026-04-14
---
The doc-control.yml workflow will fail the PR if required fields are missing.
Version control¶
- Version must be incremented on every change. The CI workflow warns if it isn't.
- Effective date should be set to the planned go-live date, not the merge date.
- Status should be
draftduring development andeffectivewhen approved.
Obsolete documents¶
Obsolete documents are not deleted โ they remain in Git history. To mark a document obsolete:
- Change
status: effectivetostatus: obsolete - Add
obsolete_date: YYYY-MM-DDandsuperseded_by: [new document_id] - Merge via normal PR process
The document remains accessible in history but the current version clearly shows it's obsolete.