repo-standard/scripts
Kjell Tore Guttormsen c8cbeb97a5 fix(engine): a schemaless host is still a host, and OK is a real outcome
Two findings from org-ops census 03, both measured against the parser
rather than read out of the regex.

(a) URL_REF required :// or @host:, so `git.fromaitochitta.com/open/<name>`
— the form a subtree instruction routinely uses — extracted nothing at
all (llm-security/V3-UPGRADE.md:343). What makes a name resolvable is
its position after a host, not the scheme in front of it.

Two guards keep the widening from becoming the noise the scheme was
masking: the host must end in a TLD-shaped label, and a candidate
preceded by / is a path segment that merely contains a dot, not a host
— so docs/v1.2/open/ and test/nav.golden/open/ stay silent and the
API-endpoint rule from 0.3.0 is untouched.

Measured before shipping across 1501 tracked Markdown files in 20
local clones: 14 lines changed verdict. 13 were references that had
been invisible. The 14th was a defect this widening introduced — a
markdown link whose display text repeats its own URL matched on both
halves, printing one dead reference twice and inflating the count the
new OK line offers as evidence. References are now deduplicated per
name-and-line, so two names on one line, or one name on two lines,
still count as two.

(b) checkLinks emitted nothing on success, so "no dead references" and
"the check never ran" were identical in the output — a sweep could not
tell 19 clean repos from 19 unread ones. The file already applies
"three outcomes, never two" to classifyRef; it now applies it to its
own result. Zero enumerated files is LINKS-OPEN-REFS-UNAVAILABLE
(SKIP), which is the honest name for what used to look like a pass.

Caught by the gate against itself: the first draft of this release's
CHANGELOG entry used a literal open/<name> placeholder and became a
real LINK-DEAD ERROR. Rewritten, not exempted.

116 -> 129 tests.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NxP9N3p1fG6UYSB8rATBL6
2026-08-09 14:18:24 +02:00
..
repo-standard-check.mjs fix(engine): a schemaless host is still a host, and OK is a real outcome 2026-08-09 14:18:24 +02:00
repo-standard-check.test.mjs fix(engine): a schemaless host is still a host, and OK is a real outcome 2026-08-09 14:18:24 +02:00