mirror of
https://github.com/morluto/rea.git
synced 2026-11-06 23:06:18 +00:00
* chore(deps): finish toolchain upgrades and drop dead weight pino 9 to 10, @types/node 24 to 26, oxlint 1.73 to 1.87, knip 6.26 to 6.39, turbo 2.10 to 2.11. Narrow engines to supported majors (22/24/26; vitest 5 refuses Node 25). Scope no-var-requires off for Electron CJS hooks and fixtures. Remove TypeDoc: incompatible with TypeScript 7 at install and runtime, used by nothing in any gate. Drop the dep, docs:api workflow, typedoc.json, CI artifact step, and related docs. Replace graphology with a local call-graph adjacency plus BFS: the only consumer is call-path search, and graphology-types ships no types entry for TS7 NodeNext resolution. Delete both graphology dependencies. Remove dead re-exports newly flagged by knip 6.39. * chore: drop stale typedoc and replay references Remove the docs:api release-checklist step, the orphaned docs/api ignore entry, and the nonexistent replay glob from the adapters project.
69 lines
2.4 KiB
TypeScript
69 lines
2.4 KiB
TypeScript
import type { ProcessCapture } from "./processCapture.js";
|
|
import {
|
|
evaluateProcessTraceSide,
|
|
processTraceComparisonResultSchema,
|
|
type ProcessTraceComparisonResult,
|
|
} from "./processTraceEvaluation.js";
|
|
import {
|
|
processTraceSpecificationSchema,
|
|
type ProcessTraceSpecification,
|
|
} from "./processTraceSpecification.js";
|
|
|
|
export {
|
|
processTraceComparisonResultSchema,
|
|
type ProcessTraceComparisonResult,
|
|
} from "./processTraceEvaluation.js";
|
|
export {
|
|
processTraceSpecificationSchema,
|
|
type ProcessTraceSpecification,
|
|
} from "./processTraceSpecification.js";
|
|
|
|
/** Compare two captures against an explicit finite trace language. */
|
|
export const compareProcessTraces = (
|
|
left: ProcessCapture,
|
|
right: ProcessCapture,
|
|
specificationInput: ProcessTraceSpecification,
|
|
): ProcessTraceComparisonResult => {
|
|
const specification =
|
|
processTraceSpecificationSchema.parse(specificationInput);
|
|
const leftEvaluation = evaluateProcessTraceSide(left, specification);
|
|
const rightEvaluation = evaluateProcessTraceSide(right, specification);
|
|
const diagnostic =
|
|
leftEvaluation.diagnostic === null
|
|
? rightEvaluation.diagnostic === null
|
|
? null
|
|
: { side: "right" as const, ...rightEvaluation.diagnostic }
|
|
: { side: "left" as const, ...leftEvaluation.diagnostic };
|
|
const outcomesDiffer =
|
|
leftEvaluation.result.status !== rightEvaluation.result.status ||
|
|
JSON.stringify(
|
|
leftEvaluation.result.raw_trace.map(({ event_id }) => event_id),
|
|
) !==
|
|
JSON.stringify(
|
|
rightEvaluation.result.raw_trace.map(({ event_id }) => event_id),
|
|
);
|
|
return processTraceComparisonResultSchema.parse({
|
|
verdict:
|
|
leftEvaluation.result.status === "unknown" ||
|
|
rightEvaluation.result.status === "unknown"
|
|
? "unknown"
|
|
: leftEvaluation.result.status === "pass" &&
|
|
rightEvaluation.result.status === "pass"
|
|
? "equivalent"
|
|
: outcomesDiffer
|
|
? "different"
|
|
: "nonconforming",
|
|
left: leftEvaluation.result,
|
|
right: rightEvaluation.result,
|
|
diagnostic,
|
|
});
|
|
};
|
|
|
|
/** Whether trace conformance or raw declared order differs across captures. */
|
|
export const processTraceOutcomesDiffer = (
|
|
comparison: ProcessTraceComparisonResult,
|
|
): boolean =>
|
|
comparison.left.status !== comparison.right.status ||
|
|
JSON.stringify(comparison.left.raw_trace.map(({ event_id }) => event_id)) !==
|
|
JSON.stringify(comparison.right.raw_trace.map(({ event_id }) => event_id));
|