Repository navigation
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationdomain:skillsDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchDispatched to a dev agent by /pm-dispatchpriority:p2Medium: important, M3Medium: important, M3
Description
domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7
Filing gate: an owed follow-up the skills seat noted while landing #30863 (PR #31010), re-read on main today. ⛔ Not a claim. Triage sets the grade and the lane.
class: c · reach: every agent that reads skills/objectstack-ai/SKILL.md before calling the MCP data and action tools.
What is missing
skills/objectstack-ai/SKILL.md's MCP tools table (L198–203 on main):
run_action(L203) does not say it can be refused for want of a confirmation. The row reads "your AI-exposed business Actions — the sameai.exposedopt-in as above". An action flaggedai.requiresConfirmationis refused over MCP with428 ACTION_CONFIRMATION_REQUIREDunless the call carriesconfirm: true, and nothing dispatches (packages/mcp/CHANGELOG.md, the behaviour-change entry;packages/mcp/src/mcp-http-tools.tsACTION_CONFIRMATION_REQUIRED, the member imported asAI_ACTION_CONFIRMATION_MEMBER). The row just above teaches exactly this fordelete_record(PR docs(skills): teach MCP delete_record confirm: true in the objectstack-ai tools table #31010), so an agent reading the table learns the gate for deletes only.resume_runcarries the same gate for a flow action's resume (CHANGELOG,run_action's gates).delete_records(MCP: delete records by filter in one confirmed call, with refusals grouped by reason, instead of one delete_record per row #30891, PR feat(mcp): delete_records deletes many records of one object in one confirmed call #31024, merged 2026-11-06) is not in the table. It deletes many records of one object in one confirmed call (bywhereorrecordIds, at most 200 per call). An unconfirmed call is the preview: it answers the same428with apreviewmember and deletes nothing (.changeset/30891-mcp-delete-records.md). Over OAuth it needsdata:readanddata:write. PR feat(mcp): delete_records deletes many records of one object in one confirmed call #31024 taught the Console skill mirror (ui/apps/console/src/pages/developer/objectstack-skill.test.ts), not this skill.
Sweep
skills/objectstack-ai/evals/skills-tools-knowledge.json should be checked for a case that lists the tools or the confirmation gate, so a correction lands in the evals too.
Level: skills/** text: an '@objectstack/skills': patch changeset, Clause-②: no, Metadata-protocol: none.
Related: #30863, PR #31010, #30813, #30891, PR #31024, #30865.
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationdomain:skillsDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchDispatched to a dev agent by /pm-dispatchpriority:p2Medium: important, M3Medium: important, M3
Activity
objectstack-fleet commentedon Nov 7, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p2 ·
domain:skills· 2026-11-07T03:54Z⛔ Not a claim.
skills/objectstack-ai/SKILL.md's MCP tools table does not teach two things.run_action(andresume_run) can be refused with428 ACTION_CONFIRMATION_REQUIREDunless the call carriesconfirm: true. Anddelete_records(MCP: delete records by filter in one confirmed call, with refusals grouped by reason, instead of one delete_record per row #30891, PR feat(mcp): delete_records deletes many records of one object in one confirmed call #31024, merged) is missing; its unconfirmed call is a preview that deletes nothing.domain:skills.findingremoved,pm:queue.Generated by Claude Code
objectstack-fleet commentedon Nov 7, 2026
domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7
Claim: PM loop round 11 · 2026-11-07T04:49Z
Session:
session_01J8VVAj7CvjkGXvgXzd6RZ7Account:
huangyiireneBranch:
claude/project-thread-qmr8o9(the card thread's designated branch; dev sessionsession_01J8VVAkL29APmM7okwgntB6)Worktree:
objectstack-issue-31080Domain:
domain:skillsSeat:
domain:skills#3File surface:
skills/objectstack-ai/SKILL.md(the MCP tools-table rows ≈L202–203, at most one added row);skills/objectstack-ai/evals/skills-tools-knowledge.json(only a case that lists these tools or grades the confirmation gate);.changeset/*.md(stop on breach)Container & model:
S,mode:thread, project-default model,effort: medium.dispatch-gates --tiermandates the contract-review tier forskills/**(clause ①); waived by the maintainer's standing order in this project (2026-11-03) and said so in the PR body; this seat runs the contract review.Clause-②: no
Metadata-protocol: none
Responsibility:
n/a — not a defect cardThread-read: 6701918564
Premise: holds on
main24bc2593: the tools table teachesconfirm: truefordelete_recordonly (L202); therun_actionrow (L203) omits theai.requiresConfirmationrefusal (428 ACTION_CONFIRMATION_REQUIRED);delete_records(PR #31024) is absent.Serial constraints: none. Token ceiling 6801 (5563 on
main); no ceiling raise.Changeset
'@objectstack/skills': patch.Fixes #31080. Tier read bycheck-governed-mergesat the PR (skills/**is Tier H).objectstack-fleet commentedon Nov 7, 2026
domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7
ACCEPT → PR #31088 comment 6703330968 (seat check and maintainer summary). Tier H: same-head delta PASS on record (6702842692, after one FAIL round 6702719478);
pm:awaiting-mergeset andos-zhuang/hotlongasked to approve. One lint job (Type Check · consumer gates) was cancelled by a runner hang and needs a maintainer re-run before merge; the relay can re-run onlyci.yml.