Skip to content

Opens the README with an introduction - #208

Merged
johnnyt merged 1 commit into
mainfrom
pts-dvvy-readme-introduction
Oct 5, 2026
Merged

johnnyt merged 1 commit into
mainfrom
pts-dvvy-readme-introduction

Conversation

@johnnyt

@johnnyt johnnyt commented Oct 5, 2026

Copy link
Copy Markdown
Member

What this changes

The README now opens as an introduction and a map, and the reference it already carried follows it:

  • What, under the H1: the package in three sentences, starting from the docs manifest's line (.claude/diataxis.md).
  • Why: one paragraph on the problem before (a rule decided in more than one place, re-implemented and drifting) and the difference after (one language, one instruction set, the same answers everywhere). No history.
  • Install: the pinned pnpm add @riddler/predicator@^0.6.0 line, moved up from the old Install section (still the one pin the release recipe moves).
  • Basic usage: one ts block in the library loan (a renewal rule compiled once and evaluated against two loans). The README test runs and typechecks it like every other block.
  • Documentation: links grouped under Learn, Do, Look up and Understand, one line per link saying what the reader gets. Today's targets are this README's own sections, the changelog, the decision records and the language reference kept with the reference implementation; the API reference is named with the command that builds it, since it is not published yet.
  • Compatibility: runtimes, the engines.node floor, module formats, TypeScript resolution modes and the instruction-set version, each taken from what the README and package.json already say.

Below a new ## Reference, in full heading, every former section from "The entry points" through "Conformance" stays in place one heading level down, so every in-page anchor keeps working. The former Install text (the npm name's history and the engine runs) is there too, as "Installing, in full". The text is unchanged except for the re-cuts below. Development and License stay at the end as H2s.

Example world

Every example and its surrounding prose that taught in card processing or the signup wizard is re-cut in the library loan: compiling a rule, running a rule from its text, rendering a rule back, evaluating an instruction list, the cyclic-context example and its paragraph, the unbound-load example, both statement-program examples, host functions, and the tagged subpath's binding name. Each check keeps its shape. The one value that moved is the refusal column in the draft-rule example, which follows the new draft string's length; the README test confirms it. The quoted json blocks (conformance/SOURCE.json and the two registry claims) are untouched.

Provenance

  • Keeping the long sections below a "Reference, in full" heading until a later change moves them to pages, rather than splitting them now: decided by the conductor under a standing consent, 2026-10-04.
  • Demoting those sections one heading level is this PR's own choice. It keeps the introduction's H2s as the README's top level and leaves every anchor slug unchanged.
  • The Development section's last sentence said "the Install section says what [engines.node] is". That text is now under "Installing, in full", so the sentence names the Compatibility section instead, which states the floor.
  • The repo's CLAUDE.md says an example already written in a fixture-only domain "stays as it is". This PR re-cuts the README's teaching examples anyway, under the bead's acceptance and the campaign consent's authorization of README changes in the example worlds the firewall rules. Fixtures, tests and corpus cases are not touched.

Checks

  • Full gate (mise exec -- pnpm run gate) green on this tree: typecheck, lint, neutrality, the suite with coverage (the README test included), corpus check, record cites, build, identity, resolution, typedoc.
  • The basic-usage block, compiled with tsc --strict against @riddler/predicator@0.6.0 installed from npm and run under node, completes.
  • Every in-page link resolves to a heading slug, and every external link names a file or folder present on that repository's main.
  • The fleet README linter, run as readme-lint.rb README.md --manifest .claude/diataxis.md:
README.md:24: [no_install] the Install section carries no dependency snippet: no code block holds a {:package, "~> x.y"} tuple
README.md: 1 finding

The one finding is the linter's Install rule, which recognises only a Hex dependency tuple. An npm install line cannot satisfy it. The length ceiling is not reported: the README is under the manifest's readme_max_lines.

  • No file under src/ changes. No changelog fragment: changelog.d excludes documentation.

Review

This PR is docs-only (tier: gate). I reviewed the text against the documentation rulebook's quadrant rules: the What and Why carry no history, the map is grouped by the reader's question, and each Documentation line names what the reader gets. The Learn links point at sections of this README that are reference-by-example rather than tutorials. That will stay true until tutorial pages exist.

The README now opens with what the package is, why it exists, the
install line, one basic-usage example in the library loan, a
documentation map grouped by the reader's question (Learn, Do, Look
up, Understand) and a compatibility section.

The long sections stay below a "Reference, in full" heading, one
level down, with their text unchanged except where an example taught
in card processing or the signup wizard: those examples and their
prose are re-cut in the library loan, with the same checks. The
install block moves to the new Install section, and the Development
section's pointer for engines.node now names Compatibility.

Refs: pts-dvvy
@johnnyt
johnnyt merged commit b45c314 into main Oct 5, 2026
1 check passed
@johnnyt
johnnyt deleted the pts-dvvy-readme-introduction branch October 5, 2026 11:08
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