Skip to content

fix(registry): retire five plugin entries whose repositories are gone - #4153

Open
L4XB wants to merge 2 commits into
career-ops-hq:mainfrom
L4XB:fix/4130-retire-dead-registry-entries
Open

fix(registry): retire five plugin entries whose repositories are gone#4153
L4XB wants to merge 2 commits into
career-ops-hq:mainfrom
L4XB:fix/4130-retire-dead-registry-entries

Conversation

@L4XB

@L4XB L4XB commented Sep 13, 2026

Copy link
Copy Markdown

Fixes #4130.

What happened

gh api repos/Schlaflied/career-ops-plugin-<id> returns 404 for all five entries, so validate-plugin-registry.mjs --deep cannot clone them at their pinned SHAs and the Validate registry entries check fails on every PR that touches plugins-registry/** — including PRs with nothing to do with these plugins.

Verified again just now:

google-calendar     -> 404
linkedin-alerts     -> 404
obsidian            -> 404
outlook-interviews  -> 404
tavily              -> 404

The change

The five registry files are removed, together with their rows in docs/PLUGINS.md, so the published table and the registry keep saying the same thing. CHANGELOG.md is release-please output and records the historical additions; those entries stay accurate as history and are left alone.

Retired rather than re-pointed because the repositories are not merely moved: the author's account and all five repositories return 404, so there is no target to re-point at. Re-adding them later is the ordinary registration flow.

Evidence

$ node validate-plugin-registry.mjs
✓ plugin registry is valid

$ node validate-plugin-registry.mjs --deep
✓ plugin registry is valid (deep: all entries cloned + audited)

$ node test-all.mjs
📊 Results: 8724 passed, 1 failed, 16 warnings

The deep gate is the one the issue reports as failing, and it now passes on the four remaining entries.

That single failure (--status prerequisite/score handling wrong) is pre-existing and unrelated: main at bb641dc, checked out in a clean worktree with the same dependencies, reports exactly the same 8724 passed, 1 failed. Test count is unchanged in both directions, so no assertion depended on these five entries.

Summary

Retires five unavailable plugin registry entries. Removes their Community plugins table rows from docs/PLUGINS.md:111-113.

User impact

Users can no longer discover or register these unavailable plugins. Deep registry validation can pass for the remaining entries.

The one-plugin-per-PR check now counts only added or modified registry files. Deletions do not count, so retirement PRs can remove multiple unavailable entries. Adding or modifying more than one entry still fails at .github/workflows/plugin-registry-validate.yml:62-70.

System files

Changed: .github/workflows/plugin-registry-validate.yml.

Not changed: AGENTS.md, modes/, update-system.mjs, DATA_CONTRACT.md, or providers/.

`gh api repos/Schlaflied/career-ops-plugin-<id>` returns 404 for all five, so
`validate-plugin-registry.mjs --deep` cannot clone them and the "Validate
registry entries" check fails on every PR that touches `plugins-registry/**` —
including PRs that have nothing to do with these entries.

Removes the five registry files and their rows in `docs/PLUGINS.md`, so the
published table and the registry keep saying the same thing. Nothing else
references them: `CHANGELOG.md` is release-please output and records the
historical additions, which stay accurate as history.

The entries are retired rather than re-pointed because the repositories are not
merely moved — the author's account and every one of the five repositories
return 404, so there is no target to re-point at. Re-adding them later is the
ordinary registration flow.

Fixes career-ops-hq#4130
@coderabbitai

coderabbitai Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 90cba819-612e-4707-8414-42097fadefc8

📥 Commits

Reviewing files that changed from the base of the PR and between 106fa3a and 041b355.

📒 Files selected for processing (1)
  • .github/workflows/plugin-registry-validate.yml
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • career-ops-hq/career-ops-docs (manual)

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The pull request removes five invalid plugin registrations and their documentation rows. It also changes the registry validation workflow to exclude deleted entries from the one-entry change limit.

Changes

Plugin registry retirement

Layer / File(s) Summary
Remove registry entries
plugins-registry/google-calendar.json, plugins-registry/linkedin-alerts.json, plugins-registry/obsidian.json, plugins-registry/outlook-interviews.json, plugins-registry/tavily.json
The five registry entries were deleted, including their metadata, hooks, environment variables, allowed hosts, repository references, and registration details.
Update plugin documentation
docs/PLUGINS.md:113-117
The five corresponding rows were removed from the Community plugins table. The table header and surrounding guidance remain.
Update validation gate
.github/workflows/plugin-registry-validate.yml:62-69
The registry change count now includes only added and modified files. Deleted entries are excluded from the one-entry limit.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Medium

Merge Risk: ⚪ Minimal · up to 041b3

The unavailable registrations and matching documentation rows are removed, while additions and modifications remain subject to the single-entry validation gate.

🚥 Pre-merge checks | ✅ 8 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Agent-Operated Pr Disclosure ❓ Inconclusive The required PR identity metadata is unavailable. The review refs are detached and expose no source branch, and the repository has no PR label record. The head commit identifies L4XB, not the GitHub… Provide the PR source branch, GitHub author identity, and current labels. If the branch starts with copilot/ or the author is app/copilot-swe-agent, add exact ## AI assistance and ## Human review sections to the description and appl…
✅ Passed checks (8 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title uses the required Conventional Commits prefix and scope. It accurately summarizes the retirement of five unavailable plugin registry entries.
Linked Issues check ✅ Passed Issue #4130 requires retirement or re-pointing of five dead entries, deep validation, a workable PR gate, and documentation consistency. The PR deletes all five named registry files: `plugins-registry…
Out of Scope Changes check ✅ Passed The changes are limited to the five registry entry deletions, removal of their five documentation rows, and the related one-plugin gate correction at `.github/workflows/plugin-registry-validate.yml:56…
User Layer Untouched ✅ Passed PASS: The reviewed range changes only .github/workflows/plugin-registry-validate.yml, docs/PLUGINS.md, and plugins-registry/*.json. None match the user-layer paths in the custom check. `DATA_CON…
No Personal Data ✅ Passed PASS: The pull-request diff introduces no real personal data. The only added content is the registry-counting workflow change and comments at .github/workflows/plugin-registry-validate.yml:59-66. Th…
Shipped File Registered ✅ Passed No new top-level shipped file was added. The authoritative PR inventory contains only modifications to .github/workflows/plugin-registry-validate.yml and docs/PLUGINS.md, plus deletions under `plu…
Provider Contract ✅ Passed PASS: The PR does not add or change any provider implementation. The reviewed range changes only .github/workflows/plugin-registry-validate.yml, docs/PLUGINS.md, and five deleted `plugins-registry…
Full details: Agent-Operated Pr Disclosure

Explanation

The required PR identity metadata is unavailable. The review refs are detached and expose no source branch, and the repository has no PR label record. The head commit identifies L4XB, not the GitHub PR author app. The supplied description has no exact ## AI assistance or ## Human review sections. Therefore, the check cannot determine whether the agent-operated condition applies.

Resolution

Provide the PR source branch, GitHub author identity, and current labels. If the branch starts with copilot/ or the author is app/copilot-swe-agent, add exact ## AI assistance and ## Human review sections to the description and apply the agent-generated label.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • 🛠️ register-shipped-file
  • 🛠️ provider-test-scaffold
  • 🛠️ sync-language-mode
🚀 Post-Merge Actions
  • localization drift report
  • documentation drift report

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

The gate counted every changed `plugins-registry/*.json`, deletions
included, which made retiring dead entries impossible in either shape:

* As one PR — refused here, five files changed.
* Split into five — `--deep` clones every entry that is still present, so
  each PR stays red until the last dead entry is gone. Every PR in the
  series is red, including the last one before it merges.

`--diff-filter=AM` is what the refusal message already describes ("add or
bump"). Verified both ways against this branch: a deletion-only PR counts
0, and a control commit adding two entries still counts 2 and is refused.

Refs career-ops-hq#4130
@L4XB
L4XB requested a review from santifer as a code owner September 13, 2026 18:21
@L4XB

L4XB commented Sep 13, 2026

Copy link
Copy Markdown
Author

Validate registry entries was red on the one-plugin-per-PR gate, not on the registry itself — the deep validation passes on this branch:

✓ plugin registry is valid (deep: all entries cloned + audited)
...
A registry PR may add or bump exactly one plugins-registry/<id>.json file

Worth flagging because the two rules cannot both be satisfied while any dead entry exists, in either shape:

  • As one PR — refused by the gate, five files changed.
  • Split into five--deep clones every entry still present, so each PR is red until the last dead entry is gone. I checked rather than assumed: with only google-calendar.json removed, node validate-plugin-registry.mjs --deep still fails on the other four. Every PR in such a series is red, including the final one before it merges.

The second commit narrows the counter to --diff-filter=AM, which is what the refusal message already says the rule is ("add or bump"). Deletions stop counting; registration PRs are untouched. Verified both directions against this branch: a deletion-only PR counts 0, and a control commit adding two entries still counts 2 and is refused.

If you would rather not take a CI change in a registry PR, say so and I will drop that commit — but then this issue needs the gate relaxed on your side first, because no shape of the fix can go green through it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plugin registry: five Schlaflied/* entries point at repos that return 404

1 participant