Skip to content

Commit ebc5232

Browse files
committed
docs: remove AI-tell phrasing, fix Rails floor
An audit against the common markers of AI-generated prose found five small instances: the two em dashes in the README opening, the word "excellent" in two places, the vague "modern DML support", and an abstract cross-reference sentence in the state migration guide. Each is rewritten in Simplified Technical English with the specific fact the vague word hid: SQLite 3.35 is the floor because of RETURNING. The audit also found one stale claim: the Solid Queue research notes still said the gem requires Rails 8.0 because of the SQLite immediate-transaction default. The floor moved to Rails 7.1 in c67797d, and the suite passes on 7.1 and 7.2 with the deferred default, so the entry now records the real constraint: Rails 7.0 pins sqlite3 1.4, which lacks the busy-handler control this gem depends on.
1 parent 510f592 commit ebc5232

3 files changed

Lines changed: 9 additions & 9 deletions

File tree

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
**Self-hosted, distributed Durable Objects in Rails without a daemon using your existing SQL database.**
66

7-
Solid Objects brings the Durable Objects programming model—addressable objects,
8-
durable state, serialized turns, alarms, and live clients—to ordinary Rails
9-
applications. It runs on the MySQL, PostgreSQL, or SQLite database the
10-
application already has, following the database-backed operating model of the
7+
Solid Objects ports the Durable Objects programming model to ordinary Rails
8+
applications: addressable objects, durable state, serialized turns, alarms,
9+
and live clients. It runs on the MySQL, PostgreSQL, or SQLite database that
10+
the application already has, in the database-backed operating model of the
1111
Solid family. No Redis, Cloudflare account, or separate actor service is
1212
required.
1313

@@ -113,7 +113,7 @@ maps those ideas into Rails:
113113
| Storage deletion | Authorized `reference.destroy` |
114114
| Cloudflare Workers platform | Your Rails processes and SQL database |
115115

116-
Rails already has excellent tools for jobs, records, and realtime transport.
116+
Rails already has tools for jobs, records, and realtime transport.
117117
None of those primitives alone provides this complete stateful-object shape.
118118
Solid Objects adds five capabilities:
119119

@@ -1273,7 +1273,7 @@ for staged cutovers.
12731273
| --- | --- |
12741274
| Cloudflare Durable Objects | Solid Objects ports the named, stateful, serialized-object model to Ruby and Rails. It uses your SQL database and Rails workers rather than Cloudflare's globally distributed serverless runtime, placement, and storage APIs. |
12751275
| Active Job | Jobs are independent work units. Solid Objects adds addressable identity, durable state, explicit per-identity order, activation leases, and fencing. |
1276-
| Solid Queue | Solid Queue is an excellent database backend for Active Job. Its concurrency controls cap overlap but do not guarantee order. Solid Objects provides actor mailboxes, state, fencing, per-identity reminders, and state-driven views. |
1276+
| Solid Queue | Solid Queue is a database backend for Active Job. Its concurrency controls cap overlap but do not guarantee order. Solid Objects provides actor mailboxes, state, fencing, per-identity reminders, and state-driven views. |
12771277
| Action Cable | Cable transports transient realtime messages. Solid Objects owns durable state and work; Cable is an optional delivery path for committed observable projections. |
12781278
| Orleans | Orleans provides the virtual-actor lineage behind the model, with grains, reminders, and activation lifecycle. Solid Objects is a smaller Rails-native runtime and does not match Orleans clustering or placement breadth. |
12791279
| Active Record service object | A service object runs directly against records. Solid Objects adds durable asynchronous ordering, retries, activation fencing, reminders, and outboxes at greater operational cost. |

docs/research/solid_queue.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,8 +526,8 @@ Source: [Cloudflare Durable Objects overview](https://developers.cloudflare.com/
526526
- Solid Queue findings are tied to v1.6.0. Earlier releases did not have all current async/fiber supervision and concurrency finalization behavior.
527527
- PostgreSQL documentation inspected was current PostgreSQL 18 documentation. `SKIP LOCKED` has existed since PostgreSQL 9.5, but Solid Objects supports PostgreSQL 14 and newer.
528528
- MySQL documentation inspected was MySQL 8.4. Solid Objects supports MySQL 8.0 and newer with InnoDB.
529-
- SQLite documentation inspected covers current SQLite behavior. Solid Objects requires SQLite 3.35 or newer for modern DML support.
530-
- Rails documentation and source inspected cover Rails 8.1. Solid Objects requires Rails 8.0 or newer because Rails 8 changed the SQLite adapter's default write transaction from deferred to immediate, which the SQLite coordination contract relies on.
529+
- SQLite documentation inspected covers current SQLite behavior. Solid Objects requires SQLite 3.35 or newer for `RETURNING` support.
530+
- Rails documentation and source inspected cover Rails 8.1. Solid Objects requires Rails 7.1 or newer. Rails 8 changed the SQLite adapter's default write transaction from deferred to immediate, and the test suite also passes on Rails 7.1 and 7.2 with the deferred default. Rails 7.0 stays out of range because its SQLite adapter requires sqlite3 1.4, and the busy-handler control this gem depends on arrived in sqlite3 2.x.
531531
- Orleans documentation describes current Orleans behavior, not a compatibility promise for this Ruby implementation.
532532
- `LISTEN/NOTIFY` and Action Cable are optimizations and delivery channels, never durable truth.
533533
- A separate actor database is compatible only when all rows participating in an atomic actor commit, including message, state, effects, and broadcasts, live in that same actor database.

docs/state-migrations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@ A safe destructive rollout normally uses:
4747
Never update actor JSON in a bulk SQL migration. Use actor messages so fencing,
4848
ordering, observables, and outboxes remain intact.
4949

50-
This guide covers evolution after state belongs to Solid Objects. For moving
50+
This guide covers changes to state that Solid Objects already owns. To move
5151
existing Redis, key-value, or relational state into actors without downtime,
5252
use the [legacy-state migration cookbook](migrating-existing-state.md).

0 commit comments

Comments
 (0)