detect: no cliff past ten thousand open correlations; .not() on a named pattern - #6
Merged
Merged
Conversation
…ed pattern (varpulis #288, #289) Engine pinned at varpulis 1cb201b. The engine swept every partition's open runs on each event; it now visits only the partitions with a deadline due. bench/detect.sh PROGRAM=sequence against v0.3.4, same session: 30 000 open 2 080 -> 14 500 events/s, 10 000 open 11 900 -> 22 000, 1 000 open 19 600 -> 26 000; 100 000 open runs at 11 000/s in 450 MB. The sizing in bench/README.md and concepts/detects.md is re-measured. And .not(C) on a stream reading a named pattern cancels its runs (it did nothing). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3K1TGnWTvwYzt9rKuJXES
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.
What changes
The engine is pinned at varpulis 1cb201b, which brings in two engine PRs.
.not(C)cancels on a named pattern. On a stream that reads a named pattern,.not(C)did nothing, soUnacked.not(Cancel)still raised cancelled orders.Measured:
bench/detect.sh,PROGRAM=sequenceRuns alternated between the v0.3.4 runtime and this build, in the same session on the same box, two runs each:
Every run was complete, with every pair matched (32 000 alerts, or 200 000 at a hundred thousand open).
The multi-unit table (1 000 open per unit) is re-measured too: 27 100/s on one unit, 37 200 – 39 400/s on two, 48 300 – 48 900/s on four. The stateless ceiling is unchanged, at 41 000 – 43 000/s with 2 or 4 units.
Docs
bench/README.mdhas the new table, and the before/after comparison replaces the cliff paragraph. The sizing is updated.concepts/detects.mdnow says what it costs, and that memory, about 4 KB an open sequence, is what bounds a unit.Checks
e2e/detect: every invariant holds (D1 to D9).e2e/detect-demo: every beat holds.🤖 Generated with Claude Code
https://claude.ai/code/session_01N3K1TGnWTvwYzt9rKuJXES