fix: Ref 게임 로직과 시나리오 풀 호환을 보정

월 경계, 전투 기술 상한, 연감과 베팅·설문·경매 정산 순서를 Ref 계약에 맞춘다.\n\n시나리오 일반 풀을 ENGINE mutation과 logical tick 기반으로 직렬화하고 914·915 catalog 및 조건부 100기 pool 실행 경계를 추가한다.\n\n경매 worker는 세대별 durable event만 만들고 ENGINE이 row lock 후 상태 전이와 정산을 단일 transaction으로 소유한다.
This commit is contained in:
2026-08-23 16:26:14 +00:00
parent bf6b7be7b0
commit 85591c68ad
114 changed files with 13327 additions and 901 deletions
@@ -388,7 +388,14 @@ export class TurnDaemonLifecycle {
this.status.running = true;
this.status.pendingReason = pending.reason;
const targetTime = pending.targetTime ?? new Date(startMs);
const requestedTargetTime = pending.targetTime ?? new Date(startMs);
const lastTurnTime = this.status.lastTurnTime ? new Date(this.status.lastTurnTime) : requestedTargetTime;
// A single Ref turn run never observes generals beyond the next monthly
// boundary before that boundary's monthly actions have completed. Keep
// explicit manual/poke targets on the same chronological boundary as the
// scheduled paths above.
const nextMonthTime = this.getNextTickTime(lastTurnTime);
const targetTime = new Date(Math.min(requestedTargetTime.getTime(), nextMonthTime.getTime()));
const budget = pending.budget ?? this.options.defaultBudget;
const checkpoint = this.status.checkpoint;
let result: TurnRunResult;