Repository navigation
ci: open or update an issue when a scheduled Unlocked Resolution run fails (#1242) - #1243
Conversation
…fails (#1242) unlocked-resolution.yml was the third scheduled-only check and the only one still without the #1239 signal. Add the same report-scheduled-failure job, add it to the 1239 guard's CALLERS, and grant issues: write on release.yml's call so check-workflow-calls does not refuse the release run.
|
Cross-family review — codex (gpt-5.5), pre-PR pass, diff unchanged at 233a5d8
Internal (Claude, advisory) review also APPROVEd: no Critical/Major; one Suggestion to reword the inserted CLAUDE.md clause, which lands with the docs-sync commit. Also verified locally with the pinned upstream |
Demo evidence (Phase 11) — Showboat, CLI-only
Full narrated demo: |
|
Claude finished @frankbria's task in 3m 7s —— View job I'll analyze this and get back to you. |
ReviewSmall, well-scoped CI change — I traced the diff against the two sibling callers ( Correctness
Design note (already called out in the PR, agree with the call): gating only on Nothing blocking. The implementation note about I wasn't able to execute the test suite or |
ReviewThis is a clean, minimal change that wires Verified against the siblings:
No correctness, security, or test-coverage issues found. This is a pure CI/workflow-config change (no application code), so the usual code-quality/performance concerns don't really apply — the main risk surface is "does the YAML shape match what the guard test and GitHub's reusable-workflow permission checker expect," and it does. Two minor, non-blocking observations (not asking for changes):
Nice use of TDD (RED→GREEN) for the guard-table change, and the cross-family (codex) + internal review notes already on this thread line up with what I see in the diff. |
Final Triage Summary (PR #1243)Cutoff: 2026-09-17T15:16:26Z Fixed
Skipped (with justification)
Pre-PR: codex (cross-family) no findings; internal advisory APPROVE with one prose suggestion, applied in 67c164b. |
|
Post-merge disposition: no new issues — the only deferred item ( |

Summary
Implements #1242: Wire
unlocked-resolution.ymlinto the scheduled-failure issue signal from #1239.unlocked-resolution.ymlgains the samereport-scheduled-failurejobtest.ymlandweb-ui-audit.ymlcarry:needs: [unlocked-install],if: failure() && github.event_name == 'schedule',uses: ./.github/workflows/scheduled-failure-issue.yml,permissions: issues: write. The header note that said a red scheduled run "does not open an issue" is replaced.release.ymlgrantscontents: read+issues: writeon itsunlocked-resolutioncall, with the same commentdeploy.ymlcarries fortest.yml(ci: open or update an issue when a scheduled Test Suite or Web UI Audit run fails (#1239) #1241), so the upstreamcheck-workflow-callsguard does not refuse the release run."unlocked-resolution.yml": ["unlocked-install"]added toCALLERSintests/ci/test_scheduled_failure_signal_1239.py(RED first: 3 failures, then GREEN).CLAUDE.md: one clause in the Unlocked Resolution paragraph naming the signal.Acceptance Criteria
unlocked-resolution.ymlends withreport-scheduled-failure(needs,if,uses,permissions: issues: write); header note updated"unlocked-resolution.yml"inCALLERSof the [P3.24] A red scheduled Test Suite run is invisible: add a failure signal for the nightly full sweep #1239 guardrelease.ymlgrantsissues: writeon its call (verified with the pinned upstreamcheck_workflow_calls.py: OK on all 14 workflows; removing the grant reproduces thestartup_failureunder-grant)Test Plan
tests/ci/test_scheduled_failure_signal_1239.py+test_unlocked_resolution_guard_1169.py;tests/ci90 passedactionlint .github/workflows/*.ymlclean;ruff checkcleangpt-5.5) — no findingsKnown Limitations / Intentionally Deferred
failure()only, as in the two sibling callers and as the [P3.24] A red scheduled Test Suite run is invisible: add a failure signal for the nightly full sweep #1239 guard pins. A cancelled scheduled run files nothing. Decided against(failure() || cancelled()): a cancel is usually deliberate, and the next morning's run reports on its own. Revisit if an infra abort ever goes unnoticed.scheduleevent by design). The job shape, the guard, actionlint, and the upstream permission checker are the evidence; the same mechanism has been live fortest.yml/web-ui-audit.ymlsince ci: open or update an issue when a scheduled Test Suite or Web UI Audit run fails (#1239) #1241.Implementation Notes
workflow_call,github.event_nameis the caller's event, so whenrelease.ymlcalls this workflow the new job never fires. The grant on that call exists only to satisfy GitHub's reusable-workflow scope rule.Closes #1242