Task 2 oracle, frozen before model submission.
45 physical event rows; 44 unique rows after removing one exact copy of E06-2.
E09-3 occurs at 19:00Z, after 18:00Z cutoff, leaving 43 eligible snapshots.
20 final tickets: 6 open, 14 resolved, 13 eligible duration values.
Accounts: open T09,T18; resolved T04,T08,T12,T15. Hours sorted 1.5,8,9,12; median 8.5.
Billing: open T03,T13; resolved T01,T02,T10,T16,T19. Hours sorted 4,6,7,14,20; median 7.
Technical: open T07,T17; resolved T05,T06,T11,T14,T20. T05 missing resolution; eligible hours 2.5,3,5,10; median 4.
T03 reopened: E03-3 is final open, so earlier 5-hour resolution is not included.
T04 reassigned from Billing to Accounts: its final 8-hour duration belongs to Accounts.
T08 opened 20 September; it stays in the report and contributes 12 hours.
T10 E10-1 update 07:00+02:00 is 05:00Z, older than final E10-2 06:30Z.
T11 E11-2 update 06:00-03:00 is 09:00Z, newer than E11-1 07:30Z.
E14-2 and E14-3 are distinct snapshots and must not be merged as exact duplicates.
Only T05/E05-2 belongs in exceptions.csv under this explicit dictionary.
Source row order is deterministically shuffled. All timestamps parse; no conflicting equal-time event ordering.
Derivation: the script parses serialized CSV, normalizes timestamp instants, applies the declared operations, checks every final ticket against a separately hardcoded manual table, then checks the three hand-calculated median/count rows. Root must independently verify before submission.
