# Changelog 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.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/` 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. [0.1.0]: https://git.fromaitochitta.com/open/repo-standard/src/tag/v0.1.0