Skip to content

Commit 2257e8e

Browse files
committed
ci(devx): give check:platform-checklist's red a daily reporting channel
A GitHub Actions workflow on a daily schedule (plus workflow_dispatch) runs `pnpm check:platform-checklist` on `main`. On red it files, or refreshes, one issue carrying the gate's own output; on green it does nothing. The gate stays OUT of per-PR CI, exactly as the standing maintainer decision in lint.yml says — only the reporting channel changes. `scripts/check-platform-checklist-watchdog.mjs` is the static pin, wired into lint.yml on every PR: the workflow exists, fires on schedule + workflow_dispatch, carries NO pull_request / pull_request_target / merge_group trigger, and invokes the gate's package script rather than an inlined copy of its command. Every clause, positive and negative, has a --self-test fixture that makes it fire. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PU9zBGbH2s2ZtxSyu963M3
1 parent 3116d24 commit 2257e8e

5 files changed

Lines changed: 748 additions & 1 deletion

File tree

.github/workflows/lint.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2325,6 +2325,30 @@ jobs:
23252325
# PR. The checklist is a QA ledger, not a code gate; keeping it out of the
23262326
# per-PR path means an unrelated PR is never blocked by checklist drift.
23272327
# Run it by hand: `pnpm check:platform-checklist`. See that dir's README.
2328+
# Its red does have a reporting channel now, and it is NOT this file:
2329+
# `.github/workflows/platform-checklist-watchdog.yml` runs the gate on `main`
2330+
# daily and files or refreshes one issue when it is red.
2331+
2332+
# ⛔ …and the step below is NOT that wiring. `check:platform-checklist` still
2333+
# never runs on a pull request. What runs here is the STATIC PIN over the
2334+
# watchdog workflow: it asserts the file exists, fires on `schedule:` +
2335+
# `workflow_dispatch:`, carries NO `pull_request:` / `pull_request_target:` /
2336+
# `merge_group:` trigger, and invokes the gate through its package script
2337+
# rather than an inlined copy of its command. Two file reads, no socket.
2338+
#
2339+
# It has to live HERE rather than inside the watchdog. The watchdog runs on no
2340+
# pull request by construction — that absence is the very thing being pinned —
2341+
# so it cannot judge the PR that edits it, and a PR DELETING it would silence
2342+
# any check that lived inside it. This job is the only place where the absence
2343+
# of that file is observable before it merges.
2344+
#
2345+
# Invoked as `node scripts/…` rather than a `pnpm check:*` alias: see the GATE
2346+
# INVOCATION IDIOM note at the top of this file. The `--self-test` leg runs
2347+
# first because a checker whose own cases failed has no verdict worth printing.
2348+
- name: Platform-checklist watchdog workflow pin
2349+
run: |
2350+
node scripts/check-platform-checklist-watchdog.mjs --self-test
2351+
node scripts/check-platform-checklist-watchdog.mjs
23282352
23292353
# #3280/#3290 org-identifier guard: `organizationId` is the blessed
23302354
# developer-facing name for the caller's active org in hook/action bodies;

0 commit comments

Comments
 (0)