Skip to content

v0.17.1: embedded, queryable docs with a coverage invariant (REQ-DOCS-001) - #43

Merged
avrabe merged 2 commits into
mainfrom
feat/v0.17.1
Aug 13, 2026
Merged

v0.17.1: embedded, queryable docs with a coverage invariant (REQ-DOCS-001)#43
avrabe merged 2 commits into
mainfrom
feat/v0.17.1

Conversation

@avrabe

@avrabe avrabe commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

What

varve docs — varve's own documentation, embedded in the binary and queryable, modelled on rivet docs. Closes #28.

  • Embedded / air-gapped: every topic is include_str!'d into the binary — no files, no network. 21 top-level subcommands + 6 concepts (pins, realms, layers, trust-roots, payload-kinds, air-gap).
  • Queryable: varve docs lists; varve docs <topic> shows one; varve docs --grep <q> searches bodies; varve docs --format json emits the same content for machine queries (rivet-docs parity).
  • Coverage is a mechanical invariant: varve docs check --coverage enumerates the CLI's top-level subcommands and reports any without a topic; --strict exits non-zero. Wired as a CI gate (rust job, both OSes) and a unit test, so a new subcommand cannot ship undocumented — the same "mechanical, not prose" spine as review-check / claim-check.

Traceability

  • REQ-DOCS-001 (verified) → VER-DOCS-001 (6 named tests + the CI-gate grep).
  • VER-REVIEW-v0.17.1: recorded independent clean-room verdict (DD-019). PASS; the reviewer caught one real overclaim — REQ-DOCS-001 promised a --format json that did not exist — fixed before release (implemented via TDD, not struck), plus a wording narrowing ("top-level subcommands", matching the non-recursive check).

Gate (local, verified exit codes)

  • fmt / clippy / test — all green (docs suite: 5 tests incl. 2 new JSON tests)
  • rivet validate PASS · rivet check verification-evidence 118 steps · claim-check 13 · review-check 6 verdicts, no advisory warning

Falsification

Adding a new varve subcommand without a matching docs topic makes varve docs check --coverage --strict exit non-zero and fails every_cli_subcommand_has_a_documented_topic. If both stay green after such a change, the invariant is broken.

🤖 Generated with Claude Code

avrabe and others added 2 commits August 13, 2026 06:13
…Q-DOCS-001)

Modelled on `rivet docs`: varve's documentation ships INSIDE the binary
(include_str! — no files, no network, air-gapped) and is queryable. `varve docs`
lists topics; `varve docs <topic>` shows one (21 subcommands + 6 concepts: pins,
realms, layers, trust-roots, payload-kinds, air-gap); `varve docs --grep`
searches. Coverage is a MECHANICAL INVARIANT: `varve docs check --coverage`
walks the clap subcommand tree, `--strict` exits non-zero on any undocumented
command — a CI gate (rust job) + a unit test, so a new subcommand cannot ship
undocumented. Documentation-as-invariant, the same "mechanical not prose" spine
as review-check/claim-check.

REQ-DOCS-001 verified; 10 test suites, clippy/fmt clean, --locked synced, rivet
validate + verification-evidence (116) + claim-check (13) green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019TNtfRjLNhEz82G2ggeeNu
…Q-DOCS-001)

Clean-room review of `varve docs` returned PASS but found one real overclaim:
REQ-DOCS-001 promised a machine-readable `--format json` that did not exist
(requirement-vs-implementation drift — the honesty thesis exists to catch this).

Fixed before release rather than struck, since "directly query them" was the
point (rivet-docs parity):
- `--format json` (TDD, RED first): docs::render_json emits the topic list
  (slug+title) or a single topic with its full body; two new tests
  (topic_list_renders_as_machine_readable_json, single_topic_renders_as_json_with_body);
  wired into the Docs command + handler, exercised end to end; bad format rejected.
- Narrowed the "walks the clap subcommand tree" wording (requirement + module
  doc) to "top-level subcommands", matching the non-recursive coverage check.

VER-REVIEW-v0.17.1 records the verdict as a first-class rivet artifact (DD-019).
rivet validate PASS; verification-evidence 118 steps; claim-check 13;
review-check 6 verdicts, no advisory warning; fmt/clippy/test all green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019TNtfRjLNhEz82G2ggeeNu
@avrabe
avrabe merged commit 94ffaa5 into main Aug 13, 2026
8 checks passed
@avrabe
avrabe deleted the feat/v0.17.1 branch August 13, 2026 05:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant