v0.9.0 — Diátaxis documentation spec + /doctor skill
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
/doctorskill — 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).--liveadds six real probes:explorerdispatch on a trivial filesystem prompt,adversarial-reviewerdispatch requiring an executable artifact (not prose),ship-release --dry-run,migrate-to-diataxispreview on an already-migrated tree,dependabot-fixerno-match path, and a hook synthetic trigger. Probes stop at the first foundational failure and never mutate repo state. Canonical spec atharness/skills/doctor.md; adapter wrappers for claude-code, antigravity, and codex (Gemini reuses the Codex delivery).check-parity.shCANON_SKILLS andcheck-references.pySHARED_SKILLS extended. First dogfood run caught a spec bug (phase-command frontmatter doesn't carry aname:field) and shipped the fix in the same release.migrate-to-diataxisskill — one-shot preview-first migration of an already-installed project'swiki/to the Diátaxis four-mode layout. Classifies each page (ADR, Status, How-to, Tutorial, Reference, Explanation, Mode-mixed), proposes a tree ofgit mvs to preserve blame, surfaces mode-mixed pages for manual split, and writeswiki/.diataxisto enable strict lint. Non-destructive; preview is always first.- Diátaxis wiki scaffold in the template —
templates/wiki/reshaped totutorials/,how-to/,reference/,explanation/, withwiki/.diataxismarker, updated_Sidebar.md, and Diátaxis-shaped starter content. New installs land directly in the four-mode layout. - Mode-aware
documenterwrites — thedocumentersub-agent now dispatches with mode-specific write targets per phase./plan→wiki/explanation/(feature pages) andwiki/reference/(subsystem pages),/work→wiki/how-to/(recipes),/release→wiki/explanation/decisions/(ADRs) andwiki/reference/Completed-Features.md,/bugfix→wiki/reference/(Known-Issues) andwiki/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) intests-linux.yml. Negative-test fixtures atscripts/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, andharness/pipelines/bugfix.mdpreviously dispatcheddocumenterat the old audience dirs (wiki/development/,wiki/operational/,wiki/design/,wiki/architecture/); they now point at the correct Diátaxis equivalents.harness/documentation.mdgains a new "Migrating an existing install" section pointing at themigrate-to-diataxisskill, 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 withgit mvto preserve blame. ADRs moved towiki/explanation/decisions/, feature pages towiki/explanation/, how-to recipes towiki/how-to/, reference tables towiki/reference/.Completed-Features.mdconsolidated towiki/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 toharness/principles.md; CI and contributing details extracted to the newCONTRIBUTING.md; Skills table gainedmigrate-to-diataxisand (later in the release)doctor. check-parity.shandcheck-references.pyextended 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
/setupflow 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. doctorfrontmatter rubric — the doctor skill's initial spec required aname:field on every surface's frontmatter. The first dogfood run revealed that Claude Code phase commands, Antigravity workflows, and Gemini TOML commands intentionally have noname:field (name is implicit from the filename). The spec and all three adapter wrappers now requirename: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.mdand 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 withPLAN.mdmark[x]and aprogress.mdappend entry. Plan Status flipped todone. - First end-to-end exercise of
/doctor. Ran/doctorstructurally against a scratch install (freshinstall.sh --hooks) and the two highest-leverage--liveprobes (explorer+adversarial-reviewer) against the harness repo itself. The structural run surfaced thename:rubric bug; the live probes confirmed both sub-agents return within spec (explorer: 7.3s returning two absolute paths; adversarial: 10.8s returning afile:linepointer 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).