diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/artifacts.md b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/artifacts.md index 8075a57..01fcdd2 100644 --- a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/artifacts.md +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/artifacts.md @@ -1,5 +1,9 @@ # Omnient delay-sweep artifacts +## Additional report views + +[Report including early POST HTTP 400 pairs](including-early-post-400/report.md) · [Inclusive histogram evidence](including-early-post-400/artifacts.md). This view uses the same measurements and keeps the completion, fresh-transport, and 20 ms handshake-difference requirements. + [Report](report.md) · [Connection reuse audit](connection-reuse-audit.md) Each delay retains every attempted OFF/ON trial. Raw CSV/JSON, logs, result bundles, histogram bins, paired differences, and selection decisions are linked below. diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/artifacts.md b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/artifacts.md new file mode 100644 index 0000000..641ac8a --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/artifacts.md @@ -0,0 +1,12 @@ +# Inclusive histogram artifacts + +[Report](report.md) · [Original measurement artifacts](../artifacts.md) · [Connection reuse audit](../connection-reuse-audit.md) + +This report reuses the original measurements and HTTP logs. Only the early POST HTTP 400 exclusion is disabled. The original report and its plots are preserved. + +| M1 delay (ms) | Raw evidence | Selection decisions and bins | Paired differences | +|---:|---|---|---| +| 0 | [Artifacts](../delay-0ms/artifacts.md) · [Input hashes](../delay-0ms/histograms/input-manifest.json) | [JSON](delay-0ms/histograms/histogram-data.json) | [CSV](delay-0ms/histograms/pair-differences.csv) | +| 50 | [Artifacts](../delay-50ms/artifacts.md) · [Input hashes](../delay-50ms/histograms/input-manifest.json) | [JSON](delay-50ms/histograms/histogram-data.json) | [CSV](delay-50ms/histograms/pair-differences.csv) | +| 100 | [Artifacts](../delay-100ms/artifacts.md) · [Input hashes](../delay-100ms/histograms/input-manifest.json) | [JSON](delay-100ms/histograms/histogram-data.json) | [CSV](delay-100ms/histograms/pair-differences.csv) | +| 200 | [Artifacts](../delay-200ms/artifacts.md) · [Input hashes](../delay-200ms/histograms/input-manifest.json) | [JSON](delay-200ms/histograms/histogram-data.json) | [CSV](delay-200ms/histograms/pair-differences.csv) | diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/histogram-data.json b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/histogram-data.json new file mode 100644 index 0000000..7d3b011 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/histogram-data.json @@ -0,0 +1,1153 @@ +{ + "initialMessageDelayMs": 0, + "pairCount": 50, + "handshakeThresholdMs": 20.0, + "includeEarlyPost400": true, + "difference": "ON minus OFF", + "binWidthMs": 10, + "pairs": [ + { + "pair": 1, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -686.2250566482544, + "ttfdDifferenceMs": -689.8720264434814 + }, + { + "pair": 2, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -266.2680149078369, + "ttfdDifferenceMs": -211.44402027130127 + }, + { + "pair": 3, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": 419.1168546676636, + "ttfdDifferenceMs": 376.67083740234375 + }, + { + "pair": 4, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -168.90215873718262, + "ttfdDifferenceMs": -156.24713897705078 + }, + { + "pair": 5, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -213.73391151428223, + "ttfdDifferenceMs": -163.61403465270996 + }, + { + "pair": 6, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -132.5669288635254, + "ttfdDifferenceMs": -130.3039789199829 + }, + { + "pair": 7, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -126.26504898071289, + "ttfdDifferenceMs": -135.53404808044434 + }, + { + "pair": 8, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -242.96796321868896, + "ttfdDifferenceMs": -192.8020715713501 + }, + { + "pair": 9, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -142.1661376953125, + "ttfdDifferenceMs": -138.47100734710693 + }, + { + "pair": 10, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -72.91996479034424, + "ttfdDifferenceMs": -22.04608917236328 + }, + { + "pair": 11, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -134.00089740753174, + "ttfdDifferenceMs": -135.94400882720947 + }, + { + "pair": 12, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": 25.297045707702637, + "ttfdDifferenceMs": 26.59893035888672 + }, + { + "pair": 13, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -139.88900184631348, + "ttfdDifferenceMs": -130.64706325531006 + }, + { + "pair": 14, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -274.3901014328003, + "ttfdDifferenceMs": -225.38602352142334 + }, + { + "pair": 15, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -135.71202754974365, + "ttfdDifferenceMs": -137.28809356689453 + }, + { + "pair": 16, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -140.1510238647461, + "ttfdDifferenceMs": -123.22998046875 + }, + { + "pair": 17, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -209.79690551757812, + "ttfdDifferenceMs": 38.91611099243164 + }, + { + "pair": 18, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -82.06808567047119, + "ttfdDifferenceMs": -45.27008533477783 + }, + { + "pair": 19, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -149.880051612854, + "ttfdDifferenceMs": -147.9640007019043 + }, + { + "pair": 20, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -284.28900241851807, + "ttfdDifferenceMs": -283.14101696014404 + }, + { + "pair": 21, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": 286.07189655303955, + "ttfdDifferenceMs": 294.02899742126465 + }, + { + "pair": 22, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -135.187029838562, + "ttfdDifferenceMs": -136.58607006072998 + }, + { + "pair": 23, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -126.20306015014648, + "ttfdDifferenceMs": -120.9869384765625 + }, + { + "pair": 24, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -145.17199993133545, + "ttfdDifferenceMs": -156.27801418304443 + }, + { + "pair": 25, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -158.42998027801514, + "ttfdDifferenceMs": -156.66794776916504 + }, + { + "pair": 26, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -137.9150152206421, + "ttfdDifferenceMs": -126.16300582885742 + }, + { + "pair": 27, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -284.0619087219238, + "ttfdDifferenceMs": -276.3129472732544 + }, + { + "pair": 28, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": 1450.154185295105, + "ttfdDifferenceMs": 1410.9081029891968 + }, + { + "pair": 29, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -144.7979211807251, + "ttfdDifferenceMs": -143.21398735046387 + }, + { + "pair": 30, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -138.82505893707275, + "ttfdDifferenceMs": -138.81099224090576 + }, + { + "pair": 31, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -136.3229751586914, + "ttfdDifferenceMs": -125.16498565673828 + }, + { + "pair": 32, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -113.97898197174072, + "ttfdDifferenceMs": -87.07797527313232 + }, + { + "pair": 33, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -112.81394958496094, + "ttfdDifferenceMs": -106.10103607177734 + }, + { + "pair": 34, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -267.4858570098877, + "ttfdDifferenceMs": -217.229962348938 + }, + { + "pair": 35, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -143.57399940490723, + "ttfdDifferenceMs": -139.043927192688 + }, + { + "pair": 36, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -130.35905361175537, + "ttfdDifferenceMs": -130.76400756835938 + }, + { + "pair": 37, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -138.2439136505127, + "ttfdDifferenceMs": -122.8179931640625 + }, + { + "pair": 38, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -152.1850824356079, + "ttfdDifferenceMs": -142.06111431121826 + }, + { + "pair": 39, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -118.65293979644775, + "ttfdDifferenceMs": -116.94800853729248 + }, + { + "pair": 40, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -256.90996646881104, + "ttfdDifferenceMs": -251.2040138244629 + }, + { + "pair": 41, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -308.7778091430664, + "ttfdDifferenceMs": -259.17887687683105 + }, + { + "pair": 42, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -251.48308277130127, + "ttfdDifferenceMs": -201.76804065704346 + }, + { + "pair": 43, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -143.8438892364502, + "ttfdDifferenceMs": -139.9219036102295 + }, + { + "pair": 44, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -147.7978229522705, + "ttfdDifferenceMs": -133.9728832244873 + }, + { + "pair": 45, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -150.26187896728516, + "ttfdDifferenceMs": -130.50591945648193 + }, + { + "pair": 46, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -147.6280689239502, + "ttfdDifferenceMs": -147.75311946868896 + }, + { + "pair": 47, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -147.70591259002686, + "ttfdDifferenceMs": -141.6260004043579 + }, + { + "pair": 48, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -129.660964012146, + "ttfdDifferenceMs": -119.58301067352295 + }, + { + "pair": 49, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -152.95302867889404, + "ttfdDifferenceMs": -146.71194553375244 + }, + { + "pair": 50, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -124.28903579711914, + "ttfdDifferenceMs": -119.22407150268555 + } + ], + "histograms": { + "TTFA": { + "binEdgesMs": [ + -310.0, + -300.0, + -290.0, + -280.0, + -270.0, + -260.0, + -250.0, + -240.0, + -230.0, + -220.0, + -210.0, + -200.0, + -190.0, + -180.0, + -170.0, + -160.0, + -150.0, + -140.0, + -130.0, + -120.0, + -110.0, + -100.0, + -90.0, + -80.0, + -70.0, + -60.0, + -50.0, + -40.0, + -30.0, + -20.0, + -10.0, + 0.0, + 10.0, + 20.0, + 30.0, + 40.0, + 50.0, + 60.0, + 70.0, + 80.0, + 90.0, + 100.0, + 110.0, + 120.0, + 130.0, + 140.0, + 150.0, + 160.0, + 170.0, + 180.0, + 190.0, + 200.0, + 210.0, + 220.0, + 230.0, + 240.0, + 250.0, + 260.0, + 270.0, + 280.0, + 290.0, + 300.0, + 310.0, + 320.0, + 330.0, + 340.0, + 350.0, + 360.0, + 370.0, + 380.0, + 390.0, + 400.0, + 410.0, + 420.0, + 430.0, + 440.0, + 450.0, + 460.0, + 470.0, + 480.0, + 490.0, + 500.0, + 510.0, + 520.0, + 530.0, + 540.0, + 550.0, + 560.0, + 570.0, + 580.0, + 590.0, + 600.0, + 610.0, + 620.0, + 630.0, + 640.0, + 650.0, + 660.0, + 670.0, + 680.0, + 690.0, + 700.0, + 710.0, + 720.0, + 730.0, + 740.0, + 750.0, + 760.0, + 770.0, + 780.0, + 790.0, + 800.0, + 810.0, + 820.0, + 830.0, + 840.0, + 850.0, + 860.0, + 870.0, + 880.0, + 890.0, + 900.0, + 910.0, + 920.0, + 930.0, + 940.0, + 950.0, + 960.0, + 970.0, + 980.0, + 990.0, + 1000.0, + 1010.0, + 1020.0, + 1030.0, + 1040.0, + 1050.0, + 1060.0, + 1070.0, + 1080.0, + 1090.0, + 1100.0, + 1110.0, + 1120.0, + 1130.0, + 1140.0, + 1150.0, + 1160.0, + 1170.0, + 1180.0, + 1190.0, + 1200.0, + 1210.0, + 1220.0, + 1230.0, + 1240.0, + 1250.0, + 1260.0, + 1270.0, + 1280.0, + 1290.0, + 1300.0, + 1310.0, + 1320.0, + 1330.0, + 1340.0, + 1350.0, + 1360.0, + 1370.0, + 1380.0, + 1390.0, + 1400.0, + 1410.0, + 1420.0, + 1430.0, + 1440.0, + 1450.0, + 1460.0 + ], + "pairCounts": [ + 1, + 0, + 0, + 1, + 2, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 4, + 10, + 9, + 3, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1 + ] + }, + "TTFD": { + "binEdgesMs": [ + -260.0, + -250.0, + -240.0, + -230.0, + -220.0, + -210.0, + -200.0, + -190.0, + -180.0, + -170.0, + -160.0, + -150.0, + -140.0, + -130.0, + -120.0, + -110.0, + -100.0, + -90.0, + -80.0, + -70.0, + -60.0, + -50.0, + -40.0, + -30.0, + -20.0, + -10.0, + 0.0, + 10.0, + 20.0, + 30.0, + 40.0, + 50.0, + 60.0, + 70.0, + 80.0, + 90.0, + 100.0, + 110.0, + 120.0, + 130.0, + 140.0, + 150.0, + 160.0, + 170.0, + 180.0, + 190.0, + 200.0, + 210.0, + 220.0, + 230.0, + 240.0, + 250.0, + 260.0, + 270.0, + 280.0, + 290.0, + 300.0, + 310.0, + 320.0, + 330.0, + 340.0, + 350.0, + 360.0, + 370.0, + 380.0, + 390.0, + 400.0, + 410.0, + 420.0, + 430.0, + 440.0, + 450.0, + 460.0, + 470.0, + 480.0, + 490.0, + 500.0, + 510.0, + 520.0, + 530.0, + 540.0, + 550.0, + 560.0, + 570.0, + 580.0, + 590.0, + 600.0, + 610.0, + 620.0, + 630.0, + 640.0, + 650.0, + 660.0, + 670.0, + 680.0, + 690.0, + 700.0, + 710.0, + 720.0, + 730.0, + 740.0, + 750.0, + 760.0, + 770.0, + 780.0, + 790.0, + 800.0, + 810.0, + 820.0, + 830.0, + 840.0, + 850.0, + 860.0, + 870.0, + 880.0, + 890.0, + 900.0, + 910.0, + 920.0, + 930.0, + 940.0, + 950.0, + 960.0, + 970.0, + 980.0, + 990.0, + 1000.0, + 1010.0, + 1020.0, + 1030.0, + 1040.0, + 1050.0, + 1060.0, + 1070.0, + 1080.0, + 1090.0, + 1100.0, + 1110.0, + 1120.0, + 1130.0, + 1140.0, + 1150.0, + 1160.0, + 1170.0, + 1180.0, + 1190.0, + 1200.0, + 1210.0, + 1220.0, + 1230.0, + 1240.0, + 1250.0, + 1260.0, + 1270.0, + 1280.0, + 1290.0, + 1300.0, + 1310.0, + 1320.0, + 1330.0, + 1340.0, + 1350.0, + 1360.0, + 1370.0, + 1380.0, + 1390.0, + 1400.0, + 1410.0, + 1420.0 + ], + "pairCounts": [ + 1, + 0, + 0, + 1, + 2, + 1, + 1, + 0, + 0, + 0, + 3, + 6, + 12, + 5, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1 + ] + } + }, + "acceptedPairs": 35, + "includedEarlyPost400Pairs": 18, + "earlyPost400Pairs": 29, + "sharedHistogramAxes": true, + "matplotlibVersion": "3.10.9", + "generatorSHA256": "b765d59d61723c27082f9ce1a4db0d904141b82b945b88d70ba4a9f5fefb09ff", + "selectionGeneratorSHA256": "8b88689d7d9df75ed0c03f09bfc27e5d046078abf56308683bb38ce4d4a35fcc" +} diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/pair-differences.csv b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/pair-differences.csv new file mode 100644 index 0000000..ae5b74a --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/pair-differences.csv @@ -0,0 +1,51 @@ +pair,accepted,exclusionReasons,earlyPostHTTP,ttfaDifferenceMs,ttfdDifferenceMs +1,False,['handshake difference >20 ms'],200,-686.2250566482544,-689.8720264434814 +2,True,[],400,-266.2680149078369,-211.44402027130127 +3,False,['handshake difference >20 ms'],400,419.1168546676636,376.67083740234375 +4,True,[],200,-168.90215873718262,-156.24713897705078 +5,False,['handshake difference >20 ms'],400,-213.73391151428223,-163.61403465270996 +6,True,[],200,-132.5669288635254,-130.3039789199829 +7,True,[],200,-126.26504898071289,-135.53404808044434 +8,True,[],200,-242.96796321868896,-192.8020715713501 +9,True,[],200,-142.1661376953125,-138.47100734710693 +10,True,[],200,-72.91996479034424,-22.04608917236328 +11,True,[],200,-134.00089740753174,-135.94400882720947 +12,False,['handshake difference >20 ms'],200,25.297045707702637,26.59893035888672 +13,True,[],400,-139.88900184631348,-130.64706325531006 +14,True,[],400,-274.3901014328003,-225.38602352142334 +15,True,[],200,-135.71202754974365,-137.28809356689453 +16,True,[],400,-140.1510238647461,-123.22998046875 +17,False,['handshake difference >20 ms'],400,-209.79690551757812,38.91611099243164 +18,False,['handshake difference >20 ms'],400,-82.06808567047119,-45.27008533477783 +19,True,[],400,-149.880051612854,-147.9640007019043 +20,False,['handshake difference >20 ms'],400,-284.28900241851807,-283.14101696014404 +21,False,['handshake difference >20 ms'],400,286.07189655303955,294.02899742126465 +22,True,[],400,-135.187029838562,-136.58607006072998 +23,True,[],200,-126.20306015014648,-120.9869384765625 +24,True,[],400,-145.17199993133545,-156.27801418304443 +25,True,[],400,-158.42998027801514,-156.66794776916504 +26,True,[],400,-137.9150152206421,-126.16300582885742 +27,False,['handshake difference >20 ms'],400,-284.0619087219238,-276.3129472732544 +28,True,[],200,1450.154185295105,1410.9081029891968 +29,True,[],400,-144.7979211807251,-143.21398735046387 +30,True,[],200,-138.82505893707275,-138.81099224090576 +31,True,[],200,-136.3229751586914,-125.16498565673828 +32,False,['handshake difference >20 ms'],400,-113.97898197174072,-87.07797527313232 +33,False,['handshake difference >20 ms'],400,-112.81394958496094,-106.10103607177734 +34,True,[],400,-267.4858570098877,-217.229962348938 +35,True,[],400,-143.57399940490723,-139.043927192688 +36,False,['handshake difference >20 ms'],200,-130.35905361175537,-130.76400756835938 +37,True,[],400,-138.2439136505127,-122.8179931640625 +38,True,[],200,-152.1850824356079,-142.06111431121826 +39,False,['handshake difference >20 ms'],200,-118.65293979644775,-116.94800853729248 +40,False,['handshake difference >20 ms'],400,-256.90996646881104,-251.2040138244629 +41,True,[],400,-308.7778091430664,-259.17887687683105 +42,True,[],400,-251.48308277130127,-201.76804065704346 +43,True,[],400,-143.8438892364502,-139.9219036102295 +44,True,[],400,-147.7978229522705,-133.9728832244873 +45,True,[],200,-150.26187896728516,-130.50591945648193 +46,True,[],200,-147.6280689239502,-147.75311946868896 +47,True,[],400,-147.70591259002686,-141.6260004043579 +48,False,['handshake difference >20 ms'],400,-129.660964012146,-119.58301067352295 +49,True,[],200,-152.95302867889404,-146.71194553375244 +50,True,[],200,-124.28903579711914,-119.22407150268555 diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfa-on-minus-off.png b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfa-on-minus-off.png new file mode 100644 index 0000000..e12165c Binary files /dev/null and b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfa-on-minus-off.png differ diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfa-on-minus-off.svg b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfa-on-minus-off.svg new file mode 100644 index 0000000..2fb6ce5 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfa-on-minus-off.svg @@ -0,0 +1,4400 @@ + + + + + + + + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfd-on-minus-off.png b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfd-on-minus-off.png new file mode 100644 index 0000000..c466c63 Binary files /dev/null and b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfd-on-minus-off.png differ diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfd-on-minus-off.svg b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfd-on-minus-off.svg new file mode 100644 index 0000000..e45de96 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-0ms/histograms/ttfd-on-minus-off.svg @@ -0,0 +1,4278 @@ + + + + + + + + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/histogram-data.json b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/histogram-data.json new file mode 100644 index 0000000..e8c1d48 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/histogram-data.json @@ -0,0 +1,1149 @@ +{ + "initialMessageDelayMs": 100, + "pairCount": 50, + "handshakeThresholdMs": 20.0, + "includeEarlyPost400": true, + "difference": "ON minus OFF", + "binWidthMs": 10, + "pairs": [ + { + "pair": 1, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -73.94194602966309, + "ttfdDifferenceMs": -67.9008960723877 + }, + { + "pair": 2, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -209.59293842315674, + "ttfdDifferenceMs": -161.45098209381104 + }, + { + "pair": 3, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -107.43892192840576, + "ttfdDifferenceMs": -119.01605129241943 + }, + { + "pair": 4, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -52.25396156311035, + "ttfdDifferenceMs": -51.26595497131348 + }, + { + "pair": 5, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -73.28498363494873, + "ttfdDifferenceMs": -77.78000831604004 + }, + { + "pair": 6, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -63.34185600280762, + "ttfdDifferenceMs": -62.988877296447754 + }, + { + "pair": 7, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -68.27199459075928, + "ttfdDifferenceMs": -72.41201400756836 + }, + { + "pair": 8, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -50.004005432128906, + "ttfdDifferenceMs": -44.69108581542969 + }, + { + "pair": 9, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -57.05606937408447, + "ttfdDifferenceMs": -53.034067153930664 + }, + { + "pair": 10, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -63.474059104919434, + "ttfdDifferenceMs": -49.29399490356445 + }, + { + "pair": 11, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -72.0059871673584, + "ttfdDifferenceMs": -65.59908390045166 + }, + { + "pair": 12, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -69.64492797851562, + "ttfdDifferenceMs": -69.85294818878174 + }, + { + "pair": 13, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -91.08996391296387, + "ttfdDifferenceMs": -88.56093883514404 + }, + { + "pair": 14, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -81.05003833770752, + "ttfdDifferenceMs": -79.87701892852783 + }, + { + "pair": 15, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -68.20106506347656, + "ttfdDifferenceMs": -66.24913215637207 + }, + { + "pair": 16, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -64.66293334960938, + "ttfdDifferenceMs": -58.71093273162842 + }, + { + "pair": 17, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -67.97003746032715, + "ttfdDifferenceMs": -63.68100643157959 + }, + { + "pair": 18, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": 102.26094722747803, + "ttfdDifferenceMs": 57.30998516082764 + }, + { + "pair": 19, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -222.32306003570557, + "ttfdDifferenceMs": -173.78711700439453 + }, + { + "pair": 20, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -68.89402866363525, + "ttfdDifferenceMs": -68.44103336334229 + }, + { + "pair": 21, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -44.3340539932251, + "ttfdDifferenceMs": -47.557950019836426 + }, + { + "pair": 22, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -237.746000289917, + "ttfdDifferenceMs": -187.9209280014038 + }, + { + "pair": 23, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -55.946946144104004, + "ttfdDifferenceMs": -55.523037910461426 + }, + { + "pair": 24, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -117.39003658294678, + "ttfdDifferenceMs": -113.42203617095947 + }, + { + "pair": 25, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -49.44193363189697, + "ttfdDifferenceMs": -45.726895332336426 + }, + { + "pair": 26, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -90.19601345062256, + "ttfdDifferenceMs": -88.63389492034912 + }, + { + "pair": 27, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -61.3938570022583, + "ttfdDifferenceMs": -65.61887264251709 + }, + { + "pair": 28, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -76.51591300964355, + "ttfdDifferenceMs": -75.61099529266357 + }, + { + "pair": 29, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -45.85087299346924, + "ttfdDifferenceMs": -42.29593276977539 + }, + { + "pair": 30, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -81.10499382019043, + "ttfdDifferenceMs": -63.44807147979736 + }, + { + "pair": 31, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -42.01102256774902, + "ttfdDifferenceMs": -36.16595268249512 + }, + { + "pair": 32, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -62.52288818359375, + "ttfdDifferenceMs": -62.40808963775635 + }, + { + "pair": 33, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -50.68695545196533, + "ttfdDifferenceMs": -45.81093788146973 + }, + { + "pair": 34, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -62.767982482910156, + "ttfdDifferenceMs": -57.166099548339844 + }, + { + "pair": 35, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -67.45803356170654, + "ttfdDifferenceMs": -57.98006057739258 + }, + { + "pair": 36, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -52.54006385803223, + "ttfdDifferenceMs": -51.05710029602051 + }, + { + "pair": 37, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -25.085926055908203, + "ttfdDifferenceMs": -71.6710090637207 + }, + { + "pair": 38, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -70.66488265991211, + "ttfdDifferenceMs": -57.498931884765625 + }, + { + "pair": 39, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -134.10604000091553, + "ttfdDifferenceMs": -133.40997695922852 + }, + { + "pair": 40, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -87.4030590057373, + "ttfdDifferenceMs": -77.4010419845581 + }, + { + "pair": 41, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -46.167969703674316, + "ttfdDifferenceMs": -49.60298538208008 + }, + { + "pair": 42, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -46.99993133544922, + "ttfdDifferenceMs": -48.99299144744873 + }, + { + "pair": 43, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -122.55096435546875, + "ttfdDifferenceMs": -121.64998054504395 + }, + { + "pair": 44, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -67.30103492736816, + "ttfdDifferenceMs": -64.1469955444336 + }, + { + "pair": 45, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -63.903093338012695, + "ttfdDifferenceMs": -62.59918212890625 + }, + { + "pair": 46, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -53.256988525390625, + "ttfdDifferenceMs": -53.08198928833008 + }, + { + "pair": 47, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -56.44798278808594, + "ttfdDifferenceMs": -55.43398857116699 + }, + { + "pair": 48, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -46.8289852142334, + "ttfdDifferenceMs": -46.00811004638672 + }, + { + "pair": 49, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -115.52810668945312, + "ttfdDifferenceMs": -108.74903202056885 + }, + { + "pair": 50, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": 80.28209209442139, + "ttfdDifferenceMs": 85.10303497314453 + } + ], + "histograms": { + "TTFA": { + "binEdgesMs": [ + -310.0, + -300.0, + -290.0, + -280.0, + -270.0, + -260.0, + -250.0, + -240.0, + -230.0, + -220.0, + -210.0, + -200.0, + -190.0, + -180.0, + -170.0, + -160.0, + -150.0, + -140.0, + -130.0, + -120.0, + -110.0, + -100.0, + -90.0, + -80.0, + -70.0, + -60.0, + -50.0, + -40.0, + -30.0, + -20.0, + -10.0, + 0.0, + 10.0, + 20.0, + 30.0, + 40.0, + 50.0, + 60.0, + 70.0, + 80.0, + 90.0, + 100.0, + 110.0, + 120.0, + 130.0, + 140.0, + 150.0, + 160.0, + 170.0, + 180.0, + 190.0, + 200.0, + 210.0, + 220.0, + 230.0, + 240.0, + 250.0, + 260.0, + 270.0, + 280.0, + 290.0, + 300.0, + 310.0, + 320.0, + 330.0, + 340.0, + 350.0, + 360.0, + 370.0, + 380.0, + 390.0, + 400.0, + 410.0, + 420.0, + 430.0, + 440.0, + 450.0, + 460.0, + 470.0, + 480.0, + 490.0, + 500.0, + 510.0, + 520.0, + 530.0, + 540.0, + 550.0, + 560.0, + 570.0, + 580.0, + 590.0, + 600.0, + 610.0, + 620.0, + 630.0, + 640.0, + 650.0, + 660.0, + 670.0, + 680.0, + 690.0, + 700.0, + 710.0, + 720.0, + 730.0, + 740.0, + 750.0, + 760.0, + 770.0, + 780.0, + 790.0, + 800.0, + 810.0, + 820.0, + 830.0, + 840.0, + 850.0, + 860.0, + 870.0, + 880.0, + 890.0, + 900.0, + 910.0, + 920.0, + 930.0, + 940.0, + 950.0, + 960.0, + 970.0, + 980.0, + 990.0, + 1000.0, + 1010.0, + 1020.0, + 1030.0, + 1040.0, + 1050.0, + 1060.0, + 1070.0, + 1080.0, + 1090.0, + 1100.0, + 1110.0, + 1120.0, + 1130.0, + 1140.0, + 1150.0, + 1160.0, + 1170.0, + 1180.0, + 1190.0, + 1200.0, + 1210.0, + 1220.0, + 1230.0, + 1240.0, + 1250.0, + 1260.0, + 1270.0, + 1280.0, + 1290.0, + 1300.0, + 1310.0, + 1320.0, + 1330.0, + 1340.0, + 1350.0, + 1360.0, + 1370.0, + 1380.0, + 1390.0, + 1400.0, + 1410.0, + 1420.0, + 1430.0, + 1440.0, + 1450.0, + 1460.0 + ], + "pairCounts": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 2, + 4, + 12, + 8, + 7, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + "TTFD": { + "binEdgesMs": [ + -260.0, + -250.0, + -240.0, + -230.0, + -220.0, + -210.0, + -200.0, + -190.0, + -180.0, + -170.0, + -160.0, + -150.0, + -140.0, + -130.0, + -120.0, + -110.0, + -100.0, + -90.0, + -80.0, + -70.0, + -60.0, + -50.0, + -40.0, + -30.0, + -20.0, + -10.0, + 0.0, + 10.0, + 20.0, + 30.0, + 40.0, + 50.0, + 60.0, + 70.0, + 80.0, + 90.0, + 100.0, + 110.0, + 120.0, + 130.0, + 140.0, + 150.0, + 160.0, + 170.0, + 180.0, + 190.0, + 200.0, + 210.0, + 220.0, + 230.0, + 240.0, + 250.0, + 260.0, + 270.0, + 280.0, + 290.0, + 300.0, + 310.0, + 320.0, + 330.0, + 340.0, + 350.0, + 360.0, + 370.0, + 380.0, + 390.0, + 400.0, + 410.0, + 420.0, + 430.0, + 440.0, + 450.0, + 460.0, + 470.0, + 480.0, + 490.0, + 500.0, + 510.0, + 520.0, + 530.0, + 540.0, + 550.0, + 560.0, + 570.0, + 580.0, + 590.0, + 600.0, + 610.0, + 620.0, + 630.0, + 640.0, + 650.0, + 660.0, + 670.0, + 680.0, + 690.0, + 700.0, + 710.0, + 720.0, + 730.0, + 740.0, + 750.0, + 760.0, + 770.0, + 780.0, + 790.0, + 800.0, + 810.0, + 820.0, + 830.0, + 840.0, + 850.0, + 860.0, + 870.0, + 880.0, + 890.0, + 900.0, + 910.0, + 920.0, + 930.0, + 940.0, + 950.0, + 960.0, + 970.0, + 980.0, + 990.0, + 1000.0, + 1010.0, + 1020.0, + 1030.0, + 1040.0, + 1050.0, + 1060.0, + 1070.0, + 1080.0, + 1090.0, + 1100.0, + 1110.0, + 1120.0, + 1130.0, + 1140.0, + 1150.0, + 1160.0, + 1170.0, + 1180.0, + 1190.0, + 1200.0, + 1210.0, + 1220.0, + 1230.0, + 1240.0, + 1250.0, + 1260.0, + 1270.0, + 1280.0, + 1290.0, + 1300.0, + 1310.0, + 1320.0, + 1330.0, + 1340.0, + 1350.0, + 1360.0, + 1370.0, + 1380.0, + 1390.0, + 1400.0, + 1410.0, + 1420.0 + ], + "pairCounts": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 4, + 11, + 9, + 8, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + }, + "acceptedPairs": 37, + "includedEarlyPost400Pairs": 0, + "earlyPost400Pairs": 0, + "sharedHistogramAxes": true, + "matplotlibVersion": "3.10.9", + "generatorSHA256": "b765d59d61723c27082f9ce1a4db0d904141b82b945b88d70ba4a9f5fefb09ff", + "selectionGeneratorSHA256": "8b88689d7d9df75ed0c03f09bfc27e5d046078abf56308683bb38ce4d4a35fcc" +} diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/pair-differences.csv b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/pair-differences.csv new file mode 100644 index 0000000..4b7744e --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/pair-differences.csv @@ -0,0 +1,51 @@ +pair,accepted,exclusionReasons,earlyPostHTTP,ttfaDifferenceMs,ttfdDifferenceMs +1,True,[],200,-73.94194602966309,-67.9008960723877 +2,True,[],200,-209.59293842315674,-161.45098209381104 +3,False,['handshake difference >20 ms'],200,-107.43892192840576,-119.01605129241943 +4,True,[],200,-52.25396156311035,-51.26595497131348 +5,True,[],200,-73.28498363494873,-77.78000831604004 +6,True,[],200,-63.34185600280762,-62.988877296447754 +7,True,[],200,-68.27199459075928,-72.41201400756836 +8,True,[],200,-50.004005432128906,-44.69108581542969 +9,True,[],200,-57.05606937408447,-53.034067153930664 +10,False,['handshake difference >20 ms'],200,-63.474059104919434,-49.29399490356445 +11,True,[],200,-72.0059871673584,-65.59908390045166 +12,True,[],200,-69.64492797851562,-69.85294818878174 +13,True,[],200,-91.08996391296387,-88.56093883514404 +14,False,['handshake difference >20 ms'],200,-81.05003833770752,-79.87701892852783 +15,True,[],200,-68.20106506347656,-66.24913215637207 +16,True,[],200,-64.66293334960938,-58.71093273162842 +17,True,[],200,-67.97003746032715,-63.68100643157959 +18,False,['handshake difference >20 ms'],200,102.26094722747803,57.30998516082764 +19,True,[],200,-222.32306003570557,-173.78711700439453 +20,True,[],200,-68.89402866363525,-68.44103336334229 +21,True,[],200,-44.3340539932251,-47.557950019836426 +22,True,[],200,-237.746000289917,-187.9209280014038 +23,True,[],200,-55.946946144104004,-55.523037910461426 +24,False,['handshake difference >20 ms'],200,-117.39003658294678,-113.42203617095947 +25,True,[],200,-49.44193363189697,-45.726895332336426 +26,False,['handshake difference >20 ms'],200,-90.19601345062256,-88.63389492034912 +27,True,[],200,-61.3938570022583,-65.61887264251709 +28,True,[],200,-76.51591300964355,-75.61099529266357 +29,True,[],200,-45.85087299346924,-42.29593276977539 +30,True,[],200,-81.10499382019043,-63.44807147979736 +31,True,[],200,-42.01102256774902,-36.16595268249512 +32,False,['handshake difference >20 ms'],200,-62.52288818359375,-62.40808963775635 +33,True,[],200,-50.68695545196533,-45.81093788146973 +34,True,[],200,-62.767982482910156,-57.166099548339844 +35,True,[],200,-67.45803356170654,-57.98006057739258 +36,True,[],200,-52.54006385803223,-51.05710029602051 +37,False,['handshake difference >20 ms'],200,-25.085926055908203,-71.6710090637207 +38,False,['handshake difference >20 ms'],200,-70.66488265991211,-57.498931884765625 +39,False,['handshake difference >20 ms'],200,-134.10604000091553,-133.40997695922852 +40,True,[],200,-87.4030590057373,-77.4010419845581 +41,True,[],200,-46.167969703674316,-49.60298538208008 +42,True,[],200,-46.99993133544922,-48.99299144744873 +43,False,['handshake difference >20 ms'],200,-122.55096435546875,-121.64998054504395 +44,True,[],200,-67.30103492736816,-64.1469955444336 +45,True,[],200,-63.903093338012695,-62.59918212890625 +46,True,[],200,-53.256988525390625,-53.08198928833008 +47,True,[],200,-56.44798278808594,-55.43398857116699 +48,True,[],200,-46.8289852142334,-46.00811004638672 +49,False,['handshake difference >20 ms'],200,-115.52810668945312,-108.74903202056885 +50,False,['handshake difference >20 ms'],200,80.28209209442139,85.10303497314453 diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfa-on-minus-off.png b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfa-on-minus-off.png new file mode 100644 index 0000000..0aee18b Binary files /dev/null and b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfa-on-minus-off.png differ diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfa-on-minus-off.svg b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfa-on-minus-off.svg new file mode 100644 index 0000000..28ce001 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfa-on-minus-off.svg @@ -0,0 +1,4425 @@ + + + + + + + + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfd-on-minus-off.png b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfd-on-minus-off.png new file mode 100644 index 0000000..574aa19 Binary files /dev/null and b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfd-on-minus-off.png differ diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfd-on-minus-off.svg b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfd-on-minus-off.svg new file mode 100644 index 0000000..ad8b570 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-100ms/histograms/ttfd-on-minus-off.svg @@ -0,0 +1,4227 @@ + + + + + + + + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/histogram-data.json b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/histogram-data.json new file mode 100644 index 0000000..2379533 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/histogram-data.json @@ -0,0 +1,1147 @@ +{ + "initialMessageDelayMs": 200, + "pairCount": 50, + "handshakeThresholdMs": 20.0, + "includeEarlyPost400": true, + "difference": "ON minus OFF", + "binWidthMs": 10, + "pairs": [ + { + "pair": 1, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -0.4839897155761719, + "ttfdDifferenceMs": -6.986856460571289 + }, + { + "pair": 2, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -1.7249584197998047, + "ttfdDifferenceMs": -7.667064666748047 + }, + { + "pair": 3, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 3.859877586364746, + "ttfdDifferenceMs": 6.790041923522949 + }, + { + "pair": 4, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 2.8330087661743164, + "ttfdDifferenceMs": 2.2519826889038086 + }, + { + "pair": 5, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 9.38403606414795, + "ttfdDifferenceMs": 11.319994926452637 + }, + { + "pair": 6, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 6.657958030700684, + "ttfdDifferenceMs": 7.976055145263672 + }, + { + "pair": 7, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 0.25200843811035156, + "ttfdDifferenceMs": 0.03695487976074219 + }, + { + "pair": 8, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 0.5459785461425781, + "ttfdDifferenceMs": 3.399968147277832 + }, + { + "pair": 9, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 21.10004425048828, + "ttfdDifferenceMs": 16.224026679992676 + }, + { + "pair": 10, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -0.8360147476196289, + "ttfdDifferenceMs": -1.9840002059936523 + }, + { + "pair": 11, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 7.454991340637207, + "ttfdDifferenceMs": 10.944008827209473 + }, + { + "pair": 12, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": 241.97900295257568, + "ttfdDifferenceMs": 242.89000034332275 + }, + { + "pair": 13, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -109.48002338409424, + "ttfdDifferenceMs": -63.38691711425781 + }, + { + "pair": 14, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 13.944029808044434, + "ttfdDifferenceMs": 11.252164840698242 + }, + { + "pair": 15, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 4.836082458496094, + "ttfdDifferenceMs": 5.234122276306152 + }, + { + "pair": 16, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 18.182873725891113, + "ttfdDifferenceMs": 15.481948852539062 + }, + { + "pair": 17, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -1.6189813613891602, + "ttfdDifferenceMs": -1.0319948196411133 + }, + { + "pair": 18, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 7.2479248046875, + "ttfdDifferenceMs": 7.444977760314941 + }, + { + "pair": 19, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 8.040070533752441, + "ttfdDifferenceMs": 13.921976089477539 + }, + { + "pair": 20, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -0.44095516204833984, + "ttfdDifferenceMs": 0.5891323089599609 + }, + { + "pair": 21, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 5.542993545532227, + "ttfdDifferenceMs": 8.618950843811035 + }, + { + "pair": 22, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 4.708051681518555, + "ttfdDifferenceMs": 0.74005126953125 + }, + { + "pair": 23, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": 7.37309455871582, + "ttfdDifferenceMs": 9.621977806091309 + }, + { + "pair": 24, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": 6.170988082885742, + "ttfdDifferenceMs": 1.672983169555664 + }, + { + "pair": 25, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": 90.17598628997803, + "ttfdDifferenceMs": 85.48688888549805 + }, + { + "pair": 26, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 13.141989707946777, + "ttfdDifferenceMs": 11.074066162109375 + }, + { + "pair": 27, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": -91.18902683258057, + "ttfdDifferenceMs": -43.1361198425293 + }, + { + "pair": 28, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 5.897045135498047, + "ttfdDifferenceMs": 8.980989456176758 + }, + { + "pair": 29, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 4.007935523986816, + "ttfdDifferenceMs": -2.838015556335449 + }, + { + "pair": 30, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -235.18705368041992, + "ttfdDifferenceMs": -229.7450304031372 + }, + { + "pair": 31, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": 112.7328872680664, + "ttfdDifferenceMs": 110.17191410064697 + }, + { + "pair": 32, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 14.60111141204834, + "ttfdDifferenceMs": 19.12999153137207 + }, + { + "pair": 33, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 157.70196914672852, + "ttfdDifferenceMs": 107.30600357055664 + }, + { + "pair": 34, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 2.889871597290039, + "ttfdDifferenceMs": 6.633877754211426 + }, + { + "pair": 35, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -6.179928779602051, + "ttfdDifferenceMs": -2.998948097229004 + }, + { + "pair": 36, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 3.956913948059082, + "ttfdDifferenceMs": 15.018939971923828 + }, + { + "pair": 37, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 18.550992012023926, + "ttfdDifferenceMs": 18.2340145111084 + }, + { + "pair": 38, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -57.62004852294922, + "ttfdDifferenceMs": -101.51302814483643 + }, + { + "pair": 39, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 1.484990119934082, + "ttfdDifferenceMs": 0.861048698425293 + }, + { + "pair": 40, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -5.360007286071777, + "ttfdDifferenceMs": -7.887840270996094 + }, + { + "pair": 41, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -12.237906455993652, + "ttfdDifferenceMs": -13.952970504760742 + }, + { + "pair": 42, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 4.53495979309082, + "ttfdDifferenceMs": -0.20802021026611328 + }, + { + "pair": 43, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -107.69093036651611, + "ttfdDifferenceMs": -57.83188343048096 + }, + { + "pair": 44, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -77.00896263122559, + "ttfdDifferenceMs": -27.043938636779785 + }, + { + "pair": 45, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 8.283138275146484, + "ttfdDifferenceMs": 8.158087730407715 + }, + { + "pair": 46, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -77.71992683410645, + "ttfdDifferenceMs": -80.70099353790283 + }, + { + "pair": 47, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": -22.328972816467285, + "ttfdDifferenceMs": 19.273996353149414 + }, + { + "pair": 48, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 7.459044456481934, + "ttfdDifferenceMs": 10.126113891601562 + }, + { + "pair": 49, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -24.30105209350586, + "ttfdDifferenceMs": -13.17906379699707 + }, + { + "pair": 50, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "not sent", + "ttfaDifferenceMs": 9.240031242370605, + "ttfdDifferenceMs": 3.8721561431884766 + } + ], + "histograms": { + "TTFA": { + "binEdgesMs": [ + -310.0, + -300.0, + -290.0, + -280.0, + -270.0, + -260.0, + -250.0, + -240.0, + -230.0, + -220.0, + -210.0, + -200.0, + -190.0, + -180.0, + -170.0, + -160.0, + -150.0, + -140.0, + -130.0, + -120.0, + -110.0, + -100.0, + -90.0, + -80.0, + -70.0, + -60.0, + -50.0, + -40.0, + -30.0, + -20.0, + -10.0, + 0.0, + 10.0, + 20.0, + 30.0, + 40.0, + 50.0, + 60.0, + 70.0, + 80.0, + 90.0, + 100.0, + 110.0, + 120.0, + 130.0, + 140.0, + 150.0, + 160.0, + 170.0, + 180.0, + 190.0, + 200.0, + 210.0, + 220.0, + 230.0, + 240.0, + 250.0, + 260.0, + 270.0, + 280.0, + 290.0, + 300.0, + 310.0, + 320.0, + 330.0, + 340.0, + 350.0, + 360.0, + 370.0, + 380.0, + 390.0, + 400.0, + 410.0, + 420.0, + 430.0, + 440.0, + 450.0, + 460.0, + 470.0, + 480.0, + 490.0, + 500.0, + 510.0, + 520.0, + 530.0, + 540.0, + 550.0, + 560.0, + 570.0, + 580.0, + 590.0, + 600.0, + 610.0, + 620.0, + 630.0, + 640.0, + 650.0, + 660.0, + 670.0, + 680.0, + 690.0, + 700.0, + 710.0, + 720.0, + 730.0, + 740.0, + 750.0, + 760.0, + 770.0, + 780.0, + 790.0, + 800.0, + 810.0, + 820.0, + 830.0, + 840.0, + 850.0, + 860.0, + 870.0, + 880.0, + 890.0, + 900.0, + 910.0, + 920.0, + 930.0, + 940.0, + 950.0, + 960.0, + 970.0, + 980.0, + 990.0, + 1000.0, + 1010.0, + 1020.0, + 1030.0, + 1040.0, + 1050.0, + 1060.0, + 1070.0, + 1080.0, + 1090.0, + 1100.0, + 1110.0, + 1120.0, + 1130.0, + 1140.0, + 1150.0, + 1160.0, + 1170.0, + 1180.0, + 1190.0, + 1200.0, + 1210.0, + 1220.0, + 1230.0, + 1240.0, + 1250.0, + 1260.0, + 1270.0, + 1280.0, + 1290.0, + 1300.0, + 1310.0, + 1320.0, + 1330.0, + 1340.0, + 1350.0, + 1360.0, + 1370.0, + 1380.0, + 1390.0, + 1400.0, + 1410.0, + 1420.0, + 1430.0, + 1440.0, + 1450.0, + 1460.0 + ], + "pairCounts": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 7, + 20, + 5, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + "TTFD": { + "binEdgesMs": [ + -260.0, + -250.0, + -240.0, + -230.0, + -220.0, + -210.0, + -200.0, + -190.0, + -180.0, + -170.0, + -160.0, + -150.0, + -140.0, + -130.0, + -120.0, + -110.0, + -100.0, + -90.0, + -80.0, + -70.0, + -60.0, + -50.0, + -40.0, + -30.0, + -20.0, + -10.0, + 0.0, + 10.0, + 20.0, + 30.0, + 40.0, + 50.0, + 60.0, + 70.0, + 80.0, + 90.0, + 100.0, + 110.0, + 120.0, + 130.0, + 140.0, + 150.0, + 160.0, + 170.0, + 180.0, + 190.0, + 200.0, + 210.0, + 220.0, + 230.0, + 240.0, + 250.0, + 260.0, + 270.0, + 280.0, + 290.0, + 300.0, + 310.0, + 320.0, + 330.0, + 340.0, + 350.0, + 360.0, + 370.0, + 380.0, + 390.0, + 400.0, + 410.0, + 420.0, + 430.0, + 440.0, + 450.0, + 460.0, + 470.0, + 480.0, + 490.0, + 500.0, + 510.0, + 520.0, + 530.0, + 540.0, + 550.0, + 560.0, + 570.0, + 580.0, + 590.0, + 600.0, + 610.0, + 620.0, + 630.0, + 640.0, + 650.0, + 660.0, + 670.0, + 680.0, + 690.0, + 700.0, + 710.0, + 720.0, + 730.0, + 740.0, + 750.0, + 760.0, + 770.0, + 780.0, + 790.0, + 800.0, + 810.0, + 820.0, + 830.0, + 840.0, + 850.0, + 860.0, + 870.0, + 880.0, + 890.0, + 900.0, + 910.0, + 920.0, + 930.0, + 940.0, + 950.0, + 960.0, + 970.0, + 980.0, + 990.0, + 1000.0, + 1010.0, + 1020.0, + 1030.0, + 1040.0, + 1050.0, + 1060.0, + 1070.0, + 1080.0, + 1090.0, + 1100.0, + 1110.0, + 1120.0, + 1130.0, + 1140.0, + 1150.0, + 1160.0, + 1170.0, + 1180.0, + 1190.0, + 1200.0, + 1210.0, + 1220.0, + 1230.0, + 1240.0, + 1250.0, + 1260.0, + 1270.0, + 1280.0, + 1290.0, + 1300.0, + 1310.0, + 1320.0, + 1330.0, + 1340.0, + 1350.0, + 1360.0, + 1370.0, + 1380.0, + 1390.0, + 1400.0, + 1410.0, + 1420.0 + ], + "pairCounts": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 8, + 15, + 11, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + }, + "acceptedPairs": 38, + "includedEarlyPost400Pairs": 0, + "earlyPost400Pairs": 4, + "sharedHistogramAxes": true, + "matplotlibVersion": "3.10.9", + "generatorSHA256": "b765d59d61723c27082f9ce1a4db0d904141b82b945b88d70ba4a9f5fefb09ff", + "selectionGeneratorSHA256": "8b88689d7d9df75ed0c03f09bfc27e5d046078abf56308683bb38ce4d4a35fcc" +} diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/pair-differences.csv b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/pair-differences.csv new file mode 100644 index 0000000..336db72 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/pair-differences.csv @@ -0,0 +1,51 @@ +pair,accepted,exclusionReasons,earlyPostHTTP,ttfaDifferenceMs,ttfdDifferenceMs +1,True,[],not sent,-0.4839897155761719,-6.986856460571289 +2,True,[],not sent,-1.7249584197998047,-7.667064666748047 +3,True,[],not sent,3.859877586364746,6.790041923522949 +4,True,[],not sent,2.8330087661743164,2.2519826889038086 +5,True,[],not sent,9.38403606414795,11.319994926452637 +6,True,[],not sent,6.657958030700684,7.976055145263672 +7,True,[],not sent,0.25200843811035156,0.03695487976074219 +8,True,[],not sent,0.5459785461425781,3.399968147277832 +9,True,[],not sent,21.10004425048828,16.224026679992676 +10,True,[],not sent,-0.8360147476196289,-1.9840002059936523 +11,False,['handshake difference >20 ms'],not sent,7.454991340637207,10.944008827209473 +12,False,['handshake difference >20 ms'],400,241.97900295257568,242.89000034332275 +13,True,[],not sent,-109.48002338409424,-63.38691711425781 +14,True,[],not sent,13.944029808044434,11.252164840698242 +15,True,[],not sent,4.836082458496094,5.234122276306152 +16,True,[],not sent,18.182873725891113,15.481948852539062 +17,True,[],not sent,-1.6189813613891602,-1.0319948196411133 +18,True,[],not sent,7.2479248046875,7.444977760314941 +19,True,[],not sent,8.040070533752441,13.921976089477539 +20,True,[],not sent,-0.44095516204833984,0.5891323089599609 +21,True,[],not sent,5.542993545532227,8.618950843811035 +22,True,[],not sent,4.708051681518555,0.74005126953125 +23,False,['handshake difference >20 ms'],200,7.37309455871582,9.621977806091309 +24,False,['handshake difference >20 ms'],200,6.170988082885742,1.672983169555664 +25,False,['handshake difference >20 ms'],400,90.17598628997803,85.48688888549805 +26,True,[],not sent,13.141989707946777,11.074066162109375 +27,False,['handshake difference >20 ms'],400,-91.18902683258057,-43.1361198425293 +28,True,[],not sent,5.897045135498047,8.980989456176758 +29,True,[],not sent,4.007935523986816,-2.838015556335449 +30,False,['handshake difference >20 ms'],not sent,-235.18705368041992,-229.7450304031372 +31,False,['handshake difference >20 ms'],400,112.7328872680664,110.17191410064697 +32,True,[],not sent,14.60111141204834,19.12999153137207 +33,False,['handshake difference >20 ms'],not sent,157.70196914672852,107.30600357055664 +34,True,[],not sent,2.889871597290039,6.633877754211426 +35,True,[],not sent,-6.179928779602051,-2.998948097229004 +36,True,[],not sent,3.956913948059082,15.018939971923828 +37,True,[],not sent,18.550992012023926,18.2340145111084 +38,False,['handshake difference >20 ms'],not sent,-57.62004852294922,-101.51302814483643 +39,True,[],not sent,1.484990119934082,0.861048698425293 +40,True,[],not sent,-5.360007286071777,-7.887840270996094 +41,True,[],not sent,-12.237906455993652,-13.952970504760742 +42,True,[],not sent,4.53495979309082,-0.20802021026611328 +43,True,[],not sent,-107.69093036651611,-57.83188343048096 +44,True,[],not sent,-77.00896263122559,-27.043938636779785 +45,True,[],not sent,8.283138275146484,8.158087730407715 +46,False,['handshake difference >20 ms'],not sent,-77.71992683410645,-80.70099353790283 +47,True,[],not sent,-22.328972816467285,19.273996353149414 +48,True,[],not sent,7.459044456481934,10.126113891601562 +49,False,['handshake difference >20 ms'],200,-24.30105209350586,-13.17906379699707 +50,True,[],not sent,9.240031242370605,3.8721561431884766 diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfa-on-minus-off.png b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfa-on-minus-off.png new file mode 100644 index 0000000..5b41204 Binary files /dev/null and b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfa-on-minus-off.png differ diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfa-on-minus-off.svg b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfa-on-minus-off.svg new file mode 100644 index 0000000..ed7cee1 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfa-on-minus-off.svg @@ -0,0 +1,4516 @@ + + + + + + + + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfd-on-minus-off.png b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfd-on-minus-off.png new file mode 100644 index 0000000..c905887 Binary files /dev/null and b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfd-on-minus-off.png differ diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfd-on-minus-off.svg b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfd-on-minus-off.svg new file mode 100644 index 0000000..8cc2c9f --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-200ms/histograms/ttfd-on-minus-off.svg @@ -0,0 +1,4293 @@ + + + + + + + + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/histogram-data.json b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/histogram-data.json new file mode 100644 index 0000000..8c8467f --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/histogram-data.json @@ -0,0 +1,1155 @@ +{ + "initialMessageDelayMs": 50, + "pairCount": 50, + "handshakeThresholdMs": 20.0, + "includeEarlyPost400": true, + "difference": "ON minus OFF", + "binWidthMs": 10, + "pairs": [ + { + "pair": 1, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -100.03495216369629, + "ttfdDifferenceMs": -97.15497493743896 + }, + { + "pair": 2, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -243.25692653656006, + "ttfdDifferenceMs": -240.89586734771729 + }, + { + "pair": 3, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -214.37203884124756, + "ttfdDifferenceMs": -195.64199447631836 + }, + { + "pair": 4, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -270.10810375213623, + "ttfdDifferenceMs": -219.51699256896973 + }, + { + "pair": 5, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -118.16704273223877, + "ttfdDifferenceMs": -107.49304294586182 + }, + { + "pair": 6, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": 21.057963371276855, + "ttfdDifferenceMs": 31.91399574279785 + }, + { + "pair": 7, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -134.3669891357422, + "ttfdDifferenceMs": -133.41295719146729 + }, + { + "pair": 8, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -66.05899333953857, + "ttfdDifferenceMs": -98.2520580291748 + }, + { + "pair": 9, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -278.1250476837158, + "ttfdDifferenceMs": -252.87103652954102 + }, + { + "pair": 10, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -422.4200248718262, + "ttfdDifferenceMs": -425.44591426849365 + }, + { + "pair": 11, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -119.62199211120605, + "ttfdDifferenceMs": -117.3640489578247 + }, + { + "pair": 12, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -108.85512828826904, + "ttfdDifferenceMs": -108.69300365447998 + }, + { + "pair": 13, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -118.29710006713867, + "ttfdDifferenceMs": -118.55697631835938 + }, + { + "pair": 14, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": 483.2669496536255, + "ttfdDifferenceMs": 484.5559597015381 + }, + { + "pair": 15, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -111.55104637145996, + "ttfdDifferenceMs": -110.10110378265381 + }, + { + "pair": 16, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -134.2710256576538, + "ttfdDifferenceMs": -128.1599998474121 + }, + { + "pair": 17, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": 69.96703147888184, + "ttfdDifferenceMs": 74.32305812835693 + }, + { + "pair": 18, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -99.79605674743652, + "ttfdDifferenceMs": -94.95997428894043 + }, + { + "pair": 19, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -107.25593566894531, + "ttfdDifferenceMs": -107.28883743286133 + }, + { + "pair": 20, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -264.1409635543823, + "ttfdDifferenceMs": -217.5149917602539 + }, + { + "pair": 21, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -220.16394138336182, + "ttfdDifferenceMs": -167.6110029220581 + }, + { + "pair": 22, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -122.56395816802979, + "ttfdDifferenceMs": -117.94602870941162 + }, + { + "pair": 23, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -115.8210039138794, + "ttfdDifferenceMs": -106.27603530883789 + }, + { + "pair": 24, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -340.09993076324463, + "ttfdDifferenceMs": -301.4949560165405 + }, + { + "pair": 25, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -102.27799415588379, + "ttfdDifferenceMs": -100.04496574401855 + }, + { + "pair": 26, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -124.91905689239502, + "ttfdDifferenceMs": -113.150954246521 + }, + { + "pair": 27, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -117.82705783843994, + "ttfdDifferenceMs": -115.72408676147461 + }, + { + "pair": 28, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -101.64201259613037, + "ttfdDifferenceMs": -99.72894191741943 + }, + { + "pair": 29, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -119.1251277923584, + "ttfdDifferenceMs": -114.63093757629395 + }, + { + "pair": 30, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -115.00692367553711, + "ttfdDifferenceMs": -103.01387310028076 + }, + { + "pair": 31, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -117.91300773620605, + "ttfdDifferenceMs": -121.14500999450684 + }, + { + "pair": 32, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -134.03093814849854, + "ttfdDifferenceMs": -129.54294681549072 + }, + { + "pair": 33, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -254.24695014953613, + "ttfdDifferenceMs": -248.00491333007812 + }, + { + "pair": 34, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -133.9198350906372, + "ttfdDifferenceMs": -130.26189804077148 + }, + { + "pair": 35, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -113.68489265441895, + "ttfdDifferenceMs": -112.21301555633545 + }, + { + "pair": 36, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -735.4429960250854, + "ttfdDifferenceMs": -730.1548719406128 + }, + { + "pair": 37, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": 50.114989280700684, + "ttfdDifferenceMs": 55.33301830291748 + }, + { + "pair": 38, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -243.8681125640869, + "ttfdDifferenceMs": -198.8661289215088 + }, + { + "pair": 39, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -121.25003337860107, + "ttfdDifferenceMs": -118.91007423400879 + }, + { + "pair": 40, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -124.37903881072998, + "ttfdDifferenceMs": -119.06802654266357 + }, + { + "pair": 41, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "400", + "ttfaDifferenceMs": 51.96511745452881, + "ttfdDifferenceMs": 227.2270917892456 + }, + { + "pair": 42, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -274.18994903564453, + "ttfdDifferenceMs": -271.8609571456909 + }, + { + "pair": 43, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -120.51403522491455, + "ttfdDifferenceMs": -118.81899833679199 + }, + { + "pair": 44, + "accepted": false, + "exclusionReasons": [ + "handshake difference >20 ms" + ], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": 76.16996765136719, + "ttfdDifferenceMs": 72.69406318664551 + }, + { + "pair": 45, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -131.0349702835083, + "ttfdDifferenceMs": -116.84799194335938 + }, + { + "pair": 46, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -93.97900104522705, + "ttfdDifferenceMs": -91.16804599761963 + }, + { + "pair": 47, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -115.71896076202393, + "ttfdDifferenceMs": -103.70194911956787 + }, + { + "pair": 48, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -119.05503273010254, + "ttfdDifferenceMs": -124.58598613739014 + }, + { + "pair": 49, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -112.56098747253418, + "ttfdDifferenceMs": -114.7679090499878 + }, + { + "pair": 50, + "accepted": true, + "exclusionReasons": [], + "earlyPostHTTP": "200", + "ttfaDifferenceMs": -140.0458812713623, + "ttfdDifferenceMs": -119.62592601776123 + } + ], + "histograms": { + "TTFA": { + "binEdgesMs": [ + -310.0, + -300.0, + -290.0, + -280.0, + -270.0, + -260.0, + -250.0, + -240.0, + -230.0, + -220.0, + -210.0, + -200.0, + -190.0, + -180.0, + -170.0, + -160.0, + -150.0, + -140.0, + -130.0, + -120.0, + -110.0, + -100.0, + -90.0, + -80.0, + -70.0, + -60.0, + -50.0, + -40.0, + -30.0, + -20.0, + -10.0, + 0.0, + 10.0, + 20.0, + 30.0, + 40.0, + 50.0, + 60.0, + 70.0, + 80.0, + 90.0, + 100.0, + 110.0, + 120.0, + 130.0, + 140.0, + 150.0, + 160.0, + 170.0, + 180.0, + 190.0, + 200.0, + 210.0, + 220.0, + 230.0, + 240.0, + 250.0, + 260.0, + 270.0, + 280.0, + 290.0, + 300.0, + 310.0, + 320.0, + 330.0, + 340.0, + 350.0, + 360.0, + 370.0, + 380.0, + 390.0, + 400.0, + 410.0, + 420.0, + 430.0, + 440.0, + 450.0, + 460.0, + 470.0, + 480.0, + 490.0, + 500.0, + 510.0, + 520.0, + 530.0, + 540.0, + 550.0, + 560.0, + 570.0, + 580.0, + 590.0, + 600.0, + 610.0, + 620.0, + 630.0, + 640.0, + 650.0, + 660.0, + 670.0, + 680.0, + 690.0, + 700.0, + 710.0, + 720.0, + 730.0, + 740.0, + 750.0, + 760.0, + 770.0, + 780.0, + 790.0, + 800.0, + 810.0, + 820.0, + 830.0, + 840.0, + 850.0, + 860.0, + 870.0, + 880.0, + 890.0, + 900.0, + 910.0, + 920.0, + 930.0, + 940.0, + 950.0, + 960.0, + 970.0, + 980.0, + 990.0, + 1000.0, + 1010.0, + 1020.0, + 1030.0, + 1040.0, + 1050.0, + 1060.0, + 1070.0, + 1080.0, + 1090.0, + 1100.0, + 1110.0, + 1120.0, + 1130.0, + 1140.0, + 1150.0, + 1160.0, + 1170.0, + 1180.0, + 1190.0, + 1200.0, + 1210.0, + 1220.0, + 1230.0, + 1240.0, + 1250.0, + 1260.0, + 1270.0, + 1280.0, + 1290.0, + 1300.0, + 1310.0, + 1320.0, + 1330.0, + 1340.0, + 1350.0, + 1360.0, + 1370.0, + 1380.0, + 1390.0, + 1400.0, + 1410.0, + 1420.0, + 1430.0, + 1440.0, + 1450.0, + 1460.0 + ], + "pairCounts": [ + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 5, + 5, + 13, + 4, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + "TTFD": { + "binEdgesMs": [ + -260.0, + -250.0, + -240.0, + -230.0, + -220.0, + -210.0, + -200.0, + -190.0, + -180.0, + -170.0, + -160.0, + -150.0, + -140.0, + -130.0, + -120.0, + -110.0, + -100.0, + -90.0, + -80.0, + -70.0, + -60.0, + -50.0, + -40.0, + -30.0, + -20.0, + -10.0, + 0.0, + 10.0, + 20.0, + 30.0, + 40.0, + 50.0, + 60.0, + 70.0, + 80.0, + 90.0, + 100.0, + 110.0, + 120.0, + 130.0, + 140.0, + 150.0, + 160.0, + 170.0, + 180.0, + 190.0, + 200.0, + 210.0, + 220.0, + 230.0, + 240.0, + 250.0, + 260.0, + 270.0, + 280.0, + 290.0, + 300.0, + 310.0, + 320.0, + 330.0, + 340.0, + 350.0, + 360.0, + 370.0, + 380.0, + 390.0, + 400.0, + 410.0, + 420.0, + 430.0, + 440.0, + 450.0, + 460.0, + 470.0, + 480.0, + 490.0, + 500.0, + 510.0, + 520.0, + 530.0, + 540.0, + 550.0, + 560.0, + 570.0, + 580.0, + 590.0, + 600.0, + 610.0, + 620.0, + 630.0, + 640.0, + 650.0, + 660.0, + 670.0, + 680.0, + 690.0, + 700.0, + 710.0, + 720.0, + 730.0, + 740.0, + 750.0, + 760.0, + 770.0, + 780.0, + 790.0, + 800.0, + 810.0, + 820.0, + 830.0, + 840.0, + 850.0, + 860.0, + 870.0, + 880.0, + 890.0, + 900.0, + 910.0, + 920.0, + 930.0, + 940.0, + 950.0, + 960.0, + 970.0, + 980.0, + 990.0, + 1000.0, + 1010.0, + 1020.0, + 1030.0, + 1040.0, + 1050.0, + 1060.0, + 1070.0, + 1080.0, + 1090.0, + 1100.0, + 1110.0, + 1120.0, + 1130.0, + 1140.0, + 1150.0, + 1160.0, + 1170.0, + 1180.0, + 1190.0, + 1200.0, + 1210.0, + 1220.0, + 1230.0, + 1240.0, + 1250.0, + 1260.0, + 1270.0, + 1280.0, + 1290.0, + 1300.0, + 1310.0, + 1320.0, + 1330.0, + 1340.0, + 1350.0, + 1360.0, + 1370.0, + 1380.0, + 1390.0, + 1400.0, + 1410.0, + 1420.0 + ], + "pairCounts": [ + 0, + 0, + 0, + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 2, + 4, + 14, + 6, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + }, + "acceptedPairs": 34, + "includedEarlyPost400Pairs": 0, + "earlyPost400Pairs": 3, + "sharedHistogramAxes": true, + "matplotlibVersion": "3.10.9", + "generatorSHA256": "b765d59d61723c27082f9ce1a4db0d904141b82b945b88d70ba4a9f5fefb09ff", + "selectionGeneratorSHA256": "8b88689d7d9df75ed0c03f09bfc27e5d046078abf56308683bb38ce4d4a35fcc" +} diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/pair-differences.csv b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/pair-differences.csv new file mode 100644 index 0000000..f534190 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/pair-differences.csv @@ -0,0 +1,51 @@ +pair,accepted,exclusionReasons,earlyPostHTTP,ttfaDifferenceMs,ttfdDifferenceMs +1,True,[],200,-100.03495216369629,-97.15497493743896 +2,False,['handshake difference >20 ms'],200,-243.25692653656006,-240.89586734771729 +3,False,['handshake difference >20 ms'],200,-214.37203884124756,-195.64199447631836 +4,True,[],200,-270.10810375213623,-219.51699256896973 +5,True,[],200,-118.16704273223877,-107.49304294586182 +6,False,['handshake difference >20 ms'],200,21.057963371276855,31.91399574279785 +7,True,[],200,-134.3669891357422,-133.41295719146729 +8,False,['handshake difference >20 ms'],200,-66.05899333953857,-98.2520580291748 +9,False,['handshake difference >20 ms'],200,-278.1250476837158,-252.87103652954102 +10,False,['handshake difference >20 ms'],200,-422.4200248718262,-425.44591426849365 +11,True,[],200,-119.62199211120605,-117.3640489578247 +12,True,[],200,-108.85512828826904,-108.69300365447998 +13,True,[],200,-118.29710006713867,-118.55697631835938 +14,False,['handshake difference >20 ms'],400,483.2669496536255,484.5559597015381 +15,True,[],200,-111.55104637145996,-110.10110378265381 +16,True,[],200,-134.2710256576538,-128.1599998474121 +17,False,['handshake difference >20 ms'],200,69.96703147888184,74.32305812835693 +18,True,[],200,-99.79605674743652,-94.95997428894043 +19,True,[],200,-107.25593566894531,-107.28883743286133 +20,True,[],200,-264.1409635543823,-217.5149917602539 +21,True,[],200,-220.16394138336182,-167.6110029220581 +22,True,[],200,-122.56395816802979,-117.94602870941162 +23,True,[],200,-115.8210039138794,-106.27603530883789 +24,False,['handshake difference >20 ms'],200,-340.09993076324463,-301.4949560165405 +25,False,['handshake difference >20 ms'],200,-102.27799415588379,-100.04496574401855 +26,True,[],200,-124.91905689239502,-113.150954246521 +27,True,[],200,-117.82705783843994,-115.72408676147461 +28,True,[],200,-101.64201259613037,-99.72894191741943 +29,True,[],200,-119.1251277923584,-114.63093757629395 +30,True,[],200,-115.00692367553711,-103.01387310028076 +31,True,[],200,-117.91300773620605,-121.14500999450684 +32,True,[],200,-134.03093814849854,-129.54294681549072 +33,False,['handshake difference >20 ms'],200,-254.24695014953613,-248.00491333007812 +34,True,[],200,-133.9198350906372,-130.26189804077148 +35,True,[],200,-113.68489265441895,-112.21301555633545 +36,False,['handshake difference >20 ms'],200,-735.4429960250854,-730.1548719406128 +37,False,['handshake difference >20 ms'],400,50.114989280700684,55.33301830291748 +38,True,[],200,-243.8681125640869,-198.8661289215088 +39,True,[],200,-121.25003337860107,-118.91007423400879 +40,True,[],200,-124.37903881072998,-119.06802654266357 +41,False,['handshake difference >20 ms'],400,51.96511745452881,227.2270917892456 +42,False,['handshake difference >20 ms'],200,-274.18994903564453,-271.8609571456909 +43,True,[],200,-120.51403522491455,-118.81899833679199 +44,False,['handshake difference >20 ms'],200,76.16996765136719,72.69406318664551 +45,True,[],200,-131.0349702835083,-116.84799194335938 +46,True,[],200,-93.97900104522705,-91.16804599761963 +47,True,[],200,-115.71896076202393,-103.70194911956787 +48,True,[],200,-119.05503273010254,-124.58598613739014 +49,True,[],200,-112.56098747253418,-114.7679090499878 +50,True,[],200,-140.0458812713623,-119.62592601776123 diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfa-on-minus-off.png b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfa-on-minus-off.png new file mode 100644 index 0000000..f761cae Binary files /dev/null and b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfa-on-minus-off.png differ diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfa-on-minus-off.svg b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfa-on-minus-off.svg new file mode 100644 index 0000000..fccef67 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfa-on-minus-off.svg @@ -0,0 +1,4439 @@ + + + + + + + + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfd-on-minus-off.png b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfd-on-minus-off.png new file mode 100644 index 0000000..e91d505 Binary files /dev/null and b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfd-on-minus-off.png differ diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfd-on-minus-off.svg b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfd-on-minus-off.svg new file mode 100644 index 0000000..2989603 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/delay-50ms/histograms/ttfd-on-minus-off.svg @@ -0,0 +1,4317 @@ + + + + + + + + image/svg+xml + + + Matplotlib v3.10.9, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/report.md b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/report.md new file mode 100644 index 0000000..eacd53b --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/report.md @@ -0,0 +1,93 @@ +# Lens benchmark — Omnient delay sweep including early POST HTTP 400 pairs + +## Experiment specification + +[Google net_http: Lens Latency Mimic & Shutter Benchmark Mode](https://github.com/google/net_http/blob/main/webchannel/objc/demo/WebChanneliOSDemo/DESIGN.md#d-lens-latency-mimic--shutter-benchmark-mode). + +## Environment + +| Field | Recorded value | +|---|---| +| Device | iPhone SE (3rd generation), hardware model `iPhone14,6` | +| iOS | 26.3.1, from XCTest | +| Network switches | Not independently recorded for this run | +| Endpoint | `https://webchannel.sandbox.google.com/staging/channel/lens` | +| Mac | macOS 26.5.1; Xcode 26.6; Build version 17F113 | +| Source | Git HEAD `21eee148acc4a2bcb9856adc5ba9d7463a33f84d` plus uncommitted benchmark instrumentation | +| Test period | 0 ms: 2026-10-12 14:10–14:17 JST, from artifact timestamps; 50 ms: 2026-10-12 14:17–14:52 JST, from artifact timestamps; 100 ms: 2026-10-12 14:56–15:03 JST, from artifact timestamps; 200 ms: 2026-10-12 15:03–15:27 JST, from artifact timestamps | +| Test execution | 50 alternating OFF/ON pairs per delay; 0, 50, 100, 200 ms in that order; a separate `xcodebuild test-without-building` invocation for each trial | +| Test result | 400/400 completed trials; 400/400 passed fresh-transport verification | +| Transport requirement | First transport: `h2`, a new TCP/TLS connection on the handshake GET/POST or early POST; if the GET reused the early POST connection, matching address and local port | + +## Procedure and parameters + +1. Build the XCTest bundle once, then launch exactly one cold-trial test method per `xcodebuild test-without-building` invocation. Keep parallel testing disabled and retain each `.xcresult` bundle. +2. Run Omnient. Each pair runs `fastHandshake2=false` (OFF), then `fastHandshake2=true` (ON). The XCTest creates a new `WebChannelService` and WebChannel client per trial. +3. Use `imageSizeKb=150`, `detectionDelayMs=50`, `initialMessageDelayMs=0, 50, 100, 200` (separate settings), `enableBinaryEncoding=true`, `sendRawJson=true`, `fastHandshake=false`, `nonBlockingSend=false`, `blockingHandshake=false`, `forceLongPolling=false`, and `detectBufferingProxy=false`. The 150 KB value is metadata; no 150 KB image is uploaded. +4. Schedule M1 Sticky Cluster Info at the configured delay after `connect()` returns. Omnient sends M3 Prefetch immediately after M1. M4 Final Capture follows preliminary detections. Each trial has a 60-second completion deadline. +5. Record Handshake (`webChannelOpened` minus connect), TTFA (M3 send to stream ACK), TTFD (M3 send to preliminary detections), and M4 RTT (M4 send to interaction response). +6. Include a pair in the histograms only if both runs completed, both trials meet the transport requirement, and the absolute ON/OFF handshake-duration difference is ≤20 ms. Calculate that difference from full-precision values. Keep every trial in the raw attachments and audit. + +7. Include pairs whose ON initial early POST returned HTTP 400, including trials completed after retry. The completion, fresh-transport, and 20 ms handshake-difference conditions still apply. An unresolved early POST status remains excluded; a verified absence of an early POST is eligible. No additional measurements were run. +8. Plot paired differences as ON minus OFF, using full-precision measurements. Negative values mean ON was faster. All four delay settings use the same horizontal range and bin edges for each metric. Histograms use 10 ms bins aligned to multiples of 10 ms, pair counts on the vertical axis, and all eligible values without clipping in the main plot. When the full range exceeds 600 ms, an inset magnifies -300 to 300 ms and labels the number of pairs in that range; no additional pairs are excluded. TTFA and TTFD are measured from M3 send, so the configured M1 delay is not added to either metric. + +## Pair inclusion and early POST rejection + +The HTTP 400 rate uses all 50 attempted pairs at each delay as the denominator, including pairs that fail other histogram inclusion conditions. + +| M1 delay (ms) | Measured pairs | ON early POST HTTP 400 | 400 pair rate | No early POST | Unresolved status | Histogram pairs | +|---:|---:|---:|---:|---:|---:|---:| +| 0 | 50 | 29 | 58.0% | 0 | 0 | 35 | +| 50 | 50 | 3 | 6.0% | 0 | 0 | 34 | +| 100 | 50 | 0 | 0.0% | 0 | 0 | 37 | +| 200 | 50 | 4 | 8.0% | 43 | 0 | 38 | + +| M1 delay (ms) | HTTP 400 pairs included in histograms | +|---:|---:| +| 0 | 18 | +| 50 | 0 | +| 100 | 0 | +| 200 | 0 | + +## M1 delay: 0 ms + +### TTFA: ON minus OFF + +![TTFA paired difference histogram, delay 0 ms](delay-0ms/histograms/ttfa-on-minus-off.png) + +### TTFD: ON minus OFF + +![TTFD paired difference histogram, delay 0 ms](delay-0ms/histograms/ttfd-on-minus-off.png) + + +## M1 delay: 50 ms + +### TTFA: ON minus OFF + +![TTFA paired difference histogram, delay 50 ms](delay-50ms/histograms/ttfa-on-minus-off.png) + +### TTFD: ON minus OFF + +![TTFD paired difference histogram, delay 50 ms](delay-50ms/histograms/ttfd-on-minus-off.png) + + +## M1 delay: 100 ms + +### TTFA: ON minus OFF + +![TTFA paired difference histogram, delay 100 ms](delay-100ms/histograms/ttfa-on-minus-off.png) + +### TTFD: ON minus OFF + +![TTFD paired difference histogram, delay 100 ms](delay-100ms/histograms/ttfd-on-minus-off.png) + + +## M1 delay: 200 ms + +### TTFA: ON minus OFF + +![TTFA paired difference histogram, delay 200 ms](delay-200ms/histograms/ttfa-on-minus-off.png) + +### TTFD: ON minus OFF + +![TTFD paired difference histogram, delay 200 ms](delay-200ms/histograms/ttfd-on-minus-off.png) diff --git a/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/run-metadata.json b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/run-metadata.json new file mode 100644 index 0000000..ea1b7d7 --- /dev/null +++ b/webchannel/benchmark/lens/2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/run-metadata.json @@ -0,0 +1,85 @@ +{ + "sourceMeasurementDirectory": "..", + "includeEarlyPost400": true, + "originalMeasurementMetadata": { + "delaysMs": [ + 0, + 50, + 100, + 200 + ], + "pairsPerDelay": 50, + "handshakeThresholdMs": 20.0, + "difference": "ON minus OFF", + "binWidthMs": 10, + "generatorSHA256": "32dcb3ea9ae120ace5547096a1871ace13800c59af06d7afd241fd9b86f4cdb4", + "infrastructureAttempts": [ + "infrastructure-attempts/delay-200ms-pair-30/README.md", + "infrastructure-attempts/delay-50ms-pair-27/README.md", + "infrastructure-attempts/delay-50ms-pair-27-reconnect/README.md" + ], + "runs": { + "0": { + "pairCount": 50, + "scenarios": [ + "omnient" + ], + "reportFormat": "histogram", + "runDate": "2026-10-12", + "testPeriod": "2026-10-12 14:10\u201314:17 JST, from artifact timestamps", + "macOS": "26.5.1", + "xcode": "Xcode 26.6; Build version 17F113", + "sourceGitHead": "21eee148acc4a2bcb9856adc5ba9d7463a33f84d", + "networkSwitches": "Not independently recorded for this run", + "handshakeThresholdMs": 20.0, + "initialMessageDelayMs": 0 + }, + "50": { + "pairCount": 50, + "scenarios": [ + "omnient" + ], + "reportFormat": "histogram", + "runDate": "2026-10-12", + "testPeriod": "2026-10-12 14:17\u201314:52 JST, from artifact timestamps", + "macOS": "26.5.1", + "xcode": "Xcode 26.6; Build version 17F113", + "sourceGitHead": "21eee148acc4a2bcb9856adc5ba9d7463a33f84d", + "networkSwitches": "Not independently recorded for this run", + "handshakeThresholdMs": 20.0, + "initialMessageDelayMs": 50 + }, + "100": { + "pairCount": 50, + "scenarios": [ + "omnient" + ], + "reportFormat": "histogram", + "runDate": "2026-10-12", + "testPeriod": "2026-10-12 14:56\u201315:03 JST, from artifact timestamps", + "macOS": "26.5.1", + "xcode": "Xcode 26.6; Build version 17F113", + "sourceGitHead": "21eee148acc4a2bcb9856adc5ba9d7463a33f84d", + "networkSwitches": "Not independently recorded for this run", + "handshakeThresholdMs": 20.0, + "initialMessageDelayMs": 100 + }, + "200": { + "pairCount": 50, + "scenarios": [ + "omnient" + ], + "reportFormat": "histogram", + "runDate": "2026-10-12", + "testPeriod": "2026-10-12 15:03\u201315:27 JST, from artifact timestamps", + "macOS": "26.5.1", + "xcode": "Xcode 26.6; Build version 17F113", + "sourceGitHead": "21eee148acc4a2bcb9856adc5ba9d7463a33f84d", + "networkSwitches": "Not independently recorded for this run", + "handshakeThresholdMs": 20.0, + "initialMessageDelayMs": 200 + } + } + }, + "generatorSHA256": "b765d59d61723c27082f9ce1a4db0d904141b82b945b88d70ba4a9f5fefb09ff" +} diff --git a/webchannel/benchmark/lens/AGENTS.md b/webchannel/benchmark/lens/AGENTS.md index 5b62ac2..ed0fa5c 100644 --- a/webchannel/benchmark/lens/AGENTS.md +++ b/webchannel/benchmark/lens/AGENTS.md @@ -14,3 +14,4 @@ When changing or generating files under this directory, follow [README.md](READM - Delay-sweep reports replace raw measurement tables with TTFA and TTFD histograms of paired ON-minus-OFF differences, with negative values meaning ON is faster. Exclude pairs with ON initial early POST HTTP 400, unresolved early POST status, or failed ordinary inclusion conditions. A verified absence of an early POST is eligible. Do not replace excluded pairs. Show the 400-pair count/rate over all 50 attempted pairs and histogram sample counts. This user-requested histogram format and 400 rate override the default raw-table and no-summary-statistics rules for this experiment. - Render histograms deterministically from retained evidence, with 10 ms bins and common bin edges across the four delays for each metric. Retain full-precision paired differences, selection decisions, and bin counts in `histograms/`; link them from `artifacts.md`. Do not alter earlier reports when adding a new report mode. - Finish runner edits before starting measurements; do not modify a shell script while it is executing. Resume recorded trials with `LENS_RESUME=1` after an infrastructure interruption. Preserve install/launch failures separately and never rerun completed pairs merely because they fail histogram inclusion. +- When asked for a histogram report including early POST HTTP 400 pairs, use `summarize-delay-sweep.py --include-early-post-400` to add `including-early-post-400/report.md` from the same retained measurements. Keep completion, fresh-transport, handshake-threshold, and unresolved-status rules. Preserve the original report and charts. Retain the inclusive selection decisions and histogram evidence separately, and state how many HTTP 400 pairs satisfy the remaining rules and are included. diff --git a/webchannel/benchmark/lens/README.md b/webchannel/benchmark/lens/README.md index 849f7ce..49e74e8 100644 --- a/webchannel/benchmark/lens/README.md +++ b/webchannel/benchmark/lens/README.md @@ -26,6 +26,8 @@ Instructions for agents editing the runner, summarizer, or reports are in [AGENT The [2026-10-12 Omnient delay-sweep report](2026-10-12_14-09_omnient-delay-sweep_JST/report.md) contains 50 pairs at each of 0, 50, 100, and 200 ms. Its [connection reuse audit](2026-10-12_14-09_omnient-delay-sweep_JST/connection-reuse-audit.md) and [artifacts](2026-10-12_14-09_omnient-delay-sweep_JST/artifacts.md) retain the measurement and infrastructure-interruption evidence. +An [additional report including early POST HTTP 400 pairs](2026-10-12_14-09_omnient-delay-sweep_JST/including-early-post-400/report.md) reuses those measurements and preserves the original report. + ## Omnient initial-message delay sweep The Omnient sweep runs 50 OFF/ON pairs at each of 0, 50, 100, and 200 ms, in that order, with binary encoding enabled and a new process per trial. Build for testing once as above, then run: @@ -37,6 +39,8 @@ MPLCONFIGDIR=/tmp/lens-matplotlib python3 -B webchannel/benchmark/lens/summarize The summarizer requires matplotlib. For a single-delay Omnient histogram report, use `summarize-cold-benchmark.py OUTPUT_DIR 50 --scenarios omnient --report-format histogram --handshake-threshold-ms 20`. The normal raw-table mode remains available. Set `LENS_SCENARIOS=Omnient` to select only Omnient in the cold-trial runner; its default runs both scenarios. +To add an inclusive report from the same sweep, run `summarize-delay-sweep.py OUTPUT_DIR --pairs 50 --handshake-threshold-ms 20 --include-early-post-400`. This writes `including-early-post-400/report.md`, chart PNG/SVG files, paired differences, selection decisions, and bin counts without regenerating the original report. Only the HTTP 400 exclusion is disabled; the other inclusion rules remain in force. The report separately records how many HTTP 400 pairs satisfy those rules and enter the histograms. + The sweep's `report.md` embeds TTFA and TTFD histograms of paired ON-minus-OFF differences, so negative values mean ON is faster. Both trials must complete, have verified fresh HTTP/2 transport, and differ in handshake duration by at most 20 ms. Pairs with an ON initial early POST HTTP 400 or an unresolved status are excluded. A verified absence of an early POST is eligible. Exclusions are not replaced. The report records the 400-pair fraction over all 50 attempted pairs at each delay, unresolved/unsent early POST counts, and histogram sample counts. Each metric uses common 10 ms bin edges across the four delays and retains every eligible value. Each `delay-Nms/` subdirectory retains `logs/`, `xcresults/`, `attachments/`, `connection-reuse-audit.md`, and `artifacts.md`. `histograms/` contains PNG/SVG charts, full-precision paired differences, per-pair selection decisions, and exact bin counts. The top-level artifact and audit documents link the per-delay evidence. Trust/preflight checks and interrupted earlier attempts are excluded from the sweep data. The runner refuses to overwrite trial files and stops on test-launch or attachment-export failures. diff --git a/webchannel/benchmark/lens/summarize-cold-benchmark.py b/webchannel/benchmark/lens/summarize-cold-benchmark.py index 9d6f5b0..d506d34 100644 --- a/webchannel/benchmark/lens/summarize-cold-benchmark.py +++ b/webchannel/benchmark/lens/summarize-cold-benchmark.py @@ -101,6 +101,15 @@ def pair_reasons(off, on, threshold_ms): return reasons +def histogram_pair_reasons(off, on, threshold_ms, post_status, include_early_post_400=False): + reasons = pair_reasons(off, on, threshold_ms) + if has_early_post_400(post_status) and not include_early_post_400: + reasons.append("ON initial early POST HTTP 400") + elif post_status == "unknown": + reasons.append("ON initial early POST status unresolved") + return reasons + + def plot_histogram(values, path, metric, delay_ms, bin_width=10, bounds=None): import matplotlib matplotlib.use("Agg") @@ -321,10 +330,7 @@ def main(): reasons = pair_reasons(off, on, threshold_ms) if report_format == "histogram": post_status = early_post_statuses[scenario, pair, "on"] - if has_early_post_400(post_status): - reasons.append("ON initial early POST HTTP 400") - elif post_status == "unknown": - reasons.append("ON initial early POST status unresolved") + reasons = histogram_pair_reasons(off, on, threshold_ms, post_status) record = {"pair": pair, "accepted": not reasons, "exclusionReasons": reasons, "earlyPostHTTP": post_status, "ttfaDifferenceMs": None, "ttfdDifferenceMs": None} if off and on: diff --git a/webchannel/benchmark/lens/summarize-delay-sweep.py b/webchannel/benchmark/lens/summarize-delay-sweep.py index 51fba3d..e279f16 100644 --- a/webchannel/benchmark/lens/summarize-delay-sweep.py +++ b/webchannel/benchmark/lens/summarize-delay-sweep.py @@ -2,6 +2,7 @@ """Generate an Omnient delay-sweep report from retained cold-trial evidence.""" import argparse +import csv import hashlib import importlib.util import json @@ -11,12 +12,93 @@ from pathlib import Path +def generate_including_400(root, args, summary): + """Add a report variant while preserving the original report and evidence.""" + destination = root / "including-early-post-400" + original_metadata = json.loads((root / "run-metadata.json").read_text()) + if original_metadata["pairsPerDelay"] != args.pairs or original_metadata["handshakeThresholdMs"] != args.handshake_threshold_ms: + raise ValueError("Inclusive report must use the original pair count and handshake threshold") + datasets = {} + for delay in (0, 50, 100, 200): + run = root / f"delay-{delay}ms" + data = {"initialMessageDelayMs": delay, "pairCount": args.pairs, + "handshakeThresholdMs": args.handshake_threshold_ms, "includeEarlyPost400": True, + "difference": "ON minus OFF", "binWidthMs": 10, "pairs": [], "histograms": {}} + for pair in range(1, args.pairs + 1): + off = summary.load_trial(run, "omnient", pair, "off") + on = summary.load_trial(run, "omnient", pair, "on") + for setting, row in (("off", off), ("on", on)): + if row is None: + raise ValueError(f"Missing source trial: {delay} ms, pair {pair}, {setting}") + if row.get("initialMessageDelayMs") != delay or row.get("fastHandshake2") != (setting == "on"): + raise ValueError("Source trial settings do not match the sweep") + status = summary.early_post_status(run, "omnient", pair, "on") + reasons = summary.histogram_pair_reasons(off, on, args.handshake_threshold_ms, status, include_early_post_400=True) + record = {"pair": pair, "accepted": not reasons, "exclusionReasons": reasons, + "earlyPostHTTP": status, "ttfaDifferenceMs": None, "ttfdDifferenceMs": None} + for key, metric in (("ttfaDifferenceMs", "ttfaMs"), ("ttfdDifferenceMs", "ttfdMs")): + if off.get(metric) is not None and on.get(metric) is not None: + record[key] = on[metric] - off[metric] + data["pairs"].append(record) + data["acceptedPairs"] = sum(record["accepted"] for record in data["pairs"]) + data["includedEarlyPost400Pairs"] = sum(record["accepted"] and summary.has_early_post_400(record["earlyPostHTTP"]) for record in data["pairs"]) + data["earlyPost400Pairs"] = sum(summary.has_early_post_400(record["earlyPostHTTP"]) for record in data["pairs"]) + datasets[delay] = data + + for metric, key in (("TTFA", "ttfaDifferenceMs"), ("TTFD", "ttfdDifferenceMs")): + pooled = [record[key] for data in datasets.values() for record in data["pairs"] if record["accepted"]] + bounds = (min(pooled + [0]), max(pooled + [0])) + for delay, data in datasets.items(): + values = [record[key] for record in data["pairs"] if record["accepted"]] + path = destination / f"delay-{delay}ms/histograms/{metric.lower()}-on-minus-off.png" + data["histograms"][metric] = summary.plot_histogram(values, path, metric, delay, bounds=bounds) + + import matplotlib + artifacts = ["# Inclusive histogram artifacts", "", "[Report](report.md) · [Original measurement artifacts](../artifacts.md) · [Connection reuse audit](../connection-reuse-audit.md)", "", + "This report reuses the original measurements and HTTP logs. Only the early POST HTTP 400 exclusion is disabled. The original report and its plots are preserved.", "", + "| M1 delay (ms) | Raw evidence | Selection decisions and bins | Paired differences |", "|---:|---|---|---|"] + for delay, data in datasets.items(): + folder = destination / f"delay-{delay}ms/histograms" + data.update(sharedHistogramAxes=True, matplotlibVersion=matplotlib.__version__, + generatorSHA256=hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), + selectionGeneratorSHA256=hashlib.sha256(Path(summary.__file__).read_bytes()).hexdigest()) + (folder / "histogram-data.json").write_text(json.dumps(data, indent=2) + "\n") + with (folder / "pair-differences.csv").open("w", newline="") as stream: + writer = csv.DictWriter(stream, fieldnames=list(data["pairs"][0])) + writer.writeheader() + writer.writerows(data["pairs"]) + manifest_path = root / f"delay-{delay}ms/histograms/input-manifest.json" + manifest = json.loads(manifest_path.read_text()) + for item in manifest: + source = root / f"delay-{delay}ms" / item["path"] + if hashlib.sha256(source.read_bytes()).hexdigest() != item["sha256"]: + raise ValueError(f"Source evidence changed: {source}") + artifacts.append(f"| {delay} | [Artifacts](../delay-{delay}ms/artifacts.md) · [Input hashes](../delay-{delay}ms/histograms/input-manifest.json) | [JSON](delay-{delay}ms/histograms/histogram-data.json) | [CSV](delay-{delay}ms/histograms/pair-differences.csv) |") + report = (root / "report.md").read_text() + report = report.replace("# Lens benchmark — Omnient initial-message delay sweep", "# Lens benchmark — Omnient delay sweep including early POST HTTP 400 pairs", 1) + report = re.sub(r"^7\. .*", f"7. Include pairs whose ON initial early POST returned HTTP 400, including trials completed after retry. The completion, fresh-transport, and {args.handshake_threshold_ms:g} ms handshake-difference conditions still apply. An unresolved early POST status remains excluded; a verified absence of an early POST is eligible. No additional measurements were run.", report, count=1, flags=re.M) + for delay, data in datasets.items(): + report = re.sub(rf"^(\| {delay} \| .*\| )\d+( \|)$", rf"\g<1>{data['acceptedPairs']}\g<2>", report, count=1, flags=re.M) + marker = "\n## M1 delay: 0 ms" + inclusion = ["", "| M1 delay (ms) | HTTP 400 pairs included in histograms |", "|---:|---:|"] + inclusion.extend(f"| {delay} | {data['includedEarlyPost400Pairs']} |" for delay, data in datasets.items()) + report = report.replace(marker, "\n".join(inclusion) + "\n" + marker, 1) + (destination / "report.md").write_text(report) + (destination / "artifacts.md").write_text("\n".join(artifacts) + "\n") + metadata = {"sourceMeasurementDirectory": "..", "includeEarlyPost400": True, "originalMeasurementMetadata": original_metadata, + "generatorSHA256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest()} + (destination / "run-metadata.json").write_text(json.dumps(metadata, indent=2) + "\n") + for delay, data in datasets.items(): + print(f"{delay} ms: histogram n={data['acceptedPairs']}, including {data['includedEarlyPost400Pairs']} HTTP 400 pairs") + + def main(): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("output_dir", type=Path) parser.add_argument("--pairs", type=int, default=50) parser.add_argument("--handshake-threshold-ms", type=float, default=20) parser.add_argument("--network-switches") + parser.add_argument("--include-early-post-400", action="store_true", help="Add an inclusive report under including-early-post-400/ without regenerating the original") args = parser.parse_args() root = args.output_dir delays = (0, 50, 100, 200) @@ -24,6 +106,9 @@ def main(): spec = importlib.util.spec_from_file_location("cold_summary", summarizer_path) summary = importlib.util.module_from_spec(spec) spec.loader.exec_module(summary) + if args.include_early_post_400: + generate_including_400(root, args, summary) + return datasets = {} metadata = {} for delay in delays: