Repository navigation
Prepare version 1.0.0 - #91
Conversation
A turn that called schedule and then called no operation on the result stored no reminder and gave no error. The hold or the timeout that the author intended did not exist, and nothing reported it. Three fresh agent sessions found this mistake in a published sample. The turn now fails with ScheduleWithoutOperation. The error is not retryable, because a retry cannot change the actor code. The turn can keep the result and call the operation later in the same turn. BREAKING CHANGE: a turn with a schedule call that has no operation after it becomes a dead letter. Correct code does not change.
The json gem 3.x removed an option that Active Support older than 8.1.4 passes to the decoder. Each JSON column then raises "unknown keyword: quirks_mode", and the cause is not clear from the error. The doctor now has a json check, and the boot prints a warning. Both decode one document with Active Support. They do not compare version numbers, so they stay correct when Rails or json changes. The gemspec does not pin json, because a pin would stop applications on a Rails release that supports json 3.
Version 1.0 promises a stable public API under semantic versioning. docs/versioning.md gives the promise and what is outside it. The README now gives the status at the top: the release date, one maintainer, one first-party production application, and no production use by other people. It also names the projects that Solid Objects is not, because search results mix them. The gem summary and description start with the problems that the gem solves. Version 1.0 makes no claim of measured scale. The benchmarks are development measurements, and longer soak tests are open work.
|
Docs7 for cardmagic/solid-objects-ruby
Commit |
|
The check for a schedule call with no operation ran directly after the operation. An observable that called schedule only after the state changed was read later, so the turn committed with no reminder and no error. The open call stayed on the retained actor and made the next turn fail, although that turn did nothing wrong. The projection guard now counts an open schedule call as staged work. The turn that reads the observable fails with QueryMutatedState, and the failure path clears the open call.
|
@greptileai Please review the current head a46bb8e. The projection guard now includes the open schedule calls, so a |
Summary
This pull request prepares
solid_objects1.0.0. Version 1.0 freezes the public API under semantic versioning. It makes no claim of measured scale.No tag is in this pull request. The tag follows after the maintainer approves the release text.
Changes
schedulecall with no operation fails the turn. A turn that calledschedule(at:, key:)and then called no operation on the result stored no reminder and gave no error. The turn now fails withSolidObjects::ScheduleWithoutOperation, aNonRetryableError. The message becomes a dead letter after one attempt, and the turn commits no state and no reminder. The turn can keep the result and call the operation later.solid-objects-jshas the same change.jsoncheck in the doctor and at boot. Thejsongem 3.x removed an option that Active Support older than 8.1.4 passes to the decoder.bin/rails solid_objects:doctornow reports this as a failure of itsjsoncheck, and the boot prints a warning. Both decode one document with Active Support and do not compare version numbers. The gemspec has nojsonpin.docs/versioning.mdis new. The README gives the status at the top and names the projects that Solid Objects is not. The gem summary and description start with the problems that the gem solves. Each "pre-1.0" statement is replaced.Gemfile.lock.Compatibility
schedule(at: time).expiredoes not change.What version 1.0 does not claim
The benchmarks are development measurements. Longer soak tests are open work. The project has one maintainer, and no production use by other people is known.
docs/roadmap.mdkeeps the hardening milestones.Validation
bundle exec rake: 956 runs, 4001 assertions, 0 failures, 0 errors, 28 skips. Standard, RuboCop, RBS, Steep, and Brakeman pass.test/integration/schedule_without_operation_test.rb(6),test/unit/json_compatibility_test.rb(6), two tests intest/integration/doctor_test.rb, and two tests intest/unit/gem_specification_test.rb.