Files
core2026/tools/integration-tests/src/turn-differential/trace.ts
T
Hide_D c63a49bd07 fix: 커맨드 차등 생명주기와 로그 그래프를 보강
장수 55종과 수뇌 35종의 상태, 로그, 메시지, 예약 턴 비교를 닫습니다.

실제 시나리오 프로필과 대표 PostgreSQL 수명주기, 즉시 외교와 출병 회귀를 추가하고 발견된 Ref 로그 및 생성 장수 저장 차이를 교정합니다.
2026-08-23 21:48:29 +00:00

56 lines
1.8 KiB
TypeScript

import {
closeTurnSnapshotSelectorOverCreatedEntities,
type CanonicalTurnCommandTrace,
type TurnSnapshotSelector,
} from './canonical.js';
import { readCoreDatabaseEntityIds, readCoreDatabaseSnapshot } from './databaseSnapshot.js';
export interface CoreTurnTraceRequest {
kind: 'general' | 'nation';
actorGeneralId: number;
action: string;
args: unknown;
observe: TurnSnapshotSelector;
}
export const captureCoreDatabaseTurnTrace = async (
databaseUrl: string,
request: CoreTurnTraceRequest,
execute: () => Promise<{
outcome?: unknown;
rng?: CanonicalTurnCommandTrace['rng'];
}>
): Promise<CanonicalTurnCommandTrace> => {
const [before, entityIdsBefore] = await Promise.all([
readCoreDatabaseSnapshot(databaseUrl, request.observe),
readCoreDatabaseEntityIds(databaseUrl),
]);
const result = await execute();
const entityIdsAfter = await readCoreDatabaseEntityIds(databaseUrl);
const afterSelector = closeTurnSnapshotSelectorOverCreatedEntities(
request.observe,
entityIdsBefore,
entityIdsAfter
);
const after = await readCoreDatabaseSnapshot(databaseUrl, {
...afterSelector,
logAfterId: request.observe.logAfterId ?? before.watermarks.logId,
messageAfterId: request.observe.messageAfterId ?? before.watermarks.messageId,
});
return {
schemaVersion: 1,
engine: 'core2026',
execution: {
kind: request.kind,
actorGeneralId: request.actorGeneralId,
action: request.action,
args: request.args,
seedDomain: request.kind === 'general' ? 'generalCommand' : 'nationCommand',
outcome: result.outcome,
},
before,
after,
rng: result.rng ?? [],
};
};