fix(links): a directory link is not a missing file, so a tracked dir now resolves

`checkInternalLinks` compared a link's resolved target only against `present`
(tracked files), so `[x](dir/)` was always LINK-INTERNAL-MISSING even when
every file under it was tracked. Reported by portfolio-optimiser-claude with a
minimal repro; the same defect inflated ERROR counts in voyage, linkedin-studio
and portfolio-optimiser — 12 of the org's 71 measured ERRORs were this one
check, not twelve repo problems.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Uwwfdmrfnp7FuGQ4z25RKH
This commit is contained in:
Kjell Tore Guttormsen 2026-08-03 21:57:53 +02:00
commit 3c2a535297
7 changed files with 50 additions and 5 deletions

View file

@ -4,6 +4,22 @@ 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.2] — 2026-08-03
### Fixed
- `checkInternalLinks` compared a link's resolved target only against
`present` — the set of tracked *files* — so a link to a directory
(`[x](dir/)`) was reported `LINK-INTERNAL-MISSING` even when every file
under that directory was tracked. A directory was never a member of that
set to begin with. Reported by `portfolio-optimiser-claude` (coord
20260803T194933Z) with a minimal repro; confirmed and traced to the same
defect in `voyage`, `linkedin-studio` and `portfolio-optimiser` — 12 of the
71 ERROR findings measured across the org on 2026-08-03 were this one check,
not twelve separate repo problems. Fixed by deriving the set of directories
that actually contain a tracked file from `present` itself, and letting a
link that resolves to one of them pass.
## [0.1.1] — 2026-08-03
Documentation only. No behaviour change: `scripts/` and `register/` are
@ -117,5 +133,6 @@ First release. Covers the checks that a single repository can answer on its own.
- No hook ships in this release. A blocking gate has to be precise enough not to
fail a correct repository first.
[0.1.2]: https://git.fromaitochitta.com/open/repo-standard/src/tag/v0.1.2
[0.1.1]: https://git.fromaitochitta.com/open/repo-standard/src/tag/v0.1.1
[0.1.0]: https://git.fromaitochitta.com/open/repo-standard/src/tag/v0.1.0