solid_objects 0.15.2 → 0.16.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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +151 -0
  3. data/README.md +1 -1
  4. data/app/models/solid_objects/administration_event.rb +7 -0
  5. data/app/models/solid_objects/redrive.rb +7 -0
  6. data/benchmark/support.rb +2 -8
  7. data/db/migrate/20260922000000_add_solid_objects_administration_events.rb +26 -0
  8. data/db/migrate/20260922000001_add_solid_objects_redrives.rb +32 -0
  9. data/db/migrate/20260923000000_add_solid_objects_completed_idempotency_keys.rb +10 -0
  10. data/docs/adr/0011-wake-up-strategy.md +11 -1
  11. data/docs/architecture.md +41 -5
  12. data/docs/dashboard.md +10 -0
  13. data/docs/fit.md +6 -0
  14. data/docs/operations.md +153 -7
  15. data/docs/realtime.md +32 -26
  16. data/docs/roadmap.md +60 -32
  17. data/examples/at_least_once/boot.rb +2 -8
  18. data/lib/solid_objects/activation.rb +13 -6
  19. data/lib/solid_objects/actor.rb +134 -8
  20. data/lib/solid_objects/actor_snapshot.rb +8 -5
  21. data/lib/solid_objects/administration_audit.rb +30 -0
  22. data/lib/solid_objects/client.rb +81 -0
  23. data/lib/solid_objects/configuration.rb +47 -2
  24. data/lib/solid_objects/context.rb +10 -4
  25. data/lib/solid_objects/dead_letter_manager.rb +42 -6
  26. data/lib/solid_objects/dead_letter_scope.rb +143 -0
  27. data/lib/solid_objects/dead_row.rb +15 -0
  28. data/lib/solid_objects/doctor.rb +24 -5
  29. data/lib/solid_objects/errors.rb +11 -0
  30. data/lib/solid_objects/executor.rb +41 -3
  31. data/lib/solid_objects/message_reference.rb +29 -9
  32. data/lib/solid_objects/outcome.rb +31 -0
  33. data/lib/solid_objects/process_registry.rb +3 -1
  34. data/lib/solid_objects/redrive_manager.rb +130 -0
  35. data/lib/solid_objects/redrive_runner.rb +60 -0
  36. data/lib/solid_objects/redrive_task.rb +14 -0
  37. data/lib/solid_objects/reference.rb +5 -0
  38. data/lib/solid_objects/schema_bootstrap.rb +27 -0
  39. data/lib/solid_objects/supervisor.rb +43 -0
  40. data/lib/solid_objects/test_helper.rb +2 -0
  41. data/lib/solid_objects/version.rb +1 -1
  42. data/lib/solid_objects/wake_up.rb +12 -0
  43. data/lib/solid_objects/wake_up_adapters/postgresql.rb +12 -0
  44. data/lib/solid_objects/wake_up_adapters/redis.rb +12 -0
  45. data/lib/solid_objects/wake_up_adapters.rb +206 -11
  46. data/lib/solid_objects/wake_up_capability.rb +15 -0
  47. data/lib/solid_objects.rb +46 -3
  48. data/sig/generated/lib/solid_objects/activation.rbs +7 -0
  49. data/sig/generated/lib/solid_objects/actor.rbs +93 -2
  50. data/sig/generated/lib/solid_objects/administration_audit.rbs +11 -0
  51. data/sig/generated/lib/solid_objects/client.rbs +12 -0
  52. data/sig/generated/lib/solid_objects/configuration.rbs +54 -28
  53. data/sig/generated/lib/solid_objects/context.rbs +11 -6
  54. data/sig/generated/lib/solid_objects/dead_letter_manager.rbs +9 -0
  55. data/sig/generated/lib/solid_objects/dead_letter_scope.rbs +58 -0
  56. data/sig/generated/lib/solid_objects/dead_row.rbs +30 -0
  57. data/sig/generated/lib/solid_objects/doctor.rbs +3 -0
  58. data/sig/generated/lib/solid_objects/errors.rbs +8 -0
  59. data/sig/generated/lib/solid_objects/executor.rbs +9 -0
  60. data/sig/generated/lib/solid_objects/message_reference.rbs +8 -0
  61. data/sig/generated/lib/solid_objects/outcome.rbs +52 -0
  62. data/sig/generated/lib/solid_objects/redrive_manager.rbs +43 -0
  63. data/sig/generated/lib/solid_objects/redrive_runner.rbs +22 -0
  64. data/sig/generated/lib/solid_objects/redrive_task.rbs +33 -0
  65. data/sig/generated/lib/solid_objects/reference.rbs +5 -2
  66. data/sig/generated/lib/solid_objects/schema_bootstrap.rbs +11 -0
  67. data/sig/generated/lib/solid_objects/supervisor.rbs +15 -0
  68. data/sig/generated/lib/solid_objects/wake_up.rbs +5 -0
  69. data/sig/generated/lib/solid_objects/wake_up_adapters/postgresql.rbs +5 -0
  70. data/sig/generated/lib/solid_objects/wake_up_adapters/redis.rbs +5 -0
  71. data/sig/generated/lib/solid_objects/wake_up_adapters.rbs +75 -9
  72. data/sig/generated/lib/solid_objects/wake_up_capability.rbs +28 -0
  73. data/sig/generated/lib/solid_objects.rbs +14 -2
  74. data/sig/generated/models/solid_objects/administration_event.rbs +6 -0
  75. data/sig/generated/models/solid_objects/redrive.rbs +6 -0
  76. data/sig/public/reminder_payload.rbs +3 -0
  77. metadata +28 -2
@@ -0,0 +1,52 @@
1
+ # Generated from lib/solid_objects/outcome.rb with RBS::Inline
2
+
3
+ module SolidObjects
4
+ class ErrorRecord < Data
5
+ attr_reader class_name(): untyped
6
+
7
+ attr_reader message(): untyped
8
+
9
+ attr_reader backtrace(): untyped
10
+
11
+ def self.new: (untyped class_name, untyped message, untyped backtrace) -> instance
12
+ | (class_name: untyped, message: untyped, backtrace: untyped) -> instance
13
+
14
+ def self.members: () -> [ :class_name, :message, :backtrace ]
15
+
16
+ def members: () -> [ :class_name, :message, :backtrace ]
17
+ end
18
+
19
+ class RejectionRecord < Data
20
+ attr_reader code(): untyped
21
+
22
+ attr_reader message(): untyped
23
+
24
+ attr_reader details(): untyped
25
+
26
+ def self.new: (untyped code, untyped message, untyped details) -> instance
27
+ | (code: untyped, message: untyped, details: untyped) -> instance
28
+
29
+ def self.members: () -> [ :code, :message, :details ]
30
+
31
+ def members: () -> [ :code, :message, :details ]
32
+ end
33
+
34
+ class Outcome < Data
35
+ attr_reader status(): untyped
36
+
37
+ attr_reader result(): untyped
38
+
39
+ attr_reader error(): untyped
40
+
41
+ attr_reader rejection(): untyped
42
+
43
+ attr_reader attempts(): untyped
44
+
45
+ def self.new: (untyped status, untyped result, untyped error, untyped rejection, untyped attempts) -> instance
46
+ | (status: untyped, result: untyped, error: untyped, rejection: untyped, attempts: untyped) -> instance
47
+
48
+ def self.members: () -> [ :status, :result, :error, :rejection, :attempts ]
49
+
50
+ def members: () -> [ :status, :result, :error, :rejection, :attempts ]
51
+ end
52
+ end
@@ -0,0 +1,43 @@
1
+ # Generated from lib/solid_objects/redrive_manager.rb with RBS::Inline
2
+
3
+ module SolidObjects
4
+ class RedriveManager
5
+ RUNNING: ::String
6
+
7
+ COMPLETED: ::String
8
+
9
+ CANCELLED: ::String
10
+
11
+ # @rbs (scope: DeadLetterScope, filters: Hash[String, untyped], authorization_context: untyped) -> RedriveTask
12
+ def start: (scope: DeadLetterScope, filters: Hash[String, untyped], authorization_context: untyped) -> RedriveTask
13
+
14
+ # @rbs (String, ?authorization_context: untyped) -> RedriveTask
15
+ def find: (String, ?authorization_context: untyped) -> RedriveTask
16
+
17
+ # @rbs (?status: Symbol | String | nil, ?authorization_context: untyped) -> Array[RedriveTask]
18
+ def all: (?status: Symbol | String | nil, ?authorization_context: untyped) -> Array[RedriveTask]
19
+
20
+ # @rbs (String, ?authorization_context: untyped) -> RedriveTask
21
+ def cancel: (String, ?authorization_context: untyped) -> RedriveTask
22
+
23
+ # @rbs (Redrive, status: String) -> bool
24
+ def close: (Redrive, status: String) -> bool
25
+
26
+ # @rbs (Redrive, action: String) -> void
27
+ def audit: (Redrive, action: String) -> void
28
+
29
+ # @rbs (Redrive) -> RedriveTask
30
+ def task_for: (Redrive) -> RedriveTask
31
+
32
+ private
33
+
34
+ # @rbs (scope: DeadLetterScope, filters: Hash[String, untyped], active_scope: String, authorization_context: untyped) -> Redrive
35
+ def open_task: (scope: DeadLetterScope, filters: Hash[String, untyped], active_scope: String, authorization_context: untyped) -> Redrive
36
+
37
+ # @rbs (Redrive) -> Integer
38
+ def remaining_for: (Redrive) -> Integer
39
+
40
+ # @rbs (Symbol, authorization_context: untyped, ?resource_id: String?) -> void
41
+ def authorize!: (Symbol, authorization_context: untyped, ?resource_id: String?) -> void
42
+ end
43
+ end
@@ -0,0 +1,22 @@
1
+ # Generated from lib/solid_objects/redrive_runner.rb with RBS::Inline
2
+
3
+ module SolidObjects
4
+ class RedriveRunner
5
+ # @rbs () -> bool
6
+ def run_once: () -> bool
7
+
8
+ private
9
+
10
+ # @rbs () -> Redrive?
11
+ def claim: () -> Redrive?
12
+
13
+ # @rbs (Redrive) -> bool
14
+ def advance: (Redrive) -> bool
15
+
16
+ # @rbs (Redrive) -> Integer
17
+ def move_batch: (Redrive) -> Integer
18
+
19
+ # @rbs (Redrive) -> void
20
+ def finish: (Redrive) -> void
21
+ end
22
+ end
@@ -0,0 +1,33 @@
1
+ # Generated from lib/solid_objects/redrive_task.rb with RBS::Inline
2
+
3
+ module SolidObjects
4
+ class RedriveTask < Data
5
+ attr_reader id(): untyped
6
+
7
+ attr_reader kind(): untyped
8
+
9
+ attr_reader filters(): untyped
10
+
11
+ attr_reader status(): untyped
12
+
13
+ attr_reader moved(): untyped
14
+
15
+ attr_reader remaining(): untyped
16
+
17
+ attr_reader started_at(): untyped
18
+
19
+ attr_reader finished_at(): untyped
20
+
21
+ def self.new: (untyped id, untyped kind, untyped filters, untyped status, untyped moved, untyped remaining, untyped started_at, untyped finished_at) -> instance
22
+ | (id: untyped, kind: untyped, filters: untyped, status: untyped, moved: untyped, remaining: untyped, started_at: untyped, finished_at: untyped) -> instance
23
+
24
+ def self.members: () -> [ :id, :kind, :filters, :status, :moved, :remaining, :started_at, :finished_at ]
25
+
26
+ def members: () -> [ :id, :kind, :filters, :status, :moved, :remaining, :started_at, :finished_at ]
27
+ end
28
+
29
+ class RedriveTask
30
+ # @rbs (?authorization_context: untyped) -> RedriveTask
31
+ def cancel: (?authorization_context: untyped) -> RedriveTask
32
+ end
33
+ end
@@ -2,10 +2,10 @@
2
2
 
3
3
  module SolidObjects
4
4
  class Reference
5
- @actor_type: String
6
-
7
5
  @actor_id: String
8
6
 
7
+ @actor_type: String
8
+
9
9
  attr_reader actor_type: untyped
10
10
 
11
11
  attr_reader actor_id: untyped
@@ -22,6 +22,9 @@ module SolidObjects
22
22
  # @rbs (?authorization_context: untyped) -> bool
23
23
  def destroy: (?authorization_context: untyped) -> bool
24
24
 
25
+ # @rbs (idempotency_key: String, ?authorization_context: untyped) -> MessageReference?
26
+ def find_by: (idempotency_key: String, ?authorization_context: untyped) -> MessageReference?
27
+
25
28
  # @rbs (?authorization_context: untyped) -> StateSnapshot
26
29
  def snapshot: (?authorization_context: untyped) -> StateSnapshot
27
30
 
@@ -0,0 +1,11 @@
1
+ # Generated from lib/solid_objects/schema_bootstrap.rb with RBS::Inline
2
+
3
+ module SolidObjects
4
+ module SchemaBootstrap
5
+ # @rbs (?connection: untyped) -> void
6
+ def self.install: (?connection: untyped) -> void
7
+
8
+ # @rbs () -> Array[Class]
9
+ def self.migrations: () -> Array[Class]
10
+ end
11
+ end
@@ -83,6 +83,21 @@ module SolidObjects
83
83
  # @rbs (Integer) -> Float
84
84
  def retention_pause: (Integer) -> Float
85
85
 
86
+ # @rbs () -> void
87
+ def redrive_loop: () -> void
88
+
89
+ # @rbs () -> bool
90
+ def advance_redrive: () -> bool
91
+
92
+ # @rbs () -> void
93
+ def pause_between_batches: () -> void
94
+
95
+ # @rbs () -> void
96
+ def wait_for_next_redrive: () -> void
97
+
98
+ # @rbs () -> void
99
+ def stop_redrive: () -> void
100
+
86
101
  # @rbs () -> void
87
102
  def stop_retention: () -> void
88
103
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  module SolidObjects
4
4
  class WakeUp
5
+ include ReportsWakeUpCapability
6
+
5
7
  class Watch
6
8
  @wake_up: WakeUp
7
9
 
@@ -23,6 +25,9 @@ module SolidObjects
23
25
  # @rbs () -> void
24
26
  def initialize: () -> void
25
27
 
28
+ # @rbs () -> WakeUpCapability
29
+ def default_capability: () -> WakeUpCapability
30
+
26
31
  # @rbs () -> void
27
32
  def signal: () -> void
28
33
 
@@ -10,6 +10,8 @@ module SolidObjects
10
10
  # when one is available, so a missed or failed notification costs latency
11
11
  # rather than correctness.
12
12
  class Postgresql
13
+ include ReportsWakeUpCapability
14
+
13
15
  CHANNEL: ::String
14
16
 
15
17
  FAILED_WAIT_INTERVAL: ::Float
@@ -22,6 +24,9 @@ module SolidObjects
22
24
 
23
25
  attr_reader channel: untyped
24
26
 
27
+ # @rbs () -> WakeUpCapability
28
+ def default_capability: () -> WakeUpCapability
29
+
25
30
  # @rbs (?channel: String) -> void
26
31
  def initialize: (?channel: String) -> void
27
32
 
@@ -10,6 +10,8 @@ module SolidObjects
10
10
  # polling interval remains the upper bound, so a missed or failed
11
11
  # notification costs latency rather than correctness.
12
12
  class Redis
13
+ include ReportsWakeUpCapability
14
+
13
15
  class Watch
14
16
  @adapter: Redis
15
17
 
@@ -46,6 +48,9 @@ module SolidObjects
46
48
 
47
49
  attr_reader channel: untyped
48
50
 
51
+ # @rbs () -> WakeUpCapability
52
+ def default_capability: () -> WakeUpCapability
53
+
49
54
  # @rbs (?channel: String, ?url: String?, ?client: untyped) -> void
50
55
  def initialize: (?channel: String, ?url: String?, ?client: untyped) -> void
51
56
 
@@ -2,16 +2,82 @@
2
2
 
3
3
  module SolidObjects
4
4
  module WakeUpAdapters
5
- # Returns the best wake-up strategy for a connection: cross-process
6
- # notifications where the database provides them, and the in-process
7
- # default everywhere else.
8
- #
9
- # This is deliberately not the default. A notification adapter opens a
10
- # connection per waiting thread outside the pool, and `LISTEN` does not
11
- # survive a transaction-pooling proxy such as PgBouncer, so adopting it is
12
- # a deployment decision rather than an upgrade side effect.
13
- #
5
+ POSTGRESQL_FLOOR_MS: ::Float
6
+
7
+ REDIS_FLOOR_MS: ::Float
8
+
9
+ REDIS_URL_VARIABLE: ::String
10
+
11
+ PROBE_TIMEOUT_SECONDS: ::Float
12
+
13
+ PROBE_CHANNEL: ::String
14
+
15
+ NAMES: untyped
16
+
14
17
  # @rbs (?untyped) -> untyped
15
18
  def self?.for: (?untyped) -> untyped
19
+
20
+ # @rbs (untyped) -> untyped
21
+ def self?.build: (untyped) -> untyped
22
+
23
+ # @rbs (Symbol) -> untyped
24
+ def self?.named: (Symbol) -> untyped
25
+
26
+ # @rbs () -> untyped
27
+ def self?.requested_postgresql: () -> untyped
28
+
29
+ # @rbs () -> untyped
30
+ def self?.requested_redis: () -> untyped
31
+
32
+ # @rbs (String, String) -> untyped
33
+ def self?.redis_adapter: (String, String) -> untyped
34
+
35
+ # @rbs () -> bool
36
+ def self?.redis_installed?: () -> bool
37
+
38
+ # @rbs (String) -> untyped
39
+ def self?.unavailable_selection: (String) -> untyped
40
+
41
+ # @rbs (untyped) -> untyped
42
+ def self?.configured: (untyped) -> untyped
43
+
44
+ # @rbs (untyped, Symbol, bool, Numeric?, String) -> untyped
45
+ def self?.labelled: (untyped, Symbol, bool, Numeric?, String) -> untyped
46
+
47
+ # @rbs (?untyped) -> untyped
48
+ def self?.select: (?untyped) -> untyped
49
+
50
+ # @rbs () -> bool
51
+ def self?.notifications_deliver?: () -> bool
52
+
53
+ # @rbs () -> bool
54
+ def self?.notify_probe_channel: () -> bool
55
+
56
+ # @rbs (untyped) -> void
57
+ def self?.disconnect_probe: (untyped) -> void
58
+
59
+ # @rbs () -> void
60
+ def self?.reset_pooled_warning!: () -> void
61
+
62
+ # @rbs () -> String?
63
+ def self?.redis_url: () -> String?
64
+
65
+ # @rbs (String) -> untyped
66
+ def self?.redis_selection: (String) -> untyped
67
+
68
+ # @rbs () -> untyped
69
+ def self?.postgresql_selection: () -> untyped
70
+
71
+ # @rbs () -> untyped
72
+ def self?.pooled_selection: () -> untyped
73
+
74
+ # @rbs (Symbol?) -> untyped
75
+ def self?.polling_selection: (Symbol?) -> untyped
76
+
77
+ # @rbs (String) -> untyped
78
+ def self?.polling_adapter: (String) -> untyped
79
+
80
+ # @rbs () -> void
81
+ def self?.warn_pooled_session_once: () -> void
16
82
  end
17
83
  end
@@ -0,0 +1,28 @@
1
+ # Generated from lib/solid_objects/wake_up_capability.rb with RBS::Inline
2
+
3
+ module SolidObjects
4
+ class WakeUpCapability < Data
5
+ attr_reader adapter(): untyped
6
+
7
+ attr_reader crosses_processes(): untyped
8
+
9
+ attr_reader measured_floor_ms(): untyped
10
+
11
+ attr_reader reason(): untyped
12
+
13
+ def self.new: (untyped adapter, untyped crosses_processes, untyped measured_floor_ms, untyped reason) -> instance
14
+ | (adapter: untyped, crosses_processes: untyped, measured_floor_ms: untyped, reason: untyped) -> instance
15
+
16
+ def self.members: () -> [ :adapter, :crosses_processes, :measured_floor_ms, :reason ]
17
+
18
+ def members: () -> [ :adapter, :crosses_processes, :measured_floor_ms, :reason ]
19
+ end
20
+
21
+ module ReportsWakeUpCapability
22
+ # @rbs (WakeUpCapability) -> void
23
+ attr_writer capability: untyped
24
+
25
+ # @rbs () -> WakeUpCapability
26
+ def capability: () -> WakeUpCapability
27
+ end
28
+ end
@@ -39,6 +39,9 @@ module SolidObjects
39
39
  # @rbs () -> DeadLetterManager
40
40
  def self.dead_letters: () -> DeadLetterManager
41
41
 
42
+ # @rbs () -> RedriveManager
43
+ def self.redrives: () -> RedriveManager
44
+
42
45
  # @rbs () -> Administration
43
46
  def self.administration: () -> Administration
44
47
 
@@ -57,6 +60,15 @@ module SolidObjects
57
60
  # @rbs () -> DatabaseAdapter
58
61
  def self.database_adapter: () -> DatabaseAdapter
59
62
 
60
- # @rbs () -> WakeUp
61
- def self.wake_up: () -> WakeUp
63
+ # @rbs () -> untyped
64
+ def self.wake_up: () -> untyped
65
+
66
+ # @rbs () -> void
67
+ def self.reset_wake_up!: () -> void
68
+
69
+ # @rbs () -> untyped
70
+ def self.resolve_wake_up: () -> untyped
71
+
72
+ # @rbs (Exception) -> untyped
73
+ def self.unreachable_wake_up: (Exception) -> untyped
62
74
  end
@@ -0,0 +1,6 @@
1
+ # Generated from app/models/solid_objects/administration_event.rb with RBS::Inline
2
+
3
+ module SolidObjects
4
+ class AdministrationEvent < Record
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ # Generated from app/models/solid_objects/redrive.rb with RBS::Inline
2
+
3
+ module SolidObjects
4
+ class Redrive < Record
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ module SolidObjects
2
+ type reminder_handle = { "reminder_name" => String }
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solid_objects
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.2
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Carlson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-09-21 00:00:00.000000000 Z
11
+ date: 2026-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actioncable
@@ -299,6 +299,7 @@ files:
299
299
  - app/controllers/solid_objects/instances_controller.rb
300
300
  - app/controllers/solid_objects/transmissions_controller.rb
301
301
  - app/helpers/solid_objects/actor_helper.rb
302
+ - app/models/solid_objects/administration_event.rb
302
303
  - app/models/solid_objects/broadcast.rb
303
304
  - app/models/solid_objects/claimed_message.rb
304
305
  - app/models/solid_objects/dead_letter.rb
@@ -309,6 +310,7 @@ files:
309
310
  - app/models/solid_objects/process.rb
310
311
  - app/models/solid_objects/ready_message.rb
311
312
  - app/models/solid_objects/record.rb
313
+ - app/models/solid_objects/redrive.rb
312
314
  - app/models/solid_objects/reminder.rb
313
315
  - app/views/solid_objects/dead_letters/index.html.erb
314
316
  - app/views/solid_objects/instances/index.html.erb
@@ -332,6 +334,9 @@ files:
332
334
  - db/migrate/20260806000000_add_state_revision_to_solid_objects_instances.rb
333
335
  - db/migrate/20260813000000_rename_message_dispatch_columns.rb
334
336
  - db/migrate/20260915000000_add_solid_objects_effect_recoveries.rb
337
+ - db/migrate/20260922000000_add_solid_objects_administration_events.rb
338
+ - db/migrate/20260922000001_add_solid_objects_redrives.rb
339
+ - db/migrate/20260923000000_add_solid_objects_completed_idempotency_keys.rb
335
340
  - docs/adr/0001-postgresql-backend.md
336
341
  - docs/adr/0002-jsonb-actor-state.md
337
342
  - docs/adr/0003-mailbox-ordering.md
@@ -396,6 +401,7 @@ files:
396
401
  - lib/solid_objects/actor_snapshot.rb
397
402
  - lib/solid_objects/actor_view.rb
398
403
  - lib/solid_objects/administration.rb
404
+ - lib/solid_objects/administration_audit.rb
399
405
  - lib/solid_objects/application_actor_loader.rb
400
406
  - lib/solid_objects/application_write_guard.rb
401
407
  - lib/solid_objects/broadcast_executor.rb
@@ -417,6 +423,8 @@ files:
417
423
  - lib/solid_objects/database_adapters/postgresql.rb
418
424
  - lib/solid_objects/database_adapters/sqlite.rb
419
425
  - lib/solid_objects/dead_letter_manager.rb
426
+ - lib/solid_objects/dead_letter_scope.rb
427
+ - lib/solid_objects/dead_row.rb
420
428
  - lib/solid_objects/doctor.rb
421
429
  - lib/solid_objects/dom_identity.rb
422
430
  - lib/solid_objects/effect_executor.rb
@@ -435,13 +443,18 @@ files:
435
443
  - lib/solid_objects/message_pruner.rb
436
444
  - lib/solid_objects/message_reference.rb
437
445
  - lib/solid_objects/operation_dispatcher.rb
446
+ - lib/solid_objects/outcome.rb
438
447
  - lib/solid_objects/payload_broadcast.rb
439
448
  - lib/solid_objects/polling_backoff.rb
440
449
  - lib/solid_objects/process_heartbeat.rb
441
450
  - lib/solid_objects/process_pruner.rb
442
451
  - lib/solid_objects/process_registry.rb
452
+ - lib/solid_objects/redrive_manager.rb
453
+ - lib/solid_objects/redrive_runner.rb
454
+ - lib/solid_objects/redrive_task.rb
443
455
  - lib/solid_objects/reference.rb
444
456
  - lib/solid_objects/reminder_scheduler.rb
457
+ - lib/solid_objects/schema_bootstrap.rb
445
458
  - lib/solid_objects/serialization.rb
446
459
  - lib/solid_objects/state.rb
447
460
  - lib/solid_objects/state_snapshot.rb
@@ -459,6 +472,7 @@ files:
459
472
  - lib/solid_objects/wake_up_adapters.rb
460
473
  - lib/solid_objects/wake_up_adapters/postgresql.rb
461
474
  - lib/solid_objects/wake_up_adapters/redis.rb
475
+ - lib/solid_objects/wake_up_capability.rb
462
476
  - lib/solid_objects/web.rb
463
477
  - lib/solid_objects/web/action.rb
464
478
  - lib/solid_objects/web/application.rb
@@ -489,6 +503,7 @@ files:
489
503
  - sig/generated/lib/solid_objects/actor_snapshot.rbs
490
504
  - sig/generated/lib/solid_objects/actor_view.rbs
491
505
  - sig/generated/lib/solid_objects/administration.rbs
506
+ - sig/generated/lib/solid_objects/administration_audit.rbs
492
507
  - sig/generated/lib/solid_objects/application_actor_loader.rbs
493
508
  - sig/generated/lib/solid_objects/application_write_guard.rbs
494
509
  - sig/generated/lib/solid_objects/broadcast_executor.rbs
@@ -510,6 +525,8 @@ files:
510
525
  - sig/generated/lib/solid_objects/database_adapters/postgresql.rbs
511
526
  - sig/generated/lib/solid_objects/database_adapters/sqlite.rbs
512
527
  - sig/generated/lib/solid_objects/dead_letter_manager.rbs
528
+ - sig/generated/lib/solid_objects/dead_letter_scope.rbs
529
+ - sig/generated/lib/solid_objects/dead_row.rbs
513
530
  - sig/generated/lib/solid_objects/doctor.rbs
514
531
  - sig/generated/lib/solid_objects/dom_identity.rbs
515
532
  - sig/generated/lib/solid_objects/effect_executor.rbs
@@ -528,13 +545,18 @@ files:
528
545
  - sig/generated/lib/solid_objects/message_pruner.rbs
529
546
  - sig/generated/lib/solid_objects/message_reference.rbs
530
547
  - sig/generated/lib/solid_objects/operation_dispatcher.rbs
548
+ - sig/generated/lib/solid_objects/outcome.rbs
531
549
  - sig/generated/lib/solid_objects/payload_broadcast.rbs
532
550
  - sig/generated/lib/solid_objects/polling_backoff.rbs
533
551
  - sig/generated/lib/solid_objects/process_heartbeat.rbs
534
552
  - sig/generated/lib/solid_objects/process_pruner.rbs
535
553
  - sig/generated/lib/solid_objects/process_registry.rbs
554
+ - sig/generated/lib/solid_objects/redrive_manager.rbs
555
+ - sig/generated/lib/solid_objects/redrive_runner.rbs
556
+ - sig/generated/lib/solid_objects/redrive_task.rbs
536
557
  - sig/generated/lib/solid_objects/reference.rbs
537
558
  - sig/generated/lib/solid_objects/reminder_scheduler.rbs
559
+ - sig/generated/lib/solid_objects/schema_bootstrap.rbs
538
560
  - sig/generated/lib/solid_objects/serialization.rbs
539
561
  - sig/generated/lib/solid_objects/state.rbs
540
562
  - sig/generated/lib/solid_objects/state_snapshot.rbs
@@ -552,6 +574,7 @@ files:
552
574
  - sig/generated/lib/solid_objects/wake_up_adapters.rbs
553
575
  - sig/generated/lib/solid_objects/wake_up_adapters/postgresql.rbs
554
576
  - sig/generated/lib/solid_objects/wake_up_adapters/redis.rbs
577
+ - sig/generated/lib/solid_objects/wake_up_capability.rbs
555
578
  - sig/generated/lib/solid_objects/web.rbs
556
579
  - sig/generated/lib/solid_objects/web/action.rbs
557
580
  - sig/generated/lib/solid_objects/web/application.rbs
@@ -562,6 +585,7 @@ files:
562
585
  - sig/generated/lib/solid_objects/web/router.rbs
563
586
  - sig/generated/lib/solid_objects/web/statistics.rbs
564
587
  - sig/generated/lib/solid_objects/worker.rbs
588
+ - sig/generated/models/solid_objects/administration_event.rbs
565
589
  - sig/generated/models/solid_objects/broadcast.rbs
566
590
  - sig/generated/models/solid_objects/claimed_message.rbs
567
591
  - sig/generated/models/solid_objects/dead_letter.rbs
@@ -572,8 +596,10 @@ files:
572
596
  - sig/generated/models/solid_objects/process.rbs
573
597
  - sig/generated/models/solid_objects/ready_message.rbs
574
598
  - sig/generated/models/solid_objects/record.rbs
599
+ - sig/generated/models/solid_objects/redrive.rbs
575
600
  - sig/generated/models/solid_objects/reminder.rbs
576
601
  - sig/public/effect_payload.rbs
602
+ - sig/public/reminder_payload.rbs
577
603
  - sig/support/framework.rbs
578
604
  - web/assets/javascripts/application.js
579
605
  - web/assets/javascripts/charts.js