Skip to content

v0.9.0 — Diátaxis documentation spec + /doctor skill

Choose a tag to compare

@alexherrero alexherrero released this 24 Apr 02:03
· 404 commits to main since this release

Two substantial threads landed together. First, the 7-task Diátaxis rollout (ADR 0004): wiki scaffold and dogfood wiki reshaped to the four-mode layout (tutorials/how-to/reference/explanation), documenter rewired to write to the new mode dirs, scripts/check-wiki.py shipped as a structural gate and flipped to --strict in CI, and a migrate-to-diataxis skill for one-shot migration of already-installed projects. Second, a new user-invocable /doctor skill — companion to telemetry.sh — that verifies the harness install is correctly wired up in the host, with an opt-in --live mode that actually dispatches each sub-agent and dry-runs each skill to prove end-to-end wiring.

Added

  • /doctor skill — verifies an installed harness is correctly wired up. Default mode runs structural discovery only: expected phase commands, sub-agents, skills, state files, and hooks present and parseable in the detected adapter (<5s, no tokens). --live adds six real probes: explorer dispatch on a trivial filesystem prompt, adversarial-reviewer dispatch requiring an executable artifact (not prose), ship-release --dry-run, migrate-to-diataxis preview on an already-migrated tree, dependabot-fixer no-match path, and a hook synthetic trigger. Probes stop at the first foundational failure and never mutate repo state. Canonical spec at harness/skills/doctor.md; adapter wrappers for claude-code, antigravity, and codex (Gemini reuses the Codex delivery). check-parity.sh CANON_SKILLS and check-references.py SHARED_SKILLS extended. First dogfood run caught a spec bug (phase-command frontmatter doesn't carry a name: field) and shipped the fix in the same release.
  • migrate-to-diataxis skill — one-shot preview-first migration of an already-installed project's wiki/ to the Diátaxis four-mode layout. Classifies each page (ADR, Status, How-to, Tutorial, Reference, Explanation, Mode-mixed), proposes a tree of git mvs to preserve blame, surfaces mode-mixed pages for manual split, and writes wiki/.diataxis to enable strict lint. Non-destructive; preview is always first.
  • Diátaxis wiki scaffold in the templatetemplates/wiki/ reshaped to tutorials/, how-to/, reference/, explanation/, with wiki/.diataxis marker, updated _Sidebar.md, and Diátaxis-shaped starter content. New installs land directly in the four-mode layout.
  • Mode-aware documenter writes — the documenter sub-agent now dispatches with mode-specific write targets per phase. /planwiki/explanation/ (feature pages) and wiki/reference/ (subsystem pages), /workwiki/how-to/ (recipes), /releasewiki/explanation/decisions/ (ADRs) and wiki/reference/Completed-Features.md, /bugfixwiki/reference/ (Known-Issues) and wiki/explanation/decisions/.
  • scripts/check-wiki.py — Diátaxis structural lint with 11 rules (a–k): mode purity, ADR append-only + Status: accepted|superseded|rejected, orphan-link detection, globally-unique filenames, no banned-headings-per-mode. Shipped as warn-only in the same release; flipped to --strict (blocks PRs) in tests-linux.yml. Negative-test fixtures at scripts/fixtures/check-wiki/ exercise each rule.
  • ADR 0004 — Diátaxis documentation spec. Supersedes ADR 0002's audience-based layout (wiki/{development,operational,design,architecture}/) with the four Diátaxis modes. Rationale, consequences, migration path all captured.
  • CONTRIBUTING.md — newly extracted from the previous README's Contributing and Status sections. Documents the three-workflow per-OS CI matrix, the full "what CI verifies without an agent" bullet list, the installer-boundary invariant, and the local-gate command set (bash and pwsh).

Changed

  • Harness phase specs retargeted to Diátaxis mode dirs. harness/phases/02-plan.md, 03-work.md, 05-release.md, and harness/pipelines/bugfix.md previously dispatched documenter at the old audience dirs (wiki/development/, wiki/operational/, wiki/design/, wiki/architecture/); they now point at the correct Diátaxis equivalents. harness/documentation.md gains a new "Migrating an existing install" section pointing at the migrate-to-diataxis skill, and the Non-goals list acquires a "five-mode extensions" bullet.
  • Dogfood wiki reshaped to Diátaxis layout. The agentic-harness repo's own wiki/ migrated file-by-file with git mv to preserve blame. ADRs moved to wiki/explanation/decisions/, feature pages to wiki/explanation/, how-to recipes to wiki/how-to/, reference tables to wiki/reference/. Completed-Features.md consolidated to wiki/reference/Completed-Features.md.
  • README simplified — trimmed from 126 → 64 lines. Install section kept concise with a pointer to wiki/how-to/Install-Into-Project.md; the six-point Principles list collapsed to a one-sentence lead with a link to harness/principles.md; CI and contributing details extracted to the new CONTRIBUTING.md; Skills table gained migrate-to-diataxis and (later in the release) doctor.
  • check-parity.sh and check-references.py extended with the two new shared skills (doctor, migrate-to-diataxis). Each ships in claude-code, antigravity, and codex; Gemini reuses the .agents/skills/ delivery.

Fixed

  • ProjectsV2 /setup flow regression (pre-v0.9.0 drift) caught during the v0.8.7 cut — the v0.8.7 release note already covered the linkage fix, but the CHANGELOG wording understated how subtle the @me-vs-literal-owner gh-CLI quirk was. Documented in the ADR 0003 update for v0.8.7 readers who hit it during migration.
  • doctor frontmatter rubric — the doctor skill's initial spec required a name: field on every surface's frontmatter. The first dogfood run revealed that Claude Code phase commands, Antigravity workflows, and Gemini TOML commands intentionally have no name: field (name is implicit from the filename). The spec and all three adapter wrappers now require name: match only on surfaces that actually carry the field (sub-agents + skills), preventing false-positive FAIL rows on every valid install.

Internal

  • 7-task Diátaxis rollout plan completed. The full sequence was tracked in .harness/PLAN.md and released as a single coherent thread: task 1 (lint script), task 2 (template scaffold), task 3 (dogfood wiki reshape), task 4 (documenter mode-aware writes), task 5 (migrate-to-diataxis skill), task 6 (flip lint to --strict), task 7 (harness spec retargeting). Each task closed out with PLAN.md mark [x] and a progress.md append entry. Plan Status flipped to done.
  • First end-to-end exercise of /doctor. Ran /doctor structurally against a scratch install (fresh install.sh --hooks) and the two highest-leverage --live probes (explorer + adversarial-reviewer) against the harness repo itself. The structural run surfaced the name: rubric bug; the live probes confirmed both sub-agents return within spec (explorer: 7.3s returning two absolute paths; adversarial: 10.8s returning a file:line pointer plus a failing pytest body, not prose).
  • CI green across all three per-OS workflows on every commit in the range. Linux validate job reports check-wiki: 0 structural issue(s), 0 soft warning(s) after the dogfood reshape. Installer-boundary invariant holds (scratch install under smoke test never receives test infra).