feat(register): a decided title, and an org-profile that stops lying

Three changes at the register/engine boundary, all agreed with org-ops
after census 05 and all about a check missing a place to record a
legitimate exception.

`titles`: an optional per-repo README title. Set, the H1 matches it and
is OK; unset, the WARN stands as before. A human title was already this
engine's stated position and rds-v1's prescription, but a decided YES had
nowhere to live, so the same 6 WARNs were reported three censuses running
and would have been reported forever. Five registered, each H1 read from
the repo rather than copied from the census; `ai-psychosis` deliberately
left out so the one repo where a reader cannot connect title to name
stands alone. Measured across 21 local clones: 6 WARN before, 1 after,
nothing else moved.

`readme_desc_match: false` on the org-profile class: for an ordinary repo
the README opening and the forge description describe the same subject
and equality is right; for this class they do not — the README is the
org's landing page, the forge text describes the repo. The equality is
what does not apply, not either text. Class data, not a hardcoded name,
and the exemption is RECORDED as an OK naming its reason, not dropped.
`.profile` went ERROR to 0 ERROR / 0 WARN; the same README under a plugin
class is still an ERROR.

`engineCommit`: the version names a file, only the sha names the code. A
sweep stamped 18 files 0.4.0 while four carried a 0.5.0-only finding —
feature and version bump are two commits, so the stamp lied without being
broken. Present-and-null when underivable, never absent: an absent key
means an older engine, null means this one ran without a HEAD to read.

135 to 147 tests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NELsvPY5gnJjN3esdhWYWC
This commit is contained in:
Kjell Tore Guttormsen 2026-08-09 21:14:43 +02:00
commit 5884a64e54
8 changed files with 358 additions and 27 deletions

View file

@ -4,6 +4,48 @@ All notable changes to this project are documented here.
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/);
versioning is [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.6.0] — 2026-08-09
### Added
- `titles` in the register: an optional per-repo README title. Set, the H1 is
compared against it and a match is `OK`; unset, the `WARN` stands exactly as
before. A human title was already a valid choice — `docs/rds-v1.md` prescribes
`1. # Title` for every class, not `# repo-name` — but a decided YES had
nowhere to live, so the same 6 `README-H1` WARNs were reported in census 05,
06 and 07 and would have been reported forever. "We decided this is correct"
and "nobody has looked at it" now produce different outcomes. Five titles
registered, each H1 read from the repo rather than copied from the census;
`ai-psychosis` is deliberately left unregistered, so the one repo where a
reader cannot connect title to name stands alone. Measured across all 21
local clones: 6 WARN before, 1 after, no other finding moved.
- `engineCommit` alongside `engineVersion`, in the header line (short) and the
`--json` output (full). The version names a FILE; only the sha names the CODE.
A sweep stamped 18 raw files `0.4.0` while four carried findings from a check
that only exists in 0.5.0 — the feature and the version bump are two commits,
so the worktree held new code under an old number for a window, and the stamp
lied without being broken. Derived from this checkout, no network call. The
field is present-and-`null` when underivable, never absent: an absent key
means an older engine, an explicit `null` means this engine ran and had no
HEAD to read, and a consumer sorting raw files by stamp needs those to differ.
### Changed
- `README-DESC` no longer demands byte equality for the `org-profile` class,
via `readme_desc_match: false` on the class — data in the register, not a
hardcoded name. For an ordinary repo the README opening and the forge
description describe the same subject and equality is right; for this one
class they do not — the README is the organisation's landing page, the forge
text describes the repo. Both are correct about their own subject, so it is
the equality that does not apply. A landing page's opening line also carries a
markdown link while the description field renders as plain text, so passing
the old check would have meant putting raw markdown on a real surface. The
class has one member, so coverage is lost nowhere else, and the exemption is
still RECORDED as an `OK` finding naming the reason rather than dropped.
Measured: `.profile` went from `ERROR` to 0 ERROR / 0 WARN, and the same
README under a `plugin` class is still an `ERROR`.
## [0.5.0] — 2026-08-09
### Added