Audience: Contributors | AI agents Status: Implemented Owner: Contributor Experience Last Verified: 2026-10-04 Source Anchors:
docs/internal/DOCUMENTATION_ARCHITECTURE.md,docs/internal/GOVERNANCE.md,.agents/skills/conventional-commit/resources/reader-first-writing.md
- Meaning Before Mechanism: Start with the concrete problem, who is affected, and what changes. Then explain how the technical mechanism produces that result. Follow Reader-First Technical Communication and the shared writing guide.
- Expand Explanation, Preserve Substance: Improve readability by adding explanations, context, and scenarios, never by deleting technical depth, exact identifiers, architecture constraints, or evidence.
- Write for action: what to do, where to look, what is enforced.
- Prefer factual language over promotional wording.
- Prioritize non-inferable facts (exact keys, fallback order, defaults, constraints).
- If a statement can drift, link it to a concrete source file.
Before finalizing any documentation, architectural ADR, PR description, or I-VSD report, verify against these four questions:
- Practical consequence: Does the document explain who is affected and what changes before detailing internal mechanics?
- Mechanism explanation: Does it explain why the technical mechanism or data flow produces that outcome?
- Substance preservation: Are exact identifiers, endpoints, configuration keys, constraints, and alternatives preserved?
- Truthfulness & claim boundaries: Can the reader distinguish proposed design from verified production behavior?
- Use direct, active voice.
- Address reader as "you" only when giving instructions.
- Avoid vague wording like "usually", "often", "might" unless uncertainty is real and explicit.
Recommended page shape:
- Purpose (one sentence)
- Core rules or behavior
- Practical usage notes
- Related docs
Keep headings simple: #, ##, ###.
New primary documentation and operator-critical docs must include the metadata block defined in DOCUMENTATION_ARCHITECTURE.md. Use it to make audience, status, ownership, verification date, and source anchors visible without adding process-heavy frontmatter.
Do not add metadata mechanically. Add it when the page has verified source anchors and a clear owner category.
- Use inline code for identifiers, settings, endpoints, and paths.
- Use tables for comparisons and key lists.
- Keep code blocks short and only when needed.
- Avoid large diagram-like ASCII blocks.
- Prefer text flows and tables over decorative visuals.
- Separate implemented behavior from roadmap ideas.
- Mark assumptions explicitly when unavoidable.
- Do not duplicate large sections across multiple docs.
- Update docs in the same change when behavior changes.
- Trace drift-prone claims to source anchors: code, infrastructure files, tests, workflows, or existing primary documentation.
- Label planned or draft behavior at the section where it appears; page-level
Status: Mixedis not enough. - Record docs impact for non-trivial changes as
Updated,Not needed, orDeferredwith a reason. - Keep release-sensitive docs current when migrations, configuration keys, secrets, auth, storage, or operator commands change.
Use source anchors for exact facts:
| Claim Type | Preferred Anchor |
|---|---|
| Service names, ports, profiles | docker-compose.yml, Explore.AppHost/ |
| Configuration keys | binding and compatibility code, then docs/CONFIGURATION.md |
| Secrets | Explore.Domain/Secrets/SecretDefinitionRegistry.cs, secret provider code, then docs/SECRETS.md |
| Test commands | docs/TESTING.md, .github/workflows/, test project files |
| AI-agent behavior | AGENTS.md, AGENTS.md, .agents/contract/ |
If an anchor and doc disagree, update the doc or explicitly mark the mismatch as a follow-up. Do not preserve stale examples.
Use consistent core terms:
- Instance: deployment owner scope.
- Tenant: isolated community scope.
- Organization: managed entity within tenant.
- BFF:
Explore.Blazorserver host. - Client:
Explore.Blazor.ClientWASM UI. - API:
Explore.API.
- Is every key technical claim traceable to code?
- Is the page concise and task-relevant?
- Are examples minimal and non-repetitive?
- Are related docs linked?
- Did we remove stale or duplicate sections?
- Does the page metadata match the intended audience, status, owner, and anchors?
- Did release/operator changes update RELEASE_CHECKLIST.md or BACKUP_RESTORE_UPGRADE.md when needed?