repo-standard/CHANGELOG.md
Kjell Tore Guttormsen 816ba97c63 feat(repo-standard): v0.1.0 - per-repo gate for the open/ standard
Five checks a single repository can answer on its own: README first
screen, install block, files required by its class, open/<name>
references, description length. Pure classifiers with I/O resolved into
their input, mirroring check-versions.mjs; ERROR/WARN/SKIP/OK, exit 1
on ERROR. 32 tests.

The reference check has THREE outcomes: "matches no repo" (ERROR) is
separate from "matches a known non-repo" (WARN). Sharing an outcome
would let real dead links hide inside correct text. Only names in URL
position count, and .git is normalised first - without that a raw scan
turns 3 dead names into ~20.

enabledPlugins is treated as a legitimate second install form; what the
gate requires in addition is a CLI command. The JSON form is never
reported as the defect.

STATE.md is gitignored from this first commit - public remote.
No hook yet: a blocking gate must first be precise enough not to fail a
correct repository.

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

44 lines
2.2 KiB
Markdown

# 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/<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.
- 32 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.
- 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