Data Model — rework-is-not-an-override-01M3MQV6

There is no persisted schema change. All facts are derived from existing StatusEvent records (wp_id, from_lane, to_lane, actor, force, review_ref, at), in log order.

Derived factDefinitionConsumer
latest_implementerActor of the latest event with to_lane ∈ {claimed, in_progress}, from_lane ∉ {for_review, in_review} and review_ref is None; None if there is none or the read failsownership guard allow-arms
latest_rejectionThe latest event with to_lane == planned, provided from_lane ∈ {for_review, in_review} and review_ref is not None; otherwise Nonearbiter override classifier
is_arbiter_overrideforce ∧ old == planned ∧ target ∈ {approved, done} ∧ latest_rejection is not Nonearbiter persist signal, arbiter-forward emit, approved-cycle suppression

State transitions: the 9-lane machine is unchanged (status/wp_state.py).