event_engine 0.1.0 → 0.2.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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +73 -0
  3. data/README.md +218 -398
  4. data/Rakefile +0 -1
  5. data/lib/event_engine/catalog_entry.rb +84 -0
  6. data/lib/event_engine/configuration.rb +9 -9
  7. data/lib/event_engine/definition_publisher.rb +22 -0
  8. data/lib/event_engine/event.rb +0 -8
  9. data/lib/event_engine/event_builder.rb +0 -8
  10. data/lib/event_engine/event_schema.rb +32 -57
  11. data/lib/event_engine/event_schema_json_loader.rb +19 -0
  12. data/lib/event_engine/handler_registry.rb +4 -4
  13. data/lib/event_engine/invalid_rules_error.rb +8 -0
  14. data/lib/event_engine/processing_rules.rb +39 -0
  15. data/lib/event_engine/processor_registry.rb +19 -0
  16. data/lib/event_engine/processor_resolver.rb +16 -0
  17. data/lib/event_engine/railtie.rb +54 -4
  18. data/lib/event_engine/rules_file.rb +14 -0
  19. data/lib/event_engine/schema_catalog_builder.rb +18 -0
  20. data/lib/event_engine/schema_registry.rb +7 -58
  21. data/lib/event_engine/unregistered_processor_error.rb +8 -0
  22. data/lib/event_engine/unroutable_event_error.rb +9 -0
  23. data/lib/event_engine/unrouted_events_error.rb +9 -0
  24. data/lib/event_engine/version.rb +1 -1
  25. data/lib/event_engine.rb +117 -123
  26. data/lib/tasks/event_engine_catalog.rake +15 -6
  27. data/lib/tasks/event_engine_rules.rake +10 -0
  28. data/the_local/agents/event_engine-develop.md +154 -0
  29. data/the_local/agents/event_engine-info.md +82 -0
  30. data/the_local/agents/event_engine-install.md +99 -0
  31. data/the_local/interface.yml +27 -0
  32. metadata +45 -48
  33. data/app/assets/config/event_engine_manifest.js +0 -1
  34. data/app/assets/stylesheets/event_engine/application.css +0 -15
  35. data/app/controllers/event_engine/application_controller.rb +0 -4
  36. data/app/helpers/event_engine/application_helper.rb +0 -4
  37. data/app/jobs/event_engine/application_job.rb +0 -4
  38. data/app/mailers/event_engine/application_mailer.rb +0 -6
  39. data/app/models/event_engine/application_record.rb +0 -5
  40. data/app/views/layouts/event_engine/application.html.erb +0 -15
  41. data/config/routes.rb +0 -2
  42. data/lib/event_engine/definition_loader.rb +0 -26
  43. data/lib/event_engine/dsl_compiler.rb +0 -50
  44. data/lib/event_engine/engine.rb +0 -56
  45. data/lib/event_engine/event_definition/inputs.rb +0 -43
  46. data/lib/event_engine/event_definition/payloads.rb +0 -47
  47. data/lib/event_engine/event_definition/schemas.rb +0 -158
  48. data/lib/event_engine/event_definition/validation.rb +0 -18
  49. data/lib/event_engine/event_definition.rb +0 -76
  50. data/lib/event_engine/event_schema_dumper.rb +0 -13
  51. data/lib/event_engine/event_schema_loader.rb +0 -37
  52. data/lib/event_engine/event_schema_merger.rb +0 -62
  53. data/lib/event_engine/event_schema_writer.rb +0 -47
  54. data/lib/event_engine/lifecycle_definition.rb +0 -86
  55. data/lib/event_engine/process_type.rb +0 -26
  56. data/lib/event_engine/reference/guide.md +0 -129
  57. data/lib/event_engine/reference.rb +0 -16
  58. data/lib/event_engine/schema_catalog.rb +0 -50
  59. data/lib/event_engine/schema_compatibility.rb +0 -50
  60. data/lib/event_engine/schema_diff.rb +0 -35
  61. data/lib/event_engine/schema_drift_guard.rb +0 -38
  62. data/lib/event_engine/subject_registry.rb +0 -40
  63. data/lib/event_engine/the_local/agents/event_engine-develop.md +0 -142
  64. data/lib/event_engine/the_local/agents/event_engine-info.md +0 -140
  65. data/lib/event_engine/the_local/agents/event_engine-install.md +0 -140
  66. data/lib/event_engine/the_local.rb +0 -55
  67. data/lib/generators/event_engine/install_generator.rb +0 -31
  68. data/lib/generators/event_engine/templates/event_schema.rb +0 -10
  69. data/lib/generators/event_engine/templates/initializer.rb +0 -4
  70. data/lib/tasks/event_engine_schema.rake +0 -82
  71. data/lib/tasks/event_engine_schema_check.rake +0 -20
  72. data/lib/tasks/event_engine_tasks.rake +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47b43f18ac9a1a5d3afc2e169344b1750499409496e2035bcc25e23ed5ec7c13
4
- data.tar.gz: 31ad25b00b80dd1f53a3005f7a6a7f87c1c0fd4328d3fa638467192622251e6b
3
+ metadata.gz: 9f780a13e96d7a1fd1534d39aeda5cca32379d283e886839538f969d2cdcfa53
4
+ data.tar.gz: 1dad812c37e3d4b44178d8d2a9b42b1623a94fef984c6e32d66f84a0b4a3d76a
5
5
  SHA512:
6
- metadata.gz: 42338a458274a692268e1c95bf003f85a8053f3903b3383813c3780f70d13d23a3035e1b9e4435fdf1542344ddf4442aa7210d4be5cfe8cd9deb7a8e3ced8cef
7
- data.tar.gz: 4621cf3779124f63c686e23ce3414bf67d4d7683b338153da3e1a24a7bf10776e2f82c085cff57a89e88b7e9e5c9e5bb228257ad0642d22747c31adabd4f327a
6
+ metadata.gz: 685bad2445b1b6022625790855b51c4614be06e7cfafc81556d959a1a2d3254663a5a701bccfdc805c3260ec19919e939f22a5733d64481bdf894a60daeae896
7
+ data.tar.gz: bd15af2c996f15d0422b624947c78fa2d2607e13a611b028ed6f03a3d5a470ee3d8963c15c038976c5bb2c164f3eebe41a90fe372d4c3c28b39abb0e4fa8d955
data/CHANGELOG.md CHANGED
@@ -7,6 +7,79 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.1] - 2026-07-29
11
+
12
+ ### Fixed
13
+
14
+ - Running `event_engine:catalog` broke `emit`. The task scaffolds a rules file
15
+ listing every catalogued event with no value, and those bare keys counted as
16
+ declared rules — so routing was considered active while every event resolved to
17
+ nothing, raising `UnroutableEventError` on emit until each rule was filled in.
18
+
19
+ An app that processes events through **handlers** rather than processors — for
20
+ example one using `event_engine-store`, whose `Recorder` observes every event —
21
+ could not emit at all after building its catalog.
22
+
23
+ An undecided rule is now treated as no rule: a rules file where nothing is decided
24
+ behaves exactly like no rules file, and `event_engine:rules:check` still reports
25
+ the undecided events so the gap stays visible.
26
+
27
+
28
+ ## [0.2.0] - 2026-07-29
29
+
30
+ This release completes the split between **authoring** and **runtime**. Events are
31
+ now declared with `event_engine-event_definition` and compiled into a committed
32
+ catalog; this gem builds a validated event from that catalog and hands it to a
33
+ processor. How an event is processed is declared by the host in a rules file.
34
+
35
+ ### Added
36
+
37
+ - **Processing rules.** `config/event_rules.yml` declares which processor handles
38
+ each event, resolved **event → pack → default**. `event_engine:catalog` writes the
39
+ file alongside the catalog, listing every catalogued event so a new one is visible
40
+ rather than silently unrouted; rules you have already decided are preserved.
41
+ - **Processor registry.** `EventEngine.register_processor(name, processor)`, with
42
+ processor gems registering themselves under the process types they service.
43
+ - **Pack discovery.** `EventEngine.schema_sources` prefers `publisher_schema_paths`
44
+ when set and otherwise discovers every pack that registered itself, so a host with
45
+ packs in its Gemfile needs no per-pack configuration.
46
+ - **`DefinitionPublisher`**, registered at boot, so a pack's generated helper routes
47
+ into `EventEngine.emit` with no wiring in the host.
48
+ - **`event_engine:rules:check`** — verifies every rule names a registered processor
49
+ and that no catalogued event is left unrouted. Intended for CI or deploy.
50
+ - Errors that name the fix: `UnregisteredProcessorError`, `UnroutedEventsError`,
51
+ `InvalidRulesError`.
52
+
53
+ ### Changed
54
+
55
+ - **Breaking.** `process_type` now comes from the rules file, not the schema. The
56
+ catalog is the event's contract — what it carries — and no longer describes what
57
+ happens to it. Previously `emit` read `schema.process_type`, which raised
58
+ `NoMethodError` for any event authored by a pack.
59
+ - **Breaking.** `EventEngine::EventDefinition::Schema` is now
60
+ `EventEngine::CatalogEntry`, at `lib/event_engine/catalog_entry.rb`. The old file
61
+ shared a require path with `event_engine-event_definition`, so in an app running
62
+ both gems this gem's own class never loaded.
63
+ - **Breaking.** The Rails engine is now a `Rails::Railtie`. Hosts with
64
+ `mount EventEngine::Engine => "/…"` must remove that line; the gem served no routes.
65
+ - **Breaking.** `event_engine:schema:catalog` is now `event_engine:catalog`.
66
+
67
+ ### Removed
68
+
69
+ - **Breaking.** The authoring layer — the DSL, compiler, definition loader, lifecycle
70
+ definitions, schema writers and authoring rake tasks. Declare events with
71
+ `event_engine-event_definition` instead.
72
+ - **Breaking.** `Configuration#default_processor`, `#domain_processors` and
73
+ `#event_processors`. Processing is declared in the rules file, which is now the only
74
+ source for that decision.
75
+ - **Breaking.** `EventEngine::SubjectRegistry`, `EventEngine.define_subjects` and
76
+ `.subject_registry`. Subjects are an authoring concern; the runtime passes through
77
+ the subject its catalog entry declares.
78
+ - The markdown catalog printer (`SchemaCatalog`). It omitted the domain, the
79
+ `from:`/`attr:` mapping and the fingerprint; `db/event_schema.json` is complete.
80
+ - Unreferenced `ProcessType` and `EventSchemaMerger`.
81
+
82
+
10
83
  ## [0.1.0] - 2026-06-25
11
84
 
12
85
  ### Added