Repository navigation
feat: Keep override-affected evaluations out of individual events - #2052
Open
kinyoklion wants to merge 1 commit into
Open
kinyoklion wants to merge 1 commit into
kinyoklion wants to merge 1 commit into
Conversation
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
September 28, 2026 20:28
9bc7846 to
0c00688
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
September 28, 2026 20:28
f2a06ab to
bab7cc6
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
September 28, 2026 21:20
0c00688 to
e42e2cb
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
September 28, 2026 21:20
bab7cc6 to
c224cd1
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
September 29, 2026 15:20
e42e2cb to
8e9fd05
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
September 29, 2026 15:20
c224cd1 to
ed51797
Compare
kinyoklion
added this pull request to stack #2061
September 30, 2026 17:08
Contributor
|
@launchdarkly/js-sdk-common size report |
Contributor
|
@launchdarkly/js-client-sdk size report |
Contributor
|
@launchdarkly/js-client-sdk-common size report |
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
September 30, 2026 18:17
8e9fd05 to
71a1426
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
September 30, 2026 18:17
ed51797 to
1f0e0c9
Compare
kinyoklion
removed this pull request from stack #2061
September 30, 2026 18:37
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
September 30, 2026 20:16
71a1426 to
a9e83b1
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
September 30, 2026 20:16
1f0e0c9 to
ee3c511
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
September 30, 2026 20:23
a9e83b1 to
a5614f5
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
September 30, 2026 20:23
ee3c511 to
e4656e8
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
September 30, 2026 21:01
a5614f5 to
d0ed461
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
September 30, 2026 21:01
e4656e8 to
cd8301d
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
September 30, 2026 21:04
d0ed461 to
667c330
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
September 30, 2026 21:04
cd8301d to
f8bd9a5
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
September 30, 2026 22:23
667c330 to
431c72b
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
September 30, 2026 22:23
f8bd9a5 to
3a6273a
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
September 30, 2026 22:27
431c72b to
980675a
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
September 30, 2026 22:27
3a6273a to
5095497
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 1, 2026 23:07
980675a to
d3694fb
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 1, 2026 23:07
5095497 to
7fdfeaf
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 1, 2026 23:52
d3694fb to
d1d703d
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
2 times, most recently
from
October 2, 2026 16:08
1fe976f to
764637d
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 3, 2026 01:45
21504bf to
41a072c
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 5, 2026 17:36
e118410 to
34076af
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 5, 2026 17:36
41a072c to
356d766
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 5, 2026 22:32
34076af to
62c63e6
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 5, 2026 22:32
356d766 to
2b5eee2
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 5, 2026 22:45
62c63e6 to
b21f974
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 5, 2026 22:45
2b5eee2 to
8a237c5
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 8, 2026 16:38
b21f974 to
525a8ba
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 8, 2026 16:38
8a237c5 to
f4eec43
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 8, 2026 22:17
525a8ba to
6e47ed9
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 8, 2026 22:17
f4eec43 to
43b2f8b
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 8, 2026 22:19
6e47ed9 to
e5a78d1
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 8, 2026 22:19
43b2f8b to
a3129ff
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 8, 2026 22:35
e5a78d1 to
f045d43
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 8, 2026 22:35
a3129ff to
95d102a
Compare
kinyoklion
marked this pull request as ready for review
October 8, 2026 22:50
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 9, 2026 18:49
f045d43 to
d29754c
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 9, 2026 18:49
95d102a to
477a22f
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 9, 2026 19:58
d29754c to
2533bdc
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 9, 2026 19:58
477a22f to
f88c789
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 9, 2026 20:30
2533bdc to
754c0f6
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
2 times, most recently
from
October 9, 2026 21:02
40fb163 to
e596425
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-override-layer
branch
from
October 9, 2026 21:27
fb16ec6 to
dc6c2f8
Compare
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
3 times, most recently
from
October 9, 2026 22:41
2e95aa3 to
5202171
Compare
Adds the analytics event behavior of the OVERRIDE specification. An evaluation marked as override-affected produces no individual feature event and no debug event, even when the flag requests them. It is counted in summary events like any other evaluation, in a separate counter that carries the overrideAffected marker. The marker is part of the summary aggregation key, so override-affected and other evaluations of the same flag, variation, and version accumulate into separate counters. The marker is present on a counter only when true, like the unknown marker. The client hands the marking to the event processor as a scalar on the input event, taken from the evaluation result. Event generation does not read the reason. The record of a prerequisite evaluation carries the prerequisite's own marking, so an unaffected prerequisite inside a marked evaluation still produces its individual event. The OVERRIDE test vector runner now also asserts the marking of the summary counter that each evaluation contributes to.
kinyoklion
force-pushed
the
rlamb/overrides-node-events
branch
from
October 9, 2026 23:18
5202171 to
9b26b7e
Compare
This branch has not been deployed
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.
Summary
This PR is based on the override store branch because it consumes the override marking that branch produces on evaluation results.
This change adds the analytics event behavior of the OVERRIDE specification to the shared event code and the Node.js server SDK.
An evaluation marked as override-affected produces no individual feature event and no debug event, even when the flag requests them. It is still counted in summary events like any other evaluation, in a separate counter that carries the
overrideAffectedmarker. The marker is part of the summary aggregation key, so override-affected and other evaluations of the same flag, variation, and version accumulate into separate counters rather than collapsing together. The marker is present on a counter only when true, like the existingunknownmarker.The client hands the marking to the event processor as a scalar on the input event, taken from the evaluation result. Event generation does not read the evaluation reason. The record of a prerequisite evaluation carries the prerequisite's own marking, so an unaffected prerequisite inside a marked top-level evaluation still produces its individual event, while a marked prerequisite record produces none and is counted under the marked counter for the prerequisite flag.
The shared event summarizer and processor are also used by the client-side SDKs. The new field is optional and those SDKs never set it, so their output is unchanged.
The OVERRIDE test vector runner now also asserts the marking of the summary counter that each evaluation contributes to, by flushing the events and reading the summary payload.
SDK-3247
Note
Overview
Implements OVERRIDE-spec analytics behavior for evaluations affected by the override store.
Override-affected evaluations still roll into summary events, but no individual feature or debug events are emitted even when
trackEvents/ debug mode are on. Summaries use a separate counter bucket keyed by an optionaloverrideAffected: truemarker (omitted when false, likeunknown).The server SDK passes
evalRes.overrideAffectedinto event creation as a scalar—not derived from the evaluation reason. Prerequisite eval records use each prerequisite’s own marking, so unaffected siblings can still emit feature events while marked flags in the same tree only appear in marked summary counters.Shared
EventFactoryBase,InputEvalEvent, summarizer, and processor carry the new optional field; client SDKs that never set it are unchanged. Tests cover the shared pipeline, full client + override scenarios (including prereq trees), and OVERRIDE vector assertions forsummaryOverrideAffected.Reviewed by Cursor Bugbot for commit 9b26b7e. Bugbot is set up for automated code reviews on this repo. Configure here.