Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

Retire resolveModalTarget's object fallback — a modal target names a page, only (maintainer ruling objectstack#6739-A) #3925

Closed

Description

@os-project-manager

Blocked-by: objectstack-ai/objectstack#6739

Maintainer ruling 2026-08-09 on objectstack#6739 (decision-inbox round, 「全部接受」): a type: 'modal' action's string target names a PAGE, only. The spec TSDoc, the published docs, and defineStack's cross-reference walk are the contract; this repo's page-then-object resolution is consumer leniency and retires.

Deliverable

In packages/app-shell/src/hooks/useActionModal.tsx:

  • resolveModalTarget (:165-196, introduced 6632114bc 2026-08-07): remove the object-name fallback — a modal target that is not a page name is a refusal (diagnostic naming the target and pointing at type: 'form'), not a silent object resolution.
  • The create_x / new_x prefix convention riding the same branch retires with it, and normalizeModalSchema's objectName back-compat note (:66) is re-judged in the same PR. The ruling explicitly declined the third shape (keep prefix, reject bare object names).
  • "Open an object's form from an action" remains fully served by type: 'form' (validated end-to-end upstream).

Sequencing — why Blocked-by

The showcase corpus fix on objectstack#6739 (registry action AND PR #6737's inline button both move to type: 'form' + target: 'showcase_task.edit') must land first, so the reference corpus never depends on the branch being deleted here. objectstack#6889 (inline actions bypass cross-reference validation) proceeds upstream after the same fix; its new checks are what will keep this contract held on the authoring side.

Risk note (from the ruling)

The object branch is 2 days old and its only in-repo consumer is the showcase line being fixed; if implementation discovers deployed metadata relying on the prefix convention, STOP and report the measurement instead of shipping the removal.

Refs: objectstack#6739 (ruling + 5-shape probe), objectstack#6737, objectstack#6889, framework#3530.

Activity

  1. claude commented on Aug 14, 2026

    @claude
    Contributor

    Unlock sweep: blocker cleared. pm:blocked → pm:queue.

    Declared blocker: objectstack-ai/objectstack#6739 — verified closed against the GitHub API on 2026-08-14. No other blocker is declared on this card.

    Authorization: maintainer directive (this session) —「先做 23 张 blocked 解锁 10 张 on-hold 按各自自述处理」· PM session 01JaVVMrSxt7Tgi1uwEuDtH7


    Generated by Claude Code

  2. self-assigned this
    on Aug 16, 2026
  3. yinlianghui commented on Aug 16, 2026

    @yinlianghui
    Contributor

    Claim: 批次 8 补位(座位 repo:objectui,session_01GTRjn8xBqp75dk7kFupVRt,batch:5)。解锁已由 08-14 sweep 核清(os#6739 closed);本卡范围 closed-PR 查重:GitHub 零关联 PR,08-15 班次清单无此卡。
    Branch: claude/issue-3925-retire-modal-object-fallback
    File surface: packages/app-shell/src/hooks/useActionModal.tsx + 其测试;与在飞四单(components×2、layout、plugin-grid)互斥。

    按维护者裁定(os#6739-A)执行:modal target 只命名 page,删 object fallback 与 create_x/new_x 前缀约定,非 page 名给点名诊断指向 type: 'form';normalizeModalSchema 的 objectName back-compat 注记同 PR 重判。风险门(卡内明示):若实测发现已部署元数据依赖前缀约定 → 停手报测量,不发运除。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions