repo-standard/CHANGELOG.md
Kjell Tore Guttormsen 9a72cefefa docs: test count 32 -> 34, and record the H1 softening
The H1 change added two tests; the badge, the README line and the
CHANGELOG still said 32. Exactly the drift this repo exists to catch,
in this repo - and check-versions.mjs would not have caught it, since
it only reads the version badge.

Also states in the README what actually fails the first-screen check
now that a differing H1 is a WARN.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WYJ3FHLtVgzFXMZ6UF598h
2026-07-27 09:19:43 +02:00

2.4 KiB

Changelog

All notable changes to this project are documented here. Format follows Keep a Changelog; versioning is Semantic Versioning.

0.1.0 — 2026-07-27

First release. Covers the checks that a single repository can answer on its own.

Added

  • The gate (scripts/repo-standard-check.mjs) — pure classifiers with all I/O resolved into their input, findings tagged ERROR/WARN/SKIP/OK, exit 1 on ERROR. Five checks: README first screen, install block, files required by the repo's class, open/<name> references, description length.
  • Taxonomy register (register/repos.json) — one central file mapping each repository to its class, plus the per-class file and install requirements. --refresh compares it against the live org listing.
  • Three-outcome reference check — "matches no repository" (ERROR) is a separate finding from "matches something that is deliberately not a repository" (WARN). Sharing an outcome would let real dead links hide among correct text. Only names in URL position are treated as references; the .git suffix is normalised first.
  • The skill (skills/repo-standard/) — the judgement the script cannot encode: what a description should say, why the summary card must never be used to verify one, what not to retrofit, and where the per-repo boundary is.
  • 34 tests over the pure classifiers, using the measured false positives as reference fixtures.

Notes

  • Descriptions are measured in codepoints — not bytes, and not UTF-16 units. The same string measures 248 / 249 / 253 across those three yardsticks when it contains an astral character.
  • enabledPlugins in settings.json is treated as a legitimate second install form. The gate requires a CLI command as well, and never reports the JSON form as the defect.
  • The org listing is read in one call, anonymously. Per-repo fetching trips the forge's rate limiter.
  • A README H1 that differs from the repo name is a WARN, not an ERROR. The thread that has to hold is description == catalog == opening line, and the H1 is none of those three; a human title is a naming choice the operator owns. A missing H1 is still an ERROR.
  • No hook ships in this release. A blocking gate has to be precise enough not to fail a correct repository first.