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
A scalar data.id beside a NON-scalar where.id still silently drops the predicate — the remaining silent shape after the #11142 refusal, pinned by #5748 #11230
Found while implementing #11142 (the unequal-scalar where.id refusal). Filed separately and unassigned: acting on it would reverse another #5748-pinned verdict (a SCALAR data.id still outranks where and multi), which is a maintainer decision, not a rider on that card — the same reason #11142 itself was filed off #11009.
resolveEngineUpdateDispatch rules by-id with the payload id bound (rec_1): the truthy scalar data.id outranks where and multi alike (#5748 ruling A, pinned in engine-update-dispatch.test.ts — a SCALAR data.id still outranks where and multi, first assertion). The $in predicate over ids — and the declared multi: true — are silently discarded. Same for an array or nullwhere.id beside a scalar payload id.
#11142's ruling scoped the refusal to a truthy scalarwhere.id different from the payload id ("truthy scalar where.id 响亮拒绝"), and its PR pins the non-scalar neighbour explicitly as out of the ruled scope so the refusal cannot creep. #11009's unhonoured-keys refusal does not reach it either: the only where key is id. So after both refusals land, this is the lastwhere.id-shaped declaration the by-id update path drops with no diagnostic.
Worth noting for the triage: unlike #11142's shape (which could at least be spelled by folding ingresses), no ingress in this repo constructs this pair — the ingress survey on PR #11229 found the non-scalar where.id production sites (outbox sweeps) never carry a payload id.
Refs: packages/metadata-core/src/engine-update-dispatch.ts (the #11142 boundary comment names this shape as deliberately untouched), #5748, #11009, #11142.
Found while implementing #11142 (the unequal-scalar
where.idrefusal). Filed separately and unassigned: acting on it would reverse another #5748-pinned verdict (a SCALAR data.id still outranks where and multi), which is a maintainer decision, not a rider on that card — the same reason #11142 itself was filed off #11009.The shape
resolveEngineUpdateDispatchrulesby-idwith the payload id bound (rec_1): the truthy scalardata.idoutrankswhereandmultialike (#5748 ruling A, pinned inengine-update-dispatch.test.ts—a SCALAR data.id still outranks where and multi, first assertion). The$inpredicate over ids — and the declaredmulti: true— are silently discarded. Same for an array ornullwhere.idbeside a scalar payload id.Why #11142 did not cover it
#11142's ruling scoped the refusal to a truthy scalar
where.iddifferent from the payload id ("truthy scalar where.id 响亮拒绝"), and its PR pins the non-scalar neighbour explicitly as out of the ruled scope so the refusal cannot creep. #11009's unhonoured-keys refusal does not reach it either: the onlywherekey isid. So after both refusals land, this is the lastwhere.id-shaped declaration the by-id update path drops with no diagnostic.What a fix has to decide
where.idis a non-scalar predicate (same loud-refusal family). Reverses the remaining half of the ObjectQL.update 的data.id不做标量测试 —— 载荷里的算子对象被当成主键绑定,且盖过显式options.multi: true#5748 pin — needs a ruling.data.id不做标量测试 —— 载荷里的算子对象被当成主键绑定,且盖过显式options.multi: true#5748 payload operator-objects, A compare-and-setwhereon a by-idupdateis silently inert — the extra predicate keys never reach the driver, andSqlHttpOutbox.redeliver's status guard is one of them #11009 extra keys, A scalardata.idbeside a DIFFERENT scalarwhere.idsilently drops thewhere.idpredicate — the one unhonoured-predicate shape #11009's refusal deliberately left standing #11142 unequal scalars).Worth noting for the triage: unlike #11142's shape (which could at least be spelled by folding ingresses), no ingress in this repo constructs this pair — the ingress survey on PR #11229 found the non-scalar
where.idproduction sites (outbox sweeps) never carry a payload id.Refs:
packages/metadata-core/src/engine-update-dispatch.ts(the #11142 boundary comment names this shape as deliberately untouched), #5748, #11009, #11142.Generated by Claude Code