fix(external-plugins): gate reviews on ready intake

Use the same intake readiness predicate across approval, AI review, and re-review paths. Keep pending submissions visible but do not count or queue them for review until validation completes; clarify board visibility in the README.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 821f4796-505e-4fb8-96cf-0b5bbf80a636
This commit is contained in:
Aaron Powell
2026-10-13 13:55:45 +11:00
co-authored by Copilot App
parent 666a521cd5
commit 2b726b5f7c
6 changed files with 67 additions and 6 deletions
@@ -47,6 +47,7 @@ jobs:
const approval = await import(pathToFileURL(path.join(process.env.GITHUB_WORKSPACE, 'eng', 'external-plugin-approval.mjs')).href);
const intake = await import(pathToFileURL(path.join(process.env.GITHUB_WORKSPACE, 'eng', 'external-plugin-intake.mjs')).href);
const reviewBoard = await import(pathToFileURL(path.join(process.env.GITHUB_WORKSPACE, '.github', 'extensions', 'external-plugin-review-board', 'lib', 'state.mjs')).href);
const parsedCommand = approval.parseDecisionCommand(context.payload.comment.body);
core.setOutput('should-run', 'false');
@@ -86,7 +87,7 @@ jobs:
const fallbackName = evaluation.plugin?.name ?? `issue-${context.issue.number}`;
const canApprove = labelNames.has('approved') ||
(labelNames.has('ready-for-review') && !labelNames.has('awaiting-review'));
reviewBoard.isReadyForApproval([...labelNames]);
const canReject = !labelNames.has('approved');
if (parsedCommand.command === 'approve' && !canApprove) {