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.
Blocked-by: objectstack-ai/objectstack#6739
Maintainer ruling 2026-08-09 on objectstack#6739 (decision-inbox round, 「全部接受」): a
type: 'modal'action's stringtargetnames a PAGE, only. The spec TSDoc, the published docs, anddefineStack'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, introduced6632114bc2026-08-07): remove the object-name fallback — amodaltarget that is not a page name is a refusal (diagnostic naming the target and pointing attype: 'form'), not a silent object resolution.create_x/new_xprefix convention riding the same branch retires with it, andnormalizeModalSchema'sobjectNameback-compat note (:66) is re-judged in the same PR. The ruling explicitly declined the third shape (keep prefix, reject bare object names).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.