pub struct PendingActivation {
pub id: ActivationId,
pub proc: ProcessId,
pub arg: ResumeArg,
pub reconv_iter: u32,
pub logical_order: (SchedTime, Region, u64),
}Expand description
The canonical, thread-count-independent ordering key entry (scheduler.md §6; ledger SC-014, SC-029, DT-005, DT-042).
Fixed vs. scheduler.md’s literal logical_order: (SimTime, Region, u64)
3-tuple (review fix, DT-042): DT-042 itself records that scheduler.md’s
design “describes discarding [the delta/reconvergence-iteration count]
once the delta loop converges, which conflicts with ARCHITECTURE §4’s
5-tuple key requiring it everywhere” — and per this workspace’s spec
precedence (ARCHITECTURE.md §4 wins over docs/design/*.md), reconv_iter
must be threaded through every PendingActivation. Without it, two
activations of the same process in two different delta-loop reconvergence
passes at the same (SchedTime, Region) compared equal under the old
3-tuple, collapsing a real ordering distinction DT-042/SC-013 require.
(The tuple’s first field is now SchedTime, not vj_abi::SimTime —
Task 1, SC-023/SC-033/SC-129: see SchedTime’s own doc comment.)
id is new for the same review pass: determinism::DeterminismController ::on_read/on_write and ResolvedBatch::completed all key on
ActivationId, but nothing previously let a PendingActivation/WorkItem
report which ActivationId it is — id is that missing correlation.
Fields§
§id: ActivationId§proc: ProcessId§arg: ResumeArg§reconv_iter: u32The delta/reconvergence-loop iteration count within (SchedTime, Region)
— the canonical 5-tuple’s third field (ARCHITECTURE §4 item 3; DT-042).
logical_order: (SchedTime, Region, u64)