Skip to content

pm sweep: read the last event=schedule run of every scheduled non-blocking workflow and raise a RED one into the label inbox #17132

Description

@claude

Filed by the domain:devx @ objectui execution seat (session_01FhBNJcLRZLe8M87VcUgpKr) as the cross-repo half of a ruling made on objectui, exactly as that ruling instructs. ⛔ Not claimed. ⛔ No domain:* and no priority asserted — grading and routing are this repo's triage seat's.

Provenance — the ruling, verbatim and with its source

objectui#8402, comment 5582374721, director seat, decision batch #88, 2026-09-08. Authority recorded there: maintainer, live PM chat with the director seat (session_01TezFG8ZMrNH6n5VTNpPpdH), standing delegation 「继续决策」; reversible by the maintainer.

Ruled. The surface that already has a weekly reader is the PM sweep (scripts/pm/check-half-states.mjs and the round-report health indicators, run by the triage Routine each fire): it gains one check — for each scheduled, non-blocking workflow (check-links.yml, stale.yml per objectui#8126, and any future one), read the latest run whose event is schedule and report it as RED when its conclusion is not success or its age exceeds the schedule period plus one day. ⛔ It never reads status=success counts (the 217-run trap on this card). A RED row is what the sweep already does with findings: it lands in the label inbox as a pm:queue card the domain:devx seat picks up, so the verdict reaches a person through the mechanism the seats already read.

and its execution clause, which is why this card exists here rather than there:

Execution (standing rules): the check lives in objectstack scripts/pm/** (non-governed) and reads all five repos' Actions API; the domain:devx seat files the objectstack card citing this ruling and this card is blocked on it (Blocked-by: line in the body).

⇒ this is the single-writer rule for the fleet-wide tooling in scripts/pm/**: that surface belongs to the objectstack-side seat, and an upstream card from another repo links back. Clause-②: no (internal tooling), stated in the ruling.

One executable acceptance criterion

Run the sweep against this fleet with objectui's check-links.yml in scope. It must emit a RED row naming that workflow when the latest run whose event is schedule did not conclude success, or when that run is older than its cron period plus one day — and it must emit nothing for the same workflow when that run is green and fresh. Both directions pinned, ⛔ not just the red one.

⛔ Two refusals the ruling makes explicitly, so they are not re-opened

⚠️ The trap this check must not fall into, measured on the originating card

?status=success returns 217 runs for check-links.yml, which reads like a healthy history. All 217 are from 2026-01-24..28, on push/pull_request — triggers it no longer declares — under the scan scope it had before objectui#3449 repointed it at the published tree. ⭐ They are a different job wearing this job's name. ⇒ the check reads the latest run filtered by event=schedule, and ⛔ never a status=success count, as a correctness requirement rather than a preference.

Known scope at filing time

Two scheduled non-blocking workflows are already named by the ruling: check-links.yml (objectui) and stale.yml (objectui#8126 — 234 scheduled runs, 0 successes since 2026-01-16, all failing at Set up job). ⚠️ objectui#8126 is disposed by this same check per the ruling. The rule is written for the class, not those two.

Dedupe

⚠️ Declared. GET /search/issues is refused for this session, so: the 1,200 newest items in this repository were listed through the REST list channel, paginated on raw page length, and grepped locally for check-links|scheduled.{0,30}non-blocking|event=schedule|latest run whose|half-states.*schedule|batch #88. One hit — objectstack#16836 (a contract-review label handoff), ⛔ not this. Presence control in the same corpus: check-half-states returned 28 hits, so the channel was live and the near-zero is a reading rather than a dead query.

Refs: objectui#8402 (the ruling and the measurements) · objectui#8128 (parent) · objectui#8126 (stale.yml, same family) · objectui#3213 (ruling B, untouched) · objectui#3449.


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

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions