feat(queue): add grouped writes that flush as one change #206
No reviewers
Labels
No labels
adr
android
area/calendar
area/design-system
area/i18n
area/jobs
area/offline
area/server
area/testing
bug
ci
duplicate
enhancement
help wanted
invalid
notifications
question
reliability
security
severity/low
severity/medium
tracking
web
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eagraiclainne/app!206
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/queue-grouped-writes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #182.
The offline queue stored one RPC per entry, drained FIFO. That is enough
for every action shipped today and not enough for an action that is only
correct as a set.
The first one that needs it: making a job a step of another. The server
refuses
SetParentwhile the job carries a repeat rule or a deadlinerather than stripping them silently, so the client must clear both first.
Sent one at a time, a refusal at the last call leaves a job stripped of its
date and its rule for an action that never happened.
A group is one queue row holding several steps, each with an optional
undobuilt from values captured at enqueue. Steps run in declarationorder and cannot interleave with anything else. A refusal at step N
compensates 1..N-1 in reverse; a compensation that stalls finishes on
reconnect; a compensation that is itself refused stops the unwinding and
keeps the row as failed with both reasons, so the sync sheet can say what
could not be put back. Confirmed steps are persisted, so a group cut off
mid-flush resumes where it reached instead of replaying from the top.
The sync sheet shows a group as one change, labelled with the action a
person took rather than the RPCs it decomposes into.
Single-op enqueue keeps its exact shape and semantics; two regression tests
pin that.
convertToStepis wired as the one proof, and the convertaffordance now correctly appears for jobs that repeat or have a deadline,
because the group clears them and puts them back on failure.
🤖 Generated with Claude Code
Test report
Coverage: 26.9%
Updated by the check workflow · commit
5ab42d7595Android test report
Coverage: 3.0% of lines
Updated by the android workflow · commit
5ab42d7595c8d9eb05995ab42d7595