Skip to content

fix(workflow-host): the follower notes each unreadable record, and a first follow misses nothing - #302

Merged
rami-hatoum merged 2 commits into
mainfrom
fix/the-follower-notes-every-record-it-cannot-read
Oct 23, 2026
Merged

rami-hatoum merged 2 commits into
mainfrom
fix/the-follower-notes-every-record-it-cannot-read

Conversation

@rami-hatoum

Copy link
Copy Markdown
Contributor

What this changes

Two debts of the workflow host's follower.

  • A cancel request the host cannot read was passed over silently, where an unreadable ending was noted and the README promised a note for every record passed over. Each consumer of waiting calls now reads its record before it makes a delivery, and one step notes an unreadable record and passes it, used by the events, the facts, both waiting-call consumers and the definitions, so a record is noted once.
  • A playbook first followed started from its latest record, so an ending or a cancel appended between the host's open and the follower's first pass was never read, and its call was answered only at its deadline, ten minutes later. The host now takes its place in the ledger as it opens, before it claims the workflows, and a playbook first followed starts from that place.

The finish catch-up measurement waits for the playbook to be followed, since a first follow now starts from the open.

Tests

  • An unreadable cancel request and an unreadable ending give two notes; the old code gave one.
  • An ending and a cancel appended after the open and before the follower's first pass are delivered in that pass; both time out on the old code.
  • The host's suite on SQLite and PostgreSQL at 100% coverage; pnpm check passes on each commit.

…d, as it notes an ending

A run_cancel_requested whose context names no run was passed over with no note, where an
unreadable ending was noted. Each consumer of waiting calls now reads its record before it makes
a delivery of it, and one step passes over every record the follower cannot read and notes it
once: an event, a fact, a definition, an ending or a cancel request.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@rami-hatoum rami-hatoum changed the title fix(workflow-host): the follower notes every record it cannot read, and a first follow misses nothing fix(workflow-host): the follower notes each unreadable record, and a first follow misses nothing Oct 23, 2026
…pened, so it misses nothing

At a host's first start the follower followed a playbook it had never followed from its latest
record, read after the host opened, so an ending or a cancel appended in between was passed over
and its call was answered only at its deadline. The host now takes its place in the ledger as it
opens, before it claims the workflows, and the follower follows such a playbook from that place.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@rami-hatoum
rami-hatoum force-pushed the fix/the-follower-notes-every-record-it-cannot-read branch from 66e3dc4 to 868015b Compare October 23, 2026 13:22
@rami-hatoum
rami-hatoum merged commit 7c5588c into main Oct 23, 2026
20 checks passed
@rami-hatoum
rami-hatoum deleted the fix/the-follower-notes-every-record-it-cannot-read branch October 23, 2026 14:19
rami-hatoum pushed a commit that referenced this pull request Oct 23, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.18.0](v0.17.0...v0.18.0)
(2026-10-23)


### Features

* **identity:** keys from a key source, a person without an org acts in
their own, a key set given
([#301](#301))
([ca6f754](ca6f754))
* **server:** the npm package carries every package as a subpath, with
its testing entry
([#304](#304))
([caf2e36](caf2e36))


### Bug Fixes

* **coordination:** the workflow spec SDK compiles a validator on first
use, not when imported
([#308](#308))
([0dcd0df](0dcd0df))
* **workflow-host:** the follower notes each unreadable record, and a
first follow misses nothing
([#302](#302))
([7c5588c](7c5588c))
* **workflow-host:** the waiting measurement names the run of each
record it writes
([#299](#299))
([69ad59f](69ad59f))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: beonautobot[bot] <298957281+beonautobot[bot]@users.noreply.github.com>
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