Skip to content

Compare and set the tick size writer and group release on the ledger server - #9656

Merged
nestorcolt merged 8 commits into
devfrom
engineer-323133-5482
Nov 4, 2026
Merged

nestorcolt merged 8 commits into
devfrom
engineer-323133-5482

Conversation

@nestorcolt

@nestorcolt nestorcolt commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Closes #9612

What changes

  • Size writer (scripts.tick.steps.tasks._write_task): sends the fields it expects (difficulty: "") as the task_update if_match guard, so the ledger server compares and sets in one apply. A guarded silent skip is detected by comparing the returned task with the written values and raises RevisionConflict.
  • Group release (_release_group): always sends the members it read as the task_ungroup if_match guard (empty list when none were expected).
  • Ledger task_ungroup (scripts.swarm_ledger.ledger_groups): accepts if_match holding only group_members (a list of task ids) and refuses the release when the lead's members moved. Schema field added; LedgerClient.ungroup_tasks forwards the guard.
  • Tick characterisation golden records: the 42 recorded size writes now carry if_match: {difficulty: ""}.
  • Mutation survivors on _write_task: a two field silent skip test pins the joined field list; the cast type argument mutant is cleared (runtime no-op).
  • Changelog fragment; type baseline lowered for ledger_client (433 to 428) and ledger_groups (119 to 92).

Evidence

🤖 Generated with Claude Code

Parent intent

Project: the ledger, quota routing and herdr: durable Claude and Codex messaging, seats, intent, work beyond code, swarm health.

Phase :

Task t2374, Tick size writer and group release compare and set through the server guard: Master spec from an engineer follow up. Parent: tick writes to task size and grouping never overwrite a concurrent change. Seam: the tick size writer and the group release use the new ledger server guard, so both compare and set on the server, and the ungroup operation honours the same guard. Red then green in CI with a planted concurrent write. Done when merged.

nestorcolt and others added 8 commits November 4, 2026 05:51
…he ledger server

Refs #9612

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…server

The size writer sends its expected fields as the task_update if_match guard and
raises a revision conflict when the ledger kept a concurrent value. The group
release sends the members it read as an if_match on task_ungroup, which the
ledger now accepts and refuses when the lead's members moved.

Refs #9612

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t field as empty

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t type mutant

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	tests/swarm/tick_scenarios/goldens.json
@nestorcolt
nestorcolt added this pull request to the merge queue Nov 4, 2026
Merged via the queue into dev with commit 7cb06a0 Nov 4, 2026
100 checks passed
@nestorcolt
nestorcolt deleted the engineer-323133-5482 branch November 4, 2026 09:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant