Search: typing p95 1.2 s at 10k Logs #1425
Open
opened 2026-10-08 00:34:02 +00:00 by kayg
·
44 comments
No Branch/Tag specified
dev
wip/cards2-1083
wip/cards-1083
wip/canvas-visual
wip/canvasvis2-976
wip/calhdr-1112
wip/blocks-1125
wip/allday-1107
wip/agenda-1086
wip/trayicons2-1095
wip/trayicons-1095
wip/sidebar3-1094
wip/previewcard-1098
wip/palette2-1123
wip/palette-1093
wip/nlpchip-1127
wip/mchrome-1084
wip/mailghost2-1094
wip/mailghost-1094
wip/kbpreview2-1118
wip/kbpreview-1118
wip/kanban-1092
wip/editreg-1132
wip/editorrail3-1113
wip/editorrail2-1113
wip/editorrail-1113
wip/draw4-1101
wip/draw3-1101
wip/draw2-1101
wip/draw-1101
wip/delete-1119
job/txentry-1198
job/rev1586
job/rev2-money-ident
job/rev2-webperf
job/morph-1104
job/previewcard-1098
job/importhang-1121
job/kanban-1092
job/merge-round-7b
job/merge-round-7c
job/calcards-1115
job/collabrev3-1197
job/e2e-b-1071
job/agenda-1086
job/agenda-decks
job/allday-1107
job/browserfix
job/calact9
job/adv7c-1105
wip/collabrev3-1197
wip/calcards-1115
wip/calact9
wip/calact10
wip/browserfix
wip/agenda-decks
wip/adv7c-1105
wip/txentry-1198
wip/rev2-webperf
wip/rev2-money-ident
wip/rev1586
wip/morph-1104
wip/merge-round-7c5
wip/merge-round-7c4
wip/merge-round-7c3
wip/merge-round-7c2
wip/merge-round-7c
wip/importhang-1121
wip/fix1586
wip/e2e-b2-1071
wip/e2e-b-1071
job/noncanon-1618
wip/noncanon-1618
job/edrevert-1616
job/partial-1605
wip/partial-1605
job/calact6
job/cold-1586
job/perfvm-1587
wip/cold-1586
job/cal404-1581
wip/calact6
wip/cal404-1581
job/dname-1584
wip/dname-1584
job/merge41
wip/merge41b
wip/merge41
job/rev1573c
job/hscroll-1579
wip/rev1573c
job/rev1573b
job/rev1573
wip/fix1573
wip/hscroll2
wip/hscroll-1579
job/rev1574
wip/fix1574
wip/rev1574
job/startup-1573c
job/merge40
wip/startup-1573d
wip/startup-1573c
job/calact5
wip/remtext2
wip/merge40c
wip/merge40b
wip/merge40
job/calact4
job/startup-1573
job/calprof
wip/calprof
wip/startup-1573
job/fs1575
job/fix1570
job/calact3
job/rec1540c
wip/fix1570
job/rev1570-review
wip/calact3
job/calact2
wip/calact2
job/calcold-1560
wip/calcold-1560
wip/rec1540c
job/fix1569
wip/fix1569
job/calact-1557
wip/calact-1557
job/remtext-1568
wip/remtext-1568
job/fix1566
wip/fix1566
job/rec1540b
job/reconcile-1540
job/money2rev
wip/money2rev
job/merge39
wip/merge39
wip/reconcile-1540
job/tabswitch2
job/merge38
wip/merge38
job/autherr-1553
wip/autherr-1553
job/money-688
wip/money688rev3
wip/money688rev2
wip/money688rev
wip/money688l
wip/money688k
wip/money688j
wip/money688i
wip/money688h
wip/money688g
wip/money688f
wip/money688e
wip/money688d
wip/money688c
wip/money688b
wip/money-688
wip/tabswitch2
wip/merge37
job/merge37
job/jobnames-1538
wip/jobnames-1538
job/tabcomp-perf
job/calscript-1492
wip/tabcomp-perf
wip/calscript-1492
job/mailbody-1533
wip/mailbody-1533
job/intlfmt-1461
job/merge36
wip/intlfmt2
wip/intlfmt-1461
wip/merge36
job/merge35c
job/tagperf-1186
wip/tagrev2
wip/tagrev
wip/tagperf4
wip/tagperf2-1186
wip/tagperf-1186
wip/tagfix5
wip/tagfix3
wip/tagfast2
wip/tagfast
wip/merge35c
job/notesel-1493
wip/notesel2
wip/notesel-1493
job/merge35b
wip/merge35b
wip/m35btriage
wip/m35bratchet
wip/calsel-1491
job/calsel-1491
job/notifread-1387
job/bulkwrite-1393
wip/notifread2
wip/notifread-1387
job/slowsel-1392
wip/bulkwrite-1393
wip/bulkrev4
wip/bulkrev3
wip/bulkrev2
wip/bulkrev
wip/bulkfix4
wip/bulkfix3
wip/bulkfix2
wip/bulkfix
job/mail7-1340
job/bigscroll-1481
job/searchperf-1425
wip/mailrev4
wip/mailrev3
wip/mailrev2
wip/mailrev
wip/mail7f
wip/mail7e
wip/mail7d
wip/searchperf2
wip/searchperf-1425
wip/mail7c
wip/mail7b
wip/mail7-1340
job/photoopen-1367
job/mailsel-1449
wip/bigscroll-1481
wip/slowsel3
wip/slowsel2
wip/slowsel-1392
wip/selroot
job/journaldup
wip/journaldup8
wip/journaldup7
wip/journaldup6
wip/journaldup5
wip/journaldup4
wip/journaldup3
wip/journaldup2
wip/journaldup
wip/jdrev5
wip/jdrev4
wip/jdrev3
wip/jdrev2
wip/jdrev
wip/jdfix9
job/bignote-1349
wip/mailsel-1449
wip/bignote3
wip/bignote2
wip/bignote-1349
job/statusmark-1457
wip/statusmark-1457
wip/photoopen4
wip/photoopen3
wip/photoopen2
wip/photoopen-1367
job/authflash-1473
job/merge35
wip/authflash-1473
job/phototags-1370
wip/phototags-1370
wip/merge35
wip/m35triage
job/tick-1446
wip/tick-1446
job/restartidx-1450
job/exmove-1333
job/coldnote-1451
wip/restartidx-1450
wip/exmove-1333
wip/coldnote-1451
job/undo412-1430
wip/undo412-1430
job/calwrite-1441
job/xcancel-1443
job/calscroll-1362
wip/xcancel-1443
wip/calwrite-1441
job/xsub-1445
wip/calscroll3
wip/calscroll2
wip/calscroll-1362
wip/xsub-1445
job/linkdup-1440
wip/linkdup2
wip/linkdup-1440
wip/tabswitch4
wip/tabswitch3
wip/tabswitch-1233
wip/navrev
job/tabswitch-1233
job/mdpaste-1431
job/taskundo-1433
job/directory-1199
wip/taskundo-1433
job/remind-1432
job/nfd-1411
wip/remind-1432
wip/dirfix4
wip/dirfix3
wip/dirfix2
wip/dirfix-1199
wip/directory-1199-r
wip/directory-1199
job/readerx-1427
wip/readerx-1427
job/scrollfade-1416
job/tipphone-1439
wip/nfd-1411
job/purge-1420
job/notifrow-1414
wip/purge-1420
wip/notifrow-1414
job/slop-1385
wip/slop2
wip/slop-1385
job/tbover-1409
job/qltitle-1408
job/grantlive-1405
job/taskclick-1434
wip/tbover-1409
wip/taskclick-1434
wip/qltitle-1408
job/scrub-1422
job/hotfix35
job/ticks-1361
wip/scrub-1422
job/taskprev-1401
wip/grantlive-1405
job/ghost-1323
wip/ticks3
wip/ticks2
wip/ticks-1361
wip/taskprev-1401
job/bash3-settings
wip/ghost-1323
job/mailmorph-1368
wip/bash3-settings
job/apiaudit-1374
wip/bash3-filesphotos
job/bash3-filesphotos
job/xuser39-1402
job/bash3-money
job/mailhtml-1372
wip/mailhtml2
wip/mailhtml-1372
job/bash3-interop
job/bash3-calendar
wip/bash3-money
wip/bash3-interop
wip/bash3-calendar
wip/mailmorph2
wip/mailmorph-1368
wip/bash3-tasks
job/outro-1391
job/linkpick-1379
job/linkdel-1384
wip/linkpick2
wip/linkpick-1379
wip/linkdel3
wip/linkdel2
wip/linkdel-1384
job/mailrows-1390
wip/mailrows-1390
wip/apiaudit2
wip/apiaudit-1374
job/bash-core
wip/outro-1391
wip/bash-core2
wip/bash-core
job/bash3-notes
job/bash3-tasks
job/merge34
job/notifdel-1363
wip/merge34
wip/notifdel2
wip/notifdel-1363
job/wklink-1371
wip/wklink-1371
job/searchbar-1360
wip/searchbar2
wip/searchbar-1360
job/merge33-1122
wip/merge33c
wip/merge33b
wip/merge33-1122
job/bash-security
job/mailglass-1373
wip/bash-security2
wip/bash-security
wip/mailglass-1373
job/instaudit-1369
wip/instaudit-1369
job/tabstorm-1338
wip/tabstorm2
wip/tabstorm-1338
wip/bash-files2
wip/bash-files
job/bash-files
job/bash-money
job/editfuzz-1335
wip/bash-money
wip/moneyrev
job/tasksperf-1286
wip/tasksperf3
wip/tasksperf2
wip/tasksperf-1286
wip/editfuzz2
wip/editfuzz-1335
review/dirrev-1199
job/merge32
wip/merge32b
wip/merge32
job/bash-chrome
job/tagdnd-1187
job/bash-notes
wip/bash-notes2
wip/bash-notes
wip/bash-chrome
wip/reconcile-c1
wip/adv-c1
wip/tagdnd2-1187
wip/tagdnd-1187
job/bash-calendar
job/deploy-c1
job/editbreak-1334
job/bash-perf
wip/bash-calendar2
wip/bash-calendar
wip/bash-perf
job/hunt-20261006
job/bash-interop
job/collabloss-1197
wip/collabrev-1197
wip/collabloss5-1197
wip/collabloss4-1197
wip/collabloss3-1197
wip/collabloss2-1197
wip/collabloss-1197
wip/bash-interop
job/bash-mail
wip/bash-mail
job/vis-1293
wip/vis-1293
wip/restyle-search-r
wip/restyle-search-fix2
wip/restyle-search-fix
wip/restyle-search
job/restyle-settings
job/restyle-search
wip/restyle-settings-fix
wip/restyle-settings
job/adv31
wip/advfix-a
wip/adv31
job/bash-tasks
wip/bash-tasks
job/restyle-files
wip/restyle-files-fix
wip/restyle-files
job/fmtbar-1210
wip/fmtbar2-1210
wip/fmtbar-1210
job/perf2-1124
wip/perf2-1124
job/proflog-1204
job/merge31
wip/restyle-notes
wip/merge31
wip/proflog-1204
job/restyle-notes
job/fix-1213
wip/fix-1213
job/hide-1153
job/restyle-mailmoney
job/notestatus-1209
wip/hide-1153
wip/hiderev2-1153
wip/hiderev-1153
wip/hide5-1153
wip/hide4-1153
wip/hide3-1153
wip/hide2-1153
job/sidebarblur-1208
wip/notestatus-1209
wip/sidebarblur-1208
wip/restyle-mailmoney
job/onboard-1141
wip/onboard2-1141
wip/onboard-1141.aborted-early
wip/onboard-1141
job/adv-1202
job/segmented-1200
wip/segmented-1200
job/merge30
job/notifloop-1194
job/toastmorph-1201
wip/notifloop-1194
job/perf-1124
job/tocrail-1191
job/cards-1179
wip/cards2-1179
wip/cards-1179
wip/tocrail-1191
wip/perf-1124
wip/merge30j
job/wizchoices-1140
wip/wizchoices-1140
wip/restyle-1190
job/moneyfmt-1180
wip/moneyfmt2-1180
wip/moneyfmt-1180-r
wip/moneyfmt-1180
job/pillglass-1189
job/flags-1181
wip/flags-1181
job/restyle-1190
job/settingsreg-1195
job/wizard-1140
site/website
wip/wizardrev2-1140
wip/wizardrev-1140
wip/wizard5-1140
wip/wizard4-1140
wip/wizard3-1140
wip/wizard2-1140
wip/wizard-1140
wip/pillglass-1189
wip/settingsreg-1195
job/merge29
job/fu-1171
wip/merge29j
wip/fu-1171
job/fu-1166
job/txresearch-1188
wip/fu-1166
job/merge28
job/search-1066
wip/search-1066
wip/merge28j
job/gateslot-1182
job/bulkimport-1157
job/mailnet-1160
wip/mailnetrev-1160
wip/mailnet-1160
wip/bulkrev-1157
wip/bulkimport-1157
job/startup-1161
wip/startup-1161
job/merge27
job/linkcards-1151
wip/linkcards3-1151
wip/linkcards2-1151
wip/linkcards-1151
job/traydate-1144
wip/traydate3-1144
wip/traydate2-1144
wip/traydate-1144
job/draw-1101
wip/merge27j
job/blockpill-1152
wip/blockpill3-1152
wip/blockpill2-1152
wip/blockpill-1152
job/minihover-1149
wip/minihover2-1149
wip/minihover-1149
job/merge25
wip/merge25-r
wip/merge25b
wip/merge25
job/inspector-1129
job/tags-1110
wip/inspector3-1129
wip/inspector2-1129
wip/inspector-1129
wip/tagsrev-1110
wip/tags2-1110
wip/tags-1110
job/dates-1148
wip/datesrev-1148
wip/dates2-1148
wip/dates-1148
job/licence-1145
wip/licence2-1145
wip/licence-1145
job/selfhost-1156
fixbatch-25
job/merge23
wip/merge23
job/tagfilter-1109
wip/tagfilter2-1109
wip/tagfilter-1109
job/kbd-1134
wip/kbd2-1134
wip/kbd-1134
job/palfoot-1137
wip/selfhost-1156
wip/palfoot2-1137
wip/palfoot-1137
job/toggle-1158
wip/toggle-1158
fixbatch-23
job/kbpreview-1118
job/docratchet-1155
job/perflint-1133
job/devtests-1159
wip/docratchet-1155
wip/devtests-1159
job/segv-1136
wip/toast-1142
wip/segv-1136
job/toast-1142
job/blockreload-1147
wip/blockreload-1147
job/font-1150
wip/font-1150
job/importui-1120
job/minimonth-1149
wip/importui-1120
wip/minimonth-1149
job/depcheck-1146
wip/perflint-1133
wip/depcheck-1146
job/blocks-1125
job/plus-1128
job/shift-1138
wip/plus2-1128
wip/plus-1128
wip/shift-1138
job/moneyfid-1130
job/editorrail-1113
wip/moneyrev-1130
wip/moneyfid-1130
job/noext-851
wip/noext-851
wip/noext3-851
wip/noext2-851
job/week-1135
wip/week-1135
job/editreg-1132
job/smoke-1122
wip/smoke-1122
job/docs-1143
job/palette2-1123
job/calhdr-1112
job/nlpchip-1127
job/mailghost-1094
job/reconnect-1131
wip/reconnect-1131
job/trayicons-1095
job/delete-1119
hotfix-sidebar2
job/cards-1083
job/palette-1093
job/mchrome-1084
job/e2e-a-1071
job/canvas-visual
wip/e2e-a2-1071
wip/e2e-a-1071
backup/canvas-visual-before-reconcile
wip/surfaces-p2
job/merge-round-9
wip/merge-round-9
job/7cfix-small
wip/7cfix-small
job/mailui-1078
job/merge-round-8
wip/merge-round-8
wip/mailui-1078
job/mailround-1038
job/applemail-accept
wip/settitle-1068
wip/mailround2-1038
wip/mailround-1038
wip/e2e-7b
job/crash-1069
wip/crash-1069
job/searchlost-1066
wip/searchlost-1066
job/7b-reconcile
job/flake-1065
wip/flake-1065
wip/merge-round-7b7
wip/merge-round-7b6
wip/merge-round-7b5
wip/merge-round-7b4
wip/7b-reconcile
job/appupdate-1059
job/nfd-1044
wip/appupdate-1059
job/e2e-7b
job/loop-1062
wip/loop-1062
job/pdfprev-1045
job/invtoggle-1053
wip/pdfprev-1045
wip/nfd-1044
wip/invtoggle-1053
job/7bfix-e2e
job/mailstress-b
wip/7bfix-e2e
wip/mailstress-b
job/7bfix-adv
wip/7bfix-adv
job/mailstress-a
job/stack-1054
wip/stack-1054
wip/mailstress-a
job/mailstress-1038
wip/mailstress-1038
job/upload500-1051
wip/upload500-1051
job/share-1034
wip/share-1034
job/syncerr-1037
job/7bfix-photos
wip/7bfix-photos
job/paste-1036
job/setside-1039
wip/setside-1039
wip/paste-1036
job/lease-1042
wip/syncerr-1037
wip/lease-1042
job/7bfix-data
job/passkeybind-1043
wip/apprevoke-1041
job/invite-1035
wip/invite-1035
job/merge-round-7b2
wip/merge-round-7b2
job/mailproxy-486
job/apprevoke-1041
job/rebuild-1033
job/pillborder-1029
wip/pillborder-1029
wip/mailproxy-486
wip/applemail-486
job/headless-998
wip/headless-998
job/groups-1028
wip/groups-1028
job/rebuildwarn-1016
wip/rebuildwarn-1016
job/startup-1011
wip/startup-1011
job/monthpill-1009
job/bgthumb-1025
job/sharetitle-1012
wip/monthpill-1009
wip/bgthumb-1025
wip/sharetitle-1012
job/canvas-cards-977
wip/canvas-cards-977
job/canvas-pencil-978
job/canvas-sketch-990
wip/canvas-sketch-990
wip/canvas-pencil-978
job/canvas-files-989
wip/canvas-files-989
job/canvas-collab-991
wip/canvas-collab-991
job/weekscroll-1018
wip/weekscroll-1018
wip/canvas-core-976
job/canvas-core-976
job/round-drag
wip/round-drag
job/round-settings
wip/oapi-974
job/oapi-974
job/hist2-integrate
job/mailhtml-726
wip/mailhtml-726
wip/hist2-integrate
job/moneyfu-984
job/drag-1015
wip/drag-1015
job/rename-1017
wip/rename-1017
job/hist2-api
wip/hist2-api
job/oneacct-1014
wip/oneacct-1014
wip/moneyfu-984
job/hist2-bench
job/hist2-restore
wip/hist2-bench
job/hist2-write
job/hotfix-724
wip/hotfix-724
wip/hist2-write
wip/hist2-restore
job/hist2-store
job/hist2-ui
wip/hist2-ui
wip/hist2-store
job/searchstarve-965
job/shutdown-963
wip/shutdown-963
wip/pubedit-981
job/pubedit-981
job/analytics-973
wip/searchstarve-965
job/authflash-850
job/weeklane-969
job/pvtitle-1004
job/hist-975
wip/authflash-850
job/voicepill-617
wip/pvtitle-1004
job/headring-1003
wip/weeklane-969
wip/voicepill-617
wip/headring-1003
wip/analytics-973
job/agentscope-980
wip/thumbsandbox-988
job/thumbsandbox-988
wip/hist-975
job/links-856
wip/links-856
job/davetag-966
wip/davetag-966
job/filesstorm-1000
job/hoverpad-725
wip/filesstorm-1000
job/ffmpegblas-993
job/merge-round-7a
wip/hoverpad-725
wip/ffmpegblas-993
job/nowdot-1002
wip/verify-7a
job/noteid-857
wip/nowdot-1002
wip/noteid-857
wip/merge-round-7a
wip/agentscope-980
job/imapedge
job/a11yfix2
wip/imapedge-941
wip/imapedge
wip/a11yfix2
job/notetask-986
job/logheading
wip/logheading-998
job/textthumb-652
job/photolive-987
wip/photolive-987
job/davactive-983
job/savefix-985
job/tabicons-607
wip/davactive-983
wip/tabicons-607
wip/notetask-986
wip/savefix-985
job/dirid-627
job/buildspeed-1007
wip/dirid-627
job/staging-imap
job/perfguards-impl
job/undo-a11y
wip/undo-a11y
job/mailperf
job/wal-824
wip/settings-50
job/settings-50
job/notesfilter-606
wip/notesfilter-606
job/surfaces-p2
wip/wal-824
job/maillayouts
wip/mailperf
wip/maillayouts
job/taskmeta-659
job/money-ident
wip/money-ident
wip/taskmeta-659
job/errstates
wip/perfguards-impl
job/headings-881
wip/headings-881
wip/errstates
job/voice-619
job/gaps-827
job/notesperf
wip/notesperf
wip/voice-619
job/hddsql-549
job/perf-stream-668
wip/perf-stream-668
wip/deeplinks-fix
job/deeplinks-fix
job/authfix
job/docsfix-rust
wip/docsfix-rust
job/webperf
job/docsfix-web
job/datafix2
job/webdav-lock-476
job/copyfix
wip/copyfix
wip/webperf
job/focus-658
wip/protofix
job/mediafix
job/protofix
wip/mediafix
job/agentfix
job/hhmm-724
wip/agentfix
job/undo-722
job/reuse
wip/webdav-lock-476
wip/reuse
job/scopefix
job/datafix
wip/hhmm-724
wip/undo-722
job/surfaces-p1
wip/hddsql-549
job/voicememos-618
wip/datafix2
wip/surfaces-p1
job/fix-940
wip/fix-940
job/blaze-surfaces
wip/datafix
wip/blaze-surfaces
job/taskday-655
job/linknav-639
wip/linknav-639
wip/gaps-827
job/isolation-707
job/audiophotos-720
wip/audiophotos-720
job/advfind-664
wip/voicememos-618
wip/taskday-655
wip/isolation-707
wip/advfind-664
wip/scopefix
wip/focus-658
job/testgaps
wip/testgaps
job/overscroll-718
wip/authfix
job/deps
wip/overscroll-718
job/rev2-agentfix
job/rev2-mailperf
wip/deps
job/hardening-728
wip/hardening-728
job/searchgen-832
wip/searchgen-832
job/photopw-849
job/mailsql-825
wip/photopw-849
job/sharefix
wip/sharefix
job/rev2-mailhtml-726
job/rev2-perfguards
job/copyval-723
job/lightglass-r2
wip/lightglass-r2
wip/docsfix-web
job/copy-audit
job/macinterop-staging-r2
job/design-sync
job/rev2-taskmeta-659
job/docs-audit
job/rev2-advfind-664
job/rev2-mailproxy-486
job/states-audit
job/rev2-datafix
job/design-drift
job/test-gaps
job/rev2-voicememos-618
job/rev2-mediafix
job/rev2-deps
job/rev2-datafix2
job/licence-audit
job/issue-hygiene
job/rev2-protofix
job/rev2-voice-619
job/rev2-isolation-707
job/rev2-surfaces-p1
job/deeplink-audit2
job/rev2-audiophotos-720
wip/test-gaps
job/rev2-overscroll-718
job/rev2-undo-722
wip/states-audit
job/rev2-dropmd-719
job/rev2-linknav-639
job/merge-7b-plan
wip/merge-7b-plan
job/rev2-taskday-655
wip/mailsql-825
job/rev2-webdav-lock-476
job/rev2-browserfix
wip/design-drift
job/rev2-hddsql-549
wip/deeplink-audit2
job/rev2-scopefix
job/rev2-authfix
job/rev2-hardening-728
job/rev2-wal-824
job/rev2-sharefix
job/calsidebar-638
job/chrome-audit
job/ioperf
wip/ioperf
wip/chrome-audit
wip/calsidebar-638
job/dropmd-719
wip/dropmd-719
job/ocr-build
wip/ocr-build
job/blaze-settings
wip/copyval-723
job/toastring-721
wip/toastring-721
job/deployfix-732
wip/deployfix-732
wip/blaze-settings
job/money-import-recheck
job/rev-a11y
job/perf-arch-db
job/rev-7b-data
wip/textthumb-652
wip/perf-arch-db
job/sec-protocols
job/sidehdr-660
job/rev-7b-security
job/research-surfaces
job/rev-design-gaps
job/rev-mcp-api
wip/sidehdr-660
job/perf-arch-memory
wip/sec-protocols
job/perf-arch-bundle
job/snapedge-714
wip/rev-mcp-api
job/sec-supplychain
wip/research-surfaces
job/perf-arch-sync
job/rev-consistency
job/perf-arch-server
wip/perf-arch-server
wip/perf-arch-memory
job/perf-arch-io
job/perf-arch-client
job/sec-fs
job/sec-mcp-scopes
job/sec-sharing
job/perf-guards
job/sec-browser
job/sec-admin-deploy
job/sec-auth
wip/snapedge-714
job/bgpicker-717
wip/perf-arch-bundle
wip/money-import-recheck
job/advsetup-654
wip/bgpicker-717
wip/advsetup-654
job/burst-709
job/kbdcaps-710
job/app-pw-chooser
wip/burst-709
wip/app-pw-chooser
job/imaptest-625
wip/kbdcaps-710
job/fix-499
wip/fix-499
job/perf-mut-667
job/calimg-589
job/perf-snap-666
wip/calimg-589
wip/perf-snap-666
wip/perf-mut-667
job/perf-cache-665
wip/perf-cache-665
job/voicefiles-620
wip/voicefiles-620
job/admin-burst-705
wip/admin-burst-705
job/voicememos-review
wip/voicememos-review
wip/ryw-653
job/ryw-653
job/writeonopen-661
job/instant-663
wip/writeonopen-661
job/money-import-review
wip/money-import-review
wip/importjs-610
review/integrations-407-round6
wip/integrations-review
job/dragghost-612
wip/dragghost-612
job/integrations
wip/integrations
job/decider-656
job/merge-round-6
job/perf-rerun
wip/merge-round-6
job/integrations-review-round5
job/selalign-576
wip/selalign-576
job/mcp-events-491
job/files-631
job/cal-e2e-569
wip/cal-e2e-569
job/reload-423
wip/reload-423
wip/mcp-events-491
wip/files-631
job/notesbridge-644
wip/notesbridge-644
job/editor-series
job/calcard-series
wip/calcard-series
job/mcp-events-review-491
wip/mcp-events-review
wip/editor-series
job/quirks-546
job/integrations-recheck
job/tocrail-636
wip/tocrail-636
wip/quirks-546
wip/reminders-643
job/reminders-643
wip/davscale-573
job/davscale-573
job/integrations-review
wip/ocr-eval-584
job/ocr-eval-584
job/esc-537
wip/esc-537
job/toastname-586
wip/toastname-586
job/submenu-579
wip/submenu-579
job/tasks-mode
wip/tasks-mode
job/agentdocs-630
job/dupwrite-634
wip/agentdocs-630
wip/dupwrite-634
job/lightglass-588
wip/lightglass-588
job/tabswitch-549
job/ghosttask-623
wip/ghosttask-623
job/toaststack-616
job/weekstate-609
job/mailsync-613
wip/mailsync-613
wip/weekstate-609
job/maildup-626
wip/tabswitch-549
wip/maildup-626
wip/toaststack-616
job/motion-611
wip/motion-611
job/tlstest-601
wip/tlstest-601
job/perf-495
job/floating-sheet
wip/floating-sheet
job/remdup-585
wip/remdup-585
job/fix-502
wip/fix-502
job/attachplay-622
job/perf-batch
wip/perf-batch-563
wip/perf-495
hotfix/mail-sync-diag
job/mail-m3
wip/mail-m3
job/attach-poof-603
job/calhover-608
job/editorbar-604
job/mentions-605
job/merge-round-4
job/allday-514
wip/merge-round-4
wip/allday-514
job/merge-round-4a
wip/merge-round-4a
job/sharestack-580
job/fix-501
wip/sharestack-580
wip/fix-501
job/perf-batch-563
job/theme-detail
job/apw-cache-review
wip/apw-cache-review
job/probe-520
wip/probe-520
job/mac-393
wip/mac-393
job/header-571
job/flake-513
wip/flake-513
job/docs-thumb-547
wip/header-571
job/webcal-572
wip/webcal-572
wip/shortcuts-542
job/shortcuts-542
wip/docs-thumb-547
job/caldav-stress
wip/caldav-stress
wip/sweep-478
job/apw-cache-512
wip/apw-cache-512
job/money-empty-540
wip/restart-505
wip/money-empty-540
wip/fix-510
job/restart-505
job/fix-503
job/perf-496
wip/perf-496
job/fix-498
wip/fix-498
job/info-inspector-465
wip/info-inspector-465
job/fix-510
job/fix-507
wip/fix-507
wip/fix-503
job/fix-493
job/money-kinds
wip/money-kinds
job/hygiene-548
job/merge-round-3
wip/fix-493
job/drag-snap-536
wip/merge-round-3
wip/merge-round-0930
wip/drag-snap-536
job/align-538
wip/align-538
job/bg-flash
wip/bg-flash
job/money-import
job/search-count-544
wip/search-count-544
wip/money-import
job/settings-key-541
wip/settings-key-541
job/toast-539
job/preview-421
wip/preview-421
wip/toast-539
job/tasks-500-531
job/title-plain-526
wip/title-plain-526
wip/tasks-500-531
job/notes-bridge
wip/parity-484
job/parity-484
job/files-slow
job/crash-525
wip/notes-bridge
wip/files-slow
wip/crash-525
job/kbd-motion-527
wip/bg-422
job/analytics-504
wip/analytics-504
wip/kbd-motion-527
job/upload-pill-523
wip/upload-pill-523
wip/tray-order
job/tray-order
wip/overflow-mid
wip/merge-round-2
job/perf-494
wip/perf-494
job/merge-round-3-pre-rebuild
wip/mcp-fast-492
wip/motion-477
wip/asr-ab-489
wip/theme-variants-506
wip/overflow-511
wip/week-header-508
wip/attach-427
job/dav-delete-471
job/iso-435
wip/iso-435
wip/files-sel-keys
wip/dav-delete-471
job/align-253
job/siwc-490
wip/siwc-490
job/money-kinds-review
wip/align-253
wip/money-kinds-review
job/small-bugs-3
wip/overlay-title-487
wip/multiget-500
wip/hidden-420
wip/webcal-ui
wip/webcal-431
job/perf-367
job/location
wip/small-bugs-3
wip/location
wip/perf-367
wip/admin-deny-483
job/tag-unicode-473
wip/tag-unicode-473
job/blur-436
wip/photos-470
wip/blur-436
wip/small-bugs-4
wip/hunt-20260930
wip/settings-hdr-482
wip/chips-416
job/dedup-375
wip/dedup-375
job/doc-stack
wip/doc-stack
job/tokens-literals
wip/tokens-literals
job/jobs-leftovers
wip/send-fast
wip/paste-467
wip/money-numbers
job/money-plugin
wip/money-plugin
backup/doc-stack-r3-reset-source
job/break-dav
wip/merge-batch
wip/crossday-469
wip/mac-verify
wip/mail-m2
wip/break-dav
wip/money-review2
job/money-md
job/modes-424
wip/money-md
wip/jobs-leftovers
job/agenda-413
wip/agenda-413
job/dedup-375-clean
job/dedup-375-before-rebase
wip/modes-424
job/recog-417
wip/recog-417
wip/bounce-425
wip/ab-384-luna
backup/doc-stack-round3-before-rebuild
job/webdav-perf
wip/webdav-perf
job/toast-ring
wip/toast-ring
job/money-review
wip/money-review
wip/micro-motion
wip/settings-card
wip/minical
job/notes-imap-428
job/least-priv
wip/ui-small-2
wip/flaky-426
wip/drag-end-418
job/jank
wip/jank
wip/least-priv
wip/docs-site
job/agenda
job/sec-batch
wip/sec-batch
wip/per-user-index
job/area-calendars
wip/area-calendars
job/parity
wip/parity
job/documents-research
wip/documents-research
job/test-infra
job/reminders-sync
wip/small-bugs-2
wip/reminders-sync
wip/gestures
job/google-oauth
wip/tags-merge
wip/tags
job/e2e-theme
wip/e2e-theme
job/icon-align
wip/test-infra
wip/select-align
wip/editor-385
job/voice
wip/webdav
job/webdav
job/app-pw-ui
job/editor-integrity
wip/editor-integrity
wip/voice
wip/quota
wip/cal-followups
wip/icon-align
job/composer-scale
wip/composer-scale
job/jobs-page
wip/jobs-page
job/hig-type
wip/hig-type
wip/app-pw-ui
job/motion-spring
job/mcp
wip/motion-spring
wip/mcp
job/small-bugs
wip/push-hosts
job/profile-sign
wip/touch-369
wip/profile-sign
job/mobile-focus
wip/mobile-focus
wip/ui-polish-354
wip/small-bugs
wip/dup-task
job/toast-polish
job/app-pw-scopes
wip/toast-polish
wip/app-pw-scopes
wip/cli-agent
wip/selection-pills
job/preview-attach
wip/preview-attach
job/dav-proppatch
wip/dav-proppatch
wip/cal-switcher
job/atomic-race
wip/atomic-race
job/photos-shared
wip/photos-shared
wip/cal-grid
wip/note-rewrite
wip/search-rebuild
job/mail-m1
job/paperless-import
wip/paperless-import
wip/mail-m1
wip/hidden-activity
wip/search-d
wip/pricing-research
wip/cursors
wip/auto-scheme
job/single-pills
wip/single-pills
wip/xuser-matrix
wip/money-format
wip/app-pw-setup
wip/purge-dos
wip/vault-health
wip/caldav-apple
wip/xuser-audit
wip/e2e-green
wip/tabbar
wip/adv-harness
wip/maple-mono
job/search-fix
wip/search-fix
wip/search-perf-c
job/adv-harness
wip/sidebar-headers
job/glass
wip/temp-index
job/polish
wip/polish
wip/file-protocols
wip/money-research
wip/glass
wip/voice-models
wip/collab-redo
job/voice-research
wip/hunt-20260928
wip/notes-actions-research
wip/search-pad
wip/search-perf
wip/search-sticky
wip/editor-undo
wip/chrome-rules
wip/motion
wip/appearance-research
wip/appearance
wip/audit-bugs
wip/cal-glass
wip/block-actions
wip/authz-order
wip/event-stripes
wip/chrome-sidebar
wip/auth-flaky
wip/robust-2
wip/gate-fix
wip/menu-blur
wip/import-calternaljs
wip/tray-fix
job/import-calternaljs
wip/index-order
wip/audit-fixes
wip/search-chevrons
research/mail
wip/phone-chrome
wip/dedup-break
wip/csp
wip/ui-audit
wip/select-toast
wip/perf
wip/flat-layout
wip/fonts
wip/event-tint
wip/sync-converge
wip/data-split
wip/glass-audit
wip/robustness
wip/sync-chaos
wip/search-thumbs
wip/fuzz
wip/menu-icons
wip/search-pill
wip/sync-changing
wip/heading-links
wip/date-formats
wip/a11y
wip/break-editor
wip/e2e-fix
wip/settings-sections
wip/sync-root-guard
wip/search-palette
wip/share-edit
job/toasts
wip/toasts
wip/cont-analytics
wip/authz-review
wip/popovers
wip/overlay-glass
wip/change-feed
wip/editor-modes
wip/composer-align
wip/cont-agenda
wip/agenda-merge
job/agent-conventions
wip/agent-conventions
wip/backend-misc
job/route-audit
wip/route-audit
wip/ui-batch
wip/heif-hardening
wip/grid-resize
wip/ask-page
wip/webmcp
job/deeplink-audit
wip/deeplinks
wip/shortcuts
wip/cont-tz-days
main
No results found.
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
kayg/calternal-v0#1425
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Bug bash round 2 (#1220, bash-core2) measured Search over 10,000 Logs with 4× CPU throttling (a mid-range laptop): typing-to-visible results p50 843 ms, p95 1,229 ms; first frame p95 535 ms. Server CPU peaked at 450% and RSS at 617 MB during the typing loop. DESIGN §59 budget for a keystroke-to-visible update is far lower.
Expected
Typing in Search shows updated results within the §59 interaction budget at 10k Logs on the perf VM (cold and warm), with cancellation of stale requests (no work for superseded keystrokes, on client and server), and no server CPU spike per keystroke.
Work
Measure first on the perf VM (shared prebuilt release server, flock /root/perf.lock) with the bash-core2 harness, attribute time (client debounce, request, server query, render), fix the top costs, re-measure interleaved against origin/dev. Screenshots at actual size of the palette while typing (390/820/1440, light/dark). Gates: cargo fmt/clippy/test for touched crates, bun run check, bun run test; quote verbatim.
Starting #1425 on branch
job/searchperf-1425, based onorigin/devatd395b6e25da20d8c67b8b9fc1a593b813939c8a7. I am locating the existing Search benchmark and tracing client, server and render costs before making a change.Finding:
SearchWindow.run()aborts the prior browser request on each query change, butserverSearch()hasSERVER_DEBOUNCE_MS = 0and/api/v1/searchruns provider fan-out without a server-side supersession signal. Thus the browser stops waiting, while an already accepted older request can keep using server CPU. I am measuring this with a 10,000-Log corpus before changing the request path.The profile has not reached Search measurement yet. The prebuilt baseline server exits during startup with
Error: NotFoundin theroot.open_prepare_recoverphase, after it logs the expected temporary Instance and User data directories. I am tracing its filesystem calls under the required Perf VM lock to identify the failing operation. No benchmark numbers have been recorded yet.The first
cargo test -p calternal-serverrun completed 278 unit tests successfully, then failed the deterministic performance guard.perf-lintidentified the existing exactcache.raw-readpin forapps/web/src/lib/search/server.tsas unused or changed because theserverSearch::asksyntax changed. I am refreshing only that live fingerprint while keeping its owner, reason, limit, and the ratchet count unchanged, then I will rerun the crate gate.The Perf VM trace narrows the baseline startup failure:
root.open_prepare_recoverfinishes in 198.6 ms, and the missing.system/journalentry is handled byRoot::recover. The server then exits withNotFoundbefore listening because the prebuiltorigin/devbinary has no embedded_app/version.json;retain_frontend_assetsrequires that manifest. I will compare the origin/dev web build with the branch web build on one web-enabled debug server. The old client sends no Search generation headers, so its per-prefix requests still exercise the pre-fix path; the after run also checks server cancellation. This keeps the client A/B comparable without compiling a release binary on this job.The second full
cargo test -p calternal-serverrun completed 278 active unit tests, then failed the deterministic performance guard on the existing exactbounds.byte_cappin forcrates/calternal-server/src/main.rs(search:byte_cap). Extracting the Search handler changed that syntax fingerprint. I am refreshing this one pin and its #1058 checkpoint without changing the exception limit orcontracts/perf/ratchet.json.The deterministic
scripts/perf-lint --checkguard now passes the refreshed cache and Search response-bound pins, then reports the priorio.unresolved-callentrysearch:search:0ce2f8cb185f4047as unused. The extraction moved that samehome.as_strcall intosearch_request, and the live parser reports its current identity assearch:search_request:0ce2f8cb185f4047with helper hash907bf85ffeae8bc5f16487d76b77a263b0fc394730f0cc7ea3b9ee0e14de2983. I am updating exact identities and checking for any genuinely new findings before continuing.Perf profile startup diagnosis: the trace shows RustEmbed can stat the embedded version.json at the compile-time worktree path, but the debug server then sees no frontend asset because that path is a symlink to a different canonical directory on the Perf VM. I will stage the matching production build as a real directory at the compile-time path and rerun the profile. This is a benchmark setup issue; no product change is needed.
Perf VM baseline run reached the real Search flow at load average 1.78, 1.22, 1.05. The uploaded Daily note was indexed, but the cold profile timed out waiting for a visible Search option containing “needle”; the bench correctly rejected the run and saved no report. I am checking the response and UI selector before another locked run.
The baseline timeout came from the profile fixture:
needleappeared in all 10,000 Log bodies, so the cold query measured a 10,000-hit result set. The issue’s corpus is 10,000 Logs, not 10,000 matches. I changed the fixture soneedleappears in one real Log, added a standard Daily note heading, and require the last block to be indexed askind=logbefore profiling.The exact-response diagnostic shows the UI selector was not the primary issue:
GET /api/v1/search?q=needle&semantic=falsereturned HTTP 200 with zero hits, and the UI list was correctly hidden. The fixture’s last real Log is indexed and found as akind=loghit bytokenitem09999. I will use that proven unique token for the typing and cancellation profiles and assert a visible Log row.The browser probe observed the exact final Log on one
/api/v1/search?q=tokenitem09999&limit=20&semantic=falserequest, then an immediate identical request returned 0 hits. The earlier preflight stopped after the first hit and therefore masked this unstable fixture state. I am changing setup to require consecutive successful reads and checking again after Files navigation before recording any performance sample.The repeated fixture probe reports
timed_out=false, zero hits, andindexing=trueafter 60 seconds while the 10,000-Log file is being added. This is an Index readiness wait, not a Search route timeout. The profile now waits for the API to reportindexing=falseand then requires the final Log in three sequential requests before measuring.The first readiness-correct after profile completed on the Perf VM with 10,000 real Logs and 4× CPU throttling (load average 1.39 at start). Warm input-to-visible first-frame p50/p95 was 65.3/163.4 ms; cold was 101.8/154.3 ms. The current §59 p95 budget is 150 ms, so this run misses it by 13.4 ms warm. Server route p50/p95 was 40.852/89.909 ms; peak process CPU was 189.72% and peak RSS 788,160,512 bytes. The old issue measurement was 1,229 ms input-to-visible p95 and 450% peak CPU. I am running the interleaved origin/dev comparison before deciding if another fix is needed; this run failed only the new 150 ms profile assertion, after writing the metrics JSON.
The readiness-correct release-server profile showed the current 14-character
tokenitem09999query returns one Log. It does not reproduce the issue's 10,000 matching-Log typing workload. I will use the fixture's sharedSearchperfterm for cold/warm typing and screenshots, while keeping the unique final Log query as an Index-readiness assertion. The earlier unique-query A/B values are diagnostic only; I am rerunning the pair on the matching workload.The full-corpus release A/B (same
origin/devrelease server, 10,000 matching Logs, 4× renderer throttle; load 3.64/3.55/2.54 at after start) shows the current 60 ms client debounce reduces warm request count from 11 to 3 and server peak CPU from 279.36% to 124.70%. Warm input-to-visible first-frame p95 moves from 187.2 ms to 216.3 ms, above the §59 150 ms budget; cold p95 is 281.3 ms. This shared release server predates the new server cancellation route, so the run isolates the client behavior. I am removing the fixed wait and will measure the client abort plus branch-server cancellation path.Perf run after-b8 was incomplete: the fixture readiness checks passed for the 10,000-Log Daily note, but the warm typing phase timed out while waiting for a visible Log row after entering the shared Searchperf query. It wrote no profile JSON, so I am not counting it as a latency result. I added bounded diagnostics that distinguish an empty server response from a palette rendering issue. The next full-corpus run will use those diagnostics.
The full-corpus profile seeded and indexed all 10,000 Logs, then completed cold and warm typing. The run stopped in
checkServerCancellation: itspage.evaluatecallback referenced Node'sLAST_LOG_QUERYwithout serializing it into the browser context (ReferenceError: LAST_LOG_QUERY is not defined). No profile or screenshot set was saved. I have fixed the probe to pass the query as an argument and am rerunning the complete scenario.The corrected browser probe passed Index readiness and the server cancellation check, then failed during warm typing. Its bounded diagnostics show the Search API returned HTTP 200 with 20
logresults whose titles matched the 10-character query, while#search-resultsremained hidden and no Log row appeared within 30 seconds. The run saved no profile or screenshots. I am tracing the client result-visibility state before recording a candidate measurement.A diagnostic rerun completed all 10 warm typing rounds and kept the Log rows visible; the earlier hidden-list symptom did not recur. It failed at the final stale-request assertion because Playwright 1.63 returns
request.failure()as a record, while the probe called.includes()on it as if it were a string. That event callback threw, so aborted requests were reported as zero. The diagnostic run measured a warm first-visible p95 of 240.2 ms and server-route p95 of 172.067 ms on the debug server with response decoding enabled; I will not use those diagnostic numbers as the final release comparison. The probe now readserrorText, and the release run will check the budget without diagnostic instrumentation.The release-server browser run indexed the 10,000-Log fixture and captured the 390 px light Files view and click-open Search state. It then typed the measured query but did not show a Log row within 15 seconds on the phone. The run exited before writing its profile or completing the screenshot set, so it is not counted as a performance measurement. I am adding bounded phone-path diagnostics and rerunning it.
Release profile run
release7reproduced the 390 px phone click path after the 10,000-Log fixture was indexed. Search opened, but at the end of the 15 s wait the combobox value length was 0 anddocument.activeElementwas#chrome-sidebar-toggle; the visible Search list had seven navigation rows. A direct Search API request returned 200 with 20 Log hits. The harness had typed into the still-focused sidebar toggle, so this was a real focus handoff defect rather than a missing Index result.The phone sidebar's Bits UI close-autofocus ran after its spring and restored the toggle over the Search field. I changed that close handoff to preserve focus while Search is open. The browser profile now waits for the sidebar sheet to detach and asserts the Search field owns focus, with no focus-visible ring, before typing. I am rerunning the release-server profile with the updated production web build.
Release 9 completed the 10,000-Log profile but stopped during the screenshot guard. The browser bundle ID was
a96d2f51013321bf1a70955b0d33213c1ef6bc9f; the server reports626584190ae6ec7949db5850a9db1dfdef89c905, so the app showed “Update available”. I am rebuilding the production bundle with the server's build ID, then I will repeat the locked profile and captures.After merging
origin/dev,cargo test -p calternal-serverreported 277 passed, 1 failed, 12 ignored. The failure waswire::tests::live_apps_run_in_separate_processes: itsstartup_serves_http_while_content_type_backfill_runssubprocess timed out waiting for the backfill phase on/healthzafter 122.73 seconds. No test expectation was changed.Release 10 used a matching web/server build ID. Its click-open checks passed, then its keyboard-shortcut check found
:focus-visibleon the Search field. The Search dialog used raw.focus()after the shortcut had set keyboard modality. I changed that mount focus to the sharedfocusQuietlyhelper with an explicit suppress-ring behavior, added tests for suppressed shortcut focus and modality-aware restores, and will repeat the production screenshots.The matching-build diagnostic run collected 164 ms p95 from input to the Search request, 36 ms p95 for the server route, and 212 ms p95 to the first visible result. The run is incomplete because its shortcut focus check found the ring fixed in the latest commit, so I am treating these as diagnostics rather than a budget pass. The provider registry started all local synchronous matchers before it called the server provider. I have changed content-mode dispatch to start the Search request first while preserving immediate local results, and added a regression assertion for that order.
The final performance contract check found a second stale exact pin after the focus change:
render.boundfor the Search dialog'sflat.slice(range.start, range.end)list. Its surface hash includes the Svelte file fingerprint, so the same source edit also changes fingerprints for the six Search dialog lists. I am refreshing those exact registry and exception hashes; the rule limits, exception counts and ratchet ceilings stay unchanged.The production Web build is synced to the perf VM and matches the prebuilt Search server build ID. The final 10k-Log profile is queued through
perf-runbecause the single-tenant VM is in use by another benchmark. No final measurement has started outside the lock; the queued run will record load and capture the full screenshot matrix under the lock.Job report — #1425 remains open
Head:
0fa596ff27d6bb937cf759094f5bc724d9f9719a.Built
Performance evidence and remaining work
The origin/dev baseline (
d395b6e25da20d8c67b8b9fc1a593b813939c8a7, perf VM, 10,000 Logs, 4× CPU) measured warm first-visible p50/p95 of 76.3/187.2 ms and cold p50/p95 of 126.7/238.5 ms. Its warm input-to-request p95 was 374.6 ms; server-route p95 was 200.87 ms; peak server CPU was 279.36% and peak RSS was 713,293,824 bytes.The last complete typing measurement was diagnostic only: release10 measured warm first-visible p50/p95 of 109.2/212 ms, input-to-request p95 of 164.4 ms, and server-route p95 of 36.151 ms. It failed the shortcut focus-ring assertion, so it is not a budget pass. Release9 also stopped on a build-ID mismatch toast; release8 stopped on phone sidebar focus handoff. These incomplete runs are not budget samples.
The final profile after the server-first dispatch change did not start. The single-tenant perf VM was held by another benchmark with an estimated 55-minute run. I queued the run through
perf-run, then canceled it before it acquired the lock because this job had passed the shared four-hour limit. No final 10,000-Log measurement or post-fix screenshot matrix exists. I did not updatedocs/perf/baseline.jsonor attach failed screenshots. The next run must rebuild/sync the Web bundle, runbench/search-typing-1425.sh after release11throughperf-run, record load, verify the 150 ms cold/warm budget, update the baseline, and attach all 30 screenshots.Expected cost: Search reads one bounded indexed result page for each active typed prefix. This profile covers a 10-character query over 10,000 indexed Logs, ten warm rounds at 45 ms per keystroke, plus a cold query, with 4× CPU throttling.
Verification
cargo fmt --check: exited 0 with no output.cargo clippy -p calternal-server --all-targets -- -D warnings:Finished \dev` profile [unoptimized + debuginfo] target(s) in 1m 30s`.cargo test -p calternal-serverdid not pass. Under shared-host load,wire::tests::startup_serves_http_while_content_type_backfill_runstimed out waiting for the phase on/healthz:content-type backfill phase did not appear on /healthz: Elapsed(())test result: FAILED. 277 passed; 1 failed; 12 ignored; 0 measured; 0 filtered out; finished in 281.51sbun run check:perf-lint: PASS; 0 violations; 22544 scoped exceptions;svelte-check found 0 errors and 4 warnings in 2 files.bun run test -- --maxWorkers=2:Test Files 297 passed (297)Tests 2123 passed (2123)Duration 392.79s (environment 30%, import 24%, transform 23%, tests 16%, setup 6%)cargo clean:Removed 25634 files, 15.7GiB total.Decisions (DESIGN was silent)
626584190ae6ec7949db5850a9db1dfdef89c905; set the production Web build ID to that server ID for the test environment. The Web source revision is recorded separately.Known gaps
docs/perf/baseline.jsonupdate remain outstanding.Issue remains open.
Started searchperf2 on job/searchperf-1425 at
0fa596ff27; base origin/dev isaf202e1514. I am building the production Web app and preparing the interleaved perf VM and Mac Chrome measurements plus the 12-shot UI evidence.Mac setup note for #1425: macOS 27 arm64 has Chrome 154 under the User Applications folder. I failed to confirm this job had acquired
/tmp/mac-bench.lockbefore starting a temporary headless Chrome profile on port 19223; another job held the lock. I stopped all of my SSH sessions immediately. I did not run the Search profile or capture screenshots. I did query the temporary browser's GPU renderer. A temporary Chrome process and profile may remain under~/calternal-bench/searchperf2/chrome-profile-19223; I will stop and remove them only after this job reacquires the lock.Progress: production Web assets are built for head
0fa596ff27d6bb937cf759094f5bc724d9f9719aand the origin/dev comparisonaf202e1514955ddf0f8b4b3d2503c780d807ed84. The Perf VM lock is still held by another job, so no Perf VM samples have run. The Mac lock is also currently held by another job; my lock acquisition is waiting and no Mac Search samples or screenshots have run. The six-run alternating Perf VM sequence is staged and will record load averages inside the lock.Measurement finding:
HEADchangescrates/calternal-server/src/main.rsand addssearch_cancellation.rsrelative to origin/dev, and the Search profile checks that cancellation contract. Using the shared origin/dev server for both builds would leave the head run on the old cancellation behavior. I will use the shared release binary for origin/dev and build onlycalternal-serverin release mode for head; this avoids a workspace build and lets both runs exercise their matching server.The paired profile is staged on the Perf VM, but its lock is now held by an active 60-minute measurement lease. I am keeping the six-run profile queued until the lock releases. The branch-matched server release build is underway locally.
Measurement baseline is pinned to this branch's origin/dev base,
af202e1514955ddf0f8b4b3d2503c780d807ed84. The profile harness labels baseline as the old client and asserts it sends no Search generation headers. The freshly fetchedorigin/dev(cc1af3c12b68ad26c8403adde1be39c096b9ddea) has since rewritten Search and removed this profile file, so using it would mix later Search changes into the #1425 comparison and invalidate those baseline assertions. I will still merge the fetchedorigin/devbefore final verification.The first Perf lease produced no samples: all three baseline attempts exited 2 because the shared origin server had the staged filename
calternal-server-releasewhile the runner expectedcalternal-server-origin-release; all three head attempts stopped before writing a profile withETXTBSYbecause the head executable became visible during tar extraction. I confirmed the exact errors in the runner logs. I am renaming the complete origin binary and will rerun after ensuring the head executable is fully present before starting the locked run.The second locked run also produced no metrics. Head server startup failed in all three rounds because the copied release binary could not find
libsherpa-onnx-c-api.so; that library is available in the shared server target tree. Origin/dev started, but its browser page crashed in all three rounds while waiting for the real uploaded Log file row (.fc-item), before writing any profile JSON. Load5 at the start was 3.31. I will set the child server's library path and make one corrected full run; I will not use the failed attempts as performance data.The third locked run wrote no profile JSON. The server library path is fixed: baseline processes reached the UI but the page crashed three times while waiting for the uploaded Log row; the branch server started successfully with the shared Sherpa/ONNX libraries, but Playwright 1.63 reported
Invalid InterceptionIdand then the same page crash. I will check the already-installed browser runtime and use one corrected harness run if its Playwright package/browser versions are compatible. The fixed decision rule still applies; failed runs are not measurements.The Playwright 1.64 retry also produced no samples because its launcher expects
chromium_headless_shell-1248/chrome-headless-shell-linux64/chrome-headless-shell; I had copied the full Chromium directory only. This is a browser-path setup failure before profiling, not performance data. The matching headless-shell directory is available locally. A new Perf job holds the VM now; I am queueing one final run for after that lease.Perf VM comparison completed under the perf-run lock. It alternated three origin/dev baseline rounds from branch base
af202e1514with three head rounds at0fa596ff27. The recorded load5 values at each run start were 1.84, 2.54, 3.07, 3.30, 3.59 and 3.71.Median warm first-visible p50/p95: baseline 99.3/216.4 ms; head 95.5/200.8 ms. Median cold first-visible p50/p95: baseline 96.4/273.2 ms; head 180.3/350.5 ms. All six profiles were saved. The three head benchmark commands exited 1 because the Perf VM profiles exceed the benchmark's 150 ms cold/warm p95 assertions; the user-set decision still depends on Mac Chrome warm p95 and warm p50 regression.
Mac Chrome measurements and screenshots are pending the Mac VM lock.
Post-merge Rust gates:
cargo clippy -p calternal-server --all-targets -- -D warningspassed:Finisheddevprofile [unoptimized + debuginfo] target(s) in 33m 31stest wire::tests::startup_serves_http_while_content_type_backfill_runs ... ignored, builds a live app with process-global plugin state; run by live_apps_run_in_separate_processestest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out; finished in 0.00stest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 290 filtered out; finished in 22.48sMac Chrome comparison and screenshots remain queued for the Mac VM lock.
Mac VM access is still blocked by the shared
/tmp/mac-bench.lock. The lock waiter has been active for about two hours and continues to printMAC_LOCK_WAITING; no Mac SSH, Chrome, or GUI session has been started outside the lock.Post-merge gates are complete, the merge is committed, and the isolated startup regression passed. The Mac warm p50/p95 comparison and 12 screenshots remain pending because the owner rule requires exclusive VM access.
Search typing performance — #1425
Decision: REJECT (acceptance not established). The Mac VM lock remained unavailable through 01:00 UTC, so the required Mac Chrome timings and screenshots could not be collected. This is an evidence blocker, not a measured Mac performance failure. I did not update
docs/perf/baseline.json.Linux perf VM measurements
Three alternating rounds each; values are first-visible
p50/p95in milliseconds. Load averages recorded inside the lock were1.84, 2.54, 3.07, 3.30, 3.59, 3.71.Warm typing p50 on head was 3.8% faster than origin/dev on the perf VM. The head runs exited 1 where the profile's 150 ms p95 assertions fired. The Mac warm p50/p95 comparison is not measured.
Mac evidence
MAC_LOCK_WAITING; I did not open a Mac SSH, Chrome or GUI session without the lock.Commits and files
a953928a57b0d299143978fa414e6a63042b3337Merge origin/dev into search typing performance job0fa596ff2remains in the branch. Relevant files includeapps/web/e2e/search-perf-1425.mjs,bench/search-typing-1425.sh, Search registry/server and focus modules/tests,crates/calternal-server/src/main.rs,crates/calternal-server/src/search_cancellation.rs, and the exact perf ledgers. The Mac runner patch was temporary and is not committed.origin/devaf202e1514955ddf0f8b4b3d2503c780d807ed84; currentorigin/devhad reworked the profile harness. This baseline choice was documented in an earlier issue comment.Gates (verbatim output)
cargo fmt --check: exit 0, no output.cargo clippy -p calternal-server --all-targets -- -D warnings:Requested filtered command:
The repository marks this live-app test ignored for normal runs. It passed once using the documented isolated mode:
bun run check:bun run test:cargo clean:Remaining
The job time limit stopped further waiting. The next run needs to acquire
/tmp/mac-bench.lock, run the six alternating Mac Chrome profiles, capture and attach the 12 screenshots, then apply the fixed decision rule. If ACCEPT, update and commitdocs/perf/baseline.json; otherwise leave it unchanged. The worktree is clean, and build output was removed.Orchestrator decision: branch job/searchperf-1425 (
a953928a5) REJECTED on the perf VM data alone, by the pre-set rule (no host may be >10% slower at p50): COLD first-visible p50 96 -> 180 ms (+87%), p95 273 -> 351 ms; warm only 3.8% faster. The server-first dispatch likely delays the first local results on a cold window. Not merging. The focus-ring fix after Cmd+K (commit926c6308e) is UI and will be ported separately by a Sonnet worker. Next step for #1425: profile cold first-visible on dev and keep local results first.Partial improvement deployed in merge round 35c (build
5a2c02c13). Left open: target not yet met.