E2E: bring the 67-workflow sweep back to green (53 stale/failing) #1071
Open
opened 2026-10-04 22:14:40 +00:00 by kayg
·
87 comments
No Branch/Tag specified
dev
wip/rev2-webperf
wip/rev2-money-ident
wip/restyle-notes
wip/previewcard-1098
wip/palette2-1123
wip/palette-1093
wip/onboard2-1141
wip/onboard-1141.aborted-early
wip/onboard-1141
wip/nlpchip-1127
wip/morph-1104
wip/merge-round-7c5
wip/merge-round-7c4
job/notifloop-1194
wip/merge-round-7c3
wip/merge-round-7c2
wip/merge-round-7c
wip/mchrome-1084
wip/mailghost2-1094
wip/mailghost-1094
wip/kbpreview2-1118
wip/kbpreview-1118
wip/kanban-1092
wip/importhang-1121
wip/hiderev-1153
wip/hide4-1153
wip/hide3-1153
wip/hide2-1153
wip/hide-1153
wip/editreg-1132
wip/editorrail3-1113
wip/editorrail2-1113
wip/editorrail-1113
wip/e2e-b2-1071
wip/e2e-b-1071
wip/draw4-1101
wip/draw3-1101
wip/draw2-1101
wip/draw-1101
wip/directory-1199-r
wip/directory-1199
wip/delete-1119
wip/collabrev-1197
wip/collabloss-1197
wip/cards2-1083
wip/cards-1083
wip/canvas-visual
wip/canvasvis2-976
wip/calhdr-1112
wip/calcards-1115
wip/browserfix
wip/blocks-1125
wip/allday-1107
wip/agenda-decks
wip/agenda-1086
wip/adv7c-1105
wip/txentry-1198
wip/trayicons2-1095
wip/trayicons-1095
job/onboard-1141
wip/sidebar3-1094
job/collabloss-1197
job/hide-1153
job/perf-1124
job/perf2-1124
job/tocrail-1191
job/restyle-settings
wip/restyle-settings
job/segmented-1200
wip/notifloop-1194
job/tagperf-1186
wip/tagperf-1186
wip/segmented-1200
job/restyle-files
job/tagdnd-1187
job/merge30
job/cards-1179
wip/cards2-1179
wip/cards-1179
wip/tocrail-1191
wip/tagdnd-1187
wip/restyle-files
wip/perf-1124
wip/merge30j
job/restyle-notes
job/wizchoices-1140
job/adv-1202
wip/wizchoices-1140
wip/restyle-1190
job/moneyfmt-1180
job/txentry-1198
wip/moneyfmt2-1180
wip/moneyfmt-1180-r
wip/moneyfmt-1180
job/pillglass-1189
job/flags-1181
wip/flags-1181
job/restyle-1190
job/restyle-mailmoney
job/restyle-search
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/directory-1199
job/proflog-1204
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
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
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/calcards-1115
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
job/importhang-1121
job/cards-1083
job/palette-1093
job/mchrome-1084
job/e2e-a-1071
job/canvas-visual
job/previewcard-1098
job/allday-1107
wip/e2e-a2-1071
wip/e2e-a-1071
job/e2e-b-1071
job/adv7c-1105
job/kanban-1092
job/agenda-1086
job/merge-round-7c
job/morph-1104
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
job/browserfix
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/agenda-decks
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-money-ident
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/rev2-webperf
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/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
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
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
wip/modes-424
job/recog-417
wip/recog-417
wip/bounce-425
wip/ab-384-luna
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
Notifications
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#1071
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?
E2E suite debt (2026-10-05)
The packaged e2e sweep (67 workflows) on 7b: 14 pass on the first run, 1 passes on retry, 53 fail (job/e2e-7b report on #867). Most failures are 20–30 s click/wait timeouts in older workflow scripts, written before the Settings §50 reorganisation, the §34 Inspector, the §33 short links, the mode tray changes and today's 7b UI. One real regression was found and fixed (Files upload identity,
da2eb5f91).Wanted: one owner job per group of workflows. Bring each workflow to PASS against current DESIGN (fix stale tests to assert what a User sees; fix the product where it is wrong), run them in CI order on a quiet host, and keep a baseline server binary of production to compare against. Goal: the sweep is green before every production deploy.
Starting group A verification on branch job/e2e-a-1071, based on production
9fb9a4bfb2. I am reading the prior per-workflow report and DESIGN sections before building the production app/server once and running workflows serially.Starting workflow group B on branch job/e2e-b-1071 from production round-7b base
9fb9a4bfb2. I have read CLAUDE.md, CONTEXT.md and the relevant DESIGN sections; next I am mapping the packaged workflows to the #867 report before building the production web app and server.Environment finding: the first stopped before Vite started with (exit 127); this worktree had no root or app . The Bun cache exists. I am installing with the committed lockfile, then will retry the production build.
Environment finding: the first bun run build stopped before Vite started with /usr/bin/bash: line 1: vite: command not found (exit 127); this worktree had no root or app node_modules. The Bun cache exists. I am installing with the committed lockfile, then will retry the production build.
Environment finding: the first production web build exited 127 because neither root nor apps/web had node_modules (). bun install v1.4.2 (744846f84)
Checked 722 installs across 821 packages (no changes) [3.43s] then installed 711 locked packages; bun.lock stayed unchanged, and completed successfully.
Correction to my previous environment note: the exact first build error was /usr/bin/bash: line 1: vite: command not found (exit 127), and neither root nor apps/web had node_modules. bun install --frozen-lockfile installed 711 packages; bun.lock stayed unchanged. The production web build then completed successfully.
Environment finding before app assertions: the first ai workflow could not load Playwright because tests/adversarial/node_modules was absent. Its package pins Playwright 1.63.0 and has its own bun.lock; bun install --frozen-lockfile there installed seven dependencies. The next attempt showed the runner must set CALTERNAL_SERVER_BIN: Cargo's preset target is /home/kayg/build/targets/e2e-b-1071, while this workflow defaults to the absent worktree target/debug. The built server exists in the preset target. I will pass that binary for ordinary workflows; mail-sync-613 must run without this override so it can build its test-provider server.
Finding — tocrail-636: the production check fails at 1440 px in Paper. The heading title's computed fill is
color(srgb 1 1 1 / 0.36)while.warm-tooltipresolves to transparent. Both surfaces consume--warm-tooltip-bg, butpackages/ui/src/tokens.cssdoes not define it. This violates DESIGN §34's shared warm tooltip material and #636's recorded decision to use the stronger 94% static chrome fill, with an opaque surface under reduced transparency. I am restoring that shared token contract and will rerun this workflow.Product finding in the ai workflow: after the User chooses Undo the rest, the Turn panel shows Undone and GET /api/v1/ai/turns/ reports status undone, but the Settings → AI → History row remains Completed after Escape. TurnHistory calls Resource.load when the panel closes, but listTurns serves its 30-second cached list. This violates DESIGN §59's rule that a mutation appears at once wherever the same item appears. I will clear the existing shared turn-list cache before the close refresh; the packaged ai E2E asserts the visible history row changes to Undone.
Finding — toast-ring: the reduced-motion production check fails at the 2,000 ms midpoint with stroke opacity 0. DESIGN §34 still requires reduced-motion support, and issue #721 specifies a stationary line that fades with the toast timeout. The shared reduced-motion rule in
packages/ui/src/tokens.cssforces all animation durations to0.001ms !important; it overrides the toast ring's--cal-toast-ring-durationfade. I will preserve the stationary geometry and exempt only this time signal from the global instant-duration rule, with a regression assertion.Environment finding — notes: the first run stopped before browser setup because its documented default module
tests/adversarial/node_modules/playwright/index.mjswas absent. The root Bun install does not install this nested test package. I am installing the adversarial package from its own frozen lockfile and will rerun notes; no workflow assertion changed.Stale-test finding — notes: after the harness dependency was installed, the production workflow timed out waiting for a stable Block ID in the Note body (
apps/web/e2e/notes.mjs:2057) before pressing Enter to submit the reminder at line 2061. This repeats #867's identified ordering error: the User must press Enter to commit the reminder before the saved Block ID can appear. I am moving that input action before the unchanged saved-state assertion.Screenshot-mode evidence: the AI workflow passed on the production bundle, but its Mac-emulated screenshot pass timed out in
openCommandsbecause the test still sent Control+Shift+; while the app registered Cmd+Shift+;. I updated the harness shortcut selection to match the emulated platform; the workflow is being rerun with the Mac shortcut.Analytics workflow finding: the production dashboard loaded and returned analytics API responses in 16–22 ms, but a chart remained in its loading state and the workflow's
settle()wait reached its 120 s timeout. The server log had no 5xx; the local host had other active E2E/browser processes and load averages of 4.62 / 7.02 / 8.89. This run is classified as a shared-host environment stall, not a confirmed product regression. It needs a clean merge-round rerun if the chart-loading check is still required.Money workflow findings and fix: the 5,000-row test import could finish before Playwright queried the Cancel import control. The test now holds the real preview response until the job-cancel request, so it covers both a live parse and the supported completion/cancel race without changing the API or increasing fixture size. A later assertion also exposed console noise for the workflow's expected 409 publish conflict and 404 cancel of the consumed preview; I added a narrow filter for those exact routes while retaining the explicit status assertions. The final run reached
PASS captured Money screenshotsacross the Mac-emulated phone/tablet/desktop and light/dark matrix. Screenshots remain in the ignored worktree directoryartifacts/money.Notes workflow finding: clicking “Remind me” inserts a local stable block ID (the editor DOM shows
^rx8qyp), butGET /api/v1/notes/<id>still returns the old Markdown body after five seconds. The reminder picker therefore reports that the block is still syncing and does not open. The existing reminder API validates the ID against saved Note Markdown, so sending the request earlier returns “The reminder could not be saved.” This is a product persistence regression; I am tracing the collaboration save path before choosing the fix.Ask workflow finding: Playwright could not check the recovery-key acknowledgement because the decorative SVG intercepted pointer hits over the native Checkbox input. This was a real shared-control regression.
packages/ui/src/components/Checkbox.sveltenow makes the indicator pointer-transparent, so the native input or containing checkbox button receives the hit. The screenshot-mode harness also uses the Mac shortcut, emulates macOS, and crops only the acknowledgement row so recovery words never enter artifacts. Final run:ask e2e: ok,CSP REPORTS ask: 0 across 2 pages. Review captures are in ignoredartifacts/ask, including the six phone/tablet/desktop acknowledgement crops in both themes.Mail sync finding and result: the Dovecot fixture is amd64 on this host, and the opt-in
mail-test-providerserver completed the 2,000-message backfill. The remaining failures were stale UI expectations inapps/web/e2e/mail-sync-613.mjs: the invoice is automatically categorized under Receipts, sanitized bodies are rendered inside the isolated frame (DESIGN §§45, 49), Files prefixes a timestamp to avoid attachment name collisions, and sender names also appear in the per-message More actions buttons. The test now follows the Receipts link, reads visible bodies through the frame, selectsbutton.thread-toggle, matches the original filename suffix, and checks category state immediately and after reload. Touch checks the changed Newsletters view.Final Mac-emulated run:
mail-sync-613 e2e: ok; 2,000 messages backfilled in 19.481 s; thread, attachment, sender-category, touch, and all 24 390/820/1440 light/dark screenshots passed;CSP REPORTS mail-sync-613: 0 across 2 pages. Captures are in ignoredartifacts/mail-sync-613/.Calendar workflow finding: the API returns all five 10:00 CalDAV Events and the Calendar range projection includes them. At 820 px with the sidebar open, each date column is about 61 px wide; the Week grid renders those Events in one
+5overflow chip. At 1250 px each date column is about 118 px wide; it renders one Event lane and a+4chip. The merged #427 GridColumn rule reserves room for the+Npill and keeps remaining lanes at their 36 px minimum, so these rendered counts match that rule. The inherited #384 assertions expected one visible Event at 820 px and three at 1250 px. I updated the workflow to assert the current counts and keyboard-open the 820 px chip to confirm all five Events are available in the accessible list.Calendar view-switcher finding: the production build has no
.cal-viewsheader pills at 1440 px with the sidebar closed. The current CalendarTools component says Calendar views stay in the sidebar and Cmd+K; merged #526 revised the title-menu rule so Calendar views are sidebar sub-views only. This matches the job's binding Chrome rule that sub-views live in the sidebar. The old #352 matrix still expected wide collapsed-header pills. I am updating that row to assert there is no duplicate switcher and that reopening the sidebar exposes the five shortcut-labeled view rows.Group A finding —
task-header-659: the workflow failed because the Task Header had no.task-note-cardancestor.NoteView.sveltealready defines.task-note-cardas the task-only rule for the shared Note Card (min-height: 280px; width: 100%), but the rendered Card only hadnote-card. Restoring the task-only class made the production workflow pass its 390px, 820px and 1440px light/dark checks, including the Task and Calendar inspectors. I committed the one-line fix separately; the build succeeded.Calendar lane follow-up: after the revised width checks, the 1250 px case renders one visible CalDAV subscription Event plus
+4. The visible Event's.b-contentisflex, as expected by GridColumn's #431 rule that cramped subscription Events retain a short title; the old helper still required.b-contentto benone. I am changing the assertion to verify the visible title and button action, the fulltitle/accessible name, and hidden time metadata.Calendar Day geometry finding: at default zoom the two-file Gym Log shows its compact attachment pile and keeps it inside the title row. GridColumn only shows both thumbnail cards at tier 3; the workflow already has a dedicated
withDeckZoomassertion for that state. The default-zoom assertion incorrectly required tier-3 cards before changing zoom. I split those expectations so the default pile and the tier-3 deck remain independently covered.Calendar Day interaction finding: at 390 px the timed
+1control opens the shared all-items surface, and its list contains both the 13:00 Event and 13:05 Log. The repair run then reaches the right-edge File crop and fails because the test queries.activity-card; GridColumn now renders the real File through.activity-summary > .item-card. I am updating the crop target to that existing ItemCard.Group A finding —
notes: after the Notes workflow copies several heading links in one live session, the collab server repeatedly logscould not map edited Markdown to the loaded Note source. A real direct Share exists in/api/v1/files/sharesbefore those saves, then disappears from the owner list and the remindereveryonepreview contains only the setter. The File item ID before the edits differs from the ID after/api/v1/files/statrefreshes the file. This shows the failed multi-block save leaves Files with a stale fingerprint and the valid Share becomes unusable. I am extending the safe source patcher to preserve multiple non-adjacent anchor edits; I will keep the current recipient assertion.Calendar tier-3 attachment finding: the compact pile and deck coexist briefly while the LOD transition runs, so the previous helper read the pile before its fade completed. The deck is visible. The
b-thumbclass used by the old assertion no longer exists; #822'sAttachmentDeckrenders each attachment as a.representation.thumb .item-cardinside its list. I am waiting for the pile and deck to reach their final opacity, then checking both real ItemCards and their geometry.Calendar tier-3 geometry finding: both real attachment ItemCards now render with the expected file names, and the pile fades away. Their measured boxes share the same left edge and are separated vertically (first bottom 218.5 px, second top 244.5 px), matching GridColumn's vertical Calendar deck. The inherited #384 assertion expected same-top, side-by-side cards. I am updating it to assert vertical order and non-overlap.
Calendar view-switcher classification: stale test expectations. The full production workflow passes at 390/820/1440 px, light/dark, and sidebar open/closed. Screenshots are in
artifacts/calendar-followups-376(macOS platform emulation enabled).Evidence and fixes:
/settings/mail/connectnow aliases to Connected Accounts under Settings §50, so it no longer shows a Mail heading or an Advanced disclosure. The review surface now opens the canonical App Passwords group and checks the shared “More options” disclosure token, its controlled panel, and Enter/Space behavior.Workflow PASS:
CALTERNAL_SERVER_BIN=/home/kayg/build/targets/e2e-b-1071/debug/calternal-server CALTERNAL_E2E_MAC=1 bun e2e/calendar-view-switcher.mjs.Head at this finding:
e4cf4285c.WebMCP recheck disposition: SLOW. On the production SPA and isolated local server, the generated Note create/read check passed. A later real WebMCP callback returned
Index is busy; retry shortly; the script then exited. Its lifecycle diagnostic reportedrunning: true,panic: false,stackOverflow: false,healthy: true, and no connection errors. Host load average at the run was 9.20/5.50/6.24. This matches the prior #867 index-contention candidate. I did not change the product or retry the workflow.Search findings:
Control+Keven though its Playwright context emulates macOS. Search usesMeta+Kin this context. The stale shortcut timed out waiting for.surface.search-window; changing the helper and matching reopen toMeta+Klets the production flow proceed.assertSearchActionsFloatOverResults. The rendered dark action pills usergb(42, 45, 58)(--raised) and a transparent border; the test expects the translucent shared chrome tint and a visible hairline. DESIGN §34 and #1029 require filled neutral action pills with no outside border. I am updating the assertion to compare against the active theme's--raised/--paper-2fill and a transparent border, while retaining its blur, spacing and scroll-pinning checks.Search layout follow-up: after the Mac shortcut and #1029 material assertions were corrected, the run reached the two-result preview sizing check. It reports a real preview column (
291pxwide) butpreviewTitle: nullbecause the selected File preview renders its title with the sharedItemCard.item-title, not the legacy.preview h3selector.SearchPreview.svelteuses ItemCard for File and Photo results. I am updating the geometry probe to measure either the shared ItemCard title or the text heading, preserving the bounds, line-height and descender checks (DESIGN §34).Search layout follow-up: measuring the current shared ItemCard title now passes its preview bounds and full line-height checks. The next stale assertion rejects
text-box-trim: trim-both; the real title hasoptical-caps, whose shared token rule setstext-box: trim-both cap alphabeticto align the cap while retaining the baseline for descenders. The assertion conflicts with the current typography rule. I will check the alphabetic text-box edge when trimming is active instead of forbidding that rule.Search shortcut evidence: the failing expanded-palette check sends
Control+Enterin the macOS-emulated run. The single shortcut registry bindssearch.allto['cmd', 'Enter'](Search shows ⌘↩ on macOS);search-dialog.sveltedispatches through that registry. Both Search test activations using Control+Enter are stale. I will use Meta+Enter for the Mac run and keep the existing expand/collapse assertions.Search grouped-results classification: stale test vocabulary. With the current
atlasfixture, the production Search headings areNotes,Journal,Days,Photos, andFiles; the test still requiresLog entriesin both its required-heading list and fixed-order rank list. CONTEXT.md § vocabulary states the source UI label isJournal, andapps/web/src/lib/search/query.tsmaps Log results toJournal. I am updating both assertions to the current label.Notes follow-up: the new server log reason identified the remaining case as
pure insertion has no exact source span. The editor writes list, quote and table anchors on a separate Markdown line. When the raw Note also has blank-line or URL syntax that changes canonical line counts, that token could not be mapped safely. The source patcher now maps the inserted token after a unique exact previous block line and preserves the following raw bytes. A regression test covers a task-list anchor before image content.cargo clippy -p calternal-collab --all-targets -- -D warningsandcargo test -p calternal-collabpass; I am rebuilding the server for the Notes rerun.Search shortcut follow-up: the production context uses
emulateMacPlatform(context), but three scoped-search interactions still pressControl+Shift+Fand commands pressControl+Shift+;. The single registry binds these asapp.find(cmd+shift+f) andapp.commands(cmd+shift+;). These are the same stale modifier mismatch as Search's Control+K / Control+Enter. I am updating the Mac-emulated test to send Meta for these app shortcuts; the pass/fail and scoped-search assertions stay intact.Search action hint finding: after the current registry-backed shortcuts and
Journallabel changes, the flow reaches the selected-result action check. Its diagnostic already shows the rendered hints↩,⌘↩, and⌘K, but its selector reads.kbdand returns empty strings. The shared Kbd component rendersvariant="caps"as.kbd-capswith.kbd-capchildren (#710, DESIGN §34). I will read those visible caps and assert the three macOS registry labels.Search findings from the production Group B workflow:
/search?q=%23work%20atlas&view=allraisedCannot read properties of null (reading 'pathname')from the Search page callback. The stack pointed tonodes/46...js:1:544, thefrom.url.pathnameaccess. SvelteKit can provide afromtarget with no URL during cold hydration. The route now treats that as a cold entry and preserves the prior origin for query-only Search navigation. The rerun reachedPASS deep link restores state.waitForAppearanceLoadreceived/api/v1/appearancebeforepage.goto()committed its document, thenpage.evaluate(document.fonts.ready)failed withExecution context was destroyed. The shared helper now accepts a navigation callback, registers the response wait first, and waits for the new document before checking fonts. The screenshot run passed the appearance reload and continued.{"x":-43.1875,"y":421.421875,"width":28,"height":28}on a 390 px coarse-pointer page. Its touch CSS now gives both the saved-search row and its menu a 44 px target. The full workflow will verify this change in the next run.Search stale-test finding: the Files scoped-search assertion used a default center click on the selected result row. Playwright showed the selected-result action Pill's
<kbd>intercepting that coordinate, so the test timed out before reaching the row's own pointer handler. The workflow already checks the visible primary action Pill. I changed the file-open pointer check to click the visible filename title, which still asserts that the row's primary pointer action navigates toitem=atlas-brief.txt; verification is in the current full Search rerun.Round 7c4 finding on the merged production build:
timeout 1200 bun apps/web/e2e/canvas-976.mjsfails after Notes → New → New Canvas. The first open shows “This note could not be opened”; the Rename Canvas dialog never appears. The existing diagnostic reread returns HTTP 200, a Canvas source and an ETag. No browser exception was recorded. Server evidence:Notes Index operation failed sqlite_code="5" pool_timeout=falseat 2026-10-05T01:54:54.848920Z. This is a transient SQLite BUSY result, not a SLOW-only timing result. The request that failed first is not yet identified by the existing diagnostics.get_noteresolvesnotes_view_path_for_idand calls the plain reader query inpath_for_id(crates/plugins/notes/src/lib.rs); other parallel Notes operations could also have emitted this diagnostic. Do not claim a root cause from that warning alone. Preserve the original test and add content-free method/path/status diagnostics before a focused rerun. Regression must prove New Canvas opens and prompts for rename during startup/index contention, and must preserve #1062 zero-idle-events and #1076 write scope. No assertion was changed. Evidence: artifacts/merge-round-7c4/canvas-976.log and phone/tablet/desktop Notes New screenshots in artifacts/merge-round-7c4/canvas. READY FOR STAGING remains no.Additional screenshot-harness finding: with
SEARCH_E2E_ALL_SHOTS=1, the Search pills screenshot branch calledapplyTheme()while the Search overlay was open. That helper reloads the current route, so the palette closed and the following pill assertion timed out waiting for its input. The screenshot branch now uses the existing in-place theme helper and keeps the palette open. The saved-search phone screenshot also waits for the sidebar sheet to reach its open rest state before capture. Verification is in the current rerun.Finding (#1071, Notes): Copying a heading link could retitle a Note. The H1 title reader included the durable trailing block anchor in
textContent; after the delayed heading-follow update, the title and Notes path changed (for example,Project AtlasbecameProject Atlas ^yjdvfw), so the existing share no longer resolved for the recipient. I changed title extraction to strip the trailing anchor and added an E2E identity invariant after heading-link copies. The title/path check passed in the Notes series run.Search screenshot-only stale-test finding: the optional all-screens matrix navigated to
/settings/calendarsand waited forDate format. That legacy path now opens Calendar settings, so the date control is absent after the §50 Settings reorganisation. The screenshot check now opens/settings/date-time, which owns the Date format control, and names its captures accordingly. Verification is in the current rerun.Group B report — #1071
Head:
49f402428c200c0c0cf1bcbf734fa101ad6c41e6READY FOR MERGE: no. This report stops at the four-hour job limit. The remaining workflows and final gates are listed below.
fbb2f2956.776cc67e4.841c40659.42c16ecfa.e4cf4285c.a048c268bfixes a cold deep-link crash;264656a24makes saved-search actions touch sized;49f402428updates the workflow for current UI behavior. The local performance sample was SLOW (first-result p95 389.3 ms; 25 long tasks over 50 ms), which DESIGN §§18 and 59 treat as periodic review, not a merge gate. The full workflow printedsearch e2e: okandCSP REPORTS search: 0 across 4 pages.Changes
Changed files:
apps/web/e2e/ai.mjs,apps/web/e2e/ask.mjs,apps/web/e2e/calendar-view-switcher.mjs,apps/web/e2e/harness.mjs,apps/web/e2e/mail-sync-613.mjs,apps/web/e2e/money.mjs,apps/web/e2e/search.mjs,apps/web/src/lib/ai/api.ts,apps/web/src/lib/search/SavedSearchList.svelte,apps/web/src/routes/search/+page.svelte,apps/web/src/routes/settings/ai/TurnHistory.svelte, andpackages/ui/src/components/Checkbox.svelte.Mac-platform screenshots are in the ignored
artifacts/folders, includingartifacts/search-group-b/(390, 820, and 1440 px; paper-white and tokyo-night). Thefjissue CLI exposes text comments but no attachment command, so these files were not uploaded or committed.Gates and remaining work
bun run check: not run; the four-hour job limit was reached.git fetch origin && git merge origin/devand final gates remain to be done together.cargo cleanand web build-output cleanup remain outstanding.Decisions
For a cold Search entry where SvelteKit supplies
frombeforefrom.urlexists, the route treats it as having no originating app path. This keeps the overlay close behavior deterministic. The Search performance sample remains visible as SLOW while the workflow continues, consistent with DESIGN §§18 and 59.Gate output: No final gate commands ran, so there is no gate output to quote.
Finding (#1071, Notes): the removal Undo E2E poll referenced
reminderBeforeRemovefrom a browser-serialized callback. The callback runs in the page and cannot see the Node variable, so it failed withReferenceError: reminderBeforeRemove is not definedafter the product had restored the reminder. I now pass the expected reminder through the poll argument and retain checks for identity, fields and revision.Continuing group B on branch job/e2e-b-1071. Starting HEAD:
49f402428c. origin/dev is2b6c77c14b(production round 8); merging it before the remaining workflow runs.Finding (#1071, Notes):
waitForNoteRouteexpected the retired/notes/<id>path even though DESIGN §33 uses/n/<id>as the stable Note deep link. The application opened the right Note at/n/<id>, but the workflow timed out waiting for the old path. I updated the helper to verify the designed short route.Round 7c4 verification update (#867). The focused Canvas co-edit flow passed unchanged: three Users plus a public viewer; strokes, exports, Shared JSON discovery, follow, downgrade and revoke; 48 macOS screenshots at 390/820/1440 in both themes. The initial failing run remains in the report.
The focused ordinary Canvas flow reached New Canvas, rename and empty reopening, then failed the original 30-second assertion that the real Notes API contains text
Canvas planafter filling the bound-label textarea and pressing Escape. The rectangle persisted. No failed API response was recorded in this run. Server diagnostics included SQLite BUSY code 5. These observations do not establish whether the label failure is in the fixture, renderer or save path. The earlier New Canvas readiness failure is also retained. No assertion was changed. A separate focused path reuses the same Pencil/list assertions with a scene uploaded through the real API, so those requested phases are exercised despite the earlier failure.Authorization matrix result, verbatim:
The complete MCP section passes after sharing the existing Money provenance-envelope parser and sequencing confirm before opening the cancellation preview. All UUID, scope, summary and single-use assertions are retained. The focused helper tests report
Ran 5 tests/OK. Commitb45d7f740.Files tests confirmed the filed #988/#1045 conflicting error-text assertions:
test result: FAILED. 248 passed; 2 failed; 4 ignored; 0 measured; 0 filtered out; finished in 160.57s. They are not weakened. Calendar gates found one previous-release fixture missingPluginRequestContext.session_actor; the minimal fixture repair usesSessionActor::User, consistent with the surrounding tests. Remaining per-crate gates continue.SLOW finding — calendar: the production workflow timed out after 30 s waiting for the Journal dialog. At launch, host load averages were 11.55 / 16.30 / 15.50. The run recorded no assertion failure or server error, so this is classified as shared-host load; I am proceeding without a retry.
Stale-test finding — weekstate-609: it failed waiting for its 2026-10-07 marker on /calendar/week/2026-09-28. The current route creates a seven-day Week window, and DESIGN §39 says the path date is the first visible day, so this marker is outside 09/28–10/04. The workflow later deep-links to 10/05 before checking it. I am narrowing marker ownership checks to the visible Week headers and keeping the deep-link assertion.
Second stale-test finding — weekstate-609: after its range, focus and deep-link checks passed, the workflow timed out looking for a Today link in Calendar navigation. exposes that sidebar action as a month-title button named , with the tooltip and handler. I am selecting that current accessible control; the existing route, focus and scroll assertions remain.
Correction to the prior comment: the source file is packages/ui/src/components/calendar/MiniMonth.svelte. Its sidebar Today action is a month-title button whose accessible name ends with go to today, and it uses the calendar.today shortcut tooltip. I am updating the test to locate that button.
Product finding — calendar-crossday: during Log resize, the preview contains 23:58–00:15 but its combined label has computed display:none; the moving preview is 29.83 px tall. GridColumn.svelte names moving blocks drag-range, then a later .block.actual rule replaces that name with media-slot, so the @container drag-range label rule does not run. I am preserving both container names; the workflow already checks the live label and saved end.
Finding (#1071, Notes): the Shift-click and later keyboard/touch selection assertions compared a heading's raw
textContenttoGoalsorMilestones. Stable^block-idtokens are now present in that text, so the workflow failed while the correct two blocks were selected. I changed these predicates to read the authored.linked-heading-textspan and kept the selection count, action state and route assertions.Finding: calendar-crossday exposed a product regression. The Log resize owns the pointer first, but at 9.6 px of downward travel the shell pullDown action takes capture from route-content.pulling; the preview stops at 00:15 instead of the requested 00:30. The event trace shows the target changing from the captured Log button to route-content. I am adding start-target eligibility to pullDown and excluding controls and nested gesture owners in the shell, with a regression check.
Finding (#1071, Notes): a Shift-click range selection did not reset the stored mouse-tap pair. A quick single click on the original block then matched the earlier click within the double-click window and entered text editing, so the following block-selection assertion failed. The Shift-click range path now clears the prior tap pair; the existing workflow checks that one later click selects the block.
Finding: after the cross-day resize assertion passed, calendar-crossday failed on a stale Week-view visibility assumption. The source date column rendered its designed +2 overflow pill (aria-label: 2 more entries from 22:39), so the adjacent Event was not a .block.plan. The workflow already handles overflow for span records; I am extending the adjacent Event assertion to verify its accessible time label in the overflow list when lane packing hides the block.
Correction to the previous note: the More row's accessible name is designed to expose the provider and title, while its +N control exposes the overlap start time. The row opens the Event preview, which carries the full range. I am checking the trigger time, row name, click action and preview range so the stale visibility assumption is replaced by the actual accessible flow.
Finding: the adapted overflow assertion reached the real More row and confirmed its accessible provider/title, but the pointer click timed out because the success toast from the preceding resize covered the bottom-grid target. Playwright's click log shows the toast subtree intercepting pointer input on every retry. This is test sequencing: the toast pauses while hovered and the grid sits underneath it. I am moving away and waiting for the confirmation to finish before the next pointer action.
Finding (#1071, Notes): the touch block toolbar copied the correct stable heading URL, but the workflow expected the title-specific desktop message
Link to “Goals” copied. The shared block action labels its target by type and emitsLink to heading copied. I updated the toast assertion to match that action while retaining the exact clipboard URL and selected-block checks.Correction: moving away did not clear the toast because the resize Undo notice keeps its documented 8-second window and the repeated pointer attempt extended the overlap. The workflow now uses the app's supported Escape dismissal on the focused toast before the next pointer action, then checks the event preview range.
Correction to the new assertion: on a fine pointer, one click selects a Calendar item and Cmd+I opens its preview (DESIGN §34). The workflow now checks that designed sequence from the +N list, then verifies the full 22:39–23:57 range in the preview. Its earlier one-click-open assumption was also stale.
Finding: after selecting an Event from the More list and pressing the documented Cmd+I shortcut, the preview still did not appear. TimeGrid passes the row button as the preview anchor, then immediately unmounts that row with morePopover = null; the selected item's anchor is therefore detached. This is a real regression in overflow-item selection. I am anchoring the selected item to the surviving +N trigger and keeping the existing cross-day preview assertion as the regression test.
Correction: Cmd+I did not open because this workflow imports a raw browser context and never calls emulateMacPlatform. CALTERNAL_E2E_MAC is consumed only by routeCurrentBuild, which this script does not call, so the test was still running with Linux shortcut matching. I am wiring the workflow to emulate macOS explicitly and rerunning the selection path before treating the preview as a product regression.
Finding: with explicit macOS emulation, the More-list selection and Cmd+I preview now passed, including both Event time chips. The Week identity assertion then failed because Event grid keys intentionally include the segment date (event::); the start and next-day keys differ only by that projection date. DESIGN §33 defines the stable Event identity as the Event/occurrence ID. I am updating this stale assertion to compare the occurrence ID while checking each segment date.
Finding: the final Agenda view was anchored on resizeNextDate, six days after Midnight continuation's source date. DESIGN §38 says Agenda starts at its anchor and shows the next 13 days, so that route correctly omitted the earlier Log. The workflow expects all fixtures in one Agenda capture; I am anchoring it at sourceDate, which covers every fixture date.
Correction: Today routes intentionally normalize to the current day in the mounted Today view; changing its URL date cannot backdate the Agenda. The current screen exposes Show earlier days, which loads one earlier 14-day page per DESIGN section 38. The workflow must use that control to include its older fixtures. I am updating it to load one page and then check all records.
Finding: after the earlier Agenda page loaded, the unresized Midnight continuation appeared on both dates, but the Log resized from 00:00 to 00:30 matched only one Agenda row. The PATCH response already passed with end 00:30. I am collecting the date of the missing projection to separate a stale expectation from a Calendar projection regression.
The latest
notesworkflow stopped before its touch checks. After the test created Notes titled “Gym” and “Gym visit”, opening “Gym” did not show the “Gym visit” Unlinked mention within the 15-second wait. The earlier linked and Card mention checks passed. DESIGN §28 N2 requires whole-title Unicode-boundary Unlinked matches.Class: unresolved regression candidate. The run did not capture the search response or index state, so it does not yet separate a Notes regression from delayed search indexing. There was no 5xx or crash. This needs a focused rerun and fix before merge.
e2e-a-1071 report
READY FOR MERGE: no. The Notes workflow has an unresolved failure, and most group A workflows were not rerun before the four-hour job limit. The tree is clean.
HEAD:
2af7cf8bbb21a12cdd72f86b6338966f03f8b677Base update: merged
origin/devonce at4dc9c6d34; no push, deploy or merge was made after that.Built
/n/<id>, authored heading text, real pointer selection, stable identity, saved reminder state and title-specific copy feedback.Workflows
Statuses marked “#867 only” are from the earlier report and were not rerun on this branch.
settings-blaze-641tocrail-636toast-ringnotestask-header-659layoutlibstdc++; run with a compatible Sharp/amd64 environment.app-passwordscomposercontent-visibility: auto.pill-feedbackoverflow-511midnightMeta+Kfor macOS instead ofControl+K.maintenanceoverlay-titlefilesfiles-pastebg-stability-535sharetoaststack-616deeplinksmenu-blurglass-auditconsistencylibstdc++; use a compatible environment.settings-effectslocalStorage; isolate UI state from harness state.blur-436user-storage-555libstdc++; use a compatible environment.kbd-motion-527[200]instead of[200,240]; rerun against the current shared motion durations.overscroll-718Gates and builds
Verbatim output summaries:
bun run checkhas four existing warnings: two empty focus CSS rules in Calendar components and two unused CSS selectors inroutes/notes/+page.svelte.UX gaps
Closed: reminder creation waits for a durable block ID; copying a heading link leaves the Note title and path unchanged; Shift-click range selection ends the prior click sequence.
Left: the Gym mention failure is unresolved. The latest Notes run stopped before touch checks and before the Notes screenshot section. The remaining group A workflows above also need current-branch runs.
Screenshots
Ignored local artifacts remain in
apps/artifacts/taskmeta-659/,artifacts/tocrail-636/andartifacts/toast-ring-review/. The currentnotesrun failed before screenshots.fj issue comment --helpsupports text comments only, so the screenshot files could not be uploaded as attachments; none were committed.Decisions
Files and commits
apps/web/src/lib/notes/NoteView.svelte,NoteEditorSurface.svelte,retitle.ts,editor-types/anchor.d.tsapps/web/e2e/harness.mjs,apps/web/e2e/notes.mjscontracts/perf/exceptions.jsoncrates/calternal-collab/src/markdown.rs,session.rs;apps/web/src/lib/components/AppToaster.svelte,themes.test.ts,e2e/tocrail-636.mjs;packages/ui/src/tokens.css.92fbc77a3,9ad54f8c7,72b7ec519,7967ebe59,2af7cf8bb.Finding: the failed count saw only day-2026-09-26, the first Agenda part. AgendaList intentionally mounts off-screen rows on approach (DESIGN §38, content-visibility and row observers), so the next-day row is not in the DOM at the same time. The workflow must visit each day card and assert its row separately, then compare the stable keys and continuation labels.
Starting group-A verification on
job/e2e-a-1071.Branch head:
2af7cf8bb21a12cdd72f86b6338966f03f8b6777.Current merge base:
2b6c77c14be78e7d1e1030e23b14c63a6772fca7.Requested production rounds 8 and 9 base:
269b1b51b5774d79de08bfb31d058b3d248a7e7b(origin/dev).Finding: the Week identity check passed for both overnight Log segments, but the next assertion timed out waiting for a preview immediately after a fine-pointer click. Calendar click selects; Cmd+I opens the selected item card (DESIGN §34). The workflow now needs the documented Mac shortcut between those actions, as it already does for the overflow Event.
Finding while running
bun run check:perf-lint --checkrejected scoped exception fingerprints after the merged production changes and this calendar slice changed Svelte component hashes. The affected scopes still emitted the same rule and symbol; none were removed or newly introduced. Refreshed 150 hash values incontracts/perf/registry.jsonandcontracts/perf/exceptions.json(138 existing scopes plus 12 for the prior merged touch-target change). Verified all 440 changed diff lines are hash fields only, andscripts/perf-lint --checknow reportsperf-lint: PASS; 0 violations; 19340 scoped exceptions. This preserves existing limits, owners, and replacement tests.Finding (#1071, Notes/Search): the focused production workflow captured
GET /api/v1/search?q=Gymimmediately after fixture creation. It returned HTTP 200,indexing: true,completed_items: 0,timed_out: false; the Notes list already had both Notes and their paths, but Search returned only the Gym visit title hit withsnippet: null. When the Unlinked mention appeared, Search reportedindexing: false/ 100% and returned the body hit with the matchingNotes/...Gym visit.mdpath and snippetMeet friends at the Gym after work. The Notes path-to-ID projection was present in both states.Root cause:
loadUnlinkedMentionstreated a partial Search result during a full Index scan as complete and changed the panel to its real-empty state. It did not retry after the Index finished. I am keeping Unlinked mentions in their existing loading state while Search reports an active scan, using bounded backoff and a retryable error after the wait limit, with unit and production E2E coverage.Decision for #1071: the Unlinked mentions helper waits up to 30 seconds while Search reports a full scan. It checks immediately, then backs off from 250 ms to 2 seconds. If the Index is still scanning at the limit, the existing section-local Retry state appears. DESIGN §28 and the shared UX rules do not set this wait limit; 30 seconds bounds background requests and leaves a clear recovery action.
Finding (#1071, layout): with the Nix
libstdc++.so.6path, Sharp loaded andlayout-sweepadvanced to its Money fixture. The firstPOST /api/v1/money/budgetsreturned 404 because a fresh User starts with Money disabled (money.mjsassertsuser_enabled: falsebefore opting in). The layout fixture seeds Money without enabling the Plugin first. I am fixing this harness setup through the existing/api/v1/plugins/money/meUser toggle; no response expectation changes.Calendar document workflow evidence:
calendar-doc-stackandcalendar-crossdaynow pass against the rebuilt app.calendar-doc-stacksaved 26 screenshots andcalendar-crossdaysaved 60. Both use explicit macOS platform emulation and cover 390, 820 and 1440 px in light and dark.preview-attachexposed stale selectors and keyboard assumptions in the workflow. In the current Calendar interaction contract (DESIGN §34), Enter edits a focused Journal item in the shared Composer, while Space opens its anchored preview; the test tried Enter then Cmd+I, so it left a modal Composer open and never opened the preview. The current dialog and card accessible name is “Journal” (previewLabelin the Calendar route andItemPreview), not “Log entry”. I updated the workflow to use Space and the current accessible name. The next failure is the old attachment-input lookup; I am checking it against the current route-owned input before continuing.preview-attachalso asserted obsolete Calendar action and hover behavior. The selected card currently exposes Info (which opensInfo, <Journal title>), Attach File, Voice Memo, Edit Journal entry, Hide, Duplicate and Delete Journal entry; Copy link is a separate title control. It does not expose the old Open day slot. The transient hover card intentionally omits Delete because the route passes destructivelogActionsonly to persistent previews. The observed hover card was 278×191 versus 290×199 for the selected card, with the same Journal content and all non-destructive actions. I updated assertions to check those current behaviors and compare content independently from action labels.The preview workflow reached the screenshot matrix and found its theme setup was stale:
PUT /api/v1/appearancereturned 422 for{ auto_scheme: { mode, location: null } }. The currentAutoSchemeSettingsrejects unknown fields; Location lives in its own settings area. I removed the obsoletelocationfield from this test payload. This is a harness-only update; the route behaved according to its current contract.At the 390 px screenshot pass, the old “all views have one identical box” assertion failed: the Day preview was 278×274 while Agenda, Week and Month were 290×285. The shared preview placement can shrink a card when an anchor leaves too little edge space (DESIGN §34); the action list and Journal content were identical. I changed the phone/tablet check to require each surface to fit the viewport and keep content/actions consistent. The equal-size assertion remains for wide viewports where the card has room.
Search's Journal preview exposed a product regression.
SearchPreviewalready ownsVoiceRecorder, aVoiceRecordingPill, and Keep/Discard upload handlers, but it did not passonrecordvoiceinto the sharedItemPreview; the availability gate therefore removed the Voice Memo action and left that recorder unreachable. I connected the existing callback. The Search dialog does not supplyonopenday, so the stale test expectation for Open day was removed. Search's constrained preview pane also renders a different card box than Calendar; the workflow now compares real Journal content and current actions while checking the action row stays inside its surface.The phone Calendar screenshot confirmed another stale test assumption: Calendar uses the anchored Journal popover on touch (DESIGN §34;
CalendarPopoversetsphoneSheet={false}), so the page has no.sheet-title. The accessible dialog is already named “Journal”; I removed the assertion that waited for a sheet header containing the item title. The production capture isartifacts/preview-attach/calendar-day-selected-light-390.png.The Calendar Composer recording and save path now passed through Keep and appended the expected attachment count. The next stale assertion expected
Documents/Voice memos/; DESIGN §48 and the Voice Memos migration specify the current canonicalDocuments/Voice Memos/casing. I updated both path assertions in the workflow to match the designed path.Group-A verification findings on
job/e2e-a-1071:libstdc++. I corrected two stale measurements inlayout-sweep.mjs: weekday/date full-width layout boxes overlapped even when their text ranges did not, and transformed MiniMonth padding was compared in unscaled units. The rerun checked 61 screens with 0 CSP reports, then was time-boxed after Calendar preview interactions stalled. It still reports title ink clipping in time blocks and 1.6–1.7px icon/label drift against the owner’s ±1px rule; the repeated 28px event slivers are under 30px. These remain open pending product/harness root cause.["", "08:39\\nrollback second"]for two pending blocks. The blocks expose accessible labels, while TimeGrid usescontent-visibility:auto. Updated the check to bring the blocks into view and assert both accessible names and theirSendingstate. The verification rerun then timed out at the separate attachment step (Attachednot visible within 30 seconds, line 996; CSP 0 across 1 page), before it reached the updated assertion.Workflow finding:
preview-attachcompleted the Calendar and Search preview checks on rerun, then failed at Voice settings because it looked for#opt-models .account-row. CurrentVoiceSection.svelterenders a sharedSettingsRow(li.settings-row) inside that card; the.account-rowselector no longer exists in app code. I will update this stale e2e locator to assert the current row.