SIGN IN SIGN UP

fix(frontend): name a catalog policy only for components it blocks (#14681)

The editor decided a node was "disabled by an administrator" from
catalog_governance_enabled, a single flag meaning "some policy exists".
That cannot answer a per-component question. `blocked` only means "no
template for this type", which is equally an uninstalled bundle, a flow
imported from another install, or a component the user wrote themselves,
and the flag is true when *either* blocklist is non-empty -- so blocking
one starter template was enough to brand every such node, refuse its
build, and pause autosave on work the server would have accepted.

The frontend was never given what it needed to answer the question, so
the server now sends it: /config reports the blocked component identities
to authenticated callers, resolved through the same alias index the
enforcement path uses. The banner, the build preflight and the autosave
pause each ask whether the policy names *this* component.

The identities go to authenticated callers only. The public response
still withholds the policy contents, and they reveal nothing the palette
does not already -- these are exactly the components withheld from /all.
A node carrying some third alias of a blocked component is not named and
the editor stays quiet, which under-claims rather than over-claims; the
server still refuses the run.

Drops catalogPolicyCanBlock and its cold-registry heuristic: an explicit
identity set is unambiguous, so "the registry has not loaded yet" no
longer needs guessing at.

Reported by QA as LE-2226 BUG-01 against #14614.
K
keval shah committed
770fc29bee81f9493dcb9fa5d37ab81c7b8182d8
Parent: f91c6c3
Committed by GitHub <noreply@github.com> on 8/20/2026, 6:25:16 PM