@chaos-overlords/kernel 0.9.6 → 0.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,7 +5,7 @@ import { hashOrderDocument, hashOrderSet } from '../logic/crypto';
5
5
  import { allAwaitedReady, assignSlots, awaitedSeats, evaluateConsensus, sealedByDeadline, turnDeadline, } from '../logic/turn-logic';
6
6
  import { requireInProgress, requireParticipant, requireTurn } from './guards';
7
7
  import { matchStartedEvent } from './MatchQueryService';
8
- import { mergeSeatSummaries } from './SnapshotService';
8
+ import { publishSeatSummaries } from './SnapshotService';
9
9
  /** Turns are numbered from 1; 0 is the lobby's `currentTurn`, before any turn exists. */
10
10
  export const FIRST_TURN = 1;
11
11
  /**
@@ -305,6 +305,13 @@ export class TurnService {
305
305
  * announce it, and open the next turn. Each step is conditional on its own predecessor, so a call
306
306
  * on a turn that is already complete changes nothing and a call on one that stopped halfway
307
307
  * finishes it. Orders are immutable from the CAS onwards, so the digest it derives is stable.
308
+ *
309
+ * The announcement is made by every caller that gets this far, not only by the one that froze
310
+ * the set, and it is keyed (`publishOnce`) so the log carries it once. The freeze's winner used to
311
+ * be the only publisher, so an append that threw after the freeze lost `turn.sealed` for good:
312
+ * the sweep found the stalled seal, saw the set frozen, opened the successor without announcing
313
+ * the seal, and every client waited on it forever. Announcing before `openTurn` also makes an
314
+ * open successor proof that its predecessor's seal is in the log, whichever caller opened it.
308
315
  */
309
316
  async completeSeal(match, number) {
310
317
  const turn = await this.deps.storage.turns.get(match.id, number);
@@ -320,7 +327,8 @@ export class TurnService {
320
327
  return this.openTurn(match, Math.max(number, FIRST_TURN));
321
328
  }
322
329
  let advanced = false;
323
- if (turn.orderSetHash === null || turn.sealedSlots === null) {
330
+ let orderSetHash = turn.orderSetHash;
331
+ if (orderSetHash === null || turn.sealedSlots === null) {
324
332
  const [orders, players] = await Promise.all([
325
333
  this.deps.storage.turns.listOrderSummaries(match.id, number),
326
334
  this.deps.storage.players.listByMatch(match.id),
@@ -329,13 +337,21 @@ export class TurnService {
329
337
  // Only a clock that ran out can make anyone absent. A ready seal is decided on the rows it
330
338
  // read, every one of them ready; an empty row it finds now was topped up for a late seat in
331
339
  // the window between that read and the seal, and that player was never given a chance.
332
- const absentees = sealedByDeadline(turn) ? activePlayers(players) : [];
340
+ //
341
+ // A seat already `takeoverPending` is asked about as well. This step runs again whenever an
342
+ // earlier attempt threw, and a throw between the status change below and the prompt's
343
+ // announcement left the seat pending with its question never put to anybody:
344
+ // `openTakeoverPrompt` is idempotent, and finishes exactly that.
345
+ const absentees = sealedByDeadline(turn)
346
+ ? players.filter((player) => player.status === 'active' || player.status === 'takeoverPending')
347
+ : [];
333
348
  for (const player of absentees) {
334
349
  // A seat with no row at all (a late joiner seated after this turn opened) was never
335
350
  // asked for orders, so it is not absent; only a row that stayed empty is.
336
351
  if (submitted.has(player.id) || !orders.some((row) => row.playerId === player.id))
337
352
  continue;
338
- if (await this.deps.storage.players.transitionStatus(player.id, ['active'], 'takeoverPending')) {
353
+ if (player.status === 'takeoverPending' ||
354
+ (await this.deps.storage.players.transitionStatus(player.id, ['active'], 'takeoverPending'))) {
339
355
  await this.openTakeoverPrompt(match.id, player.id, number);
340
356
  }
341
357
  }
@@ -350,24 +366,32 @@ export class TurnService {
350
366
  sealedSlots.push({ playerId: row.playerId, slot });
351
367
  entries.push({ slot, ordersHash: row.ordersHash });
352
368
  }
353
- const orderSetHash = await hashOrderSet(entries);
369
+ const computed = await hashOrderSet(entries);
354
370
  // Conditional on the set not being frozen already, NOT on the status: the status stays
355
371
  // `sealed` for the whole window this branch runs in, and the sweep deliberately runs
356
372
  // `completeSeal` against a seal in flight. Two callers with a departure between their two
357
373
  // computations would otherwise each write a different digest and each announce it, and the
358
374
  // client that fetched the set after the overwrite failed its digest check.
359
- const frozen = await this.deps.storage.turns.freezeSeal(match.id, number, {
360
- orderSetHash,
375
+ if (await this.deps.storage.turns.freezeSeal(match.id, number, {
376
+ orderSetHash: computed,
361
377
  sealedSlots,
362
- });
363
- if (frozen) {
378
+ })) {
364
379
  advanced = true;
365
- await this.publisher.publish(match.id, {
366
- type: 'turn.sealed',
367
- payload: { turn: number, orderSetHash },
368
- });
380
+ orderSetHash = computed;
381
+ }
382
+ else {
383
+ // Another caller froze it first: announce the digest that stands, never this one.
384
+ orderSetHash = (await this.deps.storage.turns.get(match.id, number))?.orderSetHash ?? null;
369
385
  }
370
386
  }
387
+ if (orderSetHash !== null) {
388
+ const announced = await this.publisher.publishOnce(match.id, sealAnnouncementKey(number), {
389
+ type: 'turn.sealed',
390
+ payload: { turn: number, orderSetHash },
391
+ });
392
+ if (announced)
393
+ advanced = true;
394
+ }
371
395
  return (await this.openTurn(match, number + 1)) || advanced;
372
396
  }
373
397
  /**
@@ -435,6 +459,7 @@ export class TurnService {
435
459
  sealedSlots: null,
436
460
  stateHash: null,
437
461
  desyncedAt: null,
462
+ settledAt: null,
438
463
  };
439
464
  const created = await this.deps.storage.turns.open(turn, players.map((player) => player.id));
440
465
  // A desynced match counts: a repaired seal must still point `currentTurn` at the turn that is
@@ -514,6 +539,16 @@ export class TurnService {
514
539
  repaired += 1;
515
540
  }
516
541
  }
542
+ // A confirmation cut short after its compare-and-swap: `turn.confirmed` unannounced, or a
543
+ // finished match still `running`. `settle` finishes the follow-ups of a confirmed turn whose
544
+ // `settledAt` is still null, and nothing else ever looks at a confirmed turn again.
545
+ for (const { matchId, number } of await this.deps.storage.turns.listUnannouncedVerdicts(limit)) {
546
+ const finished = await this.guard(matchId, number, () => this.settle(matchId, number));
547
+ if (finished) {
548
+ this.deps.logger.warn('finished an interrupted verdict', { matchId, turn: number });
549
+ repaired += 1;
550
+ }
551
+ }
517
552
  // A verdict cut short after its compare-and-swap leaves the match `desynced` with nothing
518
553
  // unsettled, which no other path revisits.
519
554
  for (const matchId of await this.deps.storage.matches.listDesynced(limit, touchedSince)) {
@@ -571,7 +606,7 @@ export class TurnService {
571
606
  // with the host's report keeps late-join selection current without uploading another full save.
572
607
  if (player.id === match.hostPlayerId && request.seatSummaries !== undefined) {
573
608
  try {
574
- await this.deps.storage.matches.updateRuntimeGameSettings(match.id, mergeSeatSummaries(match.settings.gameSettings, request.seatSummaries), this.deps.clock.now());
609
+ await publishSeatSummaries(this.deps, match.id, request.seatSummaries);
575
610
  }
576
611
  catch (error) {
577
612
  // Late-join hints are optional metadata. A full settings blob or a transient metadata write
@@ -616,14 +651,36 @@ export class TurnService {
616
651
  */
617
652
  async openTakeoverPrompt(matchId, playerId, turn) {
618
653
  const opened = await this.deps.storage.takeovers.openPrompt(matchId, playerId, turn, this.deps.clock.now());
619
- if (!opened)
620
- return false;
621
- await this.publisher.publish(matchId, {
622
- type: 'match.takeoverVoteRequested',
623
- payload: { playerId, turn },
624
- });
654
+ // The announcement is owed by the prompt, not by the call that inserted it. The inserting call
655
+ // used to be the only publisher, so a publish that threw after the insert left a prompt that
656
+ // held the turn's clock and that no client was ever shown: every later call found it open and
657
+ // returned. A prompt still unstamped is announced by whichever call finds it — the repeated seal
658
+ // step, a rejoin re-asking about absent seats, a vote on the seat — keyed so racing callers log
659
+ // it once, and stamped only after the event is durable.
660
+ const prompt = await this.deps.storage.takeovers.getPrompt(matchId, playerId);
661
+ if (prompt === null || prompt.announcedAt !== null)
662
+ return opened;
663
+ const logged = await this.publisher.publishOnce(matchId, promptAnnouncementKey(playerId, prompt.openedAt), { type: 'match.takeoverVoteRequested', payload: { playerId, turn: prompt.turn } });
664
+ // The prompt was read a statement before the event was written, and nothing holds it open in
665
+ // between: the seat can report or rejoin, closing it and logging that, before the request is
666
+ // logged behind the close. Clients replay the log in order and would put up a vote about a seat
667
+ // that is active again, so a request that turns out to have followed its own close is withdrawn
668
+ // behind it. Only a seat that came back closes an unannounced prompt: a vote to the computer is
669
+ // cast against a prompt some client was shown, and none was shown this one.
670
+ if (logged !== null &&
671
+ (await this.deps.storage.takeovers.getPrompt(matchId, playerId)) === null) {
672
+ await this.publisher.publishOnce(matchId, promptWithdrawalKey(playerId, prompt.openedAt), {
673
+ type: 'match.takeoverVoteCancelled',
674
+ payload: { playerId },
675
+ });
676
+ return opened;
677
+ }
625
678
  await this.clearOpenDeadline(matchId);
626
- return true;
679
+ // The same close, landing after the check above but before the clock was stopped, restarted
680
+ // a clock that was still running and left this call to stop it behind no prompt at all.
681
+ await this.resumeAfterTakeoverVotes(matchId);
682
+ await this.deps.storage.takeovers.markPromptAnnounced(matchId, playerId, prompt.openedAt, this.deps.clock.now());
683
+ return opened;
627
684
  }
628
685
  /**
629
686
  * Stop the clock of a match whose last active player has just left.
@@ -698,23 +755,37 @@ export class TurnService {
698
755
  }
699
756
  await this.trySeal(matchId, match.currentTurn, 'ready');
700
757
  }
701
- /** Decide turn `number` from the reports on file. Idempotent and race-safe through CAS. */
758
+ /**
759
+ * Decide turn `number` from the reports on file. Idempotent and race-safe through CAS. Returns
760
+ * whether this call finished anything a confirmation cut short (see `finishConfirmation`), which
761
+ * is what the sweep reports as a repair.
762
+ */
702
763
  async settle(matchId, number) {
703
764
  const [match, turn] = await Promise.all([
704
765
  this.deps.storage.matches.get(matchId),
705
766
  this.deps.storage.turns.get(matchId, number),
706
767
  ]);
707
768
  if (!match || !turn || turn.status === 'open')
708
- return;
769
+ return false;
709
770
  if (turn.status === 'confirmed') {
710
771
  // The compare-and-swap already happened; what may not have is what follows it. A process that
711
- // died between the two left the match `desynced` for good with nothing unsettled, so
712
- // `submitOrders` answered `match_desynced` forever and nothing could reach `resumeAfterDesync`
713
- // again — it is private and `reevaluate` only visits sealed and desynced turns. The seal path
714
- // was built to survive exactly this; the verdict path was not.
715
- if (match.status === 'desynced')
716
- await this.resumeAfterDesync(matchId, this.deps.clock.now());
717
- return;
772
+ // died between the two, or a publish that threw, left `turn.confirmed` unannounced and a
773
+ // finished match `running` for good, since nothing else revisits a confirmed turn.
774
+ // `settledAt` says whether the follow-ups completed, and they are all safe to repeat.
775
+ if (turn.settledAt === null && turn.stateHash !== null) {
776
+ const reports = await this.deps.storage.turns.listReports(matchId, number);
777
+ const verdict = {
778
+ stateHash: turn.stateHash,
779
+ finished: confirmedFinished(reports, turn.stateHash),
780
+ };
781
+ return this.finishConfirmation(match, number, verdict, true);
782
+ }
783
+ // A desync pause lifted by this verdict whose lift was cut short: `resumeAfterDesync` is
784
+ // private and `reevaluate` only visits sealed and desynced turns, so this is the way back.
785
+ if (match.status === 'desynced') {
786
+ return this.resumeAfterDesync(matchId, this.deps.clock.now());
787
+ }
788
+ return false;
718
789
  }
719
790
  const [players, reports, snapshot] = await Promise.all([
720
791
  this.deps.storage.players.listByMatch(matchId),
@@ -731,29 +802,9 @@ export class TurnService {
731
802
  stateHash: verdict.stateHash,
732
803
  });
733
804
  if (!won)
734
- return;
735
- await this.publisher.publish(matchId, {
736
- type: 'turn.confirmed',
737
- payload: { turn: number, stateHash: verdict.stateHash },
738
- });
739
- if (match.status === 'desynced')
740
- await this.resumeAfterDesync(matchId, now);
741
- if (verdict.finished &&
742
- (await this.deps.storage.matches.transition(matchId, ['running', 'desynced'], {
743
- status: 'finished',
744
- updatedAt: now,
745
- }))) {
746
- // The seal opened the successor before anyone had reported, so a finished match is left
747
- // holding an open turn with a live deadline. Nothing can be submitted to it (every write
748
- // requires a running match) but it would sit in `listExpiredOpen` forever, and a client
749
- // reading the match view would see a turn still counting down after the game ended.
750
- await this.deps.storage.turns.rescheduleDeadline(matchId, turn.number + 1, null);
751
- await this.publisher.publish(matchId, {
752
- type: 'match.statusChanged',
753
- payload: { status: 'finished' },
754
- });
755
- }
756
- return;
805
+ return false;
806
+ await this.finishConfirmation(match, number, verdict, false);
807
+ return false;
757
808
  }
758
809
  if (verdict.kind === 'desynced') {
759
810
  // Each consequence is conditional on its own state rather than on winning the transition, so
@@ -761,18 +812,27 @@ export class TurnService {
761
812
  // left the match `running` with the turn already `desynced`: `turn.desynced` was never
762
813
  // announced, `SnapshotService.upload` refused the repair with `snapshot_not_required` because
763
814
  // the match was not desynced, and the turn stayed unsettled for good.
764
- const won = turn.status === 'desynced' ||
815
+ const retry = turn.status === 'desynced';
816
+ const won = retry ||
765
817
  (await this.deps.storage.turns.transition(matchId, number, ['sealed'], {
766
818
  status: 'desynced',
767
819
  }));
768
820
  if (!won)
769
- return;
821
+ return false;
770
822
  this.deps.logger.warn('turn desynced', { matchId, turn: number });
771
- // The announcement is claimed on the turn row, the way the seal's digest is, so exactly one
772
- // caller publishes it. Asking the event log instead paged every event the match had ever
773
- // logged, on every sweep, for the whole of a pause that can last the retention window.
774
- if (await this.deps.storage.turns.claimDesyncAnnouncement(matchId, number, now)) {
775
- await this.publisher.publish(matchId, {
823
+ // The pause comes before the announcement. A desynced match is what the sweep re-judges
824
+ // (`listDesynced`), so whatever throws after this point is retried; a `running` match with a
825
+ // desynced turn is revisited by nobody, and it went on sealing turns past the divergence.
826
+ await this.deps.storage.matches.transition(matchId, ['running'], {
827
+ status: 'desynced',
828
+ updatedAt: now,
829
+ });
830
+ // `desyncedAt` is the announcement's receipt, stamped once `turn.desynced` is durable, so a
831
+ // null one means the announcement is still owed. It used to be claimed first and published
832
+ // after, and a publish that threw in between lost the announcement for good. The event is
833
+ // keyed, so racing verdicts and repeats log it once.
834
+ if (turn.desyncedAt === null) {
835
+ await this.publisher.publishOnce(matchId, desyncAnnouncementKey(number), {
776
836
  type: 'turn.desynced',
777
837
  payload: {
778
838
  turn: number,
@@ -780,39 +840,131 @@ export class TurnService {
780
840
  candidateStateHashes: verdict.candidateStateHashes,
781
841
  },
782
842
  });
843
+ await this.deps.storage.turns.claimDesyncAnnouncement(matchId, number, now);
783
844
  }
784
- if (await this.deps.storage.matches.transition(matchId, ['running'], {
785
- status: 'desynced',
845
+ // Not behind the receipt above: a turn stamped by an older build that died before pausing
846
+ // the match is paused only now, and its pause is still owed to clients.
847
+ await this.announcePause(matchId);
848
+ }
849
+ return false;
850
+ }
851
+ /**
852
+ * Tell clients a match is paused, unless the log's last word on its status already says so.
853
+ *
854
+ * The pause is one fact however many turns diverge behind it, and the turn whose verdict paused
855
+ * the match cannot be told from the others once that verdict is cut short, so the owed
856
+ * announcement is judged from the log rather than from the verdict. Only a match that is still
857
+ * paused is announced as paused; a pause lifted while this ran is announced as lifted as well,
858
+ * since the lift saw no pause to announce and so said nothing.
859
+ */
860
+ async announcePause(matchId) {
861
+ if ((await this.deps.storage.matches.get(matchId))?.status !== 'desynced')
862
+ return;
863
+ if (!(await this.announceStatus(matchId, 'desynced')))
864
+ return;
865
+ if ((await this.deps.storage.matches.get(matchId))?.status === 'running') {
866
+ await this.announceStatus(matchId, 'running');
867
+ }
868
+ }
869
+ /**
870
+ * Log `match.statusChanged` for a pause or its lift when it is owed: a pause when the last status
871
+ * announced is anything but a pause, a lift only when it is the pause (a match never paused, or
872
+ * whose pause was never announced, has nothing to lift in any client's eyes). Keyed by the status
873
+ * event it follows, so racing callers who read the same last word log the change once. Returns
874
+ * whether this call logged it.
875
+ */
876
+ async announceStatus(matchId, status) {
877
+ const last = await this.deps.storage.events.latestOfType(matchId, 'match.statusChanged');
878
+ const lastStatus = last?.type === 'match.statusChanged' ? last.payload.status : null;
879
+ const owed = status === 'desynced' ? lastStatus !== 'desynced' : lastStatus === 'desynced';
880
+ if (!owed)
881
+ return false;
882
+ const logged = await this.publisher.publishOnce(matchId, statusAnnouncementKey(status, last?.seq ?? 0), { type: 'match.statusChanged', payload: { status } });
883
+ return logged !== null;
884
+ }
885
+ /**
886
+ * Everything a confirmation owes after its compare-and-swap: announce it, lift a desync pause it
887
+ * ends, finish a match it completes, then stamp `settledAt`. Every step is conditional on its own
888
+ * state or keyed in the log, so a repeat — by the sweep, over a verdict cut short — finishes what
889
+ * the first attempt left and duplicates nothing. Returns whether this call logged or changed
890
+ * anything, which for a repeat means it found work the first attempt left.
891
+ */
892
+ async finishConfirmation(match, number, { stateHash, finished }, repeat) {
893
+ const matchId = match.id;
894
+ const now = this.deps.clock.now();
895
+ let worked = (await this.publisher.publishOnce(matchId, confirmationKey(number), {
896
+ type: 'turn.confirmed',
897
+ payload: { turn: number, stateHash },
898
+ })) !== null;
899
+ // A repeat looks even at a running match: the attempt it completes may have lifted the pause
900
+ // and died before announcing the lift or restarting the clock, and `resumeAfterDesync` judges
901
+ // from the log whether that is still owed.
902
+ if (match.status === 'desynced' || repeat) {
903
+ if (await this.resumeAfterDesync(matchId, now))
904
+ worked = true;
905
+ }
906
+ if (finished) {
907
+ const moved = await this.deps.storage.matches.transition(matchId, ['running', 'desynced'], {
908
+ status: 'finished',
786
909
  updatedAt: now,
787
- })) {
788
- await this.publisher.publish(matchId, {
910
+ });
911
+ // A repeat finds the match already finished by the attempt it is completing, and still owes
912
+ // what followed that transition.
913
+ if (moved)
914
+ worked = true;
915
+ if (moved || (await this.deps.storage.matches.get(matchId))?.status === 'finished') {
916
+ // The seal opened the successor before anyone had reported, so a finished match is left
917
+ // holding an open turn with a live deadline. Nothing can be submitted to it (every write
918
+ // requires a running match) but it would sit in `listExpiredOpen` forever, and a client
919
+ // reading the match view would see a turn still counting down after the game ended.
920
+ await this.deps.storage.turns.rescheduleDeadline(matchId, number + 1, null);
921
+ const announced = await this.publisher.publishOnce(matchId, FINISH_ANNOUNCEMENT_KEY, {
789
922
  type: 'match.statusChanged',
790
- payload: { status: 'desynced' },
923
+ payload: { status: 'finished' },
791
924
  });
925
+ if (announced)
926
+ worked = true;
792
927
  }
793
928
  }
929
+ await this.deps.storage.turns.markSettled(matchId, number, now);
930
+ return worked;
794
931
  }
795
932
  /**
796
933
  * Lift a desync pause once nothing is unsettled. Orders were refused for the whole pause while
797
934
  * the open turn's deadline kept running, so the turn would otherwise seal empty the moment the
798
935
  * match resumes: its clock restarts here, and clients are told the new deadline.
936
+ *
937
+ * The lift's follow-ups are owed by the lift, not by the call that won its compare-and-swap. A
938
+ * call that finds the match already running while the log still says it is paused completes them
939
+ * for a lift that died half way; the announcement goes last, as their receipt. Returns whether
940
+ * this call lifted the pause or completed a lift.
799
941
  */
800
942
  async resumeAfterDesync(matchId, now) {
801
943
  if ((await this.deps.storage.turns.listUnsettled(matchId)).length > 0)
802
- return;
944
+ return false;
803
945
  const match = await this.deps.storage.matches.get(matchId);
804
946
  if (!match)
805
- return;
806
- if (!(await this.deps.storage.matches.transition(matchId, ['desynced'], {
807
- status: 'running',
808
- updatedAt: now,
809
- }))) {
810
- return;
947
+ return false;
948
+ const moved = match.status === 'desynced' &&
949
+ (await this.deps.storage.matches.transition(matchId, ['desynced'], {
950
+ status: 'running',
951
+ updatedAt: now,
952
+ }));
953
+ // Lost to another lift, which owes the follow-ups; or no pause at all.
954
+ if (!moved && (match.status !== 'running' || !(await this.liftUnannounced(matchId)))) {
955
+ return false;
811
956
  }
812
- await this.publisher.publish(matchId, {
813
- type: 'match.statusChanged',
814
- payload: { status: 'running' },
815
- });
957
+ await this.restartClockAfterPause(match, now);
958
+ await this.announceStatus(matchId, 'running');
959
+ return true;
960
+ }
961
+ /** Whether the log's last status announcement is still the pause. */
962
+ async liftUnannounced(matchId) {
963
+ const last = await this.deps.storage.events.latestOfType(matchId, 'match.statusChanged');
964
+ return last?.type === 'match.statusChanged' && last.payload.status === 'desynced';
965
+ }
966
+ async restartClockAfterPause(match, now) {
967
+ const matchId = match.id;
816
968
  // Not behind a modal. Kicking the odd one out is the documented remedy for a desync, and the
817
969
  // kick opens an absence prompt for the kicked seat, so this path reached a paused turn every
818
970
  // time in a timed match and put a full deadline back on it while the vote nobody could dismiss
@@ -829,6 +981,34 @@ export class TurnService {
829
981
  await this.announceDeadline(matchId, match.currentTurn, deadlineAt);
830
982
  }
831
983
  }
984
+ /*
985
+ * Dedupe keys of the announcements that follow a compare-and-swap (`EventPublisher.publishOnce`).
986
+ * Each names the one fact it announces, so a repeat of the announcement is recognised as the same
987
+ * fact and never logged twice. They are server-side only and never reach a client.
988
+ */
989
+ const sealAnnouncementKey = (turn) => `turn.sealed:${turn}`;
990
+ const confirmationKey = (turn) => `turn.confirmed:${turn}`;
991
+ const desyncAnnouncementKey = (turn) => `turn.desynced:${turn}`;
992
+ /**
993
+ * A pause or its lift, named by the status event it follows: the same change announced after the
994
+ * same last word is the same fact, and the next pause of the match follows a different event.
995
+ */
996
+ const statusAnnouncementKey = (status, afterSeq) => `match.statusChanged:${status}:after:${afterSeq}`;
997
+ /** A match finishes once. */
998
+ const FINISH_ANNOUNCEMENT_KEY = 'match.statusChanged:finished';
999
+ /** A prompt is one opening of the question about a seat, which its `openedAt` identifies. */
1000
+ const promptAnnouncementKey = (playerId, openedAt) => `match.takeoverVoteRequested:${playerId}:${openedAt.getTime()}`;
1001
+ /** The withdrawal of one prompt's request that was logged after the prompt had closed. */
1002
+ const promptWithdrawalKey = (playerId, openedAt) => `match.takeoverVoteCancelled:${playerId}:${openedAt.getTime()}`;
1003
+ /**
1004
+ * Whether a confirmed turn finished the match, judged again from its reports when the verdict's
1005
+ * follow-ups are repeated. Reports are immutable once the turn is confirmed, and every client that
1006
+ * reported the confirmed state computed the same state, so they agree on whether it is final.
1007
+ */
1008
+ function confirmedFinished(reports, stateHash) {
1009
+ const agreeing = reports.filter((report) => report.stateHash === stateHash);
1010
+ return agreeing.length > 0 && agreeing.every((report) => report.finished);
1011
+ }
832
1012
  /**
833
1013
  * Refuse a document whose ops act for a slot other than the submitter's.
834
1014
  *
@@ -1 +1 @@
1
- {"version":3,"file":"TurnService.js","sourceRoot":"","sources":["../../src/services/TurnService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TurnService.js","sourceRoot":"","sources":["../../src/services/TurnService.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,8 @@ export declare class InMemoryStorage implements MultiplayerStorage {
16
16
  private readonly snapshotRows;
17
17
  private readonly eventRows;
18
18
  private readonly promptRows;
19
+ /** `matchId` + dedupe key of every event appended with `appendOnce`, as the unique index holds. */
20
+ private readonly eventKeys;
19
21
  private readonly voteRows;
20
22
  readonly matches: MatchRepository;
21
23
  readonly players: PlayerRepository;