Skip to content

Clarify intake-blocked submissions in the plugin review board - #5096

Merged
aaronpowell merged 2 commits into
mainfrom
aaronpowell-plugin-board-blocked-state
Oct 15, 2026
Merged

aaronpowell merged 2 commits into
mainfrom
aaronpowell-plugin-board-blocked-state

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

Submissions requiring submitter fixes appeared as ordinary Unreviewed cards, even when none could be queued. This made the board look stuck and encouraged requests to force reviews that intake correctly blocked.

Keep these submissions visible in their existing buckets, but show a Blocked by intake badge and a specific reason. The toolbar reports actual queueable and blocked counts, including when search hides cards. The drawer explains the block on every tab, and unavailable approval/re-review controls explain why they cannot be used.

The same eligibility and reasons are exposed through get_board, while empty start_review results distinguish intake blockers from a completed review queue. Moving a blocked card back to Unreviewed no longer promises an immediate review. Existing rejection, manual bucket moves, saved reviews, queued state, and first-party gating are preserved; this does not bypass or change intake policy.


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):

Additional Notes

Validation:

  • node --experimental-vm-modules --test eng\external-plugin-review-board.test.mjs eng\external-plugin-review-board-state.test.mjs eng\external-plugin-review-board-ui.test.mjs eng\board-state-storage.test.mjs eng\board-bulk-actions.test.mjs eng\board-column-order.test.mjs eng\board-preview.test.mjs .github\extensions\external-plugin-review-board\lib\github.test.mjs - passed, 79 tests. Covers nine blocked cards, label-specific reasons, conflicting labels, blocked-to-ready transitions, agent responses, and existing board behavior.
  • node --check .github\extensions\external-plugin-review-board\extension.mjs - passed.
  • node --check .github\extensions\external-plugin-review-board\public\app.js - passed.
  • npm start - passed after restoring missing dependencies with npm ci --no-audit --no-fund; generated files remain unchanged. Existing external-plugin metadata warnings were reported.
  • bash eng/fix-line-endings.sh - passed.
  • git diff --check - passed before committing.
  • Browser validation using local file fixtures - passed for nine blocked cards, disabled controls, persistent reasons across drawer tabs, and a live transition to one reviewable card; no page errors or GitHub mutations.

The new-resource and paid-service checklist items are not applicable. Testing used browser fixtures and mocked canvas actions, not a reload of the running Copilot extension, so the live Copilot checkbox remains unchecked. No extension reloads or GitHub issue mutations were performed.


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

Keep blocked submissions visible with intake reasons and accurate review controls. Expose eligibility through agent actions and cover blocked-to-ready transitions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 1313d2be-6ae2-478e-952a-4b22a5e2d7cb
@aaronpowell
aaronpowell requested a review from a team as a code owner October 15, 2026 01:51
Copilot AI max review requested due to automatic review settings October 15, 2026 01:51
@github-actions

github-actions Bot commented Oct 15, 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/extensions/external-plugin-review-board/README.md is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • .github/extensions/external-plugin-review-board/extension.mjs is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • .github/extensions/external-plugin-review-board/lib/state.mjs is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • .github/extensions/external-plugin-review-board/public/app.js is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • .github/extensions/external-plugin-review-board/public/index.html is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • .github/extensions/external-plugin-review-board/public/styles.css is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • eng/board-column-order.test.mjs is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • eng/board-state-storage.test.mjs is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • eng/external-plugin-review-board-state.test.mjs is a high-risk path (automation, scripts, MCP config, hooks, or review policy)
  • eng/external-plugin-review-board-ui.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
Contributor reputation ✅ Passed Passed · logs
Duplicate resource scan ⏳ Pending (advisory, non-blocking) Running · logs
PR quality signal ⏳ Pending (advisory, non-blocking) Running · 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 706fda0 · gate run · This comment is maintained automatically — see submission gate docs.

@github-actions

github-actions Bot commented Oct 15, 2026 •

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 15, 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.

🟢 Approval recommended

Targeted verification confirms unchanged approval gating, and the remaining feedback is non-blocking.

1 open finding
What changed in this PR

Clarifies intake-blocked submissions in the internal plugin review board without changing intake policy.

Changes:

  • Shows blocked reasons, queueable counts, and explanations for unavailable controls.
  • Exposes eligibility through agent actions and improves empty-review responses.
  • Adds regression coverage and updates documentation.
File Description
eng/​external-plugin-review-board-ui.test.mjs Tests blocked cards, controls, and counts.
eng/​external-plugin-review-board-state.test.mjs Tests reasons and eligibility transitions.
eng/​board-state-storage.test.mjs Tests blocked agent actions and persistence.
eng/​board-column-order.test.mjs Updates the toolbar fixture.
.github/​extensions/​external-plugin-review-board/​README.md Documents blocked status and validation.
.github/​extensions/​external-plugin-review-board/​public/​styles.css Styles blocked notices and badges.
.github/​extensions/​external-plugin-review-board/​public/​index.html Adds toolbar and drawer status elements.
.github/​extensions/​external-plugin-review-board/​public/​app.js Displays reasons, counts, and control explanations.
.github/​extensions/​external-plugin-review-board/​lib/​state.mjs Centralizes reasons and exposes snapshot eligibility.
.github/​extensions/​external-plugin-review-board/​extension.mjs Improves agent summaries and blocked responses.

🧠 Review effort: Max


💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/extensions/external-plugin-review-board/lib/state.mjs Outdated
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1313d2be-6ae2-478e-952a-4b22a5e2d7cb
Copilot AI max review requested due to automatic review settings October 15, 2026 03:21
@aaronpowell
aaronpowell merged commit 1f8bf4d into main Oct 15, 2026
30 of 32 checks passed
@aaronpowell
aaronpowell deleted the aaronpowell-plugin-board-blocked-state branch October 15, 2026 03:26

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.

🔵 Needs a closer look

The blocked badge has insufficient text contrast, and some disabled-control tooltips misleadingly imply an intake blocker.

0 open findings

1 resolved since last review
Previously missed (2)

In code that hasn't changed since last review

Medium severity Only mention incomplete intake when actionable cards are blocked

.github/​extensions/​external-plugin-review-board/​public/​app.js:238

When the count is zero, Approve all and Re-review all mention incomplete intake even for an empty column or one containing only queued cards or pending decisions. This gives misleading guidance when intake is not the blocker. Mention intake only when the column contains otherwise actionable, intake-blocked cards; columnItems(column.id, "reject") includes those cards while excluding queued items and pending decisions.

Medium severity Use --fg to meet contrast requirements for the badge text

.github/​extensions/​external-plugin-review-board/​public/​styles.css:196

In the fallback palette, this 11px badge uses #bc4c00 text on a background mixed from 14% orange and 86% white. Its contrast is 4.13:1, below the 4.5:1 minimum for normal-sized text. Use --fg for the text; it provides 12.97:1 contrast while preserving the orange background.

🧠 Review effort: Max

This branch was successfully deployed

1 active deployment
github-pages — 706fda0c Deployed Oct 15, 2026 by aaronpowell via deploy #857
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants