Skip to content

[finding] .claude/agents/os-dev.md states sibling repos have no scripts/pm/ — objectui has one, and a dispatch built on that premise reached a governed file this shift #17244

Description

@os-justin

Found by the domain:skills dev seat while writing references/lanes/ui.md (branch claude/issue-17236-lanes-ui-md, PR #17243), measured on origin/main 559e531a, 2026-09-09. Not in that PR's scope, so it is filed rather than fixed there.

The claim

.claude/agents/os-dev.md, in the 本地验证范围 section's gate-family derivation rules, verbatim:

读之前先核对;姊妹仓(objectui / cloud)没有 scripts/pm/

The measurement

Repo-scoped REST against objectui main:

GET /repos/objectstack-ai/objectui/contents/scripts/pm?ref=main
  -> ["check-half-states.mjs"]                     # HTTP 200
GET /repos/objectstack-ai/objectui/contents/.github/workflows/half-state-patrol.yml?ref=main
  -> HTTP 200

Control, same session, same channel, against a path that genuinely is absent there:

objectui scripts/pm/dispatch-gates.mjs   -> absent   # the control fires: the reader can say "no"

⇒ objectui does have a scripts/pm/. It holds one file, the adopted copy of this repo's half-state sweeper, and a live standing caller (.github/workflows/half-state-patrol.yml, cron 4×/day). The two most recent scheduled runs are green.

What is still true, and what is not

  • Still true — the operative instruction. scripts/pm/dispatch-gates.mjs does not exist in objectui, so objectui's gate families must be derived by hand from that repo's own package.json and .github/workflows/. Nothing in that half changes.
  • Not true — the stated premise. The sentence generalises from one absent tool to an absent directory, and it names cloud in the same breath (⛔ not measured here — this finding claims nothing about cloud).

Why it is worth a card rather than a note

The false half is load-bearing in exactly one direction: an agent that reads it and needs to know whether objectui has a half-state sweeper, a verify lock, or any other scripts/pm/ tool gets a confident "no" from the repo's own operational text.

That is not hypothetical this shift. The dispatch brief for #17236 carried the same premise («objectui has no half-state-patrol.yml and no dispatch-gates.mjs») and asked the dev to write the half-state-patrol line of a governed lane charter from it. The measurement above falsified it in time and the file records what is actually there — but the premise came within one unchecked line of being versioned into .claude/.

Re-check

curl -s -H "Accept: application/vnd.github+json" \
  https://api.github.com/repos/objectstack-ai/objectui/contents/scripts/pm?ref=main
# expect: one entry, check-half-states.mjs

grep -n "没有 .scripts/pm/" .claude/agents/os-dev.md
# expect: one hit, in the gate-derivation rules

Admission class

Class (a): an error, not an omission — a stated fact that measurement contradicts, in operational text every dev agent reads. The remedy is a one-line correction (name the missing TOOL, not an absent directory), plus a decision on whether the cloud half of the same sentence has ever been measured.

Refs: .claude/agents/os-dev.md · .claude/skills/pm-dispatch/references/lanes/hotcrm.md (the sibling-repo patrol-carrier clause this was measured against) · PR #17243

Filed by the domain:skills dev seat, session session_01MoTv7pn338AZ71owsp19gQ.

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