Skip to content

Add machine-readable registry.yaml, generate README table - #45

Merged
fzipi merged 1 commit into
mainfrom
feat/machine-readable-registry
Sep 7, 2026
Merged

Add machine-readable registry.yaml, generate README table#45
fzipi merged 1 commit into
mainfrom
feat/machine-readable-registry

Conversation

@fzipi

@fzipi fzipi commented Sep 7, 2026

Copy link
Copy Markdown
Member

Summary

  • Adds registry.yaml as the authoritative, machine-readable plugin index (rule ID range, repository, type, status, license, CI, private), validated against registry-schema.json in CI.
  • README.md's table and registry.json are generated from registry.yaml by scripts/generate_registry.py. CI regenerates and fails on drift (git diff --exit-code) instead of committing from the workflow.
  • Migrating the table fixes the drift found in the audit: swapped CI badges between nextcloud/dokuwiki (now derived from each plugin's own repository field, making the swap structurally impossible), the missing License cell on false-positive-report-plugin, dokuwiki's link-text typo, missing CI badges on body-decompress-plugin and traffic-observation-plugin despite having integration tests, and documents the undocumented 9,515,000-9,515,999 hole as a reserved range.
  • Also corrects vimbadmin-crs-plugin's license, which the table listed as GPL 2.0 but is actually Apache-2.0 per the repository's detected license.
  • Adds docs/registry-schema.md documenting the fields and, per the issue, what the registry attests and what it does not (not a code audit or supply-chain guarantee).
  • Adds .github/workflows/validate-registry.yml: schema validation via check-jsonschema, semantic validation (unique names, no overlapping rule ID ranges — constraints JSON Schema can't express) via a small script-based test, and the drift check.

Refs #21.

Test plan

  • uvx check-jsonschema --schemafile registry-schema.json --force-filetype yaml registry.yaml tests/registry/valid/*.yaml passes
  • Each fixture under tests/registry/invalid/*.yaml is rejected by the schema
  • uv run tests/registry/test_validate.py passes (duplicate-name and overlapping-range fixtures under tests/registry/invalid-semantic/ are correctly rejected)
  • uv run scripts/generate_registry.py regenerates README.md and registry.json with no drift against the committed versions
  • Existing plugin descriptor validation (plugin-schema.json, examples, plugin.yaml.template) still passes unaffected

🤖 Generated with Claude Code

Adds registry.yaml as the authoritative, machine-readable plugin index
(rule ID range, repository, type, status, license), validated against
registry-schema.json in CI. README.md's table and registry.json are
generated from it by scripts/generate_registry.py; CI regenerates and
fails on drift instead of committing from the workflow.

Migrating the table into registry.yaml also fixes the drift found in
the audit: swapped CI badges between nextcloud/dokuwiki (now derived
from each plugin's own repository field, making the swap structurally
impossible), the missing License cell on false-positive-report-plugin,
dokuwiki's link-text typo, missing CI badges on body-decompress-plugin
and traffic-observation-plugin despite having integration tests, and
documents the undocumented 9,515,000-9,515,999 hole as a reserved
range. Also corrects vimbadmin-crs-plugin's license, which the table
listed as GPL 2.0 but is actually Apache-2.0.

Refs #21

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@fzipi
fzipi requested a review from theseion September 7, 2026 12:20
@fzipi
fzipi merged commit e16072e into main Sep 7, 2026
2 checks passed
@fzipi
fzipi deleted the feat/machine-readable-registry branch September 7, 2026 19:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants