Skip to content

Enforce blocking quality gates for external plugin submissions and PRs - #5252

Merged
aaronpowell merged 1 commit into
mainfrom
aaronpowell-external-plugin-quality-gates
Oct 25, 2026
Merged

aaronpowell merged 1 commit into
mainfrom
aaronpowell-external-plugin-quality-gates

Conversation

@aaronpowell

Copy link
Copy Markdown
Contributor

Pull Request Checklist

  • I have read and followed the CONTRIBUTING.md guidelines.
  • I have read and followed the Guidance for submissions involving paid services.
  • My contribution adds a new instruction, prompt, agent, skill, workflow, or canvas extension file in the correct directory.
  • The file follows the required naming convention.
  • The content is clearly structured and follows the example format.
  • I have tested my instructions, prompt, agent, skill, workflow, or canvas extension with GitHub Copilot.
  • I have run npm start and verified that README.md is up to date.
  • I am targeting the main branch for this pull request.

Description

External plugin submissions and listing-update PRs should not advance while applicable quality checks are failing. Manifest compliance was previously non-blocking, and the PR workflow could report plugin failures without failing a status check.

  • Make Agent Plugins manifest compliance blocking in the shared quality-gate runner, alongside vally lint (including Agent Skills spec and reference checks), installation smoke tests, and the other applicable gates.
  • Require an explicit passing result before intake advances to ready-for-review or PR aggregation succeeds. Update bot comments and infrastructure-error fallbacks to match.
  • Add an enforce-quality-gates PR job that fails on unsuccessful detection, incomplete execution, or a non-passing aggregate result.
  • Document the stricter submission and PR behavior and add regression coverage.

Type of Contribution

  • New instruction file.
  • New prompt file.
  • New agent file.
  • New plugin.
  • New skill file.
  • New agentic workflow.
  • New canvas extension.
  • Update to existing instruction, prompt, agent, plugin, skill, workflow, or canvas extension.
  • Other (please specify): External plugin validation automation, regression tests, and contributor documentation.

Additional Notes

Validation

  • node --test --test-skip-pattern="pinned homepage dispatcher" eng\external-plugin-quality-gates.test.mjs eng\external-plugin-intake.test.mjs eng\external-plugin-intake-state.test.mjs - passed: 108 tests, 108 passed, 0 failed, 0 skipped as reported by Node. The command retains the exclusion pattern for a previously unreliable local network test.
  • npm run build - passed; generated README and marketplace outputs remain unchanged. Existing external-listing metadata warnings were emitted.
  • bash eng/fix-line-endings.sh - passed.
  • git --no-pager diff --check - passed.

npm start was not run separately; it delegates to the successful npm run build. The new enforcement job has not yet run in GitHub Actions. Resource-specific and paid-service checklist items are not applicable to this automation change.

Rollout: Configure enforce-quality-gates as a required status check in branch protection to prevent merges while it fails. Existing explicit maintainer intake overrides remain available.


By submitting this pull request, I confirm that my contribution abides by the Code of Conduct and will be licensed under the MIT License.

Require manifest compliance and all applicable checks to pass for submissions and PRs. Fail the PR enforcement job when checks fail or cannot complete.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI max review requested due to automatic review settings October 22, 2026 00:14
@aaronpowell
aaronpowell requested a review from a team as a code owner October 22, 2026 00:14
@github-actions github-actions Bot added the workflow PR touches workflow automation label Oct 22, 2026
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

🚦 Submission status: 👀 Ready for review

Risk tier: merge-risk:high — Privileged execution, automation, or review-policy change
Required to merge: passing submission-gate checks plus 1 approval from reviewers with write access, including a maintainer with admin or maintain permission.

Why this tier
  • .github/workflows/external-plugin-command-router.yml is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • .github/workflows/external-plugin-intake.yml is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • .github/workflows/external-plugin-pr-quality-gates-writer.yml is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • .github/workflows/external-plugin-pr-quality-gates.yml is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • eng/external-plugin-intake.mjs is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • eng/external-plugin-intake.test.mjs is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • eng/external-plugin-pr-quality-gates.mjs is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • eng/external-plugin-quality-gates.mjs is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • eng/external-plugin-quality-gates.test.mjs is a high-risk path (automation, scripts, MCP config, hooks, or review policy)

Automated checks

Check Status Details
Line endings ✅ Passed Passed · logs
Spelling ✅ Passed Passed · logs
Submission gate tests ✅ Passed Passed · logs
Contributor reputation ✅ Passed Passed · logs
Duplicate resource scan ✅ Passed Passed · logs
PR quality signal ✅ Passed Passed · logs

Review

  • Approvals: 0/1
  • Assigned reviewer: not assigned yet — comment /request-review to ask for one
  • Review target date: not set
  • Still needed: 1 more approval(s); an approval from a maintainer with admin or maintain permission
  • The core-maintainers pool is not staffed yet; an approver with admin or maintain permission is required instead.

Commands

Command Who What it does
/rerun-checks PR author, maintainers Re-runs failed or incomplete checks and re-evaluates this gate
/request-review PR author, maintainers Asks the review rotation to assign a reviewer (adds needs-reviewer)

Updated for d6faa1a · gate run · This comment is maintained automatically — see submission gate docs.

@github-actions

Copy link
Copy Markdown
Contributor

🟡 Contributor Reputation Check: MEDIUM risk

Check Risk
Profile MEDIUM
Credential audit NONE

Maintainers: please review this contributor before merging.
See the workflow run for full details.
Automated check powered by AGT.

@github-actions github-actions Bot added needs-review:MEDIUM Contributor reputation check flagged MEDIUM risk ready-for-review Submission passed intake validation and is ready for maintainer review and removed awaiting-automation labels Oct 22, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Required-check integration and manifest selection still have correctness issues that can block valid PRs or plugin submissions.

3 open issues
What changed in this PR

This PR strengthens external-plugin validation across submission intake and listing-update PRs so failing or incomplete quality checks cannot be treated as successful.

Changes:

  • Make manifest compliance blocking and require explicit passing aggregate results.
  • Add a PR enforcement job and align bot messages and infrastructure-error reporting.
  • Document stricter behavior and add regression coverage.
File Description
eng/​external-plugin-quality-gates.test.mjs Add manifest, skill-lint, and aggregate-status regression cases.
eng/​external-plugin-quality-gates.mjs Make manifest failures blocking and include compliance in overall status.
eng/​external-plugin-pr-quality-gates.mjs Require every changed plugin to pass aggregation.
eng/​external-plugin-intake.test.mjs Cover failed, successful, and incomplete intake checks.
eng/​external-plugin-intake.mjs Require explicit success before advancing intake and update messages.
CONTRIBUTING.md Explain blocking gates and PR status enforcement.
.github/​workflows/​external-plugin-pr-quality-gates.yml Add the enforcement job for unsuccessful or incomplete checks.
.github/​workflows/​external-plugin-pr-quality-gates-writer.yml Remove non-blocking wording and display compliance failures accurately.
.github/​workflows/​external-plugin-intake.yml Report compliance infrastructure errors consistently.
.github/​workflows/​external-plugin-command-router.yml Align rerun infrastructure-error fallbacks with blocking compliance.

Review effort: Max

Comment on lines +187 to +190
enforce-quality-gates:
runs-on: ubuntu-latest
needs: [detect-changed-plugins, run-quality-gates]
if: always()

function inspectAgentPluginSpecCompliance(pluginRoot) {
export function inspectAgentPluginSpecCompliance(pluginRoot) {
const pluginJsonPath = findPluginJson(pluginRoot);
? "This submission passed blocking quality checks and is ready for maintainer review, but it has non-blocking Agent Plugins spec compliance warnings."
: "This submission passed automated intake validation and quality checks and is ready for maintainer review.";
: qualityResult.overall_status !== "pass"
? "This submission passed metadata validation, but the automated quality checks did not complete successfully. A maintainer should rerun intake or use the explicit override command after review."
@aaronpowell
aaronpowell merged commit 5f0bfe5 into main Oct 25, 2026
31 of 34 checks passed
@aaronpowell
aaronpowell deleted the aaronpowell-external-plugin-quality-gates branch October 25, 2026 23:04

This branch was successfully deployed

1 active deployment
github-pages — d6faa1a3 Deployed Oct 22, 2026 by aaronpowell via deploy #1020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk:high needs-review:MEDIUM Contributor reputation check flagged MEDIUM risk ready-for-review Submission passed intake validation and is ready for maintainer review workflow PR touches workflow automation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants