package store import ( "encoding/json" "testing" "time" ) func TestSourceMetadataRefreshPreservesAcceptedCallAndUnknownOccupancy(t *testing.T) { s := preparedCurrentCallStore(t) first := recordTrunkCall(t, s, "task-asr", "call-before-refresh") at := time.Date(2026, 9, 21, 1, 30, 0, 0, time.UTC) selection := currentTaskReservation(t, s, "task-asr") if err := s.ReserveExecute(first.DispatcherID, first.EventID, selection, at); err != nil { t.Fatal(err) } if err := s.MarkExecuteUnknown(first.DispatcherID, first.EventID); err != nil { t.Fatal(err) } var frozen string if err := s.db.QueryRow(`SELECT snapshot_json FROM dispatcher_inbox WHERE event_id=?`, first.EventID).Scan(&frozen); err != nil { t.Fatal(err) } snapshot, err := s.ReadSnapshot(currentDispatcherID, 1001, "task-asr") if err != nil { t.Fatal(err) } var task map[string]any if err := json.Unmarshal(snapshot.Task.Raw, &task); err != nil { t.Fatal(err) } task["name"] = "current configuration" body, err := json.Marshal(task) if err != nil { t.Fatal(err) } if err := snapshot.Task.UnmarshalJSON(body); err != nil { t.Fatal(err) } snapshot.Quota.MaxConcurrentCalls = 1 if _, err := s.CompleteEdit(snapshot, "edit-same-source-revision"); err != nil { t.Fatal(err) } var after, status string if err := s.db.QueryRow(`SELECT snapshot_json,status FROM dispatcher_inbox WHERE event_id=?`, first.EventID).Scan(&after, &status); err != nil { t.Fatal(err) } if frozen != after || status != "unknown" { t.Fatal("current configuration refresh rewrote an accepted execution") } if occupied, err := s.OccupiedCalls(currentDispatcherID); err != nil || occupied != 1 { t.Fatalf("refresh released unknown occupancy: %d %v", occupied, err) } } func TestSelectionIgnoresSourceRevisionButStillFreezesCurrentMetadata(t *testing.T) { s := preparedCurrentCallStore(t) selection := currentTaskReservation(t, s, "task-asr") snapshot, err := s.ReadSnapshot(currentDispatcherID, 1001, "task-asr") if err != nil { t.Fatal(err) } var task map[string]any if err := json.Unmarshal(snapshot.Task.Raw, &task); err != nil { t.Fatal(err) } task["task_revision"] = 8 body, err := json.Marshal(task) if err != nil { t.Fatal(err) } if err := snapshot.Task.UnmarshalJSON(body); err != nil { t.Fatal(err) } if _, err := s.CompleteEdit(snapshot, "edit-metadata-only"); err != nil { t.Fatal(err) } cmd := recordTrunkCall(t, s, "task-asr", "call-after-metadata") if err := s.ReserveExecute(cmd.DispatcherID, cmd.EventID, selection, time.Date(2026, 9, 21, 1, 30, 0, 0, time.UTC)); err != nil { t.Fatalf("source revision alone fenced the selection: %v", err) } }