Skip to content

ci(pm): retire the half-state patrol's schedule — on demand only; every scheduled invocation of the patrol action stops (ruling #208 on #19491) #19497

Description

@os-project-manager

Path: none | tooling | maintainer-directed (ruling #208 on #19491) — dispatched at filing, never queued

Filed and dispatched by the director seat, summon #25 (session_012GcsUbuqFGBibkEDMRC1eE), under the maintainer's verbatim direct-dispatch instruction: Ruling #208 on #19491 — maintainer 「19491 接受你的建议,并立刻派发处理相关任务。」 (2026-09-21, chat, on the director seat's 档 2 package R1–R7). Direct-dispatch channel (SKILL.md 〈多仓协调〉规则 4 「维护者直派通道」): the audit quote above is the authorization; ⛔ not a triage grading, ⛔ never queued. The full analysis and measured table are the ruling record on #19491.

Why (measured, 2026-09-21T03:43Z, origin/main 4045781)

scripts/pm/check-half-states.mjs is 36,717 lines / 2.48 MB with 68 H rows, changed 52 times in 14 days (8 times on 2026-09-20, every one a misread repair). It blocks no branch, but the charter made its anchor rows a dispatch precondition, so a row that misreads a now-legal state costs every executive seat a handling step, four times a day, until a dev repairs the row — the loop the maintainer asked to stop (「留着却不继续开发,会不会反而不停的报错误的信息」 — yes, and this card is the answer). Ruled: retire the schedule, keep the script runnable on demand, delete no line of it; the charter half (the anchor is no longer a precondition) is the sibling charter card filed with this one.

The change (.github/** — not on the governed register: Tier S, the director seat lands it after an at-tier read)

  1. .github/workflows/half-state-patrol.yml: remove the schedule: block (today cron: '37 1,7,13,19 * * *'); keep workflow_dispatch: {} exactly. Rewrite the header prose that explains the four-times-a-day cadence and the :37 offset so it describes on-demand use, citing this ruling (objectstack#19491, ruling 🔗 Broken links detected in documentation #208) — the file's own comments must not promise a schedule that no longer exists.
  2. Census every other scheduled path into the patrol: git grep -n 'half-state-patrol' .github (PR ci(pm): make the half-state patrol callable instead of copied #19225 made the patrol a callable action, .github/actions/half-state-patrol/action.yml; board-snapshot.yml, checklist-status.yml, merged-branch-reaper.yml were hits on a wider grep). Any workflow that runs the patrol action on a schedule loses that call or that schedule in this PR (say which, per file); a workflow that calls it only on workflow_dispatch or as part of a maintainer-run job stays. ⛔ Do not touch the action file or the script.
  3. The anchor issue (vars.HALF_STATE_ANCHOR_ISSUE) keeps its last body; the triage seat may run the workflow by hand for its daily full reconciliation. Row H57 (「the workflow's latest scheduled run is green and fresh」) will read the retired schedule as stale on every on-demand run: state this in the PR body as a known, unread reading; ⛔ do not edit check-half-states.mjs for it — if a one-line fix exists, put it in out_of_scope_findings.

Acceptance

  • git grep -n 'cron' .github/workflows/half-state-patrol.yml = 0 with control git grep -n 'workflow_dispatch' .github/workflows/half-state-patrol.yml = 1; the census of item 2 listed file by file with the verdict per file.
  • Every family node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derives for a .github/workflows/** diff (workflow lint / self-test-wired / gate-population families), exit codes captured before any pipe; bash scripts/ci/select-gate-families.selftest.sh still passes (it reads lint.yml, untouched here).
  • PR body: the ruling quote, the census, the H57 note; skip-changeset (nothing under packages/**).

Out of scope

The charter's anchor-precondition lines (sibling card); the self-test scoping in lint.yml (sibling card); any trimming of the 68 rows (⛔ ruled not now — a PR on a 36,717-line file is its own risk; if the script stays unused for a month it is deleted whole, on its own card).


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions