Review Documentation

How to periodically review and maintain the BlumeOps knowledge base.

Review by Staleness

Show docs sorted by when they were last reviewed (most stale first):

mise run docs-review

This reads the last-reviewed frontmatter field from each card. Cards without the field are treated as never-reviewed and appear at the top. The script shows a staleness table and then displays the most stale card with a review checklist.

To show more entries in the table:

mise run docs-review --limit 30

Marking a Card as Reviewed

After reviewing a card, add or update the last-reviewed field in its frontmatter:

---
title: Some Card
last-reviewed: 2026-02-09
tags:
  - reference
---

Commit this change alongside any fixes you make during the review.

Review Checklist

When reviewing a documentation card, consider:

CheckDescription
AccuracyIs the information current and correct?
LinksAre wiki-links working? Should more be added?
ScopeIs the card appropriately sized (not too large/small)?
CategoryIs it in the right section (reference/how-to/tutorial/explanation)?
FrontmatterAre title and tags appropriate?
RelatedShould it link to related cards?

Verify Deployed State

For service reference cards, verify the documentation matches reality:

ArgoCD Apps (Kubernetes services)

Check if the app is synced and healthy:

argocd app get <app-name>
argocd app diff <app-name>  # Show pending changes

If out of sync, either the docs are stale or a deployment is pending.

Ansible Roles (indri services)

Check if the role applies idempotently (no changes needed):

mise run provision-indri -- --tags <role> --check --diff

If changes would be made, either the docs are stale or the host has drifted.

Pulumi (Tailscale ACLs, DNS)

Check for drift:

mise run tailnet-preview  # Tailscale ACLs
mise run dns-preview      # DNS (Gandi)

If changes are pending, investigate whether docs or infrastructure is stale.

From a Remote-Agent Session

Remote-agent sessions can run the ArgoCD check: the pod’s argocd is a read-only client (the agents-readonly account — app list/get/ diff against argocd.ops.eblu.me, every write denied, Secret values masked server-side). What it cannot run: kubectl, ansible, and pulumi. Verify those claims against repo state — roles under ansible/, pulumi/, service-versions.yaml — and note in the PR which claims could not be verified against the deployed host.

Visual Preview

After reviewing and editing a card, visually verify the rendered output. This step is for the human reviewer — build the full Quartz docs site locally and open directly to the card:

mise run docs-preview how-to/knowledgebase/review-documentation

This builds the docs with Dagger, serves them on localhost:8484, and opens the browser to the specified card. Press Ctrl-C to stop. Accepts paths with or without the .md suffix.

Making Changes

If a card needs updates:

  • Interactive session, small fix: edit and commit directly to main (orphan-prefixed changelog fragment).
  • Anything larger, and all remote-agent work: feature branch + PR via tea pr create.

This is the same split agent-change-process describes; the older C0/C1/C2 classification it used to lead with is retired.

Link validation runs automatically via prek on commit.

See update-documentation for publishing changes.