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
Studio Data › Actions: a "Run a script" action is saved without type, so the console treats it as not executable — clicking it sends no request #26734
Filing gate: ① product defect, reproduced, landing site named.
Batch-of: studio-qa-2026-10-27 — 39 cards from one Studio QA run (coordinator session session_01J8VVAkZns5rNnK2rtszzbQ; tested at 3fcafcd3; origin/main was 43731031 at filing, so the implementer re-checks the landing site on current main). The run record is the qa-run issue filed with this batch.
Symptom
The builder writes a script action, publishes, and the button in the app does nothing (or shows its error toast / "not executable: no handler is registered…"). The server endpoint works; only the stored shape is incomplete.
Reproduction
Data › Actions › New › Advanced › New action → What it does "Run a script" → write a body. Draft: {name:"run_script", body:{…}}, no type.
Publish; in the app click it → no request; toast is the action's errorMessage, or for gated "Action "gated" is not executable: no handler is registered under that name and it declares no api, endpoint, navigate, redirect or onClick."
POST /api/v1/actions/gapdata_item/run_script → 200. Adding type: "script" via the API makes the button work.
Expected
Studio writes type: "script" when the builder chooses a script.
Suspected landing site (the implementer verifies)
ui/packages/app-shell/src/views/metadata-admin/inspectors/ActionDefaultInspector.tsx (the Type select shows Script as its default but never commits it).
Filing facts
reach: Studio + console, measured twice by the data gap-fill card.
Business reason: Script actions are the common custom action; Studio-made ones are dead on arrival.
Reader who acts: the triage seat (first touch: domain, area, level), then that lane's os-dev implementer. QA suggestion only: domain:ui, area:studio, p2.
p2: a "Run a script" action is saved without type, so the published button sends nothing. Studio writes the type the action kind requires. From the studio-qa-2026-10-27 batch. Re-check the landing site on current main.
Claim: PM loop round 1
Session: session_01QsR2jTfvjNTaR29ehLk26T
Account: zhuangjianguo
Branch: claude/project-thread-infmae (platform-assigned card-thread branch; a card thread can push only its assigned branch, and the name carries no issue number, so this claim is the identity record)
Worktree: objectstack-issue-26735 (bundled with #26735: same inspector, one PR naming both)
Domain: domain:ui
Seat: domain:ui#4
File surface: ui/packages/app-shell/src/views/metadata-admin/inspectors/ActionDefaultInspector.tsx, studio namespace en.ts/zh.ts only if a label is new, tests beside, one root changeset; ⛔ packages/spec/**, server packages, any new key, a runtime fallback for a typeless action (stop on breach; explain in the report)
Container & model: S, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate; reason: the maintainer's standing rule 「只认领不需要 fable 的卡」, 2026-10-27T10:39Z), effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: the Studio action inspector (ui app-shell, this lane) shows Script on the Type select without committing it, so a script action is stored without type · the platform path that may cover it: the update preset's own type: 'script' (:668), which only that preset reaches · reached by every script action made in Studio
Thread-read: 6447175343
Premise: holds (const type = str('type') || 'script' (ActionDefaultInspector.tsx:629) feeds the select's value with no commit on origin/main e9e344a9 at 2026-10-27T18:58Z)
Serial constraints cleared: PR #26827 (same file) merged 18:57Z; no open PR touches the surface (scan of the 80 most recently updated open PRs 2026-10-27T18:58Z)
Dispatched at 2026-10-27T19:02Z to the card thread on that branch; the order lives in the thread's opening message.
Activity
objectstack-fleet commentedon Oct 27, 2026
Triage: first grade —
priority:p2·domain:ui·area:studio·pm:queue(findingremoved) · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-27T16:13Z⛔ Not a claim, ⛔ not a dispatch.
type, so the published button sends nothing. Studio writes the type the action kind requires. From the studio-qa-2026-10-27 batch. Re-check the landing site on currentmain.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Claim: PM loop round 1
Session:
session_01QsR2jTfvjNTaR29ehLk26TAccount:
zhuangjianguoBranch:
claude/project-thread-infmae(platform-assigned card-thread branch; a card thread can push only its assigned branch, and the name carries no issue number, so this claim is the identity record)Worktree:
objectstack-issue-26735(bundled with #26735: same inspector, one PR naming both)Domain:
domain:uiSeat:
domain:ui#4File surface:
ui/packages/app-shell/src/views/metadata-admin/inspectors/ActionDefaultInspector.tsx, studio namespaceen.ts/zh.tsonly if a label is new, tests beside, one root changeset; ⛔packages/spec/**, server packages, any new key, a runtime fallback for a typeless action (stop on breach; explain in the report)Container & model:
S,mode:thread,model: TIER_DEFAULT(dispatch-gates --tier: no path-derived mandate; reason: the maintainer's standing rule 「只认领不需要 fable 的卡」, 2026-10-27T10:39Z),effort: highClause-②: no
Metadata-protocol: none
Responsibility: the Studio action inspector (ui app-shell, this lane) shows Script on the Type select without committing it, so a script action is stored without
type· the platform path that may cover it: the update preset's owntype: 'script'(:668), which only that preset reaches · reached by every script action made in StudioThread-read: 6447175343
Premise: holds (
const type = str('type') || 'script'(ActionDefaultInspector.tsx:629) feeds the select's value with no commit on origin/maine9e344a9at 2026-10-27T18:58Z)Serial constraints cleared: PR #26827 (same file) merged 18:57Z; no open PR touches the surface (scan of the 80 most recently updated open PRs 2026-10-27T18:58Z)
Dispatched at 2026-10-27T19:02Z to the card thread on that branch; the order lives in the thread's opening message.
Generated by Claude Code