@exaudeus/workrail 3.27.0 → 3.29.0

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 (160) hide show
  1. package/dist/console/assets/{index-FtTaDku8.js → index-BZ6HkxGf.js} +1 -1
  2. package/dist/console/index.html +1 -1
  3. package/dist/manifest.json +3 -3
  4. package/docs/README.md +57 -0
  5. package/docs/adrs/001-hybrid-storage-backend.md +38 -0
  6. package/docs/adrs/002-four-layer-context-classification.md +38 -0
  7. package/docs/adrs/003-checkpoint-trigger-strategy.md +35 -0
  8. package/docs/adrs/004-opt-in-encryption-strategy.md +36 -0
  9. package/docs/adrs/005-agent-first-workflow-execution-tokens.md +105 -0
  10. package/docs/adrs/006-append-only-session-run-event-log.md +76 -0
  11. package/docs/adrs/007-resume-and-checkpoint-only-sessions.md +51 -0
  12. package/docs/adrs/008-blocked-nodes-architectural-upgrade.md +178 -0
  13. package/docs/adrs/009-bridge-mode-single-instance-mcp.md +195 -0
  14. package/docs/adrs/010-release-pipeline.md +89 -0
  15. package/docs/architecture/README.md +7 -0
  16. package/docs/architecture/refactor-audit.md +364 -0
  17. package/docs/authoring-v2.md +527 -0
  18. package/docs/authoring.md +873 -0
  19. package/docs/changelog-recent.md +201 -0
  20. package/docs/configuration.md +505 -0
  21. package/docs/ctc-mcp-proposal.md +518 -0
  22. package/docs/design/README.md +22 -0
  23. package/docs/design/agent-cascade-protocol.md +96 -0
  24. package/docs/design/autonomous-console-design-candidates.md +253 -0
  25. package/docs/design/autonomous-console-design-review.md +111 -0
  26. package/docs/design/autonomous-platform-mvp-discovery.md +525 -0
  27. package/docs/design/claude-code-source-deep-dive.md +713 -0
  28. package/docs/design/console-cyberpunk-ui-discovery.md +504 -0
  29. package/docs/design/console-execution-trace-candidates-final.md +160 -0
  30. package/docs/design/console-execution-trace-candidates.md +211 -0
  31. package/docs/design/console-execution-trace-design-candidates-v2.md +113 -0
  32. package/docs/design/console-execution-trace-design-review.md +74 -0
  33. package/docs/design/console-execution-trace-discovery.md +394 -0
  34. package/docs/design/console-execution-trace-final-review.md +77 -0
  35. package/docs/design/console-execution-trace-review.md +92 -0
  36. package/docs/design/console-performance-discovery.md +415 -0
  37. package/docs/design/console-ui-backlog.md +280 -0
  38. package/docs/design/daemon-architecture-discovery.md +853 -0
  39. package/docs/design/daemon-design-candidates.md +318 -0
  40. package/docs/design/daemon-design-review-findings.md +119 -0
  41. package/docs/design/daemon-engine-design-candidates.md +210 -0
  42. package/docs/design/daemon-engine-design-review.md +131 -0
  43. package/docs/design/daemon-execution-engine-discovery.md +280 -0
  44. package/docs/design/daemon-gap-analysis.md +554 -0
  45. package/docs/design/daemon-owns-console-plan.md +168 -0
  46. package/docs/design/daemon-owns-console-review.md +91 -0
  47. package/docs/design/daemon-owns-console.md +195 -0
  48. package/docs/design/data-model-erd.md +11 -0
  49. package/docs/design/design-candidates-consolidate-dev-staleness.md +98 -0
  50. package/docs/design/design-candidates-walk-cache-depth-limit.md +80 -0
  51. package/docs/design/design-review-consolidate-dev-staleness.md +54 -0
  52. package/docs/design/design-review-walk-cache-depth-limit.md +48 -0
  53. package/docs/design/implementation-plan-consolidate-dev-staleness.md +142 -0
  54. package/docs/design/implementation-plan-walk-cache-depth-limit.md +141 -0
  55. package/docs/design/layer3b-ghost-nodes-design-candidates.md +229 -0
  56. package/docs/design/layer3b-ghost-nodes-design-review.md +93 -0
  57. package/docs/design/layer3b-ghost-nodes-implementation-plan.md +219 -0
  58. package/docs/design/list-workflows-latency-fix-plan.md +128 -0
  59. package/docs/design/list-workflows-latency-fix-review.md +55 -0
  60. package/docs/design/list-workflows-latency-fix.md +109 -0
  61. package/docs/design/native-context-management-api.md +11 -0
  62. package/docs/design/performance-sweep-2026-04.md +96 -0
  63. package/docs/design/routines-guide.md +219 -0
  64. package/docs/design/sequence-diagrams.md +11 -0
  65. package/docs/design/subagent-design-principles.md +220 -0
  66. package/docs/design/temporal-patterns-design-candidates.md +312 -0
  67. package/docs/design/temporal-patterns-design-review-findings.md +163 -0
  68. package/docs/design/test-isolation-from-config-file.md +335 -0
  69. package/docs/design/v2-core-design-locks.md +2746 -0
  70. package/docs/design/v2-lock-registry.json +734 -0
  71. package/docs/design/workflow-authoring-v2.md +1044 -0
  72. package/docs/design/workflow-docs-spec.md +218 -0
  73. package/docs/design/workflow-extension-points.md +687 -0
  74. package/docs/design/workrail-auto-trigger-system.md +359 -0
  75. package/docs/design/workrail-config-file-discovery.md +513 -0
  76. package/docs/docker.md +110 -0
  77. package/docs/generated/v2-lock-closure-plan.md +26 -0
  78. package/docs/generated/v2-lock-coverage.json +797 -0
  79. package/docs/generated/v2-lock-coverage.md +177 -0
  80. package/docs/ideas/backlog.md +3927 -0
  81. package/docs/ideas/design-candidates-mcp-resilience.md +208 -0
  82. package/docs/ideas/design-review-findings-mcp-resilience.md +119 -0
  83. package/docs/ideas/implementation_plan.md +249 -0
  84. package/docs/ideas/third-party-workflow-setup-design-thinking.md +1948 -0
  85. package/docs/implementation/02-architecture.md +316 -0
  86. package/docs/implementation/04-testing-strategy.md +124 -0
  87. package/docs/implementation/09-simple-workflow-guide.md +835 -0
  88. package/docs/implementation/13-advanced-validation-guide.md +874 -0
  89. package/docs/implementation/README.md +21 -0
  90. package/docs/integrations/claude-code.md +300 -0
  91. package/docs/integrations/firebender.md +315 -0
  92. package/docs/migration/v0.1.0.md +147 -0
  93. package/docs/naming-conventions.md +45 -0
  94. package/docs/planning/README.md +104 -0
  95. package/docs/planning/github-ticketing-playbook.md +195 -0
  96. package/docs/plans/README.md +24 -0
  97. package/docs/plans/agent-managed-ticketing-design.md +605 -0
  98. package/docs/plans/agentic-orchestration-roadmap.md +112 -0
  99. package/docs/plans/assessment-gates-engine-handoff.md +536 -0
  100. package/docs/plans/content-coherence-and-references.md +151 -0
  101. package/docs/plans/library-extraction-plan.md +340 -0
  102. package/docs/plans/mr-review-workflow-redesign.md +1451 -0
  103. package/docs/plans/native-context-management-epic.md +11 -0
  104. package/docs/plans/perf-fixes-design-candidates.md +225 -0
  105. package/docs/plans/perf-fixes-design-review-findings.md +61 -0
  106. package/docs/plans/perf-fixes-new-issues-candidates.md +264 -0
  107. package/docs/plans/perf-fixes-new-issues-review.md +110 -0
  108. package/docs/plans/prompt-fragments.md +53 -0
  109. package/docs/plans/ui-ux-workflow-design-candidates.md +120 -0
  110. package/docs/plans/ui-ux-workflow-discovery.md +100 -0
  111. package/docs/plans/ui-ux-workflow-review.md +48 -0
  112. package/docs/plans/v2-followup-enhancements.md +587 -0
  113. package/docs/plans/workflow-categories-candidates.md +105 -0
  114. package/docs/plans/workflow-categories-discovery.md +110 -0
  115. package/docs/plans/workflow-categories-review.md +51 -0
  116. package/docs/plans/workflow-discovery-model-candidates.md +94 -0
  117. package/docs/plans/workflow-discovery-model-discovery.md +74 -0
  118. package/docs/plans/workflow-discovery-model-review.md +48 -0
  119. package/docs/plans/workflow-source-setup-phase-1.md +245 -0
  120. package/docs/plans/workflow-source-setup-phase-2.md +361 -0
  121. package/docs/plans/workflow-staleness-detection-candidates.md +104 -0
  122. package/docs/plans/workflow-staleness-detection-review.md +58 -0
  123. package/docs/plans/workflow-staleness-detection.md +80 -0
  124. package/docs/plans/workflow-v2-design.md +69 -0
  125. package/docs/plans/workflow-v2-roadmap.md +74 -0
  126. package/docs/plans/workflow-validation-design.md +98 -0
  127. package/docs/plans/workflow-validation-roadmap.md +108 -0
  128. package/docs/plans/workrail-platform-vision.md +420 -0
  129. package/docs/reference/agent-context-cleaner-snippet.md +94 -0
  130. package/docs/reference/agent-context-guidance.md +140 -0
  131. package/docs/reference/context-optimization.md +284 -0
  132. package/docs/reference/example-workflow-repository-template/.github/workflows/validate.yml +125 -0
  133. package/docs/reference/example-workflow-repository-template/README.md +268 -0
  134. package/docs/reference/example-workflow-repository-template/workflows/example-workflow.json +80 -0
  135. package/docs/reference/external-workflow-repositories.md +916 -0
  136. package/docs/reference/feature-flags-architecture.md +472 -0
  137. package/docs/reference/feature-flags.md +349 -0
  138. package/docs/reference/god-tier-workflow-validation.md +272 -0
  139. package/docs/reference/loop-optimization.md +209 -0
  140. package/docs/reference/loop-validation.md +176 -0
  141. package/docs/reference/loops.md +465 -0
  142. package/docs/reference/mcp-platform-constraints.md +59 -0
  143. package/docs/reference/recovery.md +88 -0
  144. package/docs/reference/releases.md +177 -0
  145. package/docs/reference/troubleshooting.md +105 -0
  146. package/docs/reference/workflow-execution-contract.md +998 -0
  147. package/docs/roadmap/README.md +22 -0
  148. package/docs/roadmap/legacy-planning-status.md +103 -0
  149. package/docs/roadmap/now-next-later.md +70 -0
  150. package/docs/roadmap/open-work-inventory.md +389 -0
  151. package/docs/tickets/README.md +39 -0
  152. package/docs/tickets/next-up.md +76 -0
  153. package/docs/workflow-management.md +317 -0
  154. package/docs/workflow-templates.md +423 -0
  155. package/docs/workflow-validation.md +184 -0
  156. package/docs/workflows.md +254 -0
  157. package/package.json +3 -1
  158. package/spec/authoring-spec.json +61 -16
  159. package/workflows/workflow-for-workflows.json +252 -93
  160. package/workflows/workflow-for-workflows.v2.json +188 -77
@@ -0,0 +1,797 @@
1
+ {
2
+ "registryVersion": "1.0.0",
3
+ "totalLocks": 118,
4
+ "coveredLocks": 118,
5
+ "uncoveredLocks": 0,
6
+ "coveragePercent": 100,
7
+ "byCategory": {
8
+ "architecture": {
9
+ "total": 5,
10
+ "covered": 5,
11
+ "uncovered": []
12
+ },
13
+ "bundle": {
14
+ "total": 6,
15
+ "covered": 6,
16
+ "uncovered": []
17
+ },
18
+ "errors": {
19
+ "total": 8,
20
+ "covered": 8,
21
+ "uncovered": []
22
+ },
23
+ "hashing": {
24
+ "total": 4,
25
+ "covered": 4,
26
+ "uncovered": []
27
+ },
28
+ "model": {
29
+ "total": 3,
30
+ "covered": 3,
31
+ "uncovered": []
32
+ },
33
+ "projection": {
34
+ "total": 3,
35
+ "covered": 3,
36
+ "uncovered": []
37
+ },
38
+ "protocol": {
39
+ "total": 14,
40
+ "covered": 14,
41
+ "uncovered": []
42
+ },
43
+ "schema": {
44
+ "total": 32,
45
+ "covered": 32,
46
+ "uncovered": []
47
+ },
48
+ "storage": {
49
+ "total": 20,
50
+ "covered": 20,
51
+ "uncovered": []
52
+ },
53
+ "tokens": {
54
+ "total": 21,
55
+ "covered": 21,
56
+ "uncovered": []
57
+ },
58
+ "types": {
59
+ "total": 2,
60
+ "covered": 2,
61
+ "uncovered": []
62
+ }
63
+ },
64
+ "covered": [
65
+ {
66
+ "lockId": "ack-idempotency-key",
67
+ "tests": [
68
+ "tests/unit/v2/session-store-idempotency-with-fakes.test.ts",
69
+ "tests/unit/v2/session-store-idempotency.test.ts"
70
+ ]
71
+ },
72
+ {
73
+ "lockId": "ack-replay-idempotent",
74
+ "tests": [
75
+ "tests/unit/v2/session-store-idempotency-with-fakes.test.ts",
76
+ "tests/unit/v2/session-store-idempotency.test.ts"
77
+ ]
78
+ },
79
+ {
80
+ "lockId": "ack-token-payload-fields",
81
+ "tests": [
82
+ "tests/unit/v2/tokens-binary.test.ts"
83
+ ]
84
+ },
85
+ {
86
+ "lockId": "advance-append-capable",
87
+ "tests": [
88
+ "tests/unit/v2/v2-execution-protocol.test.ts"
89
+ ]
90
+ },
91
+ {
92
+ "lockId": "append-plan-atomic",
93
+ "tests": [
94
+ "tests/unit/v2/session-store-idempotency-with-fakes.test.ts",
95
+ "tests/unit/v2/session-store-idempotency.test.ts",
96
+ "tests/unit/v2/session-store-preloaded-truth.test.ts",
97
+ "tests/unit/v2/session-store.test.ts"
98
+ ]
99
+ },
100
+ {
101
+ "lockId": "autonomy-closed-set",
102
+ "tests": [
103
+ "tests/unit/v2/schema-locks.test.ts"
104
+ ]
105
+ },
106
+ {
107
+ "lockId": "bech32m-checksum-validation",
108
+ "tests": [
109
+ "tests/unit/v2/tokens-corruption.test.ts"
110
+ ]
111
+ },
112
+ {
113
+ "lockId": "binary-payload-deterministic",
114
+ "tests": [
115
+ "tests/unit/v2/golden-tokens/golden-tokens.test.ts",
116
+ "tests/unit/v2/tokens-property-based.test.ts"
117
+ ]
118
+ },
119
+ {
120
+ "lockId": "blocker-budget",
121
+ "tests": [
122
+ "tests/unit/v2/budget-enforcement.test.ts"
123
+ ]
124
+ },
125
+ {
126
+ "lockId": "blocker-codes-closed-set",
127
+ "tests": [
128
+ "tests/unit/v2/schema-locks.test.ts"
129
+ ]
130
+ },
131
+ {
132
+ "lockId": "branded-id-types",
133
+ "tests": [
134
+ "tests/unit/v2/ids.test.ts"
135
+ ]
136
+ },
137
+ {
138
+ "lockId": "budget-enforcement",
139
+ "tests": [
140
+ "tests/unit/v2/notes-markdown.test.ts"
141
+ ]
142
+ },
143
+ {
144
+ "lockId": "bundle-errors-closed-set",
145
+ "tests": [
146
+ "tests/unit/v2/export-bundle-schema.test.ts"
147
+ ]
148
+ },
149
+ {
150
+ "lockId": "bundle-format-single-json",
151
+ "tests": [
152
+ "tests/unit/v2/export-bundle-schema.test.ts"
153
+ ]
154
+ },
155
+ {
156
+ "lockId": "bundle-import-as-new",
157
+ "tests": [
158
+ "tests/unit/v2/export-bundle-schema.test.ts"
159
+ ]
160
+ },
161
+ {
162
+ "lockId": "bundle-import-validates-first",
163
+ "tests": [
164
+ "tests/unit/v2/export-bundle-schema.test.ts"
165
+ ]
166
+ },
167
+ {
168
+ "lockId": "bundle-integrity-jcs-sha256",
169
+ "tests": [
170
+ "tests/unit/v2/export-bundle-schema.test.ts"
171
+ ]
172
+ },
173
+ {
174
+ "lockId": "bundle-tokens-not-portable",
175
+ "tests": [
176
+ "tests/unit/v2/export-bundle-schema.test.ts"
177
+ ]
178
+ },
179
+ {
180
+ "lockId": "checkpoint-token-payload-fields",
181
+ "tests": [
182
+ "tests/unit/v2/tokens-binary.test.ts"
183
+ ]
184
+ },
185
+ {
186
+ "lockId": "context-budget-256kb",
187
+ "tests": [
188
+ "tests/unit/v2/v2-execution-protocol.test.ts"
189
+ ]
190
+ },
191
+ {
192
+ "lockId": "context-json-only",
193
+ "tests": [
194
+ "tests/unit/v2/v2-execution-protocol.test.ts"
195
+ ]
196
+ },
197
+ {
198
+ "lockId": "context-no-echo",
199
+ "tests": [
200
+ "tests/unit/v2/v2-execution-protocol.test.ts"
201
+ ]
202
+ },
203
+ {
204
+ "lockId": "context-not-durable",
205
+ "tests": [
206
+ "tests/unit/v2/v2-execution-protocol.test.ts"
207
+ ]
208
+ },
209
+ {
210
+ "lockId": "crash-safe-append",
211
+ "tests": [
212
+ "tests/unit/v2/session-store.test.ts"
213
+ ]
214
+ },
215
+ {
216
+ "lockId": "crash-state-detection",
217
+ "tests": [
218
+ "tests/unit/v2/session-store.test.ts"
219
+ ]
220
+ },
221
+ {
222
+ "lockId": "data-dir-workrail-owned",
223
+ "tests": [
224
+ "tests/unit/v2/data-dir.test.ts"
225
+ ]
226
+ },
227
+ {
228
+ "lockId": "decision-trace-bounded",
229
+ "tests": [
230
+ "tests/unit/v2/budget-enforcement.test.ts"
231
+ ]
232
+ },
233
+ {
234
+ "lockId": "dedupe-key-idempotent",
235
+ "tests": [
236
+ "tests/unit/v2/session-store-idempotency-with-fakes.test.ts",
237
+ "tests/unit/v2/session-store-idempotency.test.ts",
238
+ "tests/unit/v2/session-store-preloaded-truth.test.ts",
239
+ "tests/unit/v2/session-store.test.ts"
240
+ ]
241
+ },
242
+ {
243
+ "lockId": "dedupe-key-stable",
244
+ "tests": [
245
+ "tests/unit/v2/session-store-idempotency-with-fakes.test.ts",
246
+ "tests/unit/v2/session-store-idempotency.test.ts"
247
+ ]
248
+ },
249
+ {
250
+ "lockId": "determinism",
251
+ "tests": [
252
+ "tests/unit/v2/notes-markdown.test.ts"
253
+ ]
254
+ },
255
+ {
256
+ "lockId": "durable-core-no-buffer",
257
+ "tests": [
258
+ "tests/architecture/v2-import-boundaries.test.ts"
259
+ ]
260
+ },
261
+ {
262
+ "lockId": "durable-core-no-node-imports",
263
+ "tests": [
264
+ "tests/architecture/v2-import-boundaries.test.ts"
265
+ ]
266
+ },
267
+ {
268
+ "lockId": "edge-cause-closed-set",
269
+ "tests": [
270
+ "tests/unit/v2/run-dag-projection.test.ts"
271
+ ]
272
+ },
273
+ {
274
+ "lockId": "edge-kind-closed-set",
275
+ "tests": [
276
+ "tests/unit/v2/run-dag-projection.test.ts"
277
+ ]
278
+ },
279
+ {
280
+ "lockId": "error-budget-details",
281
+ "tests": [
282
+ "tests/unit/v2/mcp-error-envelope.test.ts"
283
+ ]
284
+ },
285
+ {
286
+ "lockId": "error-envelope-shape",
287
+ "tests": [
288
+ "tests/unit/v2/mcp-error-envelope.test.ts"
289
+ ]
290
+ },
291
+ {
292
+ "lockId": "error-no-throw-across-mcp",
293
+ "tests": [
294
+ "tests/unit/v2/mcp-error-envelope.test.ts"
295
+ ]
296
+ },
297
+ {
298
+ "lockId": "error-retry-via-field",
299
+ "tests": [
300
+ "tests/unit/v2/mcp-error-envelope.test.ts"
301
+ ]
302
+ },
303
+ {
304
+ "lockId": "error-self-correcting",
305
+ "tests": [
306
+ "tests/unit/v2/mcp-error-envelope.test.ts"
307
+ ]
308
+ },
309
+ {
310
+ "lockId": "errors-as-data",
311
+ "tests": [
312
+ "tests/architecture/v2-no-message-substring-matching.test.ts",
313
+ "tests/unit/v2/keyring-adapter.test.ts",
314
+ "tests/unit/v2/pinned-workflow-store-adapter.test.ts"
315
+ ]
316
+ },
317
+ {
318
+ "lockId": "event-index-monotonic-contiguous",
319
+ "tests": [
320
+ "tests/unit/v2/run-dag-projection.test.ts",
321
+ "tests/unit/v2/session-store.test.ts"
322
+ ]
323
+ },
324
+ {
325
+ "lockId": "event-index-zero-based",
326
+ "tests": [
327
+ "tests/unit/v2/session-store.test.ts"
328
+ ]
329
+ },
330
+ {
331
+ "lockId": "event-kinds-closed-set",
332
+ "tests": [
333
+ "tests/unit/v2/schema-locks.test.ts"
334
+ ]
335
+ },
336
+ {
337
+ "lockId": "execution-gated-by-health",
338
+ "tests": [
339
+ "tests/unit/v2/execution-session-gate.test.ts"
340
+ ]
341
+ },
342
+ {
343
+ "lockId": "gaps-append-only-resolution",
344
+ "tests": [
345
+ "tests/unit/v2/gaps-projection.test.ts"
346
+ ]
347
+ },
348
+ {
349
+ "lockId": "hash-format-sha256-hex",
350
+ "tests": [
351
+ "tests/unit/v2/golden-hashes/golden-hashes.test.ts",
352
+ "tests/unit/v2/jcs.test.ts"
353
+ ]
354
+ },
355
+ {
356
+ "lockId": "illegal-states-unrepresentable",
357
+ "tests": [
358
+ "tests/unit/v2/notes-markdown.test.ts"
359
+ ]
360
+ },
361
+ {
362
+ "lockId": "infra-only-node-io",
363
+ "tests": [
364
+ "tests/architecture/v2-import-boundaries.test.ts"
365
+ ]
366
+ },
367
+ {
368
+ "lockId": "jcs-rfc-8785",
369
+ "tests": [
370
+ "tests/unit/v2/golden-hashes/golden-hashes.test.ts",
371
+ "tests/unit/v2/jcs.test.ts"
372
+ ]
373
+ },
374
+ {
375
+ "lockId": "keyring-32-byte-entropy",
376
+ "tests": [
377
+ "tests/unit/v2/tokens.test.ts"
378
+ ]
379
+ },
380
+ {
381
+ "lockId": "keyring-two-keys",
382
+ "tests": [
383
+ "tests/unit/v2/tokens.test.ts"
384
+ ]
385
+ },
386
+ {
387
+ "lockId": "keyring-verification-order",
388
+ "tests": [
389
+ "tests/unit/v2/tokens.test.ts"
390
+ ]
391
+ },
392
+ {
393
+ "lockId": "manifest-index-monotonic-contiguous",
394
+ "tests": [
395
+ "tests/unit/v2/session-store.test.ts"
396
+ ]
397
+ },
398
+ {
399
+ "lockId": "mkdirp-once-per-session",
400
+ "tests": [
401
+ "tests/unit/v2/perf-parallel-io.test.ts"
402
+ ]
403
+ },
404
+ {
405
+ "lockId": "no-throws-across-boundaries",
406
+ "tests": [
407
+ "tests/unit/v2/keyring-adapter.test.ts",
408
+ "tests/unit/v2/pinned-workflow-store-adapter.test.ts"
409
+ ]
410
+ },
411
+ {
412
+ "lockId": "non-assumable-choice-closed-set",
413
+ "tests": [
414
+ "tests/unit/v2/schema-locks.test.ts"
415
+ ]
416
+ },
417
+ {
418
+ "lockId": "non-tip-advance-creates-fork",
419
+ "tests": [
420
+ "tests/unit/v2/v2-execution-protocol.test.ts"
421
+ ]
422
+ },
423
+ {
424
+ "lockId": "notes-markdown-budget",
425
+ "tests": [
426
+ "tests/unit/v2/budget-enforcement.test.ts"
427
+ ]
428
+ },
429
+ {
430
+ "lockId": "orphan-segment-ignored",
431
+ "tests": [
432
+ "tests/unit/v2/session-store.test.ts"
433
+ ]
434
+ },
435
+ {
436
+ "lockId": "output-channel-closed-set",
437
+ "tests": [
438
+ "tests/unit/v2/output-ordering.test.ts"
439
+ ]
440
+ },
441
+ {
442
+ "lockId": "output-ordering-deterministic",
443
+ "tests": [
444
+ "tests/unit/v2/output-ordering.test.ts"
445
+ ]
446
+ },
447
+ {
448
+ "lockId": "parallel-segment-order",
449
+ "tests": [
450
+ "tests/unit/v2/perf-parallel-io.test.ts"
451
+ ]
452
+ },
453
+ {
454
+ "lockId": "parallel-stat-correctness",
455
+ "tests": [
456
+ "tests/unit/v2/perf-parallel-io.test.ts"
457
+ ]
458
+ },
459
+ {
460
+ "lockId": "paths-relative-only",
461
+ "tests": [
462
+ "tests/unit/v2/session-manifest-schema.test.ts"
463
+ ]
464
+ },
465
+ {
466
+ "lockId": "pin-after-close",
467
+ "tests": [
468
+ "tests/unit/v2/session-store.test.ts"
469
+ ]
470
+ },
471
+ {
472
+ "lockId": "ports-interfaces-only",
473
+ "tests": [
474
+ "tests/architecture/v2-import-boundaries.test.ts"
475
+ ]
476
+ },
477
+ {
478
+ "lockId": "preferences-node-attached",
479
+ "tests": [
480
+ "tests/unit/v2/preferences-projection.test.ts"
481
+ ]
482
+ },
483
+ {
484
+ "lockId": "preferred-tip-algorithm",
485
+ "tests": [
486
+ "tests/unit/v2/run-dag-projection.test.ts"
487
+ ]
488
+ },
489
+ {
490
+ "lockId": "preferred-tip-no-timestamps",
491
+ "tests": [
492
+ "tests/unit/v2/run-dag-projection.test.ts"
493
+ ]
494
+ },
495
+ {
496
+ "lockId": "preferred-tip-per-run",
497
+ "tests": [
498
+ "tests/unit/v2/run-dag-projection.test.ts"
499
+ ]
500
+ },
501
+ {
502
+ "lockId": "projection-cache-rebuildable",
503
+ "tests": [
504
+ "tests/unit/v2/projection-cache.test.ts"
505
+ ]
506
+ },
507
+ {
508
+ "lockId": "reason-code-unified",
509
+ "tests": [
510
+ "tests/unit/v2/schema-locks.test.ts"
511
+ ]
512
+ },
513
+ {
514
+ "lockId": "rehydrate-pure-no-writes",
515
+ "tests": [
516
+ "tests/unit/v2/v2-execution-protocol.test.ts"
517
+ ]
518
+ },
519
+ {
520
+ "lockId": "replay-fact-returning",
521
+ "tests": [
522
+ "tests/unit/v2/v2-execution-protocol.test.ts"
523
+ ]
524
+ },
525
+ {
526
+ "lockId": "replay-fail-closed",
527
+ "tests": [
528
+ "tests/unit/v2/v2-execution-protocol.test.ts"
529
+ ]
530
+ },
531
+ {
532
+ "lockId": "risk-policy-closed-set",
533
+ "tests": [
534
+ "tests/unit/v2/schema-locks.test.ts"
535
+ ]
536
+ },
537
+ {
538
+ "lockId": "risk-policy-guardrails",
539
+ "tests": [
540
+ "tests/unit/v2/run-status-signals-projection.test.ts"
541
+ ]
542
+ },
543
+ {
544
+ "lockId": "run-status-closed-set",
545
+ "tests": [
546
+ "tests/unit/v2/schema-locks.test.ts"
547
+ ]
548
+ },
549
+ {
550
+ "lockId": "runs-are-dags",
551
+ "tests": [
552
+ "tests/unit/v2/run-dag-projection.test.ts"
553
+ ]
554
+ },
555
+ {
556
+ "lockId": "salvage-read-only",
557
+ "tests": [
558
+ "tests/unit/v2/v2-execution-protocol.test.ts"
559
+ ]
560
+ },
561
+ {
562
+ "lockId": "schema-additive-within-version",
563
+ "tests": [
564
+ "tests/unit/v2/schema-locks.test.ts"
565
+ ]
566
+ },
567
+ {
568
+ "lockId": "schema-modules-load-safe",
569
+ "tests": [
570
+ "tests/unit/v2/schema-load.test.ts"
571
+ ]
572
+ },
573
+ {
574
+ "lockId": "schema-unknown-fields-ignored-conditionally",
575
+ "tests": [
576
+ "tests/unit/v2/schema-locks.test.ts"
577
+ ]
578
+ },
579
+ {
580
+ "lockId": "schema-unknown-version-fail-fast",
581
+ "tests": [
582
+ "tests/unit/v2/schema-locks.test.ts"
583
+ ]
584
+ },
585
+ {
586
+ "lockId": "schema-versioned",
587
+ "tests": [
588
+ "tests/unit/v2/schema-locks.test.ts"
589
+ ]
590
+ },
591
+ {
592
+ "lockId": "segment-digest-verification",
593
+ "tests": [
594
+ "tests/unit/v2/session-store.test.ts"
595
+ ]
596
+ },
597
+ {
598
+ "lockId": "session-health-closed-set",
599
+ "tests": [
600
+ "tests/unit/v2/execution-session-gate.test.ts"
601
+ ]
602
+ },
603
+ {
604
+ "lockId": "single-manifest-fsync",
605
+ "tests": [
606
+ "tests/unit/v2/perf-parallel-io.test.ts"
607
+ ]
608
+ },
609
+ {
610
+ "lockId": "single-writer-per-session",
611
+ "tests": [
612
+ "tests/unit/v2/execution-session-gate.test.ts",
613
+ "tests/unit/v2/session-store.test.ts"
614
+ ]
615
+ },
616
+ {
617
+ "lockId": "snapshot-completed-sorted",
618
+ "tests": [
619
+ "tests/unit/v2/execution-snapshot.test.ts"
620
+ ]
621
+ },
622
+ {
623
+ "lockId": "snapshot-content-addressed",
624
+ "tests": [
625
+ "tests/unit/v2/golden-hashes/golden-hashes.test.ts"
626
+ ]
627
+ },
628
+ {
629
+ "lockId": "snapshot-discriminated-union",
630
+ "tests": [
631
+ "tests/unit/v2/execution-snapshot.test.ts"
632
+ ]
633
+ },
634
+ {
635
+ "lockId": "snapshot-impossible-state-rejected",
636
+ "tests": [
637
+ "tests/unit/v2/execution-snapshot.test.ts"
638
+ ]
639
+ },
640
+ {
641
+ "lockId": "snapshot-loop-id-unique",
642
+ "tests": [
643
+ "tests/unit/v2/execution-snapshot.test.ts"
644
+ ]
645
+ },
646
+ {
647
+ "lockId": "snapshot-pending-explicit",
648
+ "tests": [
649
+ "tests/unit/v2/execution-snapshot.test.ts"
650
+ ]
651
+ },
652
+ {
653
+ "lockId": "snapshot-rehydration-only",
654
+ "tests": [
655
+ "tests/unit/v2/execution-snapshot.test.ts"
656
+ ]
657
+ },
658
+ {
659
+ "lockId": "state-token-payload-fields",
660
+ "tests": [
661
+ "tests/unit/v2/tokens-binary.test.ts"
662
+ ]
663
+ },
664
+ {
665
+ "lockId": "step-instance-key-delimiter-safe",
666
+ "tests": [
667
+ "tests/unit/v2/step-instance-key.test.ts"
668
+ ]
669
+ },
670
+ {
671
+ "lockId": "step-instance-key-format",
672
+ "tests": [
673
+ "tests/unit/v2/step-instance-key.test.ts"
674
+ ]
675
+ },
676
+ {
677
+ "lockId": "test-fakes-usage",
678
+ "tests": [
679
+ "tests/unit/v2/session-store-idempotency-with-fakes.test.ts"
680
+ ]
681
+ },
682
+ {
683
+ "lockId": "token-bech32m-encoding",
684
+ "tests": [
685
+ "tests/unit/v2/tokens-binary.test.ts"
686
+ ]
687
+ },
688
+ {
689
+ "lockId": "token-binary-payload-layout",
690
+ "tests": [
691
+ "tests/unit/v2/tokens-binary.test.ts",
692
+ "tests/unit/v2/tokens-property-based.test.ts"
693
+ ]
694
+ },
695
+ {
696
+ "lockId": "token-binary-roundtrip",
697
+ "tests": [
698
+ "tests/unit/v2/tokens-binary.test.ts",
699
+ "tests/unit/v2/tokens-property-based.test.ts"
700
+ ]
701
+ },
702
+ {
703
+ "lockId": "token-binary-wire-format",
704
+ "tests": [
705
+ "tests/unit/v2/golden-tokens/golden-tokens.test.ts",
706
+ "tests/unit/v2/tokens.test.ts"
707
+ ]
708
+ },
709
+ {
710
+ "lockId": "token-corruption-detection",
711
+ "tests": [
712
+ "tests/unit/v2/tokens-binary.test.ts",
713
+ "tests/unit/v2/tokens-corruption.test.ts"
714
+ ]
715
+ },
716
+ {
717
+ "lockId": "token-kind-closed-set",
718
+ "tests": [
719
+ "tests/unit/v2/tokens.test.ts"
720
+ ]
721
+ },
722
+ {
723
+ "lockId": "token-prefix-closed-set",
724
+ "tests": [
725
+ "tests/unit/v2/tokens.test.ts"
726
+ ]
727
+ },
728
+ {
729
+ "lockId": "token-prefix-kind-match",
730
+ "tests": [
731
+ "tests/unit/v2/tokens-binary.test.ts"
732
+ ]
733
+ },
734
+ {
735
+ "lockId": "token-signature-input-canonical-only",
736
+ "tests": [
737
+ "tests/unit/v2/tokens-binary.test.ts"
738
+ ]
739
+ },
740
+ {
741
+ "lockId": "token-signature-timing-safe",
742
+ "tests": [
743
+ "tests/unit/v2/tokens.test.ts"
744
+ ]
745
+ },
746
+ {
747
+ "lockId": "token-signing-hmac-sha256",
748
+ "tests": [
749
+ "tests/unit/v2/tokens.test.ts"
750
+ ]
751
+ },
752
+ {
753
+ "lockId": "token-validation-errors-closed-set",
754
+ "tests": [
755
+ "tests/unit/v2/mcp-error-envelope.test.ts"
756
+ ]
757
+ },
758
+ {
759
+ "lockId": "truncation-marker-format",
760
+ "tests": [
761
+ "tests/unit/v2/budget-enforcement.test.ts"
762
+ ]
763
+ },
764
+ {
765
+ "lockId": "type-escapes-quarantined",
766
+ "tests": [
767
+ "tests/architecture/v2-type-safety.test.ts"
768
+ ]
769
+ },
770
+ {
771
+ "lockId": "user-only-dependency-closed-set",
772
+ "tests": [
773
+ "tests/unit/v2/schema-locks.test.ts"
774
+ ]
775
+ },
776
+ {
777
+ "lockId": "witness-required-for-append",
778
+ "tests": [
779
+ "tests/unit/v2/execution-session-gate.test.ts"
780
+ ]
781
+ },
782
+ {
783
+ "lockId": "witness-scope-enforced",
784
+ "tests": [
785
+ "tests/unit/v2/execution-session-gate.test.ts"
786
+ ]
787
+ },
788
+ {
789
+ "lockId": "workflow-hash-jcs-sha256",
790
+ "tests": [
791
+ "tests/unit/v2/golden-hashes/golden-hashes.test.ts"
792
+ ]
793
+ }
794
+ ],
795
+ "uncovered": [],
796
+ "warnings": []
797
+ }