KF5 — post-image update rejection, end to end (live, self-cleaning fixture).
The WS1 × WS3 seam: an Update-typed key binding drives CheckUpdateRLSPostImage through
GetEffectiveRowFilterWhereClause(Update). An update that would move a fixture row OUTSIDE
the filter (reassign its owner) must fail with the specific post-image message and write
NOTHING; an update keeping the row inside must pass. The seeded role fixtures are
deliberately read-only (CanUpdate=false), so the Update filter comes from a key binding —
the same enforcement path, no metadata mutation, no cache refresh.
KF5 — post-image update rejection, end to end (live, self-cleaning fixture). The WS1 × WS3 seam: an Update-typed key binding drives CheckUpdateRLSPostImage through GetEffectiveRowFilterWhereClause(Update). An update that would move a fixture row OUTSIDE the filter (reassign its owner) must fail with the specific post-image message and write NOTHING; an update keeping the row inside must pass. The seeded role fixtures are deliberately read-only (CanUpdate=false), so the Update filter comes from a key binding — the same enforcement path, no metadata mutation, no cache refresh.