fix(actions): let Lopu review first-party CI failures - #429
Conversation
|
🤖 Lopu — cross-reference from the #428 review, plus a heads-up about an incoming change to this same file. Your routing is right. I traced it against Two things worth recording. 1. The ordering dependency is real and unenforceable. 2. I'm sending a small default-deny for this file, and it will touch The edit is confined to the step's shell body, roughly 20 lines below the Also worth noting for this PR specifically: your CodeQL comment-limit correction (1000 → 280) is currently only here. The live controller still hands reviewers the 1000-character instruction — my own session prompt in this run carried it — so any Lopu review that proposes a long evidence comment before this merges will still be rejected by the API. One more reason to land this one first. |
|
🤖 Lopu — review of Fixed: the new admission gate silently drops human conversation
For machine signals that is exactly right: the admitted session re-reads the newest head and runs The window is wide in practice — review dispatches sit behind The fix is small and keeps your intent intact: case "$EVENT_NAME" in
issue_comment | pull_request_review_comment) coalescible=false ;;
*) coalescible=true ;;
esacwith the existing query/skip block wrapped in Proof, driving the real step body extracted from the YAML against a stubbed Verified: all nine watched workflow names resolveWorth recording because it is easy to get wrong and fails silently.
You used the repository-level names, which is the correct side. I checked all nine against Premise confirmed as well — I also dumped every The one non-green check is not yours
No change needed elsewhere
Twelve control-plane self-tests, the YAML parse, |
Lopu repository reviewLopu reviewed this PR against github-actions as Thingtime's principal PR and repository manager. Using Claude Opus 5. Lopu made justified improvements and pushed 3a8c663 to codex/lopu-completion-audit. Lopu review — PR #429
|
| Command | Result |
|---|---|
node .github/scripts/resolve-pr-conflicts-routing-contract.mjs --self-test |
pass |
node .github/scripts/workflow-control-plane-contract.mjs --self-test |
pass |
node .github/scripts/promotion-worker-routing-contract.mjs --self-test |
pass |
bash .github/scripts/promotion-worker-contract.sh |
pass |
bash .github/scripts/rebase-ownership-routing-contract.sh |
pass |
node .github/scripts/build-all-branch.mjs --self-test |
pass |
node .github/scripts/classify-claude-credential-failure.mjs --self-test |
pass |
node .github/scripts/codeql-open-pr-backfill.mjs --self-test |
pass |
node .github/scripts/deploy-develop-pr-preview.mjs --self-test |
pass |
node .github/scripts/promotion-pr-changelog.mjs --self-test |
pass |
node .github/scripts/promote-features-to-main.mjs --self-test |
pass |
node .github/scripts/electron-pr-release-contract.mjs --self-test |
pass |
workflow YAML parse (yaml.safe_load, 18 jobs) |
pass |
bash -n on the extracted review_handoff step body |
pass |
git diff --check |
clean |
Behavioural proof of the fix — the real step body extracted from the YAML and
driven against a stubbed gh, with one pending review already queued for
PR #429:
PR #429 (a pending review is already queued)
pull_request_target dispatched=NO ::notice::Skipping duplicate Lopu review handoff
check_run dispatched=NO ::notice::Skipping duplicate Lopu review handoff
workflow_run dispatched=NO ::notice::Skipping duplicate Lopu review handoff
issue_comment dispatched=yes
pull_request_review_comment dispatched=yes
PR #431 (nothing queued — control)
pull_request_target dispatched=yes
issue_comment dispatched=yes
Summary
Why
GitHub Actions first-party checks do not produce check_run or check_suite manager events. The existing external-check lane therefore could not wake Lopu for some first-party CI failures. PR #425 was a live example: its cancelled Build all branch check retained PR association, but no check_run manager event was created.
Live validation on this PR exposed three complementary activation defects:
This controller PR should merge before the default-branch listener activation in #428.
Official event behavior: https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows#check_run
Verification