wurk 1.7.5 → 1.7.6

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: ac61be234c0359ccb0761df401c351021317cf2a5ae162e2329dcd94d7b8b4af
4
- data.tar.gz: 00e7d69e0a3d440f1bf335ebbeeceb80b7e93ec1f82a6f48fcc189f54c4737ab
3
+ metadata.gz: d232f2e0c78233c2bbd71051a07df6e791d1fb1c0d701c9e3ff0820035207077
4
+ data.tar.gz: 06d15b628db2d8ab75ab8440b48f372ea0943108a0c19533db0c2cf82a1b74fe
5
5
  SHA512:
6
- metadata.gz: bd52c4819554b5cad428d2514379005027aaa21cddf679ae89974edd12568075711e5dbc41b86da656f7df4a6b28ccde88cd421952002cd9966ec0e72b7841cd
7
- data.tar.gz: 796f59f291295b5681a920cb5c9d04baa70fb416afc3246db55d1ebbd009f5a6f348d785b57c80b1dd9a07dc249771b67b3bb9203927e41becf0484cf27a6c74
6
+ metadata.gz: 522ee07752a14d58635f770411bf7d74d53fca26141f04f73e0f6596e27374ea580b11d405cdcaf297c53aeaca3e08f06e1409b876159fea34cd6c91bbbcbf89
7
+ data.tar.gz: 1ffc5b66a6ce06ee39353e3593296f22ac99f8851000fa1b78fcbfb30ff7617a742804fdf6584a07b9a4b039477b736b26c644e8844c8f420766fb21670fc287
data/README.md CHANGED
@@ -130,7 +130,7 @@ Method, per-invocation records, workload definitions, and the separate `rake ben
130
130
 
131
131
  ## Documentation
132
132
 
133
- - **[Website](https://developerz-ai.github.io/wurk/)** · **[Wiki / full docs](https://github.com/developerz-ai/wurk/wiki)** — the pitch, install, and the complete guide.
133
+ - **[Website](https://developerz-ai.github.io/wurk/)** · **[Wiki](https://github.com/developerz-ai/wurk/wiki)** — the pitch, install, and short orientation guides; the complete reference is [`docs/`](https://github.com/developerz-ai/wurk/tree/main/docs), linked from every wiki page.
134
134
  - **[API reference (YARD)](https://developerz-ai.github.io/wurk/api/)** — generated docs for the public classes (`Wurk::Worker`, `Wurk::Client`, `Wurk::Configuration`, `Wurk::Batch`, `Wurk::Limiter`, `Wurk::Unique`, and the `Sidekiq::*` aliases). Machine-readable map for AI agents: **[llms.txt](https://developerz-ai.github.io/wurk/llms.txt)**.
135
135
  - **[Getting started & architecture](https://github.com/developerz-ai/wurk/blob/main/docs/idea/01-overview.md)** — how the swarm, manager, fetcher, and processor fit together.
136
136
  - **[Starting the worker](https://github.com/developerz-ai/wurk/blob/main/docs/running.md)** — Rails auto-start, the `wurk`/`wurkswarm` runners, and running standalone without Rails.
@@ -278,7 +278,7 @@ Infrastructure this basic should be free software. A Rails app shouldn't need a
278
278
  What has made that hard is maintenance: someone has to be paid to do it. Sidekiq funds a decade of *human* maintenance through its paid tiers, which is an honest trade. Wurk makes a different one — it is maintained **AI-first**: implementation, parity suite, docs, and benchmarks are written and kept current by AI agents under human review. A fix, a doc update, or a version bump is no longer somebody's week, which is what makes it practical to:
279
279
 
280
280
  - ship the entire Pro + Enterprise surface with no tier, no flag gate, and no license check;
281
- - keep parity honest mechanically rather than by hand — an independently written parity oracle suite, pinned to a documented Sidekiq revision, plus third-party gems (sidekiq-cron, sidekiq-unique-jobs, sidekiq-scheduler, sidekiq-status, sidekiq-failures, sidekiq-throttled) running their own upstream suites against Wurk on every push;
281
+ - keep parity honest mechanically rather than by hand — an independently written parity oracle suite, pinned to a documented Sidekiq revision, plus sidekiq-cron's upstream suite running against Wurk on every push ([docs/idea/14-ecosystem-compat.md](https://github.com/developerz-ai/wurk/blob/main/docs/idea/14-ecosystem-compat.md) tracks the rest);
282
282
  - keep adding surface Sidekiq doesn't have — the [Wurk extras](#wurk-extras) above landed as one release;
283
283
  - hold ourselves to published numbers instead of adjectives — the suite runs against stock Sidekiq every release and ships the results [as measured](docs/benchmarks.md), including the unflattering ones.
284
284
 
@@ -297,7 +297,7 @@ Wurk is MIT and stays that way. If what you need is a commercial support contrac
297
297
  + gem "wurk"
298
298
  ```
299
299
 
300
- `bundle install && restart`. Wurk reads and writes the same Redis schema, so a rolling deploy can run Sidekiq and Wurk against the same Redis during the cutover. Third-party gems (sidekiq-cron, sidekiq-unique-jobs, sidekiq-scheduler, sidekiq-status, sidekiq-failures, sidekiq-throttled, …) are exercised by running their own upstream suites against Wurk in the [`ecosystem` CI job](https://github.com/developerz-ai/wurk/blob/main/.github/workflows/ecosystem.yml) (see [`test/ecosystem/`](https://github.com/developerz-ai/wurk/tree/main/test/ecosystem)).
300
+ `bundle install && restart`. Wurk reads and writes the same Redis schema, so a rolling deploy can run Sidekiq and Wurk against the same Redis during the cutover. sidekiq-cron's upstream suite runs against Wurk in the [`ecosystem` CI job](https://github.com/developerz-ai/wurk/blob/main/.github/workflows/ecosystem.yml) (see [`test/ecosystem/`](https://github.com/developerz-ai/wurk/tree/main/test/ecosystem)). sidekiq-unique-jobs, sidekiq-scheduler, sidekiq-status, sidekiq-failures and sidekiq-throttled are target additions tracked in [docs/idea/14-ecosystem-compat.md](https://github.com/developerz-ai/wurk/blob/main/docs/idea/14-ecosystem-compat.md).
301
301
 
302
302
  Full walkthrough — config side-by-side, the Redis key/`sidekiq_options` mapping, known incompatibilities, and a one-page cutover checklist: **[docs/migrate-from-sidekiq.md](https://github.com/developerz-ai/wurk/blob/main/docs/migrate-from-sidekiq.md)**.
303
303
 
@@ -150,7 +150,13 @@ module Wurk
150
150
  version = Integer(envelope['v'])
151
151
  cipher = build_decrypt_cipher(envelope, key_for(version))
152
152
  plain = cipher.update(::Base64.strict_decode64(envelope['ct'])) + cipher.final
153
- ::JSON.parse(plain, quirks_mode: true)
153
+ # No `quirks_mode:` — an encrypted arg may be a bare scalar ("hi", 42,
154
+ # null), and every json the gemspec's `>= 3.2` floor can resolve parses
155
+ # those at the top level by default (RFC 7159, json >= 2.0). The option
156
+ # was therefore already a no-op, and json 3.0.0 removed it outright:
157
+ # passing it raises ArgumentError and every encrypted job dies in the
158
+ # server middleware.
159
+ ::JSON.parse(plain)
154
160
  end
155
161
 
156
162
  # @return [Boolean] true if `value` looks like a Wurk crypto envelope.
data/lib/wurk/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wurk
4
- VERSION = '1.7.5'
4
+ VERSION = '1.7.6'
5
5
  end
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "1.7.5",
3
- "timestamp": "2026-08-27T21:26:34.924Z"
2
+ "version": "1.7.6",
3
+ "timestamp": "2026-09-07T19:30:05.829Z"
4
4
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wurk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.5
4
+ version: 1.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - developerz.ai