@x12i/graphenix-executable-format 1.0.0 → 2.0.1

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.
Files changed (259) hide show
  1. package/README.md +512 -341
  2. package/dist/api.d.ts +13 -35
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +13 -98
  5. package/dist/api.js.map +1 -1
  6. package/dist/constants.d.ts +1 -11
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/constants.js +1 -18
  9. package/dist/constants.js.map +1 -1
  10. package/dist/index.js +1 -17
  11. package/dist/index.js.map +1 -1
  12. package/dist/test/executable-format.test.js +316 -289
  13. package/dist/test/executable-format.test.js.map +1 -1
  14. package/dist/test/executable-plan-v2.test.d.ts +2 -0
  15. package/dist/test/executable-plan-v2.test.d.ts.map +1 -0
  16. package/dist/test/executable-plan-v2.test.js +342 -0
  17. package/dist/test/executable-plan-v2.test.js.map +1 -0
  18. package/dist/test/execution-trace-v2.test.d.ts +2 -0
  19. package/dist/test/execution-trace-v2.test.d.ts.map +1 -0
  20. package/dist/test/execution-trace-v2.test.js +411 -0
  21. package/dist/test/execution-trace-v2.test.js.map +1 -0
  22. package/dist/test/phase-1-format.test.d.ts +2 -0
  23. package/dist/test/phase-1-format.test.d.ts.map +1 -0
  24. package/dist/test/phase-1-format.test.js +297 -0
  25. package/dist/test/phase-1-format.test.js.map +1 -0
  26. package/package.json +69 -56
  27. package/dist/adapter/build-graph-execution-request-from-studio-execute.d.ts +0 -6
  28. package/dist/adapter/build-graph-execution-request-from-studio-execute.d.ts.map +0 -1
  29. package/dist/adapter/build-graph-execution-request-from-studio-execute.js +0 -41
  30. package/dist/adapter/build-graph-execution-request-from-studio-execute.js.map +0 -1
  31. package/dist/case-condition/allowed-paths.d.ts +0 -4
  32. package/dist/case-condition/allowed-paths.d.ts.map +0 -1
  33. package/dist/case-condition/allowed-paths.js +0 -74
  34. package/dist/case-condition/allowed-paths.js.map +0 -1
  35. package/dist/case-condition/evaluate-case-condition.d.ts +0 -4
  36. package/dist/case-condition/evaluate-case-condition.d.ts.map +0 -1
  37. package/dist/case-condition/evaluate-case-condition.js +0 -106
  38. package/dist/case-condition/evaluate-case-condition.js.map +0 -1
  39. package/dist/case-condition/select-graph-model-case.d.ts +0 -6
  40. package/dist/case-condition/select-graph-model-case.d.ts.map +0 -1
  41. package/dist/case-condition/select-graph-model-case.js +0 -40
  42. package/dist/case-condition/select-graph-model-case.js.map +0 -1
  43. package/dist/case-condition/select-node-model-case.d.ts +0 -4
  44. package/dist/case-condition/select-node-model-case.d.ts.map +0 -1
  45. package/dist/case-condition/select-node-model-case.js +0 -34
  46. package/dist/case-condition/select-node-model-case.js.map +0 -1
  47. package/dist/case-condition/validate-case-condition.d.ts +0 -5
  48. package/dist/case-condition/validate-case-condition.d.ts.map +0 -1
  49. package/dist/case-condition/validate-case-condition.js +0 -118
  50. package/dist/case-condition/validate-case-condition.js.map +0 -1
  51. package/dist/compile/build-node-execution-units.d.ts +0 -6
  52. package/dist/compile/build-node-execution-units.d.ts.map +0 -1
  53. package/dist/compile/build-node-execution-units.js +0 -77
  54. package/dist/compile/build-node-execution-units.js.map +0 -1
  55. package/dist/compile/compile-executable-plan.d.ts +0 -5
  56. package/dist/compile/compile-executable-plan.d.ts.map +0 -1
  57. package/dist/compile/compile-executable-plan.js +0 -142
  58. package/dist/compile/compile-executable-plan.js.map +0 -1
  59. package/dist/explain/explain-executable-graph-error.d.ts +0 -4
  60. package/dist/explain/explain-executable-graph-error.d.ts.map +0 -1
  61. package/dist/explain/explain-executable-graph-error.js +0 -14
  62. package/dist/explain/explain-executable-graph-error.js.map +0 -1
  63. package/dist/explain/explain-node-inheritance.d.ts +0 -3
  64. package/dist/explain/explain-node-inheritance.d.ts.map +0 -1
  65. package/dist/explain/explain-node-inheritance.js +0 -41
  66. package/dist/explain/explain-node-inheritance.js.map +0 -1
  67. package/dist/fixtures/minimal-executable-graph.d.ts +0 -4
  68. package/dist/fixtures/minimal-executable-graph.d.ts.map +0 -1
  69. package/dist/fixtures/minimal-executable-graph.js +0 -170
  70. package/dist/fixtures/minimal-executable-graph.js.map +0 -1
  71. package/dist/helpers/add-finalizer-node.d.ts +0 -5
  72. package/dist/helpers/add-finalizer-node.d.ts.map +0 -1
  73. package/dist/helpers/add-finalizer-node.js +0 -13
  74. package/dist/helpers/add-finalizer-node.js.map +0 -1
  75. package/dist/helpers/add-task-node.d.ts +0 -5
  76. package/dist/helpers/add-task-node.d.ts.map +0 -1
  77. package/dist/helpers/add-task-node.js +0 -13
  78. package/dist/helpers/add-task-node.js.map +0 -1
  79. package/dist/helpers/connect-task-to-task.d.ts +0 -10
  80. package/dist/helpers/connect-task-to-task.d.ts.map +0 -1
  81. package/dist/helpers/connect-task-to-task.js +0 -23
  82. package/dist/helpers/connect-task-to-task.js.map +0 -1
  83. package/dist/helpers/set-graph-model-config.d.ts +0 -5
  84. package/dist/helpers/set-graph-model-config.d.ts.map +0 -1
  85. package/dist/helpers/set-graph-model-config.js +0 -30
  86. package/dist/helpers/set-graph-model-config.js.map +0 -1
  87. package/dist/helpers/set-node-model-config.d.ts +0 -5
  88. package/dist/helpers/set-node-model-config.d.ts.map +0 -1
  89. package/dist/helpers/set-node-model-config.js +0 -25
  90. package/dist/helpers/set-node-model-config.js.map +0 -1
  91. package/dist/internal/hash.d.ts +0 -4
  92. package/dist/internal/hash.d.ts.map +0 -1
  93. package/dist/internal/hash.js +0 -26
  94. package/dist/internal/hash.js.map +0 -1
  95. package/dist/internal/utils.d.ts +0 -16
  96. package/dist/internal/utils.d.ts.map +0 -1
  97. package/dist/internal/utils.js +0 -80
  98. package/dist/internal/utils.js.map +0 -1
  99. package/dist/migration/migrate-legacy-graph-model-object.d.ts +0 -4
  100. package/dist/migration/migrate-legacy-graph-model-object.d.ts.map +0 -1
  101. package/dist/migration/migrate-legacy-graph-model-object.js +0 -217
  102. package/dist/migration/migrate-legacy-graph-model-object.js.map +0 -1
  103. package/dist/normalize/normalize-executable-graph.d.ts +0 -3
  104. package/dist/normalize/normalize-executable-graph.d.ts.map +0 -1
  105. package/dist/normalize/normalize-executable-graph.js +0 -34
  106. package/dist/normalize/normalize-executable-graph.js.map +0 -1
  107. package/dist/normalize/normalize-model-config.d.ts +0 -4
  108. package/dist/normalize/normalize-model-config.d.ts.map +0 -1
  109. package/dist/normalize/normalize-model-config.js +0 -64
  110. package/dist/normalize/normalize-model-config.js.map +0 -1
  111. package/dist/profile-choice/known-profile-choices.d.ts +0 -10
  112. package/dist/profile-choice/known-profile-choices.d.ts.map +0 -1
  113. package/dist/profile-choice/known-profile-choices.js +0 -19
  114. package/dist/profile-choice/known-profile-choices.js.map +0 -1
  115. package/dist/profile-choice/validate-profile-choice.d.ts +0 -8
  116. package/dist/profile-choice/validate-profile-choice.d.ts.map +0 -1
  117. package/dist/profile-choice/validate-profile-choice.js +0 -55
  118. package/dist/profile-choice/validate-profile-choice.js.map +0 -1
  119. package/dist/resolution/build-deterministic-case-context.d.ts +0 -9
  120. package/dist/resolution/build-deterministic-case-context.d.ts.map +0 -1
  121. package/dist/resolution/build-deterministic-case-context.js +0 -26
  122. package/dist/resolution/build-deterministic-case-context.js.map +0 -1
  123. package/dist/resolution/resolve-graph-model-config.d.ts +0 -12
  124. package/dist/resolution/resolve-graph-model-config.d.ts.map +0 -1
  125. package/dist/resolution/resolve-graph-model-config.js +0 -28
  126. package/dist/resolution/resolve-graph-model-config.js.map +0 -1
  127. package/dist/resolution/resolve-node-ai-plan.d.ts +0 -7
  128. package/dist/resolution/resolve-node-ai-plan.d.ts.map +0 -1
  129. package/dist/resolution/resolve-node-ai-plan.js +0 -64
  130. package/dist/resolution/resolve-node-ai-plan.js.map +0 -1
  131. package/dist/resolution/resolve-node-model-config.d.ts +0 -15
  132. package/dist/resolution/resolve-node-model-config.d.ts.map +0 -1
  133. package/dist/resolution/resolve-node-model-config.js +0 -37
  134. package/dist/resolution/resolve-node-model-config.js.map +0 -1
  135. package/dist/resolution/resolve-node-model-slot.d.ts +0 -7
  136. package/dist/resolution/resolve-node-model-slot.d.ts.map +0 -1
  137. package/dist/resolution/resolve-node-model-slot.js +0 -65
  138. package/dist/resolution/resolve-node-model-slot.js.map +0 -1
  139. package/dist/trace/append-execution-event.d.ts +0 -5
  140. package/dist/trace/append-execution-event.d.ts.map +0 -1
  141. package/dist/trace/append-execution-event.js +0 -9
  142. package/dist/trace/append-execution-event.js.map +0 -1
  143. package/dist/trace/create-execution-trace.d.ts +0 -5
  144. package/dist/trace/create-execution-trace.d.ts.map +0 -1
  145. package/dist/trace/create-execution-trace.js +0 -56
  146. package/dist/trace/create-execution-trace.js.map +0 -1
  147. package/dist/types/case-condition.d.ts +0 -50
  148. package/dist/types/case-condition.d.ts.map +0 -1
  149. package/dist/types/case-condition.js +0 -3
  150. package/dist/types/case-condition.js.map +0 -1
  151. package/dist/types/errors.d.ts +0 -16
  152. package/dist/types/errors.d.ts.map +0 -1
  153. package/dist/types/errors.js +0 -3
  154. package/dist/types/errors.js.map +0 -1
  155. package/dist/types/executable-graph.d.ts +0 -19
  156. package/dist/types/executable-graph.d.ts.map +0 -1
  157. package/dist/types/executable-graph.js +0 -3
  158. package/dist/types/executable-graph.js.map +0 -1
  159. package/dist/types/executable-nodes.d.ts +0 -54
  160. package/dist/types/executable-nodes.d.ts.map +0 -1
  161. package/dist/types/executable-nodes.js +0 -3
  162. package/dist/types/executable-nodes.js.map +0 -1
  163. package/dist/types/executable-plan.d.ts +0 -78
  164. package/dist/types/executable-plan.d.ts.map +0 -1
  165. package/dist/types/executable-plan.js +0 -5
  166. package/dist/types/executable-plan.js.map +0 -1
  167. package/dist/types/executable-profile.d.ts +0 -18
  168. package/dist/types/executable-profile.d.ts.map +0 -1
  169. package/dist/types/executable-profile.js +0 -3
  170. package/dist/types/executable-profile.js.map +0 -1
  171. package/dist/types/execution-trace.d.ts +0 -278
  172. package/dist/types/execution-trace.d.ts.map +0 -1
  173. package/dist/types/execution-trace.js +0 -5
  174. package/dist/types/execution-trace.js.map +0 -1
  175. package/dist/types/execution-unit.d.ts +0 -19
  176. package/dist/types/execution-unit.d.ts.map +0 -1
  177. package/dist/types/execution-unit.js +0 -3
  178. package/dist/types/execution-unit.js.map +0 -1
  179. package/dist/types/index.d.ts +0 -16
  180. package/dist/types/index.d.ts.map +0 -1
  181. package/dist/types/index.js +0 -8
  182. package/dist/types/index.js.map +0 -1
  183. package/dist/types/legacy.d.ts +0 -21
  184. package/dist/types/legacy.d.ts.map +0 -1
  185. package/dist/types/legacy.js +0 -3
  186. package/dist/types/legacy.js.map +0 -1
  187. package/dist/types/model-config.d.ts +0 -80
  188. package/dist/types/model-config.d.ts.map +0 -1
  189. package/dist/types/model-config.js +0 -3
  190. package/dist/types/model-config.js.map +0 -1
  191. package/dist/types/resolution.d.ts +0 -55
  192. package/dist/types/resolution.d.ts.map +0 -1
  193. package/dist/types/resolution.js +0 -3
  194. package/dist/types/resolution.js.map +0 -1
  195. package/dist/types/runtime.d.ts +0 -19
  196. package/dist/types/runtime.d.ts.map +0 -1
  197. package/dist/types/runtime.js +0 -3
  198. package/dist/types/runtime.js.map +0 -1
  199. package/dist/types/studio-execute.d.ts +0 -25
  200. package/dist/types/studio-execute.d.ts.map +0 -1
  201. package/dist/types/studio-execute.js +0 -3
  202. package/dist/types/studio-execute.js.map +0 -1
  203. package/dist/validators/assert-executable-graph.d.ts +0 -3
  204. package/dist/validators/assert-executable-graph.d.ts.map +0 -1
  205. package/dist/validators/assert-executable-graph.js +0 -14
  206. package/dist/validators/assert-executable-graph.js.map +0 -1
  207. package/dist/validators/assert-normalized-executable-graph.d.ts +0 -3
  208. package/dist/validators/assert-normalized-executable-graph.d.ts.map +0 -1
  209. package/dist/validators/assert-normalized-executable-graph.js +0 -14
  210. package/dist/validators/assert-normalized-executable-graph.js.map +0 -1
  211. package/dist/validators/validate-authoring-executable-graph.d.ts +0 -3
  212. package/dist/validators/validate-authoring-executable-graph.d.ts.map +0 -1
  213. package/dist/validators/validate-authoring-executable-graph.js +0 -134
  214. package/dist/validators/validate-authoring-executable-graph.js.map +0 -1
  215. package/dist/validators/validate-authoring-graph.d.ts +0 -2
  216. package/dist/validators/validate-authoring-graph.d.ts.map +0 -1
  217. package/dist/validators/validate-authoring-graph.js +0 -6
  218. package/dist/validators/validate-authoring-graph.js.map +0 -1
  219. package/dist/validators/validate-executable-graph.d.ts +0 -4
  220. package/dist/validators/validate-executable-graph.d.ts.map +0 -1
  221. package/dist/validators/validate-executable-graph.js +0 -9
  222. package/dist/validators/validate-executable-graph.js.map +0 -1
  223. package/dist/validators/validate-executable-plan.d.ts +0 -3
  224. package/dist/validators/validate-executable-plan.d.ts.map +0 -1
  225. package/dist/validators/validate-executable-plan.js +0 -211
  226. package/dist/validators/validate-executable-plan.js.map +0 -1
  227. package/dist/validators/validate-execution-trace.d.ts +0 -4
  228. package/dist/validators/validate-execution-trace.d.ts.map +0 -1
  229. package/dist/validators/validate-execution-trace.js +0 -158
  230. package/dist/validators/validate-execution-trace.js.map +0 -1
  231. package/dist/validators/validate-finalizer-node.d.ts +0 -4
  232. package/dist/validators/validate-finalizer-node.d.ts.map +0 -1
  233. package/dist/validators/validate-finalizer-node.js +0 -36
  234. package/dist/validators/validate-finalizer-node.js.map +0 -1
  235. package/dist/validators/validate-model-config.d.ts +0 -7
  236. package/dist/validators/validate-model-config.d.ts.map +0 -1
  237. package/dist/validators/validate-model-config.js +0 -197
  238. package/dist/validators/validate-model-config.js.map +0 -1
  239. package/dist/validators/validate-normalized-executable-graph.d.ts +0 -3
  240. package/dist/validators/validate-normalized-executable-graph.d.ts.map +0 -1
  241. package/dist/validators/validate-normalized-executable-graph.js +0 -26
  242. package/dist/validators/validate-normalized-executable-graph.js.map +0 -1
  243. package/dist/validators/validate-runtime-object.d.ts +0 -10
  244. package/dist/validators/validate-runtime-object.d.ts.map +0 -1
  245. package/dist/validators/validate-runtime-object.js +0 -63
  246. package/dist/validators/validate-runtime-object.js.map +0 -1
  247. package/dist/validators/validate-studio-execute-request.d.ts +0 -5
  248. package/dist/validators/validate-studio-execute-request.d.ts.map +0 -1
  249. package/dist/validators/validate-studio-execute-request.js +0 -37
  250. package/dist/validators/validate-studio-execute-request.js.map +0 -1
  251. package/dist/validators/validate-task-actions.d.ts +0 -4
  252. package/dist/validators/validate-task-actions.d.ts.map +0 -1
  253. package/dist/validators/validate-task-actions.js +0 -93
  254. package/dist/validators/validate-task-actions.js.map +0 -1
  255. package/dist/validators/validate-task-node.d.ts +0 -6
  256. package/dist/validators/validate-task-node.d.ts.map +0 -1
  257. package/dist/validators/validate-task-node.js +0 -43
  258. package/dist/validators/validate-task-node.js.map +0 -1
  259. package/schema/graphenix-executable-format-1.0.0.schema.json +0 -40
@@ -0,0 +1,411 @@
1
+ import assert from "node:assert/strict";
2
+ import { describe, it } from "node:test";
3
+ import { compileExecutablePlanV2, createEmptyExecutionTrace, appendTraceEvent, validateExecutionTrace, validateExecutionTraceV2, validateTraceAgainstPlan, summarizeExecutionTrace, deriveGraphStatus, buildRuntimeObject, createMinimalExecutableGraph, EXECUTABLE_PLAN_FORMAT_V2 } from "../api.js";
4
+ function compilePlan(doc = createMinimalExecutableGraph()) {
5
+ const runtime = buildRuntimeObject({ jobId: "job-trace-v2" });
6
+ return compileExecutablePlanV2(doc, runtime, {
7
+ profileRegistry: { version: "3.0.0", registryHash: "sha256:profiles-trace" }
8
+ });
9
+ }
10
+ function createTrace(plan) {
11
+ const runtime = buildRuntimeObject({ jobId: plan.runtimeBinding.jobId });
12
+ return createEmptyExecutionTrace({
13
+ traceId: `trace:${plan.runtimeBinding.jobId}`,
14
+ plan,
15
+ runtime
16
+ });
17
+ }
18
+ function completeMinimalTrace(plan) {
19
+ let trace = createTrace(plan);
20
+ const now = "2026-06-06T12:00:00.000Z";
21
+ let seq = 1;
22
+ const append = (event) => {
23
+ trace = appendTraceEvent(trace, { ...event, sequence: seq++ });
24
+ };
25
+ append({
26
+ id: "evt:started",
27
+ ts: now,
28
+ level: "info",
29
+ type: "graph.started"
30
+ });
31
+ for (const gate of Object.values(plan.deferredGates.nodeGates)) {
32
+ trace.gateEvaluations[gate.gateId] = {
33
+ gateId: gate.gateId,
34
+ gateKind: "node",
35
+ sourcePath: gate.sourcePath,
36
+ relatedNodeId: gate.nodeId,
37
+ evaluatedAt: now,
38
+ result: "passed",
39
+ conditionKind: "dataFilter"
40
+ };
41
+ append({
42
+ id: `evt:gate:${gate.gateId}`,
43
+ ts: now,
44
+ level: "info",
45
+ type: "gate.evaluated",
46
+ gateId: gate.gateId
47
+ });
48
+ }
49
+ for (const edgeGate of Object.values(plan.deferredGates.edgeGates)) {
50
+ trace.gateEvaluations[edgeGate.gateId] = {
51
+ gateId: edgeGate.gateId,
52
+ gateKind: "edge",
53
+ sourcePath: edgeGate.sourcePath,
54
+ relatedEdgeId: edgeGate.edgeId,
55
+ evaluatedAt: now,
56
+ result: "passed",
57
+ conditionKind: "dataFilter"
58
+ };
59
+ }
60
+ for (const [unitId, unit] of Object.entries(trace.unitExecutions)) {
61
+ const nodePlan = plan.nodePlans[unit.nodeId];
62
+ const isLocal = nodePlan?.executionClass === "localTask";
63
+ trace.unitExecutions[unitId] = {
64
+ ...unit,
65
+ status: "completed",
66
+ startedAt: now,
67
+ completedAt: now,
68
+ durationMs: 10
69
+ };
70
+ append({
71
+ id: `evt:unit:${unitId}:start`,
72
+ ts: now,
73
+ level: "info",
74
+ type: "unit.started",
75
+ unitId,
76
+ nodeId: unit.nodeId
77
+ });
78
+ append({
79
+ id: `evt:unit:${unitId}:done`,
80
+ ts: now,
81
+ level: "info",
82
+ type: "unit.completed",
83
+ unitId,
84
+ nodeId: unit.nodeId
85
+ });
86
+ if (!isLocal && unit.unitKind === "mainSkill" && unit.modelSlot) {
87
+ const invocationId = `inv:${unitId}:1`;
88
+ const selection = unit.plannedModelSelection ?? {
89
+ kind: "profileChoice",
90
+ key: "vol/default"
91
+ };
92
+ trace.modelInvocations[invocationId] = {
93
+ invocationId,
94
+ nodeId: unit.nodeId,
95
+ unitId,
96
+ slot: unit.modelSlot,
97
+ attempt: 1,
98
+ status: "completed",
99
+ startedAt: now,
100
+ completedAt: now,
101
+ durationMs: 5,
102
+ plannedSelection: selection,
103
+ resolvedInvocation: {
104
+ provider: "openrouter",
105
+ modelId: "gpt-4o-mini",
106
+ profileChoiceKey: selection.kind === "profileChoice" ? selection.key : undefined,
107
+ registryVersion: plan.profileRegistry.version,
108
+ registryHash: plan.profileRegistry.registryHash,
109
+ resolutionSource: "profileRegistry"
110
+ },
111
+ usage: { inputTokens: 100, outputTokens: 50, totalTokens: 150 },
112
+ cost: { costUsd: 0.001, costStatus: "known" }
113
+ };
114
+ trace.unitExecutions[unitId].modelInvocationIds = [invocationId];
115
+ }
116
+ }
117
+ for (const nodeId of Object.keys(trace.nodeExecutions)) {
118
+ trace.nodeExecutions[nodeId] = {
119
+ ...trace.nodeExecutions[nodeId],
120
+ status: "completed",
121
+ startedAt: now,
122
+ completedAt: now,
123
+ durationMs: 20
124
+ };
125
+ trace.graphExecution.completedNodeIds.push(nodeId);
126
+ trace.graphExecution.startedNodeIds.push(nodeId);
127
+ }
128
+ for (const unitId of Object.keys(trace.unitExecutions)) {
129
+ trace.graphExecution.completedUnitIds.push(unitId);
130
+ trace.graphExecution.startedUnitIds.push(unitId);
131
+ }
132
+ trace.finalOutput = {
133
+ producedByNodeId: plan.topology.finalizerNodeIds[0],
134
+ valueHash: "sha256:output",
135
+ responseShapePath: plan.contracts.response.responseShapePath,
136
+ schemaValidation: { valid: true }
137
+ };
138
+ trace.status = "completed";
139
+ trace.completedAt = now;
140
+ trace.startedAt = now;
141
+ trace.totals = summarizeExecutionTrace(trace);
142
+ append({
143
+ id: "evt:completed",
144
+ ts: now,
145
+ level: "info",
146
+ type: "graph.completed"
147
+ });
148
+ return trace;
149
+ }
150
+ describe("execution trace v2 format", () => {
151
+ it("creates empty v2 trace from v2 plan", () => {
152
+ const plan = compilePlan();
153
+ const trace = createTrace(plan);
154
+ assert.equal(trace.format, "graphenix.execution-trace/v2");
155
+ assert.equal(trace.plan.planFormat, EXECUTABLE_PLAN_FORMAT_V2);
156
+ assert.ok(trace.plan.planHash);
157
+ assert.ok(Object.keys(trace.unitExecutions).length > 0);
158
+ assert.equal(validateExecutionTraceV2(trace, plan).valid, true);
159
+ });
160
+ it("AC-T001: trace without planId fails", () => {
161
+ const plan = compilePlan();
162
+ const trace = createTrace(plan);
163
+ const broken = structuredClone(trace);
164
+ delete broken.plan.planId;
165
+ assert.equal(validateExecutionTraceV2(broken).valid, false);
166
+ });
167
+ it("AC-T002: trace without planHash fails", () => {
168
+ const plan = compilePlan();
169
+ const trace = createTrace(plan);
170
+ const broken = structuredClone(trace);
171
+ delete broken.plan.planHash;
172
+ assert.equal(validateExecutionTraceV2(broken).valid, false);
173
+ });
174
+ it("AC-T003: trace jobId mismatch with runtime binding fails", () => {
175
+ const plan = compilePlan();
176
+ const trace = createTrace(plan);
177
+ const broken = structuredClone(trace);
178
+ broken.jobId = "wrong-job";
179
+ assert.equal(validateExecutionTraceV2(broken, plan).valid, false);
180
+ });
181
+ it("AC-T004: trace source graph hash mismatch fails", () => {
182
+ const plan = compilePlan();
183
+ const trace = createTrace(plan);
184
+ const broken = structuredClone(trace);
185
+ broken.source.graphHash = "wrong-hash";
186
+ assert.equal(validateTraceAgainstPlan(broken, plan).valid, false);
187
+ });
188
+ });
189
+ describe("trace events v2", () => {
190
+ it("AC-E001: ordered append-only events pass", () => {
191
+ const plan = compilePlan();
192
+ const trace = completeMinimalTrace(plan);
193
+ assert.equal(validateExecutionTraceV2(trace, plan).valid, true);
194
+ });
195
+ it("AC-E002: duplicate event sequence fails", () => {
196
+ const plan = compilePlan();
197
+ const trace = completeMinimalTrace(plan);
198
+ const broken = structuredClone(trace);
199
+ broken.events[2].sequence = broken.events[1].sequence;
200
+ assert.equal(validateExecutionTraceV2(broken).valid, false);
201
+ });
202
+ it("AC-E003: event referencing unknown nodeId fails", () => {
203
+ const plan = compilePlan();
204
+ const trace = completeMinimalTrace(plan);
205
+ const broken = structuredClone(trace);
206
+ broken.events.push({
207
+ id: "evt:bad",
208
+ ts: "2026-06-06T12:00:99.000Z",
209
+ sequence: 999,
210
+ level: "info",
211
+ type: "node.started",
212
+ nodeId: "node:missing"
213
+ });
214
+ assert.equal(validateExecutionTraceV2(broken).valid, false);
215
+ });
216
+ it("AC-E004: event referencing unknown unitId fails", () => {
217
+ const plan = compilePlan();
218
+ const trace = completeMinimalTrace(plan);
219
+ const broken = structuredClone(trace);
220
+ broken.events.push({
221
+ id: "evt:bad-unit",
222
+ ts: "2026-06-06T12:00:99.000Z",
223
+ sequence: 999,
224
+ level: "info",
225
+ type: "unit.started",
226
+ unitId: "unit:missing",
227
+ nodeId: "node:x"
228
+ });
229
+ assert.equal(validateExecutionTraceV2(broken).valid, false);
230
+ });
231
+ it("AC-E005: execution event after graph.completed fails", () => {
232
+ const plan = compilePlan();
233
+ const trace = completeMinimalTrace(plan);
234
+ const broken = structuredClone(trace);
235
+ broken.events.push({
236
+ id: "evt:late-node",
237
+ ts: "2026-06-06T12:01:00.000Z",
238
+ sequence: 9999,
239
+ level: "info",
240
+ type: "node.started",
241
+ nodeId: "node:professional-answer"
242
+ });
243
+ assert.equal(validateExecutionTraceV2(broken).valid, false);
244
+ });
245
+ });
246
+ describe("gate evaluations v2", () => {
247
+ it("AC-G002: deferred node gate has evaluation trace", () => {
248
+ const doc = createMinimalExecutableGraph();
249
+ doc.graph.nodes[0].parameters = {
250
+ ...doc.graph.nodes[0].parameters,
251
+ conditions: [{ path: "runtime.mode", op: "eq", value: "live" }]
252
+ };
253
+ const plan = compilePlan(doc);
254
+ const trace = completeMinimalTrace(plan);
255
+ const gateId = Object.values(plan.deferredGates.nodeGates)[0].gateId;
256
+ assert.ok(gateId);
257
+ assert.ok(trace.gateEvaluations[gateId]);
258
+ assert.equal(validateExecutionTraceV2(trace, plan).valid, true);
259
+ });
260
+ it("AC-G003: missing gate evaluation fails for completed trace", () => {
261
+ const doc = createMinimalExecutableGraph();
262
+ doc.graph.nodes[0].parameters = {
263
+ ...doc.graph.nodes[0].parameters,
264
+ conditions: [{ path: "runtime.mode", op: "eq", value: "live" }]
265
+ };
266
+ const plan = compilePlan(doc);
267
+ const trace = completeMinimalTrace(plan);
268
+ const gateId = Object.values(plan.deferredGates.nodeGates)[0].gateId;
269
+ const broken = structuredClone(trace);
270
+ delete broken.gateEvaluations[gateId];
271
+ assert.equal(validateTraceAgainstPlan(broken, plan).valid, false);
272
+ });
273
+ });
274
+ describe("nodes and units v2", () => {
275
+ it("AC-N001: every plan node has terminal trace state", () => {
276
+ const plan = compilePlan();
277
+ const trace = completeMinimalTrace(plan);
278
+ for (const nodeId of Object.keys(trace.nodeExecutions)) {
279
+ const status = trace.nodeExecutions[nodeId].status;
280
+ assert.ok(["completed", "failed", "skipped"].includes(status));
281
+ }
282
+ });
283
+ it("AC-U001: every plan unit has terminal trace state", () => {
284
+ const plan = compilePlan();
285
+ const trace = completeMinimalTrace(plan);
286
+ for (const unitId of Object.keys(trace.unitExecutions)) {
287
+ const status = trace.unitExecutions[unitId].status;
288
+ assert.ok(["completed", "failed", "skipped"].includes(status));
289
+ }
290
+ });
291
+ it("AC-U005: localSkill unit validates without model invocation", () => {
292
+ const doc = createMinimalExecutableGraph();
293
+ doc.graph.nodes[0].parameters = {
294
+ profile: "graphenix.task-node/v1",
295
+ nodeType: "task",
296
+ skillKey: "scoped-data-reader",
297
+ taskConfiguration: { taskKind: "local" }
298
+ };
299
+ const plan = compilePlan(doc);
300
+ const trace = completeMinimalTrace(plan);
301
+ const unit = Object.values(trace.unitExecutions).find((u) => u.unitKind === "localSkill");
302
+ assert.ok(unit);
303
+ assert.equal(unit.modelInvocationIds?.length ?? 0, 0);
304
+ assert.equal(validateExecutionTraceV2(trace, plan).valid, true);
305
+ });
306
+ it("AC-U002: mainSkill unit can record model invocation", () => {
307
+ const plan = compilePlan();
308
+ const trace = completeMinimalTrace(plan);
309
+ const mainUnit = Object.values(trace.unitExecutions).find((u) => u.unitKind === "mainSkill");
310
+ assert.ok(mainUnit?.modelInvocationIds?.length);
311
+ assert.ok(Object.keys(trace.modelInvocations).length > 0);
312
+ });
313
+ });
314
+ describe("model invocations v2", () => {
315
+ it("AC-M001/M002: profileChoice invocation records provider/model/key", () => {
316
+ const plan = compilePlan();
317
+ const trace = completeMinimalTrace(plan);
318
+ const invocation = Object.values(trace.modelInvocations)[0];
319
+ assert.ok(invocation);
320
+ assert.equal(invocation.resolvedInvocation.provider, "openrouter");
321
+ assert.ok(invocation.resolvedInvocation.profileChoiceKey);
322
+ assert.equal(invocation.resolvedInvocation.registryHash, plan.profileRegistry.registryHash);
323
+ });
324
+ it("AC-M004: model invocation for unknown unit fails", () => {
325
+ const plan = compilePlan();
326
+ const trace = completeMinimalTrace(plan);
327
+ const broken = structuredClone(trace);
328
+ broken.modelInvocations["inv:orphan"] = {
329
+ ...Object.values(broken.modelInvocations)[0],
330
+ invocationId: "inv:orphan",
331
+ unitId: "unit:does-not-exist"
332
+ };
333
+ assert.equal(validateTraceAgainstPlan(broken, plan).valid, false);
334
+ });
335
+ });
336
+ describe("fallback and retry v2", () => {
337
+ it("AC-FB001: same-slot fallback trace passes when policy allows", () => {
338
+ const plan = compilePlan();
339
+ const trace = completeMinimalTrace(plan);
340
+ const unitId = Object.values(trace.unitExecutions).find((u) => u.unitKind === "mainSkill").unitId;
341
+ trace.unitExecutions[unitId].fallback = {
342
+ applied: true,
343
+ owner: plan.policies.fallbackPolicy.owner,
344
+ slot: "skillModel",
345
+ allowedByPolicy: true,
346
+ from: { kind: "profileChoice", key: "vol/pro" },
347
+ to: { kind: "profileChoice", key: "vol/default" }
348
+ };
349
+ assert.equal(validateTraceAgainstPlan(trace, plan).valid, true);
350
+ });
351
+ it("AC-FB003: fallback without owner fails", () => {
352
+ const plan = compilePlan();
353
+ const trace = completeMinimalTrace(plan);
354
+ const unitId = Object.values(trace.unitExecutions).find((u) => u.unitKind === "mainSkill").unitId;
355
+ trace.unitExecutions[unitId].fallback = {
356
+ applied: true,
357
+ owner: "executor",
358
+ slot: "skillModel",
359
+ allowedByPolicy: true
360
+ };
361
+ delete trace.unitExecutions[unitId].fallback.owner;
362
+ assert.equal(validateTraceAgainstPlan(trace, plan).valid, false);
363
+ });
364
+ });
365
+ describe("finalizers and output v2", () => {
366
+ it("AC-F001: aggregate-style finalizer validates without model invocation", () => {
367
+ const plan = compilePlan();
368
+ const trace = completeMinimalTrace(plan);
369
+ const finalizerUnit = Object.values(trace.unitExecutions).find((u) => u.unitKind === "finalizer");
370
+ assert.ok(finalizerUnit);
371
+ assert.equal(finalizerUnit.modelInvocationIds?.length ?? 0, 0);
372
+ assert.equal(validateExecutionTraceV2(trace, plan).valid, true);
373
+ });
374
+ it("AC-O001: final output valueRef/hash passes", () => {
375
+ const plan = compilePlan();
376
+ const trace = completeMinimalTrace(plan);
377
+ assert.ok(trace.finalOutput?.valueHash);
378
+ assert.equal(validateExecutionTraceV2(trace, plan).valid, true);
379
+ });
380
+ });
381
+ describe("data policy v2", () => {
382
+ it("AC-D005: credentials in trace fail", () => {
383
+ const plan = compilePlan();
384
+ const trace = completeMinimalTrace(plan);
385
+ const broken = structuredClone(trace);
386
+ broken.credentials = { token: "secret" };
387
+ assert.equal(validateExecutionTraceV2(broken).valid, false);
388
+ });
389
+ it("deriveGraphStatus returns completed for completed trace", () => {
390
+ const plan = compilePlan();
391
+ const trace = completeMinimalTrace(plan);
392
+ assert.equal(deriveGraphStatus(trace), "completed");
393
+ });
394
+ it("v1 traces still validate through router", () => {
395
+ const plan = compilePlan();
396
+ const trace = createTrace(plan);
397
+ assert.equal(trace.format, "graphenix.execution-trace/v2");
398
+ const v1Result = validateExecutionTrace(trace, plan);
399
+ assert.equal(v1Result.valid, true);
400
+ });
401
+ });
402
+ describe("trace router", () => {
403
+ it("validateExecutionTrace routes v2 format correctly", () => {
404
+ const plan = compilePlan();
405
+ const trace = completeMinimalTrace(plan);
406
+ const result = validateExecutionTrace(trace, plan);
407
+ assert.equal(result.valid, true);
408
+ assert.equal(result.errors.some((e) => e.code === "EXECUTION_TRACE_FORMAT_INVALID"), false);
409
+ });
410
+ });
411
+ //# sourceMappingURL=execution-trace-v2.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-trace-v2.test.js","sourceRoot":"","sources":["../../src/test/execution-trace-v2.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=phase-1-format.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-1-format.test.d.ts","sourceRoot":"","sources":["../../src/test/phase-1-format.test.ts"],"names":[],"mappings":""}