Files
computer-playbook/tests
kevinveenbirkenbachandClaude Opus 5 f2b214c815 feat(lint): accept meta/addons as a repository declaration site
The guard recognised meta/services.yml as the only place a git URL may be
declared. 84a4b04f0 made meta/addons/<id>.yml the one place a Discourse plugin
pins itself, so the addon files now carry the clone URL literally, and
_iter_role_files picks up every .yml under the role: each declaration reported
itself as an undeclared reference.

Two halves. The declaration set is now the union over meta/services.yml and
every meta/addons/*.yml, so an addon pin legitimises that URL for the whole
role, not just for the file holding it. Path.glob on a missing meta/addons
yields nothing, so roles without addons need no special case. The self-skip
that kept services.yml out of the scan is now a membership test against exactly
those declaration paths.

Scope stays per role: declared is rebuilt inside the role loop, so a
declaration in one role legitimises nothing in another. The failure message and
the docstring name both sites, otherwise they send the next reader to the wrong
file.

This is the test-side counterpart of e4141cb826, which taught collect_entries
to see the same addon refs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 17:30:57 +02:00
..
…
…

Tests 🧪

All automated tests for Infinito.Nexus live here.

Directory Type Guide
unit/ Unit tests (isolated, no I/O) unit.md
integration/ Integration tests (real component boundaries) integration.md
external/ Opt-in live third-party checks, excluded from make test external.md
e2e/ End-to-end Playwright tests playwright.md
regression/ Regression guard rules regression.md
lint/ Structural lint checks lint.md

Run each suite via the make targets documented in the linked guides.