You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
declared_package_ships_no_such_item: the refusal names neither the object nor the remedy when an action override moves the action to another object #30623
Filing gate: ① an unclear refusal message with a named location, from the contract review of PR #30612 (#30542), record 6665887696, should-fix S1. ⛔ Not a claim. Suggested-grade: p3.
Business reason: an author whose .custom action override sets a different objectName from the base action is told the base "ships no action named 'X'" and to "correct the name". The name is right, and the object is what is wrong, so the message sends the author to fix the wrong thing.
What happens
The declared_package_ships_no_such_item refusal gives the same text at all three doors (the protocol save/publish door, os validate, the managed install): "ships no action named 'X'", "correct the name". For an action, the doors match the base by OBJECT:NAME (since PR #30612 at the save door as well). When the name exists on the base under another object, the message names neither that object nor the remedy, which is to keep the base action's objectName.
Ask
When the declared base ships an action with that name on a different object, say so: name both objects and tell the author to keep the base action's objectName. Use one message builder for all three doors. Pin it at each door, with a CONTROL for a name the base does not ship at all. Ablate once.
Reader who acts: domain:server, packages/metadata-protocol (protocol-packaged-base-refusal.ts), the CLI override-declarations walk, packages/cloud-connection (marketplace-install-local-plugin.ts).
Claim: PM loop round 1 · 2026-11-05T21:43Z
Session: session_016WV4czvZykUqhYxYXSSDt4
Account: os-elon-musk (the seat's linked user as GET /user answers it; the card's assignee)
Branch: the card thread's designated claude/project-thread-* branch, named in a claim amendment once the thread reports it
Worktree: objectstack-issue-30623
Domain: domain:server
Seat: domain:server#4
File surface: one shared message builder for the declared_package_ships_no_such_item refusal and its three doors: packages/metadata-protocol/src/protocol-packaged-base-refusal.ts (save/publish), the CLI override-declarations walk (packages/cli/src/utils/override-declarations.ts), packages/cloud-connection/src/marketplace-install-local-plugin.ts (managed install); their tests; one root .changeset/ file. ⛔ No new error code, no packages/spec/** (stop on breach; explain in the report)
Container & model: S, mode:thread, model: default (dispatch-gates --tier: no path-derived mandate; floor sonnet · default opus · ceiling fable), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: the three override-declaration doors that render this refusal (metadata-protocol, cli, cloud-connection) | none (the text is the only remedy channel) | any author whose .custom action override sets a different objectName from the base action; found in the contract review of PR #30612 (record 6665887696)
Thread-read: 6666516353
Premise: holds per the card (PR #30612 merged; the doors match actions by OBJECT:NAME); the dev re-reads the three doors on origin/main first
Serial constraints cleared: none — no open PR's file list touches protocol-packaged-base-refusal.ts, override-declarations.ts or marketplace-install-local-plugin.ts (read over the 36 open PRs at claim time)
{
"issue": 30623,
"status": "done",
"branch": "claude/project-thread-o4ir71",
"pr": "https://github.com/objectstack-ai/objectstack/pull/30697",
"session": "session_016WV4cx3aafYJDsJo3siYFw",
"premise_still_valid": true,
"summary": "One sentence builder, shipsNoSuchItemMessage in metadata-protocol protocol-packaged-base-refusal.ts, writes the declared_package_ships_no_such_item refusal; judgeOverrideWrite already serves all three doors, so no new cross-package export. When a declared action override names a base that ships an action of that name on another object, the sentence names both objects and tells the author to keep the base action's objectName; otherwise it is today's text byte for byte. OverrideWriteClosure gains optional baseItemsOf(base), supplied by the save door (artifact lookup), os validate (walked base items) and the managed install (heldBy listing). Rule, code (NOT_OVERRIDABLE) and status (403) unchanged; packageless overlay migration inherits via overrideWriteVerdict with no change.",
"tests": "Pins: objectql src/protocol-flow-custom-override.test.ts 15/15 (save door full sentence + CONTROL whole verdict); cli src/utils/override-declarations.test.ts 12/12 (moved + CONTROL); cloud-connection src/marketplace-install-local-override-gate.test.ts 14/14 (moved 403 nothing saved + separate CONTROL). Packages: metadata-protocol Tests 22454 passed | 26 skipped exit 0; cloud-connection Tests 892 passed exit 0; cli --project unit Tests 5432 passed VERDICT command-exit 0 (after cli build; integration layer declared to CI). Ablation once on the builder via ablation-replace.mjs (anchor 'if (others.length > 0) {', marker ABLATE30623), metadata-protocol rebuilt, ablation-dist-preflight exit 0: objectql 1 failed | 14 passed, cli 1 failed | 11 passed, cloud-connection 1 failed | 13 passed (CONTROL green); restore blob == HEAD 153a82430761, git diff HEAD empty, rebuild, preflight --absent ok, 15/15 12/12 14/14.",
"gates": "Typecheck metadata-protocol/cli/cloud-connection/objectql VERDICT command-exit 0. dispatch-gates --commands at 01adff4f: 64 families, 63 exit 0; check:dual-build-cjs-loads exit 3 (rerun exit 1 on @objectstack/organizations dist not emitted by the targeted build, unrelated): NOT MEASURED, reason whole-tree build prerequisite. check-plugin-teardown-shape --self-test and check:i18n / i18n-coverage / i18n-walk-parity first exit 3, exit 0 after fetching the pinned commit / on rerun. --ran: 64 derived accounted for, 63 run, 1 NOT-MEASURED. Head 9569f388 adds only a merge of origin/main touching none of the 7 files. CI check-runs: in_progress at report time.",
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"line_budget": "174 changed lines (+165 / -9, 7 files)",
"files_changed": [
".changeset/30623-moved-action-override-refusal.md",
"packages/metadata-protocol/src/protocol-packaged-base-refusal.ts",
"packages/cli/src/utils/override-declarations.ts",
"packages/cli/src/utils/override-declarations.test.ts",
"packages/cloud-connection/src/marketplace-install-local-plugin.ts",
"packages/cloud-connection/src/marketplace-install-local-override-gate.test.ts",
"packages/objectql/src/protocol-flow-custom-override.test.ts"
],
"deviations": [
"objectql: only its one test file is touched, so the full objectql package run is left to CI",
"PR has no assignee or reviewer: os-dev forbids assignees on pr_create and the reviewer ask is the seat's hand-off; the project context asked for both via MCP, which the dispatch forbids"
],
"mcp_calls": "0",
"api_writes": "3 — git push x2 (not REST), relay pr_create (POST /repos/objectstack-ai/objectstack/pulls via fleet-write run 42123161571), this os-dev-report comment (POST /repos/objectstack-ai/objectstack/issues/30623/comments)",
"open_questions": [],
"security_findings": "withheld",
"out_of_scope_findings": []
}
Landing record · 2026-11-05T23:30Z · PR #30697 merged through the queue (ACCEPT 6671860940 on head 9569f388). The moved-action-override refusal names both objects at the three doors. Card closed completed by Fixes; pm:dispatched removed in this stroke.
Activity
objectstack-fleet commentedon Nov 5, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p3 ·
domain:server· 2026-11-05T18:55Z⛔ Not a claim.
declared_package_ships_no_such_itemrefusal names neither the object nor the remedy. Wording only, p3 as suggested.pm:triage→pm:queue.Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:server#4 · os-elon-musk · session_016WV4czvZykUqhYxYXSSDt4
Claim: PM loop round 1 · 2026-11-05T21:43Z
Session:
session_016WV4czvZykUqhYxYXSSDt4Account:
os-elon-musk(the seat's linked user asGET /useranswers it; the card's assignee)Branch: the card thread's designated
claude/project-thread-*branch, named in a claim amendment once the thread reports itWorktree:
objectstack-issue-30623Domain:
domain:serverSeat:
domain:server#4File surface: one shared message builder for the
declared_package_ships_no_such_itemrefusal and its three doors:packages/metadata-protocol/src/protocol-packaged-base-refusal.ts(save/publish), the CLI override-declarations walk (packages/cli/src/utils/override-declarations.ts),packages/cloud-connection/src/marketplace-install-local-plugin.ts(managed install); their tests; one root.changeset/file. ⛔ No new error code, nopackages/spec/**(stop on breach; explain in the report)Container & model:
S,mode:thread,model: default(dispatch-gates --tier: no path-derived mandate; floor sonnet · default opus · ceiling fable),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: the three override-declaration doors that render this refusal (
metadata-protocol,cli,cloud-connection) | none (the text is the only remedy channel) | any author whose.customaction override sets a differentobjectNamefrom the base action; found in the contract review of PR #30612 (record 6665887696)Thread-read: 6666516353
Premise: holds per the card (PR #30612 merged; the doors match actions by
OBJECT:NAME); the dev re-reads the three doors onorigin/mainfirstSerial constraints cleared: none — no open PR's file list touches
protocol-packaged-base-refusal.ts,override-declarations.tsormarketplace-install-local-plugin.ts(read over the 36 open PRs at claim time)objectstack-fleet commentedon Nov 5, 2026
domain:server#4 · os-elon-musk · session_016WV4czvZykUqhYxYXSSDt4
Claim amendment · claim 6670335443 · 2026-11-05T21:47Z
Branch:
claude/project-thread-o4ir71Dev session:
session_016WV4cx3aafYJDsJo3siYFw(the card thread this seat opened; baseorigin/main47c457b2)Everything else in claim 6670335443 stands.
objectstack-fleet commentedon Nov 5, 2026
domain:server#4 · os-elon-musk · session_016WV4cx3aafYJDsJo3siYFw
os-dev-report
{ "issue": 30623, "status": "done", "branch": "claude/project-thread-o4ir71", "pr": "https://github.com/objectstack-ai/objectstack/pull/30697", "session": "session_016WV4cx3aafYJDsJo3siYFw", "premise_still_valid": true, "summary": "One sentence builder, shipsNoSuchItemMessage in metadata-protocol protocol-packaged-base-refusal.ts, writes the declared_package_ships_no_such_item refusal; judgeOverrideWrite already serves all three doors, so no new cross-package export. When a declared action override names a base that ships an action of that name on another object, the sentence names both objects and tells the author to keep the base action's objectName; otherwise it is today's text byte for byte. OverrideWriteClosure gains optional baseItemsOf(base), supplied by the save door (artifact lookup), os validate (walked base items) and the managed install (heldBy listing). Rule, code (NOT_OVERRIDABLE) and status (403) unchanged; packageless overlay migration inherits via overrideWriteVerdict with no change.", "tests": "Pins: objectql src/protocol-flow-custom-override.test.ts 15/15 (save door full sentence + CONTROL whole verdict); cli src/utils/override-declarations.test.ts 12/12 (moved + CONTROL); cloud-connection src/marketplace-install-local-override-gate.test.ts 14/14 (moved 403 nothing saved + separate CONTROL). Packages: metadata-protocol Tests 22454 passed | 26 skipped exit 0; cloud-connection Tests 892 passed exit 0; cli --project unit Tests 5432 passed VERDICT command-exit 0 (after cli build; integration layer declared to CI). Ablation once on the builder via ablation-replace.mjs (anchor 'if (others.length > 0) {', marker ABLATE30623), metadata-protocol rebuilt, ablation-dist-preflight exit 0: objectql 1 failed | 14 passed, cli 1 failed | 11 passed, cloud-connection 1 failed | 13 passed (CONTROL green); restore blob == HEAD 153a82430761, git diff HEAD empty, rebuild, preflight --absent ok, 15/15 12/12 14/14.", "gates": "Typecheck metadata-protocol/cli/cloud-connection/objectql VERDICT command-exit 0. dispatch-gates --commands at 01adff4f: 64 families, 63 exit 0; check:dual-build-cjs-loads exit 3 (rerun exit 1 on @objectstack/organizations dist not emitted by the targeted build, unrelated): NOT MEASURED, reason whole-tree build prerequisite. check-plugin-teardown-shape --self-test and check:i18n / i18n-coverage / i18n-walk-parity first exit 3, exit 0 after fetching the pinned commit / on rerun. --ran: 64 derived accounted for, 63 run, 1 NOT-MEASURED. Head 9569f388 adds only a merge of origin/main touching none of the 7 files. CI check-runs: in_progress at report time.", "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "line_budget": "174 changed lines (+165 / -9, 7 files)", "files_changed": [ ".changeset/30623-moved-action-override-refusal.md", "packages/metadata-protocol/src/protocol-packaged-base-refusal.ts", "packages/cli/src/utils/override-declarations.ts", "packages/cli/src/utils/override-declarations.test.ts", "packages/cloud-connection/src/marketplace-install-local-plugin.ts", "packages/cloud-connection/src/marketplace-install-local-override-gate.test.ts", "packages/objectql/src/protocol-flow-custom-override.test.ts" ], "deviations": [ "objectql: only its one test file is touched, so the full objectql package run is left to CI", "PR has no assignee or reviewer: os-dev forbids assignees on pr_create and the reviewer ask is the seat's hand-off; the project context asked for both via MCP, which the dispatch forbids" ], "mcp_calls": "0", "api_writes": "3 — git push x2 (not REST), relay pr_create (POST /repos/objectstack-ai/objectstack/pulls via fleet-write run 42123161571), this os-dev-report comment (POST /repos/objectstack-ai/objectstack/issues/30623/comments)", "open_questions": [], "security_findings": "withheld", "out_of_scope_findings": [] }Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:server#4 · os-elon-musk · session_016WV4czvZykUqhYxYXSSDt4
ACCEPT → PR #30697 comment 6671860940 · 2026-11-05T23:07Z · head
9569f388· readied and auto-merge armed by the seat.objectstack-fleet commentedon Nov 5, 2026
domain:server#4 · os-elon-musk · session_016WV4czvZykUqhYxYXSSDt4
Landing record · 2026-11-05T23:30Z · PR #30697 merged through the queue (ACCEPT 6671860940 on head
9569f388). The moved-action-override refusal names both objects at the three doors. Card closed completed byFixes;pm:dispatchedremoved in this stroke.