@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,177 @@
1
+ # v2 Lock Enforcement Coverage Report
2
+
3
+ > **Auto-generated** — Do not edit manually.
4
+ > Registry version: 1.0.0
5
+
6
+ ---
7
+
8
+ ## Summary
9
+
10
+ | Metric | Value |
11
+ |--------|-------|
12
+ | Total locks | 118 |
13
+ | Covered | 118 |
14
+ | Uncovered | 0 |
15
+ | Coverage | **100%** |
16
+
17
+ ## Coverage by Category
18
+
19
+ | Category | Total | Covered | % |
20
+ |----------|-------|---------|---|
21
+ | architecture | 5 | 5 | 100% |
22
+ | bundle | 6 | 6 | 100% |
23
+ | errors | 8 | 8 | 100% |
24
+ | hashing | 4 | 4 | 100% |
25
+ | model | 3 | 3 | 100% |
26
+ | projection | 3 | 3 | 100% |
27
+ | protocol | 14 | 14 | 100% |
28
+ | schema | 32 | 32 | 100% |
29
+ | storage | 20 | 20 | 100% |
30
+ | tokens | 21 | 21 | 100% |
31
+ | types | 2 | 2 | 100% |
32
+
33
+ ## Covered Locks
34
+
35
+ <details>
36
+ <summary>Click to expand (118 locks)</summary>
37
+
38
+ | Lock ID | Test Files |
39
+ |---------|------------|
40
+ | `ack-idempotency-key` | `tests/unit/v2/session-store-idempotency-with-fakes.test.ts`, `tests/unit/v2/session-store-idempotency.test.ts` |
41
+ | `ack-replay-idempotent` | `tests/unit/v2/session-store-idempotency-with-fakes.test.ts`, `tests/unit/v2/session-store-idempotency.test.ts` |
42
+ | `ack-token-payload-fields` | `tests/unit/v2/tokens-binary.test.ts` |
43
+ | `advance-append-capable` | `tests/unit/v2/v2-execution-protocol.test.ts` |
44
+ | `append-plan-atomic` | `tests/unit/v2/session-store-idempotency-with-fakes.test.ts`, `tests/unit/v2/session-store-idempotency.test.ts`, `tests/unit/v2/session-store-preloaded-truth.test.ts`, `tests/unit/v2/session-store.test.ts` |
45
+ | `autonomy-closed-set` | `tests/unit/v2/schema-locks.test.ts` |
46
+ | `bech32m-checksum-validation` | `tests/unit/v2/tokens-corruption.test.ts` |
47
+ | `binary-payload-deterministic` | `tests/unit/v2/golden-tokens/golden-tokens.test.ts`, `tests/unit/v2/tokens-property-based.test.ts` |
48
+ | `blocker-budget` | `tests/unit/v2/budget-enforcement.test.ts` |
49
+ | `blocker-codes-closed-set` | `tests/unit/v2/schema-locks.test.ts` |
50
+ | `branded-id-types` | `tests/unit/v2/ids.test.ts` |
51
+ | `budget-enforcement` | `tests/unit/v2/notes-markdown.test.ts` |
52
+ | `bundle-errors-closed-set` | `tests/unit/v2/export-bundle-schema.test.ts` |
53
+ | `bundle-format-single-json` | `tests/unit/v2/export-bundle-schema.test.ts` |
54
+ | `bundle-import-as-new` | `tests/unit/v2/export-bundle-schema.test.ts` |
55
+ | `bundle-import-validates-first` | `tests/unit/v2/export-bundle-schema.test.ts` |
56
+ | `bundle-integrity-jcs-sha256` | `tests/unit/v2/export-bundle-schema.test.ts` |
57
+ | `bundle-tokens-not-portable` | `tests/unit/v2/export-bundle-schema.test.ts` |
58
+ | `checkpoint-token-payload-fields` | `tests/unit/v2/tokens-binary.test.ts` |
59
+ | `context-budget-256kb` | `tests/unit/v2/v2-execution-protocol.test.ts` |
60
+ | `context-json-only` | `tests/unit/v2/v2-execution-protocol.test.ts` |
61
+ | `context-no-echo` | `tests/unit/v2/v2-execution-protocol.test.ts` |
62
+ | `context-not-durable` | `tests/unit/v2/v2-execution-protocol.test.ts` |
63
+ | `crash-safe-append` | `tests/unit/v2/session-store.test.ts` |
64
+ | `crash-state-detection` | `tests/unit/v2/session-store.test.ts` |
65
+ | `data-dir-workrail-owned` | `tests/unit/v2/data-dir.test.ts` |
66
+ | `decision-trace-bounded` | `tests/unit/v2/budget-enforcement.test.ts` |
67
+ | `dedupe-key-idempotent` | `tests/unit/v2/session-store-idempotency-with-fakes.test.ts`, `tests/unit/v2/session-store-idempotency.test.ts`, `tests/unit/v2/session-store-preloaded-truth.test.ts`, `tests/unit/v2/session-store.test.ts` |
68
+ | `dedupe-key-stable` | `tests/unit/v2/session-store-idempotency-with-fakes.test.ts`, `tests/unit/v2/session-store-idempotency.test.ts` |
69
+ | `determinism` | `tests/unit/v2/notes-markdown.test.ts` |
70
+ | `durable-core-no-buffer` | `tests/architecture/v2-import-boundaries.test.ts` |
71
+ | `durable-core-no-node-imports` | `tests/architecture/v2-import-boundaries.test.ts` |
72
+ | `edge-cause-closed-set` | `tests/unit/v2/run-dag-projection.test.ts` |
73
+ | `edge-kind-closed-set` | `tests/unit/v2/run-dag-projection.test.ts` |
74
+ | `error-budget-details` | `tests/unit/v2/mcp-error-envelope.test.ts` |
75
+ | `error-envelope-shape` | `tests/unit/v2/mcp-error-envelope.test.ts` |
76
+ | `error-no-throw-across-mcp` | `tests/unit/v2/mcp-error-envelope.test.ts` |
77
+ | `error-retry-via-field` | `tests/unit/v2/mcp-error-envelope.test.ts` |
78
+ | `error-self-correcting` | `tests/unit/v2/mcp-error-envelope.test.ts` |
79
+ | `errors-as-data` | `tests/architecture/v2-no-message-substring-matching.test.ts`, `tests/unit/v2/keyring-adapter.test.ts`, `tests/unit/v2/pinned-workflow-store-adapter.test.ts` |
80
+ | `event-index-monotonic-contiguous` | `tests/unit/v2/run-dag-projection.test.ts`, `tests/unit/v2/session-store.test.ts` |
81
+ | `event-index-zero-based` | `tests/unit/v2/session-store.test.ts` |
82
+ | `event-kinds-closed-set` | `tests/unit/v2/schema-locks.test.ts` |
83
+ | `execution-gated-by-health` | `tests/unit/v2/execution-session-gate.test.ts` |
84
+ | `gaps-append-only-resolution` | `tests/unit/v2/gaps-projection.test.ts` |
85
+ | `hash-format-sha256-hex` | `tests/unit/v2/golden-hashes/golden-hashes.test.ts`, `tests/unit/v2/jcs.test.ts` |
86
+ | `illegal-states-unrepresentable` | `tests/unit/v2/notes-markdown.test.ts` |
87
+ | `infra-only-node-io` | `tests/architecture/v2-import-boundaries.test.ts` |
88
+ | `jcs-rfc-8785` | `tests/unit/v2/golden-hashes/golden-hashes.test.ts`, `tests/unit/v2/jcs.test.ts` |
89
+ | `keyring-32-byte-entropy` | `tests/unit/v2/tokens.test.ts` |
90
+ | `keyring-two-keys` | `tests/unit/v2/tokens.test.ts` |
91
+ | `keyring-verification-order` | `tests/unit/v2/tokens.test.ts` |
92
+ | `manifest-index-monotonic-contiguous` | `tests/unit/v2/session-store.test.ts` |
93
+ | `mkdirp-once-per-session` | `tests/unit/v2/perf-parallel-io.test.ts` |
94
+ | `no-throws-across-boundaries` | `tests/unit/v2/keyring-adapter.test.ts`, `tests/unit/v2/pinned-workflow-store-adapter.test.ts` |
95
+ | `non-assumable-choice-closed-set` | `tests/unit/v2/schema-locks.test.ts` |
96
+ | `non-tip-advance-creates-fork` | `tests/unit/v2/v2-execution-protocol.test.ts` |
97
+ | `notes-markdown-budget` | `tests/unit/v2/budget-enforcement.test.ts` |
98
+ | `orphan-segment-ignored` | `tests/unit/v2/session-store.test.ts` |
99
+ | `output-channel-closed-set` | `tests/unit/v2/output-ordering.test.ts` |
100
+ | `output-ordering-deterministic` | `tests/unit/v2/output-ordering.test.ts` |
101
+ | `parallel-segment-order` | `tests/unit/v2/perf-parallel-io.test.ts` |
102
+ | `parallel-stat-correctness` | `tests/unit/v2/perf-parallel-io.test.ts` |
103
+ | `paths-relative-only` | `tests/unit/v2/session-manifest-schema.test.ts` |
104
+ | `pin-after-close` | `tests/unit/v2/session-store.test.ts` |
105
+ | `ports-interfaces-only` | `tests/architecture/v2-import-boundaries.test.ts` |
106
+ | `preferences-node-attached` | `tests/unit/v2/preferences-projection.test.ts` |
107
+ | `preferred-tip-algorithm` | `tests/unit/v2/run-dag-projection.test.ts` |
108
+ | `preferred-tip-no-timestamps` | `tests/unit/v2/run-dag-projection.test.ts` |
109
+ | `preferred-tip-per-run` | `tests/unit/v2/run-dag-projection.test.ts` |
110
+ | `projection-cache-rebuildable` | `tests/unit/v2/projection-cache.test.ts` |
111
+ | `reason-code-unified` | `tests/unit/v2/schema-locks.test.ts` |
112
+ | `rehydrate-pure-no-writes` | `tests/unit/v2/v2-execution-protocol.test.ts` |
113
+ | `replay-fact-returning` | `tests/unit/v2/v2-execution-protocol.test.ts` |
114
+ | `replay-fail-closed` | `tests/unit/v2/v2-execution-protocol.test.ts` |
115
+ | `risk-policy-closed-set` | `tests/unit/v2/schema-locks.test.ts` |
116
+ | `risk-policy-guardrails` | `tests/unit/v2/run-status-signals-projection.test.ts` |
117
+ | `run-status-closed-set` | `tests/unit/v2/schema-locks.test.ts` |
118
+ | `runs-are-dags` | `tests/unit/v2/run-dag-projection.test.ts` |
119
+ | `salvage-read-only` | `tests/unit/v2/v2-execution-protocol.test.ts` |
120
+ | `schema-additive-within-version` | `tests/unit/v2/schema-locks.test.ts` |
121
+ | `schema-modules-load-safe` | `tests/unit/v2/schema-load.test.ts` |
122
+ | `schema-unknown-fields-ignored-conditionally` | `tests/unit/v2/schema-locks.test.ts` |
123
+ | `schema-unknown-version-fail-fast` | `tests/unit/v2/schema-locks.test.ts` |
124
+ | `schema-versioned` | `tests/unit/v2/schema-locks.test.ts` |
125
+ | `segment-digest-verification` | `tests/unit/v2/session-store.test.ts` |
126
+ | `session-health-closed-set` | `tests/unit/v2/execution-session-gate.test.ts` |
127
+ | `single-manifest-fsync` | `tests/unit/v2/perf-parallel-io.test.ts` |
128
+ | `single-writer-per-session` | `tests/unit/v2/execution-session-gate.test.ts`, `tests/unit/v2/session-store.test.ts` |
129
+ | `snapshot-completed-sorted` | `tests/unit/v2/execution-snapshot.test.ts` |
130
+ | `snapshot-content-addressed` | `tests/unit/v2/golden-hashes/golden-hashes.test.ts` |
131
+ | `snapshot-discriminated-union` | `tests/unit/v2/execution-snapshot.test.ts` |
132
+ | `snapshot-impossible-state-rejected` | `tests/unit/v2/execution-snapshot.test.ts` |
133
+ | `snapshot-loop-id-unique` | `tests/unit/v2/execution-snapshot.test.ts` |
134
+ | `snapshot-pending-explicit` | `tests/unit/v2/execution-snapshot.test.ts` |
135
+ | `snapshot-rehydration-only` | `tests/unit/v2/execution-snapshot.test.ts` |
136
+ | `state-token-payload-fields` | `tests/unit/v2/tokens-binary.test.ts` |
137
+ | `step-instance-key-delimiter-safe` | `tests/unit/v2/step-instance-key.test.ts` |
138
+ | `step-instance-key-format` | `tests/unit/v2/step-instance-key.test.ts` |
139
+ | `test-fakes-usage` | `tests/unit/v2/session-store-idempotency-with-fakes.test.ts` |
140
+ | `token-bech32m-encoding` | `tests/unit/v2/tokens-binary.test.ts` |
141
+ | `token-binary-payload-layout` | `tests/unit/v2/tokens-binary.test.ts`, `tests/unit/v2/tokens-property-based.test.ts` |
142
+ | `token-binary-roundtrip` | `tests/unit/v2/tokens-binary.test.ts`, `tests/unit/v2/tokens-property-based.test.ts` |
143
+ | `token-binary-wire-format` | `tests/unit/v2/golden-tokens/golden-tokens.test.ts`, `tests/unit/v2/tokens.test.ts` |
144
+ | `token-corruption-detection` | `tests/unit/v2/tokens-binary.test.ts`, `tests/unit/v2/tokens-corruption.test.ts` |
145
+ | `token-kind-closed-set` | `tests/unit/v2/tokens.test.ts` |
146
+ | `token-prefix-closed-set` | `tests/unit/v2/tokens.test.ts` |
147
+ | `token-prefix-kind-match` | `tests/unit/v2/tokens-binary.test.ts` |
148
+ | `token-signature-input-canonical-only` | `tests/unit/v2/tokens-binary.test.ts` |
149
+ | `token-signature-timing-safe` | `tests/unit/v2/tokens.test.ts` |
150
+ | `token-signing-hmac-sha256` | `tests/unit/v2/tokens.test.ts` |
151
+ | `token-validation-errors-closed-set` | `tests/unit/v2/mcp-error-envelope.test.ts` |
152
+ | `truncation-marker-format` | `tests/unit/v2/budget-enforcement.test.ts` |
153
+ | `type-escapes-quarantined` | `tests/architecture/v2-type-safety.test.ts` |
154
+ | `user-only-dependency-closed-set` | `tests/unit/v2/schema-locks.test.ts` |
155
+ | `witness-required-for-append` | `tests/unit/v2/execution-session-gate.test.ts` |
156
+ | `witness-scope-enforced` | `tests/unit/v2/execution-session-gate.test.ts` |
157
+ | `workflow-hash-jcs-sha256` | `tests/unit/v2/golden-hashes/golden-hashes.test.ts` |
158
+
159
+ </details>
160
+
161
+ ---
162
+
163
+ ## How to Add Coverage
164
+
165
+ Add `@enforces` annotations to your test files:
166
+
167
+ ```typescript
168
+ /**
169
+ * @enforces event-index-zero-based
170
+ * @enforces event-index-monotonic-contiguous
171
+ */
172
+ describe('session event ordering', () => {
173
+ // tests that verify these locks...
174
+ });
175
+ ```
176
+
177
+ Then run: `npm run generate:locks`