Skip to content

MergeBatcher: extract-first seal - #793

Merged
frankmcsherry merged 1 commit into
TimelyDataflow:master-nextfrom
frankmcsherry:land/extract-first-seal
Jul 12, 2026
Merged

MergeBatcher: extract-first seal#793
frankmcsherry merged 1 commit into
TimelyDataflow:master-nextfrom
frankmcsherry:land/extract-first-seal

Conversation

@frankmcsherry

Copy link
Copy Markdown
Member

seal was merge-then-extract: every chain was drained into one before the frontier split, so updates parked beyond 'upper' (e.g. delay/enter_at bands, future iterations) were recopied on EVERY seal. Instrumenting seal showed drained-over-shipped ratios of 35-38x on the enter_at-band arrangements of an SCC benchmark (10.3M rows drained per seal stream to ship 293k), against 1.0-1.8x for operators without future-dated residue.

seal now extracts each chain in place and merges only the shipped parts — delta-sized, and the merge is where cross-chain consolidation happens (the ship/keep split is by time, so no equal (data, time) group can straddle it). Kept chains re-enter the ladder as-is, sorted by weight with the geometric invariant restored, so residue is copied only at doubling events.

Measured on the SCC suite: DDIR-corgi -15%, DDIR-vec -11%, compiled native (whose extract still copies rows; only the drain removal applies) -2.5%.

seal was merge-then-extract: every chain was drained into one before the
frontier split, so updates parked beyond 'upper' (e.g. delay/enter_at bands,
future iterations) were recopied on EVERY seal. Instrumenting seal showed
drained-over-shipped ratios of 35-38x on the enter_at-band arrangements of an
SCC benchmark (10.3M rows drained per seal stream to ship 293k), against
1.0-1.8x for operators without future-dated residue.

seal now extracts each chain in place and merges only the shipped parts —
delta-sized, and the merge is where cross-chain consolidation happens (the
ship/keep split is by time, so no equal (data, time) group can straddle it).
Kept chains re-enter the ladder as-is, sorted by weight with the geometric
invariant restored, so residue is copied only at doubling events.

Measured on the SCC suite: DDIR-corgi -15%, DDIR-vec -11%, compiled native
(whose extract still copies rows; only the drain removal applies) -2.5%.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@frankmcsherry
frankmcsherry merged commit 7dd3524 into TimelyDataflow:master-next Jul 12, 2026
6 checks passed
@frankmcsherry
frankmcsherry deleted the land/extract-first-seal branch July 12, 2026 21:18
frankmcsherry added a commit that referenced this pull request Jul 13, 2026
The extract-first seal (#793) folded the returned frontier during the per-chain
extract, before cross-chain consolidation, so a kept time whose updates cancel
across two un-merged chains was wrongly reported — the batcher held a capability
that never discharges, stalling progress. Restore the merge-then-extract seal:
all chains merge into one (consolidating equal (data,time), dropping zeros)
before extract folds the frontier, so the frontier reflects post-consolidation
distinct times.

Keeps regression tests (frontier_is_post_consolidation) so the property is
guarded if a future seal revisits the extract-first idea.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@github-actions github-actions Bot mentioned this pull request Jul 15, 2026
frankmcsherry added a commit that referenced this pull request Jul 15, 2026
Rewrite the release-plz-generated changelogs into the house style:
categorized Added/Changed/Removed sections plus a closing summary of
the breaking surface. Add the omitted timely 0.31 bump, drop the
reverted extract-first seal pair (#793/#796), de-duplicate the HRTB
entries, and flag the new Chunk and JoinTactic/ReduceTactic surface as
experimental.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.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