Unblocked 2026-09-02 (R+105). PR #14667 has landed — actionObjectKey is now 0 in packages/objectql/src/plugin.ts — so the collision risk that justified pm:blocked is gone and this is dispatchable. (The earlier Blocked-by: #14422 is discharged and removed.)
⚠️Triage correction, same date: in R+104 this body was amended to claim a fourth site at :1539. Re-measured at origin/main75adf11, that site no longer exists — PR #14667 removed it. The population is back to the three the original filing named. The amendment is withdrawn and the table below is the current reading.
Found by the isolated contract reviewer on PR #14667 (card #14422) and re-measured by the domain:engine seat before filing. ⛔ Not fixed there: #14422's ruled surface converged the ladder, and the runtime fence it built was re-export plus delegating alias, so these sites were never in its path.
The sites — re-measured at origin/main75adf11
packages/runtime/src/action-execution.ts:641: if (objectName && objectName !== 'global') {
packages/runtime/src/action-execution.ts:1016: const key = `${where.objectName ?? 'global'}/${where.actionName ?? action?.name ?? 'action'}`;
packages/runtime/src/action-execution.ts:1490: * legacy `object` field, else the `'global'` wildcard).
git grep -n "'global'" origin/main -- packages/runtime/src/action-execution.ts returns exactly these three. The same file references GLOBAL_ACTION_OBJECT_KEY3 times, so the constant is in scope and :641 could use it today.
Why it matters, and why it is a finding rather than a bug
GLOBAL_ACTION_OBJECT_KEY is declared 'global' at packages/objectql/src/action-governance.ts:61, so every one of these is correct today. Nothing is broken and nothing is user-visible. This is exactly the shape #14422 was filed to remove: a spelling that is equal in value, invisible to every test in the repo, and that would part from the constant in silence the day the constant's value changes.
⭐ The graded distinction, worth keeping: :641 is a comparison in live code and is the real one. :1016 builds a warn-once log key and is cosmetic — a drift there mis-keys a log line, nothing more. :1490 is prose, and it carries a second defect independent of the literal: it calls 'global' "the wildcard", which contradicts action-governance.ts:54-60 — "engine.executeAction is an exact-string Map lookup with no wildcard semantics".
Suggested shape, not prescriptive
Import the constant (already imported) and use it at :641; decide :1016 on its own merits, since a log key arguably wants a literal it can never fail to render; correct the "wildcard" wording at :1490.
⛔ Re-run the grep before editing rather than working from this list — the line numbers have now moved twice.
Dedup
Distinguished from #14669, which is three comments naming the deleted ObjectQLPlugin.actionObjectKey symbol in packages/cli and examples/app-showcase — different files, different defect.
Unassigned, recording only.
Unblocked 2026-09-02 (R+105). PR #14667 has landed —
actionObjectKeyis now 0 inpackages/objectql/src/plugin.ts— so the collision risk that justifiedpm:blockedis gone and this is dispatchable. (The earlierBlocked-by: #14422is discharged and removed.):1539. Re-measured atorigin/main75adf11, that site no longer exists — PR #14667 removed it. The population is back to the three the original filing named. The amendment is withdrawn and the table below is the current reading.Found by the isolated contract reviewer on PR #14667 (card #14422) and re-measured by the
domain:engineseat before filing. ⛔ Not fixed there: #14422's ruled surface converged the ladder, and the runtime fence it built was re-export plus delegating alias, so these sites were never in its path.The sites — re-measured at
origin/main75adf11git grep -n "'global'" origin/main -- packages/runtime/src/action-execution.tsreturns exactly these three. The same file referencesGLOBAL_ACTION_OBJECT_KEY3 times, so the constant is in scope and:641could use it today.Why it matters, and why it is a
findingrather than a bugGLOBAL_ACTION_OBJECT_KEYis declared'global'atpackages/objectql/src/action-governance.ts:61, so every one of these is correct today. Nothing is broken and nothing is user-visible. This is exactly the shape #14422 was filed to remove: a spelling that is equal in value, invisible to every test in the repo, and that would part from the constant in silence the day the constant's value changes.⭐ The graded distinction, worth keeping:
:641is a comparison in live code and is the real one.:1016builds a warn-once log key and is cosmetic — a drift there mis-keys a log line, nothing more.:1490is prose, and it carries a second defect independent of the literal: it calls'global'"the wildcard", which contradictsaction-governance.ts:54-60— "engine.executeActionis an exact-stringMaplookup with no wildcard semantics".Suggested shape, not prescriptive
Import the constant (already imported) and use it at
:641; decide:1016on its own merits, since a log key arguably wants a literal it can never fail to render; correct the "wildcard" wording at:1490.⛔ Re-run the grep before editing rather than working from this list — the line numbers have now moved twice.
Dedup
Distinguished from #14669, which is three comments naming the deleted
ObjectQLPlugin.actionObjectKeysymbol inpackages/cliandexamples/app-showcase— different files, different defect.Unassigned, recording only.