Skip to content

fix(registry): remove unmaintainable per-tool version field#73

Merged
TMHSDigital merged 1 commit into
mainfrom
fix/registry-drop-version
Jun 14, 2026
Merged

fix(registry): remove unmaintainable per-tool version field#73
TMHSDigital merged 1 commit into
mainfrom
fix/registry-drop-version

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

PART A (this PR) - stop the registry version field from re-drifting

registry.json hardcoded a patch-level version per tool (Blender showed 0.2.3, live was 0.2.4). Tool repos auto-bump patch on every content merge, so the catalog re-staled on each tool's next content PR. Hand-bumping one entry just resets a clock that keeps running.

Consumption check (step 1). The field had zero consumers:

  • not read by scripts/sync_from_registry.py (no reference),
  • not displayed by docs/script.js (the card renderer never reads it),
  • not used by the drift checker (it reads agent-file standards-version markers and the meta VERSION, never the registry entry version).
  • It was schema-required (validate.yml) and rode along passively inside the embedded registry blob in docs/index.html, but was never rendered. The README tools table has no version column.

Fix (step 2) - removed entirely, uniformly across all 12 entries:

  • dropped version from every registry.json entry,
  • dropped version from the validate.yml registry schema,
  • regenerated docs/index.html (embedded blob no longer carries version; sync_from_registry.py --check clean),
  • documented the removal (step 3) in .cursorrules, AGENTS.md, and CLAUDE.md so it is not reintroduced.

A tool repo's patch bump can no longer create catalog drift. Patch precision is not reintroduced anywhere.

PART B (already applied via gh, not files) - gated auto-merge

Auto-merge was disabled, so catalog PRs stalled on manual merge. Enabled it gated (waits for green; does not merge instantly). No codified settings file exists in the repo, so this was applied via gh and is recorded here for reproducibility.

Trigger enumeration (confirmed from each workflow on: block):

  • pull_request-triggered, runs+reports on every PR (gateable): validate.yml (no path filter) -> Validate registry.json, Validate docs site, Validate scaffold, Registry sync check, Public-repo safety scan, feat/fix commits require VERSION bump, Run drift_check tests; codeql.yml (no path filter) -> CodeQL; dependency-review.yml -> Audit dependencies; label-sync.yml -> Auto-label by path.
  • NOT requirable as PR gates: Drift check (drift-check.yml pull_request is path-filtered to checker code; it does not run on most PRs - requiring it would hang every PR), Sync (sync.yml is push-only, opens a follow-up PR), Release / Release Drafter / Deploy GitHub Pages (push/post-merge/path-filtered).

Commands applied:

# Enable repo-level auto-merge
gh api -X PATCH repos/TMHSDigital/Developer-Tools-Directory -f allow_auto_merge=true

The existing main protection ruleset (id 15515943, enforcement active) already requires exactly the correct gateable set and excludes the un-gateable ones, so no required-check change was needed:
Validate registry.json, Validate docs site, Validate scaffold, Registry sync check, Public-repo safety scan, feat/fix commits require VERSION bump, CodeQL. With auto-merge on, GitHub merges only after these report green = "merge once green".

Deliberate deviation from the brief: no github-actions[bot] bypass added. The brief's deadlock rationale ("release.yml pushes the [skip ci] version-bump commit directly to main") is the tool-repo model. This meta-repo is VERSION-file-driven: release.yml pushes only tags (annotated vX.Y.Z + floating v1/v1.16), never a commit to main; the human PR bumps VERSION. Branch rulesets do not gate tag refs, and sync.yml opens a PR rather than pushing. So no bot direct-push to a gated ref exists and no bypass is required; adding one would falsify the documented empty-bypass security invariant for zero benefit. The post-merge Release run (tag push succeeding under the active ruleset with empty bypass) is the live proof the pipeline is not deadlocked.

This PR doubles as the live test of gated auto-merge: it must wait for green (gating works) and must not hang (required-check names all report on PRs).

Test plan

  • python scripts/sync_from_registry.py --check clean.
  • pytest tests/ green (212 passed, 1 skipped).
  • registry.json diff is exactly 12 deletions (only version lines); embedded docs/index.html blob no longer contains version.
  • VERSION 1.16.1 -> 1.16.2 (version-bump-check guard).
  • Auto-merge gates this PR, merges on green, post-merge Release cuts v1.16.2 (tag push proves pipeline not deadlocked); main HEAD green across Validate, Drift check, Sync, CodeQL, Pages.

registry.json hardcoded a patch-level `version` per tool (Blender showed
0.2.3, live was 0.2.4). Tool repos auto-bump patch on every content merge,
so the catalog re-staled on each tool's next content PR. Bumping a single
entry by hand just resets a clock that keeps running.

The field had zero consumers: it is not read by scripts/sync_from_registry.py,
not displayed by docs/script.js, and not used by the drift checker (which
reads agent-file standards-version markers and the meta VERSION, not the
registry entry version). It only rode along passively inside the embedded
registry blob in docs/index.html.

Remove it everywhere so a tool's patch bump can never again create catalog
drift:
- drop `version` from all 12 registry.json entries
- drop `version` from the validate.yml registry schema
- regenerate docs/index.html (embedded blob no longer carries version)
- update the schema docs (.cursorrules, AGENTS.md, CLAUDE.md) with a
  one-line note on why the field is gone, so it is not reintroduced

Do not reintroduce patch precision. The catalog tracks tools by repo and
homepage, not by version.

Signed-off-by: fOuttaMyPaint <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Jun 14, 2026
@TMHSDigital TMHSDigital enabled auto-merge (squash) June 14, 2026 17:49
@TMHSDigital TMHSDigital merged commit 3be50f3 into main Jun 14, 2026
14 checks passed
@TMHSDigital TMHSDigital deleted the fix/registry-drop-version branch June 14, 2026 17:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci documentation Improvements or additions to documentation registry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant