feat(engine): per-repo heading alias closes the Non-goals/nb-repo gap
The Non-goals contract is one literal English heading, matched case-insensitively but never translated — a repo whose readers were declared `nb` in `locales` could only go green by planting an English heading inside an otherwise-Norwegian document. Measured on ki-produktivitetsmodell (order, census 09): `## Virkeområde og forbehold` already does the job Non-goals exists for, HEADING-MISSING fired anyway. `heading_aliases` in the register is the same shape `titles` already is for the README H1 — decision in the repo, bookkeeping here — keyed per repo so two nb-repos need not share a Norwegian phrasing. Satisfying a requirement through it is its own OK (HEADING-ALIAS), never folded silently into the aggregate. Also books two operator title decisions verified against the live clones (not the coord messages that reported them): .profile's H1 became "From AI to Chitta — open" (org landing page rebuild, commit 9898a6e), and ki-produktivitetsmodell's H1 "Tre nivå av organisatorisk produktivitet med KI" is deliberate, not drift. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gh6T6iHHkMvgeBbGaLmLQD
This commit is contained in:
parent
e061c1d219
commit
45a2bf30de
5 changed files with 118 additions and 6 deletions
22
README.md
22
README.md
|
|
@ -78,7 +78,7 @@ The repository's **class** decides what each check means:
|
|||
| Install block | the form for this class is missing, incomplete, shown over `ssh://`, or points at the wrong marketplace |
|
||||
| Install truth | the plugin is not pinned in the catalog, so the documented command cannot succeed for anyone |
|
||||
| Install pins | a `@v…` or `--branch v…` in an install command names a tag the forge does not have, so the command a stranger copies 404s |
|
||||
| Required headings | `## Install`, `## Non-goals`, `## Changelog` — per class. Present at the wrong depth is its own finding |
|
||||
| Required headings | `## Install`, `## Non-goals`, `## Changelog` — per class. Present at the wrong depth is its own finding. A registered per-repo heading alias (`register/repos.json`'s `heading_aliases`) satisfies it too, for a repo whose readers were declared to speak another language |
|
||||
| Required files | a file this class (or trait) needs is absent |
|
||||
| Repo references | an `open/<name>` in URL position resolves to nothing |
|
||||
| Relative links | a link points at a file that is not tracked |
|
||||
|
|
@ -189,6 +189,26 @@ An H1 that matches neither the repo name nor a registered title is still a
|
|||
warning, and the message names both — that is drift in one of the two, not a
|
||||
title.
|
||||
|
||||
### Registered heading aliases — the same asymmetry, one requirement over
|
||||
|
||||
`## Non-goals` (and every other required heading) is one fixed English string,
|
||||
matched case-insensitively but never translated. A repository whose readers
|
||||
were declared `nb` in the register's `locales` cannot satisfy it honestly —
|
||||
the only way to go green was planting an English heading inside an otherwise
|
||||
Norwegian document, which is worse than the warning it silences.
|
||||
|
||||
A `heading_aliases` entry in the register is the fix, shaped exactly like
|
||||
`titles`: the decision — this section, in this repo's own language, does the
|
||||
job the English heading names — is made in the repo, and the bookkeeping
|
||||
happens here. Set one, and a README carrying the aliased heading instead of
|
||||
the literal one is an `OK` (`HEADING-ALIAS`) that names the alias, never a
|
||||
silent pass. Leave it out, and `HEADING-MISSING` stands exactly as before.
|
||||
|
||||
It is keyed **per repository**, not per locale. A locale-wide translation
|
||||
table would force every `nb` repository into the same Norwegian phrasing for
|
||||
the same section — precisely the constraint `titles` already rejects for H1s,
|
||||
where a human title is a valid choice, not a slot filled from a fixed list.
|
||||
|
||||
### When equality is the wrong demand
|
||||
|
||||
`README-DESC` requires the README's opening line to be the forge description
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue