Skip to content

Rewrites the README as an introduction - #44

Merged
johnnyt merged 1 commit into
mainfrom
sd-pwh-readme-introduction
Oct 5, 2026
Merged

johnnyt merged 1 commit into
mainfrom
sd-pwh-readme-introduction

Conversation

@johnnyt

@johnnyt johnnyt commented Oct 5, 2026

Copy link
Copy Markdown
Member

The README becomes an introduction and a map: a What under the title, a Why, Install, one Basic usage example, a Documentation section grouped by the reader's question (Learn, Do, Look up, Understand) and Compatibility. It ends at 117 lines, down from 414.

What changed

  • What (two sentences under the title): the shared type registry the family's documents, blocks and expressions agree on, and the questions it settles from a document alone.
  • Why this package: the problem is two tools (the block editor's read check and the expression editor's path and value offers) reading one host document their own way and drifting apart; the difference is one pure reader, depending on nothing else in the family, that both take. No history and no predecessor.
  • Install: unchanged pin, {:statifier_datamodel, "~> 0.5.0"}. The repo's release extension (.claude/wurk/release.md, "The README install pin: write the .0 form") requires the exact-minor .0 form, and that is the current minor.
  • Basic usage: one fenced iex> block (26 lines) in the library loan: a document with a library.loan record and a Renewable shape, indexed, the type at a path read out and handed to the read check, which names the optional renewals field as missing, and an undeclared path answering :unknown.
  • Documentation: Learn links the basic usage; Do links the Compatibility, Coverage and Schema module pages, each saying it is the API reference until a guide page exists; Look up links the Index, Document, Declarations and Types module pages and the changelog; Understand links the root module page (what is here and what is deliberately elsewhere) and the decision records on GitHub.
  • Compatibility: the Elixir requirement from mix.exs, no runtime dependencies, and the pre-1.0 policy that used to sit as a banner above the introduction.
  • test/readme_test.exs still runs doctest_file("README.md"); only its moduledoc changes, since the README is no longer the per-function reference.

Unchanged except: the H2s Installation (now Install), What it answers, What is not here and Who takes this are removed; Why this package, Basic usage, Documentation and Compatibility are added; License stays. The removed sections' substance is already in the module documentation the map links: the per-function walk in each module's moduledoc, "What is not here" in the root module's moduledoc, and "Who takes this" is covered by the Why. The card-processing examples go with them, so no example in a fixture-only domain remains in the README.

Checks

  • mix quality (full) green on this tree: format, compile, credo, docs, doc links, dependencies, dialyzer, 137 of 137 tests at 99.1% coverage. The commit is the tree that run read, with the gate lock and a machine slot held across both.
  • Two sabotage checks on the new example, each restored byte-equal: changing the read check's expected {:missing, ["renewals"]} and the final expected :unknown each turned doctest README.md (1) red on the assertion.
  • readme-lint.rb README.md --manifest .claude/diataxis.md: README.md: 117 lines, every part present (exit 0).
  • readme-lint.rb README.md (no manifest): README.md: 117 lines, every part present (exit 0).
  • No file under lib/ changes.

The README stage flip

ex_quality 0.16.0 is not on Hex (latest 0.15.1), so this PR takes the acceptance's fallback: the ex_quality dev dependency stays at ~> 0.15 and .quality.exs is not edited. Enabling the README stage at error is left for a follow-up once 0.16.0 is published.

Provenance

  • The fallback above is the acceptance's own clause, decided by the conductor under a standing consent, 2026-10-05.
  • The install pin keeps the .0 form the release extension prescribes rather than the bare ~> 0.5 form.

Review

In-turn review of the text (this tier takes no conductor-dispatched code review): every Documentation link lands on a module page or a GitHub path that exists; the Do links say they point at the API reference until a guide page exists; no divider heading reclassifies sections; the What's claims ("what the document alone can settle") match the root module's moduledoc; both packages the Why names depend on this one on their main branches; the introduction carries no contributor-only text and no avoided term.

The README now reads as an introduction and a map: what the package
is, why it exists, how to install it, one basic-usage example and
links to the rest grouped by the reader's question, then
compatibility. The example is a library loan, a doctest the README
test still runs.

The per-function walk, "What is not here" and "Who takes this" leave
the README; the module documentation on hexdocs already carries
their substance, and the map links each module page.

Refs: sd-pwh
@johnnyt
johnnyt merged commit 5f4ca60 into main Oct 5, 2026
1 check passed
@johnnyt
johnnyt deleted the sd-pwh-readme-introduction branch October 5, 2026 11:13
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