mark Stale By Proposition
Flip every non-stale record for the proposition to ProjectionLifecycle.STALE in one statement and return how many were actually transitioned. Scoping to records that are not already stale keeps the operation idempotent: a replayed status-change event for an already-stale proposition transitions nothing and returns 0.