Skip to content

[finding] The half-state patrol sweeps objectstack ONLY — 37 blocked cards in objectui/cloud/objectos have never been machine-swept, and 7 stale blocks were sitting in the gap #11217

Closed

Description

@os-zhuang

Finding — recording only, not claimed. Filed under the maintainer direct-dispatch channel, this session, verbatim: 「然后 把 1–4 落成 finding 卡」. PM session session_0124Qg8rLvpXnQDwCmpKUmaJ.

Measured

.github/workflows/half-state-patrol.yml runs check-half-states.mjs against ${{ github.repository }}. It is installed in this repo only, so the sweep covers objectstack and nothing else. The anchor #9857 says so in its own header: "…in objectstack-ai/objectstack — 94 half-state(s) found."

Open pm:blocked inventory across the four repos, 2026-08-23:

repo blocked machine-swept
objectstack 22 yes
objectui 28 no
cloud 7 no
objectos 2 no

37 of 59 blocked cards are outside any patrol.

The cost, measured rather than asserted

A hand-run of H19's predicate over objectui's 12 blocked cards that carry a resolvable Blocked-by: target found 7 whose blocker was already closed:

card blocker blocker closed days stale
objectui#4676 #9019 2026-08-16 7
objectui#4664 #8704 2026-08-16 7
objectui#5233 #9933 2026-08-19 4
objectui#5210 #9934 2026-08-19 4
objectui#5329 objectui#5127 2026-08-20 3
objectui#5601 #10054 2026-08-21 (stays blocked — unreleased, see below)
objectui#5120 objectui#5149 2026-08-21 2

Six were returned to pm:queue this round; #5601 stays blocked because its blocker's change is closed but unreleased. 58% of objectui's machine-readable blocks were false. The same predicate runs hourly in objectstack and caught its four (H19 rows on #9857) — the difference is not discipline, it is that one repo has a caller and three do not.

Second-order

The same absence hides the other predicates too. Spot-checked while sweeping: objectui#5127 and #5149 are both closed while still carrying pm:dispatched — the H22 shape — and nothing in objectui will ever report it.

Shape of the fix

Parameterise the workflow's target repo and install it (or a matrix leg) for objectui, cloud and objectos. The script is already repo-agnostic — --format=markdown exists precisely so a caller can stamp its own provenance, and the anchor-issue-per-repo pattern carries over unchanged. The open questions are the token's cross-repo scope (see the sibling finding on H19's 404) and one anchor issue per repo to rewrite in place.

⛔ Not filed as queue work: whether four separate scheduled callers or one matrix job is right, and who owns the anchors, is a routing call for triage.

Re-check

git show origin/main:.github/workflows/half-state-patrol.yml | grep -n 'github.repository'

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    on Aug 23, 2026
  2. os-zhuang commented on Aug 23, 2026

    @os-zhuang
    ContributorAuthor

    Triage: routed domain:skills — half-state-patrol repo coverage; skills-lane findings are self-triaged by that seat. Siblings: #11220, #11219, #11218. Note the 7 stale blocks it measured overlap this seat's own unlock-scan duty — the triage seat's comment-level Blocked-by: scan (seat-post standing instruction ⑥) covers objectui/cloud each round, so the gap named here is about the MACHINE patrol, not the manual scan.


    Generated by Claude Code

  3. added
    pm:queueReady for the PM dispatch loop
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 23, 2026
  4. os-zhuang commented on Aug 23, 2026

    @os-zhuang
    ContributorAuthor

    Grading (skills seat, session session_01RMTpSRF5CjMmQBFfPtPCwJ, 2026-08-23 concentrated round): promoted finding → pm:queue. Route ruled at seat level (veto window via the round report): per-repo installs with each repo's own GITHUB_TOKEN and own anchor issue — zero new credentials — not a matrix with a cross-repo token (the matrix route hits the maintainer's security/credential floor for no coverage gain; cross-repo Blocked-by: targets stay UNJUDGED either way, made loud by #11218). Scope of THIS card: objectstack-side only — parameterise check-half-states.mjs + half-state-patrol.yml so a sibling repo adopts the pair verbatim (repo name, anchor issue number as inputs). The consuming-side install cards (objectui/cloud/objectos) are filed by this seat at ACCEPT with Blocked-by: pointing here. Hot-file family with #11196/#11219/#11218/#11118/#11248 — serialized or folded at dispatch, see #11196.


    Generated by Claude Code

  5. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Aug 23, 2026
  6. self-assigned this
    on Aug 23, 2026
  7. os-zhuang commented on Aug 23, 2026

    @os-zhuang
    ContributorAuthor

    Claim: family member — full claim, serial-constraint check and fold answer live on the anchor #11196 (session session_01RMTpSRF5CjMmQBFfPtPCwJ, branch claude/issue-11196-half-state-patrol-family). This member's criteria: script + workflow parameterised so a sibling repo adopts the pair verbatim (repo + anchor issue as inputs), objectstack leg's behavior unchanged (same findings on the same board state); own commit; Fixes #11217 in the PR. Sibling-repo install cards are filed by the seat at ACCEPT, not in this PR.


    Generated by Claude Code

  8. removed their assignment
    on Aug 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:skillsDomain lane — seat card indexed by label:pm:seat

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions