openreceive-rails 0.4.24 → 0.4.25

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 02e4b6810b0da797585fa17f39c28231838f7fac4029221a8808ae310328b97f
4
- data.tar.gz: 8cb57248c11d1c43aad1cb8a4d450b146083e9cc87379bfdc32e12e48bf914c6
3
+ metadata.gz: 2a9b3a9a1defa5d75a860f9871c92f9b30e442db9a78933e6c1c6ac1335f4282
4
+ data.tar.gz: 12e620ec2f21624bfe02ee21accf46a8aa20aaf750ed7ef44b42b757d4e2f9c3
5
5
  SHA512:
6
- metadata.gz: 9e2b2257f8fcab8b9550d124cb7169b40f2b454353383a26c0161b1a396a4fdcccb3ba1258e1cf6745b674dba9331a10e469757db99bb8c4dc9d9bed01e40d1e
7
- data.tar.gz: 0fec6a81c111ba60c7b3b167cfec47e6ffe1f6163964a47fd37a13d46c2bef27244ea876770ba3b16f63030e063673e6a0d11b3dc70bc19d9560b124fd1e60e5
6
+ metadata.gz: f92dd48e46ada6f2e24f7a4b640aeea2b30d24a500fdfc3570d26e4550b72c3951148b34faa6d0a1e2848185dd5a5aa90ae30a7224250e6549e63080b7cf1a90
7
+ data.tar.gz: 972899e0cc861d98abbd796fbc8712d84a3ff40e239f16602753f5e86f552a684b3be85fa3fcde9743be71419bd8df9a69951b2a639f86fed737c3b9cc726765
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.25 - 2026-10-13
4
+
5
+ Release with the complete 0.4.25 package family. The reconcile gate's
6
+ interval now also runs from the end of the last pass, not only from its
7
+ claim, as in every other engine. A pass slower than the interval used to
8
+ leave the gate open when it ended, so each request in a checkout's burst of
9
+ status checks ran a wallet scan of its own. The gate row stores
10
+ `finished_at`; older engines sharing the table ignore it. The bundled agent
11
+ skill adds directions for Flask and NestJS, and every server stack's
12
+ directions link the new guide for mobile apps.
13
+
3
14
  ## 0.4.24 - 2026-10-12
4
15
 
5
16
  Release with the complete 0.4.24 package family. The gem's registry page
@@ -79,6 +79,11 @@ class OpenReceiveMeta < ActiveRecord::Base
79
79
  current = parse_gate(row&.value)
80
80
  claimed = current["claimed_at"]
81
81
  return nil if claimed && fresh_timestamp?(now, claimed, interval_seconds)
82
+ # The interval also runs from the end of the last pass. A pass that takes
83
+ # longer than the interval would otherwise leave the gate open on release,
84
+ # and every sequential request after it would pay a full scan of its own.
85
+ finished = current["finished_at"]
86
+ return nil if finished && fresh_timestamp?(now, finished, interval_seconds)
82
87
  return nil if current.fetch("lease_until", 0) > now && current.fetch("claimed_at", 0) <= now + 60
83
88
 
84
89
  gate = {
@@ -105,7 +110,10 @@ class OpenReceiveMeta < ActiveRecord::Base
105
110
  raise ArgumentError, "Reconciliation checkpoint exceeded bounded cohorts" if windows.length > 2 || windows.any? { |w| w.fetch("attempts").length > 200 }
106
111
 
107
112
  gate["scheduler"] = scheduler
108
- gate["lease_until"] = 0 if release
113
+ if release
114
+ gate["lease_until"] = 0
115
+ gate["finished_at"] = Integer(now)
116
+ end
109
117
  encoded = JSON.generate(gate)
110
118
  raise ArgumentError, "Reconciliation checkpoint exceeded 128 KiB" if encoded.bytesize > 128 * 1024
111
119
 
@@ -5,6 +5,6 @@ module OpenReceive
5
5
  # top-level `::Rails` framework constant — engine code always references the framework as
6
6
  # `::Rails` to avoid shadowing.
7
7
  module Rails
8
- VERSION = "0.4.24"
8
+ VERSION = "0.4.25"
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openreceive-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.24
4
+ version: 0.4.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenReceive
@@ -15,28 +15,28 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.4.24
18
+ version: 0.4.25
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.4.24
25
+ version: 0.4.25
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: openreceive-server
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - '='
31
31
  - !ruby/object:Gem::Version
32
- version: 0.4.24
32
+ version: 0.4.25
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - '='
38
38
  - !ruby/object:Gem::Version
39
- version: 0.4.24
39
+ version: 0.4.25
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rails
42
42
  requirement: !ruby/object:Gem::Requirement