FlowDrop Workflow Specification 1.0-draft

Polls page, and paging never strands the caller

A first poll used to select every terminal run the installation had ever produced and load the lot, which is an out-of-memory failure rather than a slow query.

The rule

Normative: this is the rule
  1. Every poll is bounded to a page: a first poll, or one whose cursor is empty or unparseable, costs no more than any other.
  2. Paging is only sound if the caller can always walk to the end, so two things bind.
  3. A page ordered by completion time is extended to cover every run sharing the last row's completion value, because completion times are not unique and a caller advancing its cursor past a split group would skip the remainder for good; the ordering is made total by a unique tiebreak so the held-back group is a clean suffix.
  4. And a poll must not answer empty while rows remain: where scoping (OCX-3) is applied after the page is read, a page can filter down to nothing, and an empty answer reads to the caller as "nothing new" and parks its cursor forever, so paging continues until something is emitted or the result set is exhausted.
Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · OCX-9 · changed in spec 1.0