@reventlessdev/reventless-spec 3.0.0-alpha.61

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 (86) hide show
  1. package/CHANGELOG.md +625 -0
  2. package/LICENSE +202 -0
  3. package/README.md +114 -0
  4. package/package.json +34 -0
  5. package/rescript.json +25 -0
  6. package/run-generator.mjs +2 -0
  7. package/src/AnsiStyle.res +40 -0
  8. package/src/AnsiStyle.res.mjs +54 -0
  9. package/src/LogPrefix.res +168 -0
  10. package/src/LogPrefix.res.mjs +148 -0
  11. package/src/PackageVersion.res +73 -0
  12. package/src/PackageVersion.res.mjs +81 -0
  13. package/src/components/Aggregate.res +64 -0
  14. package/src/components/Aggregate.res.mjs +2 -0
  15. package/src/components/AutomationSlice.res +279 -0
  16. package/src/components/AutomationSlice.res.mjs +30 -0
  17. package/src/components/Counter.res +24 -0
  18. package/src/components/Counter.res.mjs +2 -0
  19. package/src/components/DcbDecode.res +128 -0
  20. package/src/components/DcbDecode.res.mjs +117 -0
  21. package/src/components/DcbTag.res +1256 -0
  22. package/src/components/DcbTag.res.mjs +869 -0
  23. package/src/components/DcbValidation.res +362 -0
  24. package/src/components/DcbValidation.res.mjs +360 -0
  25. package/src/components/DisplayName.res +40 -0
  26. package/src/components/DisplayName.res.mjs +26 -0
  27. package/src/components/ExtensionPoint.res +27 -0
  28. package/src/components/ExtensionPoint.res.mjs +2 -0
  29. package/src/components/InboundTranslationSlice.res +79 -0
  30. package/src/components/InboundTranslationSlice.res.mjs +2 -0
  31. package/src/components/OutboundTranslationSlice.res +108 -0
  32. package/src/components/OutboundTranslationSlice.res.mjs +2 -0
  33. package/src/components/Plugin.res +373 -0
  34. package/src/components/Plugin.res.mjs +249 -0
  35. package/src/components/ReadModel.res +199 -0
  36. package/src/components/ReadModel.res.mjs +18 -0
  37. package/src/components/Reference.res +51 -0
  38. package/src/components/Reference.res.mjs +37 -0
  39. package/src/components/StateAnnotations.res +65 -0
  40. package/src/components/StateAnnotations.res.mjs +15 -0
  41. package/src/components/StateChangeSlice.res +131 -0
  42. package/src/components/StateChangeSlice.res.mjs +2 -0
  43. package/src/components/StateViewSlice.res +99 -0
  44. package/src/components/StateViewSlice.res.mjs +2 -0
  45. package/src/components/Task.res +62 -0
  46. package/src/components/Task.res.mjs +2 -0
  47. package/src/generator/Codegen.res +703 -0
  48. package/src/generator/Codegen.res.mjs +485 -0
  49. package/src/generator/Config.res +85 -0
  50. package/src/generator/Config.res.mjs +78 -0
  51. package/src/generator/Discovery.res +204 -0
  52. package/src/generator/Discovery.res.mjs +213 -0
  53. package/src/generator/Generator_Node.res +49 -0
  54. package/src/generator/Generator_Node.res.mjs +18 -0
  55. package/src/generator/Pairing.res +386 -0
  56. package/src/generator/Pairing.res.mjs +353 -0
  57. package/src/generator/PluginGenerator.res +53 -0
  58. package/src/generator/PluginGenerator.res.mjs +70 -0
  59. package/src/types/Authorization.res +23 -0
  60. package/src/types/Authorization.res.mjs +33 -0
  61. package/src/types/Behavior.res +78 -0
  62. package/src/types/Behavior.res.mjs +2 -0
  63. package/src/types/EventMapping.res +100 -0
  64. package/src/types/EventMapping.res.mjs +15 -0
  65. package/src/types/Handler.res +30 -0
  66. package/src/types/Handler.res.mjs +2 -0
  67. package/src/types/Id.res +75 -0
  68. package/src/types/Id.res.mjs +37 -0
  69. package/src/types/Identity.res +46 -0
  70. package/src/types/Identity.res.mjs +51 -0
  71. package/src/types/Message.res +197 -0
  72. package/src/types/Message.res.mjs +108 -0
  73. package/src/types/Projection.res +220 -0
  74. package/src/types/Projection.res.mjs +44 -0
  75. package/src/types/QueryEngine.res +123 -0
  76. package/src/types/QueryEngine.res.mjs +12 -0
  77. package/src/types/ReadConsistency.res +38 -0
  78. package/src/types/ReadConsistency.res.mjs +29 -0
  79. package/src/types/Schedule.res +65 -0
  80. package/src/types/Schedule.res.mjs +68 -0
  81. package/src/types/SideEffect.res +45 -0
  82. package/src/types/SideEffect.res.mjs +2 -0
  83. package/src/types/StoredEvent.res +46 -0
  84. package/src/types/StoredEvent.res.mjs +32 -0
  85. package/src/types/Visibility.res +24 -0
  86. package/src/types/Visibility.res.mjs +25 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,625 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ # 3.0.0-alpha.61 (2026-06-23)
7
+
8
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
9
+
10
+
11
+
12
+
13
+
14
+ # 3.0.0-alpha.60 (2026-06-22)
15
+
16
+ ### Bug Fixes
17
+
18
+ * **domain-graph:** route EP commands only with a real inbound protocol ([647d1fa](https://github.com/ReventlessDev/reventless-core/commit/647d1fa0194189f4d53cf5fca0f2ef4045b983f9))
19
+ * **ppx:** compose [@ref](https://github.com/ref) with the DCB tag key for plural *Ids fields ([cba2193](https://github.com/ReventlessDev/reventless-core/commit/cba2193d1c377c1bf91dee1f01da2a91a82ab488))
20
+ ### Features
21
+
22
+ * **structure:** mark API-exposed commands for the event-graph badge ([8cd6faa](https://github.com/ReventlessDev/reventless-core/commit/8cd6faa0a66c6cf1b4b5eea26df6f70c540b67a4))
23
+
24
+
25
+ # 3.0.0-alpha.59 (2026-06-21)
26
+
27
+ ### Features
28
+
29
+ * **dcb:** cross-partition secondary-tag reads (Phase 7) ([9e1f8b3](https://github.com/ReventlessDev/reventless-core/commit/9e1f8b3595004b92148dd053aae380078baa42a3))
30
+ * **dcb:** per-slice readConsistency override for StateChangeSlice decision reads ([65516f7](https://github.com/ReventlessDev/reventless-core/commit/65516f7fc62daaad51edef2c668cc7b362506364))
31
+
32
+
33
+ # 3.0.0-alpha.58 (2026-06-21)
34
+
35
+ ### Features
36
+
37
+ * **dcb:** warn on composite reads that silently miss extra-tagged events (Issue 5) ([9e14f68](https://github.com/ReventlessDev/reventless-core/commit/9e14f68c76b0e5acf95878d89693eec26e0e1760))
38
+
39
+
40
+ # 3.0.0-alpha.57 (2026-06-20)
41
+
42
+ ### Features
43
+
44
+ * **dcb:** narrow query clauses to types that can carry each tag (Issue 14) ([6bceae6](https://github.com/ReventlessDev/reventless-core/commit/6bceae675b91154b5a1abf73a6aaca56533cbbe8))
45
+
46
+
47
+ # 3.0.0-alpha.56 (2026-06-17)
48
+
49
+ * feat!: harmonize plugin make() across aggregate/DCB/hybrid; AutoUI default-on ([6f3b95e](https://github.com/ReventlessDev/reventless-core/commit/6f3b95e6aa8a136c6e837346c41a3a4dff0f9405))
50
+ ### Features
51
+
52
+ * **core:** carry emitted-event field schemas in pluginStructure (Phase 6.3) ([693d452](https://github.com/ReventlessDev/reventless-core/commit/693d4529ee4c66a2a4a4b0d4d7efb104cf94bcab))
53
+
54
+ ### BREAKING CHANGES
55
+
56
+ * makeAutoUIManifest signature dropped ~aggregates and
57
+ ~readModels; replaced with ~pluginStructure. Hand-written Plugin.res files
58
+ that pass ~uiBundleUrl to plugin.make must drop the arg and rely on the
59
+ generator-emitted env var read.
60
+
61
+
62
+
63
+ # 3.0.0-alpha.55 (2026-06-12)
64
+
65
+ ### Features
66
+
67
+ * **vscode:** jump from event-graph nodes to source + show Internal components in the dev graph ([6a6e5e4](https://github.com/ReventlessDev/reventless-core/commit/6a6e5e466c6ea5c0c7315ccc37a538e0b496c99a))
68
+
69
+
70
+ # 3.0.0-alpha.54 (2026-06-10)
71
+
72
+ * refactor(reventless-local)!: rename reventless-in-memory to reventless-local ([f36e17c](https://github.com/ReventlessDev/reventless-core/commit/f36e17c407714ab9740393fac96865d6a5c143c9))
73
+ ### Features
74
+
75
+ * **logging:** sink-aware ANSI formatting — clean JSON in non-TTY sinks (Tier 1) ([32ae533](https://github.com/ReventlessDev/reventless-core/commit/32ae5337a45ff9cbd26754b5b1c71c5c7070507b))
76
+ * **reventless-core:** extension-point source events in pluginStructure ([9c47a0e](https://github.com/ReventlessDev/reventless-core/commit/9c47a0ea9a1643ac12fbe8dc1c43244e580de024))
77
+
78
+ ### BREAKING CHANGES
79
+
80
+ * @reventlessdev/reventless-in-memory -> @reventlessdev/reventless-local;
81
+ namespace ReventlessInMemory -> ReventlessLocal.
82
+
83
+
84
+
85
+ # 3.0.0-alpha.53 (2026-06-08)
86
+
87
+ ### Features
88
+
89
+ * **logging:** sink-aware ANSI formatting — clean JSON in non-TTY sinks (Tier 1) ([7da6256](https://github.com/ReventlessDev/reventless-core/commit/7da62568eaa06c2bedf5d7ad6d10b1ec006a6b75))
90
+
91
+
92
+ # 3.0.0-alpha.52 (2026-06-08)
93
+
94
+ ### Features
95
+
96
+ * **reventless-core:** extension-point source events in pluginStructure ([1e1d925](https://github.com/ReventlessDev/reventless-core/commit/1e1d9258b5a228b9fdfa003348a5367281573b3c))
97
+
98
+
99
+ # 3.0.0-alpha.51 (2026-06-06)
100
+
101
+ * refactor(reventless-local)!: rename reventless-in-memory to reventless-local ([966855f](https://github.com/ReventlessDev/reventless-core/commit/966855fd31e518d56a381bf40204735809cead15))
102
+
103
+ ### BREAKING CHANGES
104
+
105
+ * @reventlessdev/reventless-in-memory -> @reventlessdev/reventless-local;
106
+ namespace ReventlessInMemory -> ReventlessLocal.
107
+
108
+
109
+
110
+ # 3.0.0-alpha.50 (2026-06-04)
111
+
112
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
113
+
114
+
115
+
116
+
117
+
118
+ # 3.0.0-alpha.49 (2026-05-25)
119
+
120
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
121
+
122
+
123
+
124
+
125
+
126
+ # 3.0.0-alpha.48 (2026-05-25)
127
+
128
+ ### Features
129
+
130
+ * **readmodel:** add ReadModelStream variant for live-updating read models ([3d816fb](https://github.com/ReventlessDev/reventless-core/commit/3d816fb50e0e66693ae4a0a626f4d5b4e496c3b1))
131
+
132
+
133
+ # 3.0.0-alpha.47 (2026-05-21)
134
+
135
+ * feat(admin)!: replace direct DynamoDB retire write with Retire/Retired event flow ([7f5f018](https://github.com/ReventlessDev/reventless-core/commit/7f5f018e714e247331d143c304c0d671c2ac7c84))
136
+
137
+ ### BREAKING CHANGES
138
+
139
+ * Platform.deployPlugin no longer accepts ~version. Generated
140
+ Main.res files are regenerated; any direct caller must drop the arg.
141
+
142
+
143
+
144
+ # 3.0.0-alpha.46 (2026-05-20)
145
+
146
+ ### Features
147
+
148
+ * **plugin:** wire dcbEventLog into pluginDefinition for cross-plugin DCB routing (Phase 4) ([07b78f3](https://github.com/ReventlessDev/reventless-core/commit/07b78f359f8f039992ec0ce7922085b165695537))
149
+
150
+
151
+ # 3.0.0-alpha.45 (2026-05-19)
152
+
153
+ ### Features
154
+
155
+ * @[@reventless](https://github.com/reventless).async opt-in; sync command dispatch as default ([85885c8](https://github.com/ReventlessDev/reventless-core/commit/85885c80a70cfcbf4e1ac068c7115e6b6cfa8400))
156
+
157
+
158
+ # 3.0.0-alpha.44 (2026-05-18)
159
+
160
+ ### Bug Fixes
161
+
162
+ * **admin:** unblock admin → plugin SNS publish chain (3 bugs) ([e3418bb](https://github.com/ReventlessDev/reventless-core/commit/e3418bbf2e08575f28e0a9cc193f373a30dbb036))
163
+ * **spec:** restore payload-less filter in extractVariantNames; route acceptedTags through extractAllVariantNames ([208f644](https://github.com/ReventlessDev/reventless-core/commit/208f644cc0e21cb7c2ad3cf7bf43b5e7a99732f7))
164
+
165
+
166
+ # 3.0.0-alpha.43 (2026-05-17)
167
+
168
+ ### Bug Fixes
169
+
170
+ * **deps:** pin sury-ppx to 11.0.0-alpha.2 to prevent prerelease drift ([c9d05fe](https://github.com/ReventlessDev/reventless-core/commit/c9d05fe5118a9c0442ca3e071f2606b3a139fc81))
171
+
172
+
173
+ # 3.0.0-alpha.42 (2026-05-17)
174
+
175
+ ### Bug Fixes
176
+
177
+ * **aws:** wire schedulerRoleArn through admin registers; default heartbeat to 5 min ([f9580a2](https://github.com/ReventlessDev/reventless-core/commit/f9580a2fc7f85a67747ccaab87358f303bd90ab9))
178
+
179
+
180
+ # 3.0.0-alpha.41 (2026-05-17)
181
+
182
+ ### Bug Fixes
183
+
184
+ * **deps:** pin sury to 11.0.0-alpha.4 to unblock Lambda Layer deploys ([643d925](https://github.com/ReventlessDev/reventless-core/commit/643d92527fa9d092da9bef8547591e39a4c609dd))
185
+
186
+
187
+ # 3.0.0-alpha.40 (2026-05-16)
188
+
189
+ ### Features
190
+
191
+ * **ppx:** add @[@reventless](https://github.com/reventless).visibility to hide components from AutoUI ([bd302cf](https://github.com/ReventlessDev/reventless-core/commit/bd302cfc5bd5d4dfe50c8e1bf8596ab67e36c74e))
192
+
193
+
194
+ # 3.0.0-alpha.39 (2026-05-16)
195
+
196
+ ### Bug Fixes
197
+
198
+ * **ppx:** drop [@allowed](https://github.com/allowed)States witness; spec.status as option<string> ([cc0eed0](https://github.com/ReventlessDev/reventless-core/commit/cc0eed0e499c70009603619dd9f23a6bb2dd35df))
199
+ ### Features
200
+
201
+ * **ppx:** [@status](https://github.com/status) field annotation + [@allowed](https://github.com/allowed)States command annotation ([15f0478](https://github.com/ReventlessDev/reventless-core/commit/15f0478209dbb4e5d385332cf8cf320c694ac1c1))
202
+ * **spec:** allowedStates + statusField metadata for AutoUI command filtering ([b5d138b](https://github.com/ReventlessDev/reventless-core/commit/b5d138bb706515f7c6ba5daf7f4ef481cc35d024))
203
+
204
+
205
+ # 3.0.0-alpha.38 (2026-05-14)
206
+
207
+ ### Features
208
+
209
+ * **auth:** expose payload-less commands to GraphQL + per-constructor authz test ([7a55b27](https://github.com/ReventlessDev/reventless-core/commit/7a55b27ea04e84368909b24fc5ca29f415d108da))
210
+ * **auth:** scaffold provider-agnostic auth abstraction ([a273c10](https://github.com/ReventlessDev/reventless-core/commit/a273c10d4598d9d2fdcc7428dde3278818aba9b8))
211
+ * **ppx:** inline-spec walk + Spec module types require authorization ([7db9ec0](https://github.com/ReventlessDev/reventless-core/commit/7db9ec0f186578ce0088973dba22da9257be6a61))
212
+
213
+
214
+ # 3.0.0-alpha.37 (2026-05-13)
215
+
216
+ * feat(spec)!: standardise event/command envelope (StoredEvent, optional meta, position, persisted DCB meta, causation) ([7ef3176](https://github.com/ReventlessDev/reventless-core/commit/7ef3176c6330810c817f43a52b881b5a0efee30e))
217
+
218
+ ### BREAKING CHANGES
219
+
220
+ * meta.ip / meta.user go from required `string` to optional
221
+ record fields (`?: string`). Code that did `meta.user == "unknown"` to
222
+ detect system messages must check for field absence. Storage tables built
223
+ before this change are not migrated (greenfield — recreate the EventLog /
224
+ DcbEventLog tables; DynamoDB range key renamed from `seq` to `position`,
225
+ SQLite dcb_event gains meta and recorded_at columns).
226
+
227
+
228
+
229
+ # 3.0.0-alpha.36 (2026-05-05)
230
+
231
+ ### Features
232
+
233
+ * **dcb:** allow plural *Ids field names with shared singular tag key ([19a5167](https://github.com/ReventlessDev/reventless-core/commit/19a5167ed904c6152c137af738f869ee4d26287e))
234
+
235
+
236
+ # 3.0.0-alpha.35 (2026-05-03)
237
+
238
+ * feat(codegen)!: drop View suffix from StateView slice file names ([476dd8c](https://github.com/ReventlessDev/reventless-core/commit/476dd8c8c91f67b198faaef51aa1b29d26099844))
239
+ * feat(ppx,codegen)!: retire @reventless.projections; add spec-stem-uniqueness lint ([a6fa11f](https://github.com/ReventlessDev/reventless-core/commit/a6fa11fa26086fd356e16b01b6f15b819630534e))
240
+ * refactor(examples)!: migrate online-shop-aggregates to new naming + adopt new PPX ([9dac635](https://github.com/ReventlessDev/reventless-core/commit/9dac6353b88e6c6bba88d1ce9d4a0594be976f62))
241
+ * feat(ppx)!: add @@reventless.mappings/extension/task; collapse AutomationSlice.Make to 2 args ([c0268ac](https://github.com/ReventlessDev/reventless-core/commit/c0268ac42c1c887fe25467af61b412ab2e27a5a7))
242
+ ### Features
243
+
244
+ * **logger:** prefix plugin-component logs with stable-color [PluginName] bracket ([ed61eaf](https://github.com/ReventlessDev/reventless-core/commit/ed61eaf5cf84d8b8925c148050a2c51ddb65226a))
245
+
246
+ ### BREAKING CHANGES
247
+
248
+ * any downstream consumers regenerating from EventModeling
249
+ JSON via reventless-codegen will see StateView slices' spec file rename
250
+ from <Title>View.res to <Title>.res (with the matching _Projection.res
251
+ sibling). Move existing files with `git mv` if the canonical model still
252
+ titles them "*View".
253
+ * any user code applying @reventless.projections to
254
+ an inline wrapper module inside Plugin.res fails to compile with a
255
+ clear migration message. Move the per-source Mapping.Make modules
256
+ and the let mappings array into the slice-local
257
+ <Plural>_Projections.res file (in ReadModel/) and add
258
+ @@reventless.mappings at the top. Auto-generated Plugin.res then
259
+ references the projections module directly.
260
+ * external code consuming the
261
+ `@reventlessdev/online-shop-aggregates-*` packages must update module name
262
+ references (e.g., `CategoriesReadModel` → `Categories`,
263
+ `ProductsExtensionPoint` → `Products_ExtensionPoint`, `CategoryBehavior` →
264
+ `Category_Behavior`).
265
+
266
+ Verified: zero warnings, 1174/1175 tests pass — same single pre-existing
267
+ testPromise race in OrderingE2ETest as PR1/PR2.
268
+ * Platform.AutomationSlice.Make is now 2-arg (Spec, Automation).
269
+ External callers must either rerun generate-plugin or merge their _Mappings
270
+ contents into _Automation (or add the same two-line bridge).
271
+
272
+ Verified: zero warnings, 1174/1175 tests pass — the single failing test
273
+ (OrderingE2ETest "after syncing missing product, PlaceOrder succeeds") was
274
+ confirmed pre-existing on alpha (the known testPromise concurrency race).
275
+
276
+
277
+
278
+ # 3.0.0-alpha.34 (2026-04-28)
279
+
280
+ ### Features
281
+
282
+ * **ppx:** add [@drill](https://github.com/drill)Target and [@collapsed](https://github.com/collapsed) rendering hints ([9de6499](https://github.com/ReventlessDev/reventless-core/commit/9de6499a458a1a29f51f67df03b607bdb46c707c))
283
+ * **ppx:** add [@hidden](https://github.com/hidden) and [@summary](https://github.com/summary) visibility annotations ([f26b05c](https://github.com/ReventlessDev/reventless-core/commit/f26b05cd561f1a879ed74135a3446f1faf29ad21))
284
+ * **ppx:** add [@scan](https://github.com/scan) and [@scan](https://github.com/scan)Sort opt-in for server-side filter/sort ([534a4bf](https://github.com/ReventlessDev/reventless-core/commit/534a4bf2116ec6f597f87dadc785767c3dc54ace))
285
+ * **ppx:** propagate state annotations to JSON Schema as x-reventless-* properties ([5ce39e4](https://github.com/ReventlessDev/reventless-core/commit/5ce39e4d22dca7d5ae3577b6210e40dd81cef4f5))
286
+
287
+
288
+ # 3.0.0-alpha.33 (2026-04-27)
289
+
290
+ ### Bug Fixes
291
+
292
+ * **spec:** regenerate plugins; simplify codegen, drop Maker suffix ([8d81302](https://github.com/ReventlessDev/reventless-core/commit/8d81302a9dc3403f98298ff69b19901d625dff7e))
293
+ ### Features
294
+
295
+ * **codegen:** AWS Plugin.res delegates to composition variant; forward uiBundleUrl from env ([8832ab7](https://github.com/ReventlessDev/reventless-core/commit/8832ab7a3a19cd697afe14b230f122fc18f73403))
296
+
297
+
298
+ # 3.0.0-alpha.32 (2026-04-26)
299
+
300
+ * refactor(automation)!: drop tagSet and toTags from Mapping API ([c9cd7f2](https://github.com/ReventlessDev/reventless-core/commit/c9cd7f2a1c1758990cb3d83a6876348477fe89d6))
301
+ * feat!: mixed-source AutomationSlice — Plan 04 ([fae3fbf](https://github.com/ReventlessDev/reventless-core/commit/fae3fbf93b12ecf62d0883fe7335ed73c6f52d67))
302
+ ### Features
303
+
304
+ * enable mixed-source ReadModel — Aggregate + DCB projections (Plan 03) ([2a5f9de](https://github.com/ReventlessDev/reventless-core/commit/2a5f9de1df23cac39fc292dbad23cf16ad0aece4))
305
+ * **ppx:** add @[@reventless](https://github.com/reventless).projection / .automation / .translation — Phase 3a of Spec-First series ([d193ae6](https://github.com/ReventlessDev/reventless-core/commit/d193ae64cff93aae2867182641489f17ce4e88d6))
306
+ * **spec:** split slice spec module types — Phase 1 of Spec-First series ([d3b1493](https://github.com/ReventlessDev/reventless-core/commit/d3b149300d09dbac45a5e316343cd79fe2a769e6))
307
+
308
+ ### BREAKING CHANGES
309
+
310
+ * Mapping/MappingImpl no longer have `type tagSet`
311
+ or `let toTags`. Mappings declared in user code with `type tagSet`
312
+ or `let toTags` need those lines removed. Migrate any toTags
313
+ validation logic to `collect` (filter) or to `@s.matches` /
314
+ `@compositePartitionTag` annotations on the command schema.
315
+ * AutomationSlice.Spec drops consumedEvent;
316
+ AutomationSlice_Builder.Make takes Mappings as 3rd arg; make signature
317
+ swaps ~dcbEventLog for ~allEventTopics + ~context; Plugin_Builder.Spec
318
+ gains platformName. Existing slices need a sibling _Mappings.res file
319
+ and updated Plugin.res (regenerate via prebuild hook).
320
+
321
+ Tests: 362/362 pass. Build clean, zero warnings.
322
+
323
+ Plan: docs/plans/done/mixed-source-automationslice.md
324
+ Guide: docs/guides/mixed-source-automationslice.md
325
+
326
+
327
+
328
+ # 3.0.0-alpha.31 (2026-04-22)
329
+
330
+ ### Bug Fixes
331
+
332
+ * **core:** correct plugin structure graph and dcb event publishing ([a61a9d0](https://github.com/ReventlessDev/reventless-core/commit/a61a9d024cffdf36faafc6bec8b8c04221ca3db2))
333
+ * wire DCB cross-plugin event routing and AutoUI command linking ([8baabad](https://github.com/ReventlessDev/reventless-core/commit/8baabad8bce02ab0954a0eeefffb4cf5f448e1e7))
334
+ ### Features
335
+
336
+ * add [@ref](https://github.com/ref) ppx annotation for explicit cross-entity field references ([079c732](https://github.com/ReventlessDev/reventless-core/commit/079c732e81b481e9b2836ea755e1610b13f828fc))
337
+ * add composite [@display](https://github.com/display)Name annotation with projected displayName column ([115f550](https://github.com/ReventlessDev/reventless-core/commit/115f5506231f635e261d977da0ca32bdabef817f))
338
+ * **logs:** bold event and command names in log output ([3b09f41](https://github.com/ReventlessDev/reventless-core/commit/3b09f41299bc1f851e15cfb7b8c4a8433f499c7d))
339
+ * **spec:** add Message.variantNameOfJson helper ([a9efb5f](https://github.com/ReventlessDev/reventless-core/commit/a9efb5f1d3ac6180ea8e04dc3c1c2f183d15a984))
340
+ * **spec:** wire UI fragment manifest through plugin make via ~uiBundleUrl ([e07fa3a](https://github.com/ReventlessDev/reventless-core/commit/e07fa3a05d6effdd4c6c6686ab1f7e4e4312c438))
341
+ * surface labelField and searchableFields on Platform_UIReadSideDef ([fb7bff8](https://github.com/ReventlessDev/reventless-core/commit/fb7bff8f6fca51c2ed9261adbfedec0f45777d59))
342
+
343
+
344
+ # 3.0.0-alpha.30 (2026-04-20)
345
+
346
+ ### Bug Fixes
347
+
348
+ * use run-generator.mjs wrapper so shebang survives rescript builds ([7f091d8](https://github.com/ReventlessDev/reventless-core/commit/7f091d8c6144bcd70fbc9d8e69288bc45a45ccd6))
349
+ ### Features
350
+
351
+ * add automationSlices, translation slices, and extensions to pluginStructure ([631e2f3](https://github.com/ReventlessDev/reventless-core/commit/631e2f3636f0a422e58712f70106c0df8effc1e9))
352
+ * Platform_EventGraph StateViewSlice aggregating cross-plugin event graph ([718f0be](https://github.com/ReventlessDev/reventless-core/commit/718f0bed258da62c4ff5f2ab188e2d43b85e91b6))
353
+ * **plugin-structure:** add mutationField to commandDef ([80f2c8d](https://github.com/ReventlessDev/reventless-core/commit/80f2c8db6a61a705f8b05cb7429187a4b69ccf37))
354
+ * **reventless-spec:** add StateViewSliceStream, EventMappings, and Task support to AWS codegen variant ([22d6b4a](https://github.com/ReventlessDev/reventless-core/commit/22d6b4aa22a57740090fa78b8c055c798e88194f))
355
+
356
+
357
+ # 3.0.0-alpha.29 (2026-04-19)
358
+
359
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
360
+
361
+
362
+
363
+
364
+
365
+ # 3.0.0-alpha.28 (2026-04-18)
366
+
367
+ ### Features
368
+
369
+ * **core:** AutoUI definition — makeAutoUIDefinition, Platform_UIDefinitions query, generator support ([513ca53](https://github.com/ReventlessDev/reventless-core/commit/513ca5399b0b6e5ae6a982fd15693de2ea208b8d))
370
+ * **core:** uiFragments manifest — Phase 1 implementation with generic types ([1e73f62](https://github.com/ReventlessDev/reventless-core/commit/1e73f623984118081d2b985c48521812e4f8417e))
371
+
372
+
373
+ # 3.0.0-alpha.27 (2026-04-15)
374
+
375
+ ### Bug Fixes
376
+
377
+ * **schema:** make pluginDefinition.apiTarget JSON-safe for union variant payloads ([556457f](https://github.com/ReventlessDev/reventless-core/commit/556457fd2f09f3ae572fc18aefb3262d80582524))
378
+
379
+
380
+ # 3.0.0-alpha.26 (2026-04-15)
381
+
382
+ ### Bug Fixes
383
+
384
+ * **platform:** split-API schema routing for Platform-target plugins ([6b4c58d](https://github.com/ReventlessDev/reventless-core/commit/6b4c58dfed15c40db0e70339f0148ff445eb5c6a))
385
+
386
+
387
+ # 3.0.0-alpha.25 (2026-04-15)
388
+
389
+ ### Features
390
+
391
+ * zero-touch plugin assembly — generate Plugin.res from folder structure ([73ea654](https://github.com/ReventlessDev/reventless-core/commit/73ea654ab9a73f15ea7e18631e8194bfe0f4580f))
392
+
393
+
394
+ # 3.0.0-alpha.24 (2026-04-12)
395
+
396
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
397
+
398
+
399
+
400
+
401
+
402
+ # 3.0.0-alpha.23 (2026-04-07)
403
+
404
+ ### Bug Fixes
405
+
406
+ * **dcb-validation:** handle union and object types in schemasAreCompatible ([8b13bb5](https://github.com/ReventlessDev/reventless-core/commit/8b13bb552cfa643f486c2761a441d1a2ae1cd7e0))
407
+
408
+
409
+ # 3.0.0-alpha.22 (2026-04-07)
410
+
411
+ ### Features
412
+
413
+ * **ppx+querydb:** annotation-driven key design and sort key queries ([dee6de8](https://github.com/ReventlessDev/reventless-core/commit/dee6de84c2d2de5431d064f18ac7132bc8c23110))
414
+
415
+
416
+ # 3.0.0-alpha.21 (2026-04-07)
417
+
418
+ ### Bug Fixes
419
+
420
+ * replace S.reverseConvertToJsonOrThrow with JSON.stringifyAny round-trip ([406acee](https://github.com/ReventlessDev/reventless-core/commit/406acee7bf98eb517419db23791b8ecb3668ada7))
421
+
422
+
423
+ # 3.0.0-alpha.20 (2026-04-06)
424
+
425
+ ### Bug Fixes
426
+
427
+ * add package-specs to all rescript.json to prevent CJS .js output ([780f1e0](https://github.com/ReventlessDev/reventless-core/commit/780f1e035173b73b17b78466ad01fb69c7cca350))
428
+
429
+
430
+ # 3.0.0-alpha.19 (2026-04-06)
431
+
432
+ ### Features
433
+
434
+ * implement [@composite](https://github.com/composite)PartitionTag PPX annotation for multi-field DCB partition keys ([cf26b15](https://github.com/ReventlessDev/reventless-core/commit/cf26b15f639d151451c9aa04d32603ef9d5df315))
435
+
436
+
437
+ # 3.0.0-alpha.18 (2026-04-04)
438
+
439
+ ### Bug Fixes
440
+
441
+ * DCB [@partition](https://github.com/partition)Tag runtime errors, GraphQL Node interface, and ESM config ([dc4c4e1](https://github.com/ReventlessDev/reventless-core/commit/dc4c4e10f1ef09aba840e7b359df453b122c6aa4))
442
+ * feat!: add reventless-ppx with @@reventless.spec, @@reventless.behavior, @@reventless.dcbTags ([cb203ec](https://github.com/ReventlessDev/reventless-core/commit/cb203ece5ea3a1b92ba7d1a57d9e12bb6c4c2487))
443
+
444
+ ### BREAKING CHANGES
445
+
446
+ * Example spec files no longer export manual moduleUrl/name/Id
447
+ declarations — these are now PPX-generated. Downstream code referencing these
448
+ exports is unaffected (same values, different source).
449
+
450
+
451
+
452
+ # 3.0.0-alpha.17 (2026-04-03)
453
+
454
+ * feat!: support multi-command returns in InboundTranslationSlice ([eaac621](https://github.com/ReventlessDev/reventless-core/commit/eaac6213829b876db508b6a98db081ee40dc3e95))
455
+
456
+ ### BREAKING CHANGES
457
+
458
+ * All `translate` implementations must wrap returns in arrays.
459
+
460
+
461
+
462
+ # [3.0.0-alpha.16](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.14...@reventlessdev/reventless-spec@3.0.0-alpha.16) (2026-03-28)
463
+
464
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
465
+
466
+
467
+
468
+
469
+
470
+ # [3.0.0-alpha.15](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.14...@reventlessdev/reventless-spec@3.0.0-alpha.15) (2026-03-27)
471
+
472
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
473
+
474
+
475
+
476
+
477
+
478
+ # [3.0.0-alpha.14](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.11...@reventlessdev/reventless-spec@3.0.0-alpha.14) (2026-03-27)
479
+
480
+ * feat!: remove resolverConfig from Behavior module type ([6f54015](https://github.com/ReventlessDev/reventless-core/commit/6f54015e3abc1c5c05472c8f54645723a0f5ed28))
481
+ * feat!: decouple DCB slices from shared event log union type ([2a40e8d](https://github.com/ReventlessDev/reventless-core/commit/2a40e8dd9babfb88440fcaccde6fb667b60e0ba9))
482
+ * feat!: add structured Identity type and expand RequestContext with identity and claims ([a2396d4](https://github.com/ReventlessDev/reventless-core/commit/a2396d4dd350bb07924d45b64b99b3dc969ced89))
483
+
484
+ ### BREAKING CHANGES
485
+
486
+ * Behavior.T no longer requires resolverConfig. Remove it
487
+ from all Behavior implementations.
488
+ * All DCB slice specs must use `producedEvent`/`consumedEvent`
489
+ instead of `module DcbEventLogSpec`. Plugin `DcbSpec` no longer has `type event`
490
+ or `with type dcbEvent` constraints.
491
+ * RequestContext.t now requires identity and claims fields.
492
+ Use RequestContext.test() for test contexts.
493
+
494
+
495
+
496
+ # [3.0.0-alpha.13](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.11...@reventlessdev/reventless-spec@3.0.0-alpha.13) (2026-03-26)
497
+
498
+ * feat!: add structured Identity type and expand RequestContext with identity and claims ([a2396d4](https://github.com/ReventlessDev/reventless-core/commit/a2396d4dd350bb07924d45b64b99b3dc969ced89))
499
+
500
+ ### BREAKING CHANGES
501
+
502
+ * RequestContext.t now requires identity and claims fields.
503
+ Use RequestContext.test() for test contexts.
504
+
505
+
506
+
507
+ # [3.0.0-alpha.12](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.11...@reventlessdev/reventless-spec@3.0.0-alpha.12) (2026-03-26)
508
+
509
+ * feat!: add structured Identity type and expand RequestContext with identity and claims ([a2396d4](https://github.com/ReventlessDev/reventless-core/commit/a2396d4dd350bb07924d45b64b99b3dc969ced89))
510
+
511
+ ### BREAKING CHANGES
512
+
513
+ * RequestContext.t now requires identity and claims fields.
514
+ Use RequestContext.test() for test contexts.
515
+
516
+
517
+
518
+ # [3.0.0-alpha.11](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.10...@reventlessdev/reventless-spec@3.0.0-alpha.11) (2026-03-23)
519
+
520
+ * refactor!: streamline component function naming to unified two-function pattern ([06814fd](https://github.com/ReventlessDev/reventless-core/commit/06814fd8589cf05ce8a9f9654552e7d5cd9c6bf2))
521
+ * fix(reventless-aws)!: resolve DcbEventLogSpec undefined at runtime and add AppSync routing ([85138a3](https://github.com/ReventlessDev/reventless-core/commit/85138a39afe97047ea5f063508994e20544eb780))
522
+
523
+ ### BREAKING CHANGES
524
+
525
+ * All component function signatures changed. Behavior.decide
526
+ now returns result<array<event>, error> instead of using errorHandler callback.
527
+ StateChangeSlice type decisionModel renamed to state. Projection.Mapping.map
528
+ renamed to project. StateViewSlice.project takes one argument instead of two.
529
+
530
+ * DcbEventLog.Spec now requires `let moduleUrl: string` field.
531
+ Add `let moduleUrl: string = %raw(\`import.meta.url\`)` to event log modules.
532
+ # [3.0.0-alpha.10](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.9...@reventlessdev/reventless-spec@3.0.0-alpha.10) (2026-03-22)
533
+
534
+ * feat(reventless-aws)!: replace esbuild pipeline with compiled ReScript entry points ([6cb3133](https://github.com/ReventlessDev/reventless-core/commit/6cb313323c73a078d0922fa6b977466f61de74ea))
535
+
536
+ ### BREAKING CHANGES
537
+
538
+ * esbuild removed from dependencies, `makeBundled` and
539
+ `makeBundledFromEntryPoint` removed from RuntimeEnvironment_Lambda,
540
+ `BundledEnvironment` module type removed from Runtime.
541
+ # [3.0.0-alpha.9](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.8...@reventlessdev/reventless-spec@3.0.0-alpha.9) (2026-03-16)
542
+
543
+ * feat!: auto-detect plugin version from package.json via V8 stack trace ([e172673](https://github.com/ReventlessDev/reventless-core/commit/e17267390c197fa34052cef8325c579bb781419f))
544
+ ### Features
545
+
546
+ * read version from package.json, make cloner opt-in, log platform version ([d8216a1](https://github.com/ReventlessDev/reventless-core/commit/d8216a1d569064ca14eff6e0c3be86923e5b84ad))
547
+
548
+ ### BREAKING CHANGES
549
+
550
+ * Plugin.make no longer accepts ~version.
551
+ # [3.0.0-alpha.8](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.7...@reventlessdev/reventless-spec@3.0.0-alpha.8) (2026-03-12)
552
+
553
+ ### Features
554
+
555
+ * **deps:** upgrade rescript to 12.2 and migrate Belt usages to stdlib ([eaa96ea](https://github.com/ReventlessDev/reventless-core/commit/eaa96ea61ca40d61573fb5fe2002a1f73d43ce3e))
556
+ # [3.0.0-alpha.7](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.5...@reventlessdev/reventless-spec@3.0.0-alpha.7) (2026-03-08)
557
+
558
+ ### Bug Fixes
559
+
560
+ * remove 26 Obj.magic usages, improve type safety across codebase ([ebb8925](https://github.com/ReventlessDev/reventless-core/commit/ebb8925b760a0f070b1aaf3ef2d4bf3fdc7282a3))
561
+ ### Features
562
+
563
+ * add AutomationSlice component (TODO list pattern) ([4642688](https://github.com/ReventlessDev/reventless-core/commit/46426884727aff74db33b9289feca9878b0e3ed9))
564
+ * add TranslationSlice components with docs and webhook backlog plan ([7362a8f](https://github.com/ReventlessDev/reventless-core/commit/7362a8f26bca2eaad9d99488ec597c426635659d))
565
+ * migrate logging to Effect built-in logger and provide RequestContext ([e9ec682](https://github.com/ReventlessDev/reventless-core/commit/e9ec6822ea924fc1561bfd886e4232cb5e2a8250))
566
+ * replace explicit queryMode with automatic schema-driven DCB query construction ([8df4350](https://github.com/ReventlessDev/reventless-core/commit/8df4350c37f1f15678f4796f229647eaeb3e8222))
567
+ # [3.0.0-alpha.6](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.5...@reventlessdev/reventless-spec@3.0.0-alpha.6) (2026-03-08)
568
+
569
+ ### Bug Fixes
570
+
571
+ * remove 26 Obj.magic usages, improve type safety across codebase ([ebb8925](https://github.com/ReventlessDev/reventless-core/commit/ebb8925b760a0f070b1aaf3ef2d4bf3fdc7282a3))
572
+ ### Features
573
+
574
+ * add AutomationSlice component (TODO list pattern) ([4642688](https://github.com/ReventlessDev/reventless-core/commit/46426884727aff74db33b9289feca9878b0e3ed9))
575
+ * add TranslationSlice components with docs and webhook backlog plan ([7362a8f](https://github.com/ReventlessDev/reventless-core/commit/7362a8f26bca2eaad9d99488ec597c426635659d))
576
+ * migrate logging to Effect built-in logger and provide RequestContext ([e9ec682](https://github.com/ReventlessDev/reventless-core/commit/e9ec6822ea924fc1561bfd886e4232cb5e2a8250))
577
+ # [3.0.0-alpha.5](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.4...@reventlessdev/reventless-spec@3.0.0-alpha.5) (2026-03-03)
578
+
579
+ ### Features
580
+
581
+ * **api:** implement Api component with GraphQL fragment generation and schema stitching ([c882d3a](https://github.com/ReventlessDev/reventless-core/commit/c882d3aae8722cf6cbe9b4fbf9518d9f434ce06a))
582
+ # [3.0.0-alpha.4](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.3...@reventlessdev/reventless-spec@3.0.0-alpha.4) (2026-03-02)
583
+
584
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
585
+
586
+ # [3.0.0-alpha.3](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.2...@reventlessdev/reventless-spec@3.0.0-alpha.3) (2026-03-02)
587
+
588
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
589
+
590
+ # [3.0.0-alpha.2](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.1...@reventlessdev/reventless-spec@3.0.0-alpha.2) (2026-03-01)
591
+
592
+ * feat(reventless-spec)!: swap namespaces — spec→Reventless, core→ReventlessCore ([0fcf24e](https://github.com/ReventlessDev/reventless-core/commit/0fcf24e3fc1dcc88e9ee741dc99eb7bd726f9fd7))
593
+ ### Features
594
+
595
+ * **rescript-effect:** Effect library bindings + stream-based framework handlers ([#30](https://github.com/ReventlessDev/reventless-core/issues/30)) ([f2ca5cf](https://github.com/ReventlessDev/reventless-core/commit/f2ca5cf3d56d66a9f4ab56b543d7bf82e48448dd))
596
+
597
+ ### BREAKING CHANGES
598
+
599
+ * ReventlessSpec namespace renamed to Reventless; the reventless-core
600
+ package namespace renamed from Reventless to ReventlessCore.
601
+ All usages of ReventlessSpec.* must be updated to Reventless.*;
602
+ all usages of Reventless.* (core) in dependent packages must be updated to ReventlessCore.*
603
+ # [3.0.0-alpha.1](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@3.0.0-alpha.0...@reventlessdev/reventless-spec@3.0.0-alpha.1) (2026-02-14)
604
+
605
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
606
+
607
+ # [3.0.0-alpha.0](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@2.3.1-alpha.2...@reventlessdev/reventless-spec@3.0.0-alpha.0) (2026-02-13)
608
+
609
+ * refactor!: remove AWS dependencies from reventless core package ([bc2c4af](https://github.com/ReventlessDev/reventless-core/commit/bc2c4aff85af4f83b9d131584845260b060db647))
610
+
611
+ ### BREAKING CHANGES
612
+
613
+ * Builder functions now require explicit resourceNaming and runtimeOps parameters
614
+ ## [2.3.1-alpha.2](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@2.3.1-alpha.1...@reventlessdev/reventless-spec@2.3.1-alpha.2) (2026-02-12)
615
+
616
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
617
+
618
+ ## [2.3.1-alpha.1](https://github.com/ReventlessDev/reventless-core/compare/@reventlessdev/reventless-spec@2.3.1-alpha.0...@reventlessdev/reventless-spec@2.3.1-alpha.1) (2026-02-12)
619
+
620
+ **Note:** Version bump only for package @reventlessdev/reventless-spec
621
+
622
+ ## 2.3.1-alpha.0 (2026-02-12)
623
+ ### Bug Fixes
624
+
625
+ * **publish:** add publishConfig to packages for GitHub Package Registry ([987a00a](https://github.com/ReventlessDev/reventless-core/commit/987a00af049fed112aa91fd53d8fad719cd80c94))