openreceive-rails 0.4.24 → 0.4.26

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: 258f55c1a7d5b3abe37dbe03fb80fed29243e422feadce18f280a8b68467970c
4
+ data.tar.gz: 7e96c18aefd8c72cc20e90d0ad53619da65a2a69b60070d2bd8bc89cc18f8c8b
5
5
  SHA512:
6
- metadata.gz: 9e2b2257f8fcab8b9550d124cb7169b40f2b454353383a26c0161b1a396a4fdcccb3ba1258e1cf6745b674dba9331a10e469757db99bb8c4dc9d9bed01e40d1e
7
- data.tar.gz: 0fec6a81c111ba60c7b3b167cfec47e6ffe1f6163964a47fd37a13d46c2bef27244ea876770ba3b16f63030e063673e6a0d11b3dc70bc19d9560b124fd1e60e5
6
+ metadata.gz: b1bae664c7a1554fa14a5e9546771efa7db75ee1e968dcf38df32bdfc56ad6bdb8da7856f32b483cfcf722c712f911c01795fccf2b65aa13ccc1bd7e3fd9366b
7
+ data.tar.gz: 9b2dc752e6eb030c1fc220dda95a61c80682ce0f8a3a0546cc369aadb98e6d06407aa840fe13304c7ebbdd96de7f4d9000969462e36de1b1aa4d75b42a8a0c20
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.26 - 2026-10-14
4
+
5
+ Release with the complete 0.4.26 package family. No runtime changes from
6
+ 0.4.25.
7
+
8
+ ## 0.4.25 - 2026-10-13
9
+
10
+ Release with the complete 0.4.25 package family. The reconcile gate's
11
+ interval now also runs from the end of the last pass, not only from its
12
+ claim, as in every other engine. A pass slower than the interval used to
13
+ leave the gate open when it ended, so each request in a checkout's burst of
14
+ status checks ran a wallet scan of its own. The gate row stores
15
+ `finished_at`; older engines sharing the table ignore it. The bundled agent
16
+ skill adds directions for Flask and NestJS, and every server stack's
17
+ directions link the new guide for mobile apps.
18
+
3
19
  ## 0.4.24 - 2026-10-12
4
20
 
5
21
  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.26"
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.26
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.26
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.26
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.26
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.26
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rails
42
42
  requirement: !ruby/object:Gem::Requirement