This guide expands on the Documentation Maintenance section of the main contributing guide.
Documentation accuracy directly affects deployment success and contributor confidence. This policy defines when documentation updates are required, who owns review, and how freshness is maintained. It satisfies the OpenSSF Best Practices Silver documentation_current criterion.
Documentation updates are required when changes affect what users read, follow, or depend on.
| Trigger Category | Examples |
|---|---|
| API, CLI, or configuration schema changes | New Terraform variable, changed Helm value, updated script flag |
| Deployment steps or prerequisites | New Azure provider registration, changed kubectl version, new tool |
| Feature additions, deprecations, removals | New training workflow, deprecated OSMO backend, removed script |
| User-reported gaps | Confusing instructions, missing steps, outdated screenshots |
When a code PR introduces any of these changes, the author must update affected documentation in the same PR or file a documentation issue referencing the PR.
Documentation ownership maps areas to responsible teams. The .github/CODEOWNERS file configures automatic review requests for code owners.
| Area | Owner |
|---|---|
/docs/**/*.md |
Repository maintainers (@microsoft/edge-ai-core-dev) |
/deploy/**/README.md |
Repository maintainers (@microsoft/edge-ai-core-dev) |
CONTRIBUTING.md, SECURITY.md, SUPPORT.md |
Repository maintainers (@microsoft/edge-ai-core-dev) |
Root README.md |
Repository maintainers (@microsoft/edge-ai-core-dev) |
[!TIP] Full role definitions and governance structure are tracked in #98 and #99. Current CODEOWNERS configuration uses the
@microsoft/edge-ai-core-devteam as code owners for all documentation paths.
Documentation reviewers verify four criteria on every PR that touches Markdown files:
| Criterion | What to Check |
|---|---|
| Technical accuracy | Content matches current code behavior, commands run successfully |
| Cross-reference validity | Internal links resolve, external URLs return 200, anchors exist |
| Frontmatter currency | ms.date reflects the edit date in ISO 8601 format (YYYY-MM-DD) |
| Completeness | New parameters documented, removed features cleaned up, no stubs |
Run validation commands before approving documentation PRs:
npm run lint:md # Markdownlint
npm run lint:links # Link validation
npm run spell-check # cspell
Documentation freshness is tracked through the ms.date frontmatter field.
ms.date on every edit to a Markdown file.ms.date for reviewed files.[!NOTE] Automated
ms.datefreshness checking runs in two contexts:
- Weekly scans: weekly-validation.yml runs every Monday at 9 AM UTC, checking all markdown files and failing on stale documentation (90+ days since last update). Creates one GitHub issue per stale file with automatic duplicate detection.
- Pull request checks: pr-validation.yml checks only modified files during PR review and blocks merges when stale documentation is detected
When stale files are detected:
- Weekly runs create or update GitHub issues tagged with
stale-docs,documentation,automated, andneeds-triagelabels- PR validation fails and must be resolved before merging (update
ms.datein the PR)- Download artifacts (msdate-freshness-results.json) or view job summaries for detailed file lists
When files exceed the 90-day freshness threshold:
ms.date field in frontmatter to today’s date (YYYY-MM-DD format)The ms.date field should be updated on every substantive content edit, not just when flagged by the freshness check. This tracking helps readers assess documentation currency.
Code PRs must include documentation updates when any of the following apply:
The PR template includes a Documentation Impact section. Select the appropriate option:
This section defines versioning, release notes, deprecation notices, and breaking change communication.
This project uses release-please for automated semantic versioning. Version bumps follow conventional commit types:
| Commit Type | Version Bump | Example |
|---|---|---|
feat: |
Minor | feat(terraform): add GPU monitoring module |
fix: |
Patch | fix(scripts): correct AKS credential path |
BREAKING CHANGE: |
Major | Footer in commit triggers major bump |
security: |
Patch | security: fix CVE-2024-XXXX input validation |
docs:, chore: |
None | Appears in changelog without version bump |
CHANGELOG.md is updated automatically by release-please when a release PR merges.
Release notes are generated from conventional commit messages. Maintainers review the release-please PR before merging to verify:
Deprecation requires advance notice to give users time to adapt:
CHANGELOG.md under a Deprecated section.> [!WARNING] alert indicating the deprecation timeline and replacement.For the complete deprecation lifecycle, scope, and deprecation period definitions, see the Deprecation Policy.
Breaking changes require explicit communication and migration support:
BREAKING CHANGE: footer in the commit message to trigger a major version bump.> [!CAUTION] alert in relevant guides describing the breaking change and linking to migration steps.🤖 Crafted with precision by ✨Copilot following brilliant human instruction, then carefully refined by our team of discerning human reviewers.