Remove operators that read a time off the capability - #818
Merged
Conversation
…ntrol and Result helpers Removed: delay/delay_batch/delay_total, count/accumulate, aggregate, state_machine, branch, branch_when, reclock, iterator_source (flow_controlled), and ResultStream. None has a user in differential-dataflow or Materialize. The first seven key their logic on the capability's time, which records do not carry; since #813 a message's stamp is a set of times, and since #817 these operators required a total order. branch_when in particular routes a whole container by its capability, which is wrong for any stream whose records carry their own times. The pingpong example carries a round counter in its data; the loop examples in the docs and the book terminate by data; the flow-control chapter assigns timestamps with a small unary operator and delayed capabilities. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK
frankmcsherry
force-pushed
the
remove-vestigial
branch
from
September 11, 2026 21:05
07c9471 to
719f84e
Compare
frankmcsherry
added a commit
that referenced
this pull request
Sep 12, 2026
…ify (#819) They held one capability per requested time and delivered it once the input frontiers passed it: a convenience for the one-capability-per-message world that no library operator uses since #818, that differential-dataflow does not use, and whose one downstream user must leave it anyway. An operator that wants the same holds its capabilities in a map keyed by time and checks them against the frontiers, which is what the bfs and barrier examples, the barrier test, the operator doctests, and the book now do directly. Claude-Session: https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #817. Removes nine pieces of the
vecoperator DSL that no downstream user imports and that, since #813 made a message's stamp a set of times, have no sound meaning:delay,delay_batch,delay_totalcount,accumulateaggregatestate_machinebranchbranch_whenreclockiterator_source(flow_controlled)ResultStreamok_erroncoreis the container-generic formTrait imports in differential-dataflow's workspace and Materialize's
src: zero for all of these, except oneBranchWhenin Materialize. That one is a bug: it bounds WMR iterations by routing each container on its capability's iteration, while the records in the container carry their own times and can be strictly later (a batch sealed under one capability spans[cap, upper)), so over-limit updates are retained and fed back. #817 already stops it compiling; the fix on that side ispartitionon the record's own time.The first seven required
T: TotalOrderafter #817, which made them compile only for the case where "the capability's time" is well defined, but did not make them mean anything for a multi-element stamp. Deleting them is the honest end state; an operator that needs a time per record should carry it in the record.Adaptations. The
pingpongexample carries a round counter in its data instead of branching on time; the loop examples in thefeedbackdocs and the book terminate by data; the flow-control chapter of the book assigns timestamps with a smallunaryandcap.delayed(..), which is whatdelaydid. Full workspace tests and doctests, including the book, pass.🤖 Generated with Claude Code
https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK