PROCESS: browser smoke suite of real User flows over a throttled network (deploy gate) #1122
Closed
opened 2026-10-05 07:59:11 +00:00 by kayg
·
98 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#1122
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?
Owner decisions (2026-10-05 process grill) + "more things need to be tested with browser-use"
Build the per-deploy browser smoke suite: real flows driven in a real browser like a User (Playwright, Chromium + WebKit, iPhone-size and desktop), against a production build with realistic data, over a throttled network path (e.g. 2 MB/s, 80 ms latency proxy) so uploads and slow responses behave like the internet + edge.
First ~15 flows (each asserts what the User sees, with a screenshot kept as a baseline):
Run: before every production deploy (gate, ~20–30 min) and nightly on dev. Output: pass/fail per flow plus screenshots; failures block the deploy. Keep it fast and stable (no fixed sleeps; wait on visible state).
Starting smoke suite work on branch job/smoke-1122, based on dev at
4a8e22609e. I’m checking the existing e2e harness and design decisions before adding the runner.Tags finding for #1122: the server already provides
POST /api/v1/tags/rename/previewandPOST /api/v1/tags/rename(crates/calternal-tags/src/lib.rs), but the production Tags route currently exposes Tag links and Copy link actions only (apps/web/src/routes/tags/+page.svelte). The requested rename/merge Undo has no visible UI action. The smoke flow verifies the server merge and restores its fixture through the same writer, then reports this missing UI action as a failure.After merging
origin/devas required,bun run checkreaches perf-lint and fails with this finding:The error is in the merged #1094 sidebar change and its
contracts/perf/exceptions.jsonentry. The gate stops before the storage, token, and Svelte checks. The smoke work does not change the sidebar or performance contracts.The first
bun run test:smokeattempt exited before running flows because the shared smoke harness did not re-exportplaywrightEntry, which the runner imports. I added the re-export in commit5e000669c; syntax checks, the runner helper export check, and imports for all 15 flow files now pass. I am rerunning the suite after this startup fix.The next setup attempt reached the real signed-in
/todayroute but timed out because smoke readiness accepted onlylightordark. Diagnostic state wasrootMode=system,rootTheme=mono, route content mounted, with no page or console errors.systemis a valid preference, so commit451629cd5now accepts it when a theme is present; screenshot capture still sets explicit light and dark themes.The real Chromium Agenda flow loaded the next history page and measured the visible boundary day at 623.4 px before and 745.4 px after the load. The 122.0 px shift violates the flow's stable-scroll assertion; the smoke check remains strict and will report this failure.
The first real flow completed its Composer actions, then screenshot capture failed because waiting for fonts after a local-only theme change let the mounted System preference repaint. Commit
36ee86b47now waits for fonts before the explicit screenshot theme. A focused production capture passed at 390, 820, and 1440 px in both light and dark on Chromium.Full-run evidence (Chromium + WebKit, 1,428 s, exit 1): the runner omitted its
sessionobject when calling each flow. That left Share and Mail without their fixture state and caused TypeErrors in both engines. The first pass also exposed fixture/navigation defects: current-date data is Oct 5 while Agenda waits for history dates, Money checks proxy bytes before the upload finishes, and the Files/Photos selectors did not become visible. I am fixing harness defects and will retain explicit failures for product behavior.Diagnostic subset evidence: after passing the runner's session context, Share and Mail passed in Chromium (29,347 ms and 27,363 ms). Files accepted the 50 MiB upload and rendered it as
chromium-50mb.png; the fixture had been saved under that basename while the assertion expectedSmoke chromium 50 MB.png, so the fixture path now uses the expected name. Money showed non-zero receive progress but did not reach its review dialog within 180 s, so the flow now reports this as#1121with received-byte and status details and uses a 30 s completion bound to protect the suite budget.Production smoke finding for #06 Drawing insert: Chromium shows the Draw alert “The Draw could not be saved. Your drawing is still here; try again.” after the User draws a rectangle and presses Done. The Drawing stays in Draw, and the Note has no Canvas preview. WebKit closes Draw but also does not show the preview. The flow now reports this as #1102 in both engines; I will attach the failure screenshots with the final result.
Focused production smoke findings:
Both checks stay strict in the final suite. The screenshots will be attached with the final report.
The completed focused matrix adds these results:
Tab Bar passed its shared-size and selected-label checks in both engines. The full smoke run will report every flow and engine.
Production smoke finding for #04 Money import: Chromium uploaded the full generated archive through the throttled proxy (15,055,637 bytes observed). After 30 seconds, import remained at “Aggregating Actual source totals · 189,440 of 560,000 transactions” and never reached the review dialog. The flow fails with #1121 and keeps the real progress check intact.
The first unfiltered run stopped in WebKit after flow #05, before the runner could print its full table. Flow #06's Draw UI creates a
blob:preview; the sharedrouteCurrentBuildhandler attemptedroute.fetch()for that browser-owned URL, and Playwright failed withProtocol "blob:" not supported. I added an HTTP(S)-only route matcher and scoped the Drawing open action to its dedicated preview button. I will rerun the complete matrix after this fix.Finished — Forgejo #1122
Branch:
job/smoke-1122Head:
961eed317ab50348e6206b7f1097cc7e1cca3fbbREADY FOR MERGE: no. The complete suite found production-flow failures, and
bun run checkstops on an existing perf-lint exception inapp-sidebar.svelte.What I built
apps/web/e2e/smoke/, with a real local server, production web build, realistic disposable data, Chromium and WebKit, Mac platform emulation, and screenshots at 390×844, 820×900 and 1440×900 in light and dark themes.bun run test:smokecommand anddeploy/smoke-gate.sh <server-binary>. The normal runner executes all flows and exits non-zero if any flow fails;CALTERNAL_SMOKE_FLOWSis available for focused diagnosis.apps/web/e2e/harness.mjsso browser-ownedblob:URLs bypass HTTP interception. The Drawing flow scopes its Open action to the preview button. Added a failure screenshot at the App Update stale-notice assertion.Files:
apps/web/e2e/smoke/01-composer-batch.mjsthrough15-app-update.mjs,flow-utils.mjs,harness.mjs,run.mjs,generate-actual-fixture.py;apps/web/e2e/harness.mjs;apps/web/e2e/app-update-1059.mjs;deploy/smoke-gate.sh; rootpackage.json.Full-suite result
The complete run took 1,423 seconds (23m 43s), within the 25-minute target. The runner returned exit code 1 because it preserves and reports failed flows. Output:
The full run's App Update result came from a stale local server binary: its build ID was
0582c41e0b6ce4a1f2807de0e527ffc899bcb68a, while the production web build was05e0ecb863eb5139638f94ab43f1650223934b0e. After rebuildingcalternal-serverfrom this head, the focused App Update flow passed in 75,222 ms and captured all 18 responsive/theme screenshots:Other gates
cargo fmt --checkpassed with no output.cargo build -p calternal-serverpassed after refreshing the build ID.bash -n deploy/smoke-gate.shpassed with no output. No Rust source changed, so Rust clippy/test gates were not run.bun run checkreturned exit code 2. Verbatim output:UX gaps
UX gaps closed: the suite exercises real primary actions and state persistence in the covered flows, keeps known-bug cases as hard failures, and captures the Mac rendering across the three widths and two themes. No production UI code changed.
UX gaps left: the full run found Composer batch visibility in WebKit; Agenda targets missing in both engines; Board Done cards missing in both engines; Actual import #1121 stuck while aggregating after the complete upload; Drawing save #1102 in Chromium and missing Canvas preview in WebKit; Search result contrast below 4.5:1 in Chromium; the Apps & Devices phone sheet title not staying visible in Chromium; extensionless HEIC indexing in both engines; and no visible Tag Undo in either engine. The focused App Update rerun passed with a current matching server. The whole matrix should be rerun on a matching server during the merge round.
Decisions not covered by DESIGN.md
target/tmp; generate the 560,000-row Actual archive from invented deterministic values.Screenshot bundles
01 Composer batch · 02 Agenda scroll · 03 Task Board · 04 Money Actual · 05 Note paste image · 06 Drawing insert · 07 Share Note · 08 Mail columns · 09 Search result · 10 Settings devices · 11 Tab Bar · 12 Files upload · 13 Photos HEIC · 14 Tag actions · 15 App Update
Started merge round 31 on job/merge31, base
ff53d7b8b4. Will merge the 14 named branches in order, preserve both ModeHeader changes, refresh exact perf source pins, and run the requested gates. No push, deploy, adversarial matrix or e2e sweep.All 14 branches merged in the requested order; origin/dev fetched and already included. Resolved shared StatusPill to retain inline live feedback and compact size, kept both Money wizard progress and summary metrics through shared MetricCard, retained both Search regression groups, and combined Hidden item presentation with shared Task Card props. ModeHeader retains bounded sidebar blur and separator fade. Notifications migration 0008 collided with the existing Money completion migration: preserved 0008_money_import and assigned new toast-category/cleanup/clear-Undo migrations 0009/0010/0011. Gates are running; exact source pins still being reconciled.
Gate finding: the combined #1190 design guard rejected two #1153 Show hidden native buttons, a Task Card opacity override, and the changed accessible name of an existing Calendar drag row. Replaced the two actions with shared Pill, added shared Card dimmed with a token and regression test, and documented the existing grid-row behavior exception. Focused MetricCard/StatusPill tests passed (3 files, 9 tests). Web production build passed. Rust dependency compilation continues.
Latest gates: production web build exit 0; focused integration suite: Test Files 4 passed (4), Tests 12 passed (12); bun run check exit 0 with svelte-check found 0 errors and 1 warning in 1 file. The merged exact performance ledger was refreshed with scripts/perf-lint --adopt-7c; bundle budgets and source rules are unchanged. Full Vitest is running with maxWorkers=2; Clippy is still compiling dependencies; cargo test --workspace -- --test-threads=4 is queued behind the same target lock. No e2e or adversarial sweeps are running.
Full web suite passed with maxWorkers=2: Test Files 287 passed (287); Tests 2032 passed (2032); Duration 397.26s. The Money review now combines #1179 six grouped shared summary cards with #1140 date range/account details; publishing retains live phases. Its focused regression passed: Test Files 2 passed (2), Tests 11 passed (11). Latest source pins: perf-lint: PASS; 0 violations; 22548 scoped exceptions. Final web rebuild/check running. Rust gates still compiling dependencies.
Final web verification is complete: bun run build exit 0; bun run check exit 0 (svelte-check found 0 errors and 1 warning in 1 file); full web suite 287 files / 2032 tests passed. Corrected the optional account-check test type in separate commit
e0d77a5e7; the focused fixture suite also passed (4 tests). Rust gates remain active on the shared host; no source errors yet. Working tree is clean.The last integration correction makes compact date values retain wrapping inside narrow MetricCard containers (shared CSS selector; no layout reads). Focused regression passed; committed
6c680c387. Final bun run check passed: svelte-check found 0 errors and 1 warning in 1 file. Running the final full web suite/build at that commit while Rust gates continue. No existing numeric per-site perf limit grew versusff53d7b8b(comparison found 0 increases); current exact ledger has 22548 entries.Rust gate infrastructure finding: Clippy stopped in xmp_toolkit native compilation after the shared sccache service reset a connection: "sccache: caused by: Connection reset by peer (os error 104)". Preserved the failed log. Stopped only this worktree’s queued/test process group and will retry Rust gates with direct CC/CXX and no Rust cache wrapper; no product-code failure has been identified.
Source gate finding: #1066 private Search generation regression still called query::search with four arguments; #1153 added show_hidden. Added false to preserve default visibility of the visible fixture and kept all original assertions. Running its focused Rust regression and Clippy. Final full web suite passed: Test Files 287 passed (287); Tests 2034 passed (2034); Duration 835.18s.
Search merge fix verified: cargo clippy -p calternal-search --all-targets -- -D warnings passed; private_hits_survive_concurrent_commits_and_overflow_during_rebuild passed with default show_hidden=false and unchanged assertions. Committed the signature/doc correction separately. Running the complete Rust gates again; web build/check and all 2034 web tests passed.
Source gate finding: the #1181 Admin feature-catalog fixture initialized AppState.startup_progress with StartupProgress::ready, but the merged #1156 health state is a router Extension and AppState has no startup field. Removed that stale test-only field and documented the current ownership; all catalog/access assertions remain unchanged. Focused server Clippy/regression queued behind workspace test compilation.
Rust integration finding: workspace Clippy caught the Feature flag catalog test using the superseded AppState.startup_progress field and StartupProgress::ready constructor. Current startup health uses a router Extension (#1156). Removed only the stale fixture field; catalog assertions are unchanged. The Search merge fix is committed as
df07956e6after focused Clippy and its concurrent rebuild regression passed. Web final gates pass: 287 test files, 2034 tests; check has 0 errors and one existing AttachmentDeck CSS warning; production build compressed 917 static variants. Workspace Rust tests are compiling; the focused server check is queued behind the build lock.Workspace Rust tests compiled, then stopped at two calternal-collab timing failures. edit_during_timer_flush_is_saved_without_another_edit: session.rs:4894, "edit made during the timer flush was never saved: Elapsed(())" (8-second deadline). external_reconcile_waits_for_a_fresh_live_snapshot_to_persist: session.rs:4774, "external reconcile and its flush completed: Elapsed(())" (5-second deadline). Binary result: 90 passed; 2 failed; finished in 49.55s. No content assertion failed. These are SLOW deadline findings on the loaded host; no deadlines or assertions were changed. The next workspace invocation will use --no-fail-fast to complete all remaining binaries instead of stopping at the first failed binary.
Server fixture fix committed as
139d4378ef. cargo fmt --check passed. cargo clippy -p calternal-server --all-targets -- -D warnings passed: Finisheddevprofile [unoptimized + debuginfo] target(s) in 29m 14s (includes the build-lock wait). The focused regression was run from the freshly compiled workspace test binary to avoid compiling a separate feature set: test tests::plugins_returns_admin_feature_flag_catalog ... ok; test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 283 filtered out; finished in 1.07s. Existing catalog assertions were preserved. Final full Clippy and a workspace --no-fail-fast test invocation are running.Final gate progress at head
139d4378ef: cargo fmt --check PASS; full cargo clippy --all-targets -- -D warnings PASS (Finisheddevprofile [unoptimized + debuginfo] target(s) in 30.63s); final scripts/perf-lint --check PASS (0 violations; 22548 scoped exceptions). The unchanged collaboration unit binary now passes all 92 tests in 15.90s, so the earlier two Elapsed(()) deadline findings did not repeat. The final cargo test --workspace --no-fail-fast -- --test-threads=4 run has passed Notes (314 tests), Files (260), Notifications, Photos, Mail and the completed Money/Search tests. Search's 3000-file overflow-recovery test is still active; no failures have appeared in this final workspace invocation. All web gates remain passing, including 287 Vitest files / 2034 tests.Head:
139d4378efBranch: job/merge31
Base:
ff53d7b8b4Merge round 31 integrates all 14 requested branches in order on job/merge31. origin/dev was fetched once and was already included. No push, deployment, adversarial matrix or e2e sweep ran.
Built: the browser smoke gate; follow-up fixes for Files/Notes and Settings; shared glass controls and metric cards; temporary Feature flags; Search isolation regression coverage; Notifications inline Undo and persistence policy; bounded sidebar blur and Note header status fade; Hidden item support; performance evidence/profiles.
Merge fixes: preserve both StatusPill inline feedback and compact sizing; combine Money summary cards with persistent wizard progress, dates and account checks; use shared Pill for Show hidden and shared Card dimming; retain both Search regression groups; preserve startup helpers and Feature flag tests; keep both ModeHeader changes.
Decisions: Review uses six grouped MetricCards; publishing uses live phase MetricCards. MetricCard owns optional progress/account content with value first and label last. Card owns hidden-item dimming. The existing Calendar drag row has a documented design exception for its extended accessible name. Notifications keeps existing migration 0008_money_import; the new category, cleanup and clear-Undo migrations are 0009, 0010 and 0011. No existing deployed migration was renumbered. Performance source pins were generated by scripts/perf-lint --adopt-7c; existing numeric per-site limits were unchanged and guard rules were not weakened. The ratchet equals the exact live ledger: 22,548 exceptions, down from 22,615 on the base.
UX gaps closed: the two new Show hidden actions now use shared controls; Money keeps the date range and expandable account checks with shared metrics; all imported ModeHeader behavior remains combined; compact dates wrap without runtime layout reads; import progress uses one shared numeric animation and exposes progress state immediately.
Known gaps / for the orchestrator: run the browser smoke suite, visual evidence and adversarial matrices separately, as requested in this job. One existing Svelte warning remains: empty .attachment-row:focus ruleset in packages/ui/src/components/calendar/AttachmentDeck.svelte. This merge job does not add a user-visible operation beyond integrating those branches; the metric work is bounded by six summary cards or the fixed set of import phases plus at most 100 account checks. No new perf VM measurement ran in this merge/gates job.
Files: full merged file inventory is artifacts/merge31/files.txt. Integration fixes are in packages/ui/src/components/{StatusPill,MetricCard,Card,ModeHeader}.svelte, packages/ui/src/tokens.css, packages/ui/README.md, the Money import and Notes/Tasks consumers, Calendar MonthGrid, affected focused tests, the Money profiles, notification migrations/store, server upgrade/startup tests, and generated contracts/API client.
Gate fixes: Search isolation tests now pass the explicit default Hidden visibility argument. The Feature flag catalog test uses the current AppState without the removed startup watch field. Both fixes preserve the existing assertions. Shared native sccache failed with Connection reset by peer; native compilers were used for the retry.
Requested branch order: smoke-1122, fu-1166, fu-1171, settingsreg-1195, pillglass-1189, flags-1181, search-1066, restyle-1190, cards-1179, perf-1124, notifloop-1194, sidebarblur-1208, notestatus-1209, hide-1153. Each has its own --no-ff merge commit.
Timing evidence: the first workspace run stopped at two calternal-collab Elapsed(()) deadlines (8 seconds and 5 seconds). The unchanged 92-test collaboration unit suite passed in 15.90s during the final --no-fail-fast workspace run. The final full Clippy gate passed in 30.63s.
Generated OpenAPI verification: the compiled merged server generated a contract equal to contracts/openapi.json (346 paths). No correction was needed.
Shared controls used: Pill for Show hidden; Card for Hidden task dimming; MetricCard for Money summary and progress; StatusPill for inline feedback; ModeHeader for the combined blur and separator fade. Expected metric cost: six summary cards or the fixed import phases, plus at most 100 account checks. One numeric animation runs per changed metric.
Final gates passed. The Rust workspace command used --no-fail-fast to complete every binary after the earlier timing failures stopped the first run. No assertions or deadlines were weakened. Verbatim output excerpts follow; full logs remain in artifacts/merge31/.
cargo fmt --check
cargo clippy --all-targets -- -D warnings
cd apps/web && bun install
cd apps/web && bun run build
cd apps/web && bun run check
cd apps/web && bun run test --maxWorkers=2
scripts/perf-lint --check
cargo test --workspace --no-fail-fast -- --test-threads=4
Focused regression output (verbatim):
Known gaps: visual screenshots, browser smoke/e2e sweeps, adversarial matrices and deployment remain with the orchestrator, per this job prompt. No perf VM measurement ran. The existing empty AttachmentDeck .attachment-row:focus ruleset produces one Svelte warning. No new gate failure remains. No push or deployment ran.
Files (merged inventory):
289 files
Cleanup: cargo clean completed (verbatim):
The preset Cargo target directory, worktree target/tmp and web build output were removed. The working tree is clean.
Starting merge32 on job/merge32 at base
3601719b8. The worktree is clean. I will merge the 14 listed branches in order, preserve opt-in shared component changes and all migrations, regenerate exact performance pins without changing limits, and run the requested gates and four focused browser flows. No push, deploy, adversarial matrix or screenshot sweep.All 14 requested branches are merged in the requested order. Required git fetch origin and git merge origin/dev reports Already up to date (
3601719b8). No migrations were added. Conflict resolutions preserve hidden Notes, task editor geometry, source fixture options, watcher cleanup and public-password tests, and all shared Card/Pill/OverlaySurface opt-in props. Integration checks found duplicate primitive definitions and a leftover StatusPill conflict fragment; these are corrected and the combined primitive regression tests are running. cargo fmt --check exited 0 with no output. Full clippy, production web build and exact source-pin regeneration are running. The four stopped area runners have been identified from the restyle report and a detached origin/dev baseline is prepared.Integration fixes are committed separately:
6a4b0db49consolidates shared primitive variants and restores the unchanged Card theme contract;bbdc4f600adds the missing Money production-asset override and consolidates Notes fixture documentation. Focused primitive gate output, verbatim: Test Files 4 passed (4); Tests 65 passed (65). Combined primitive/theme regression output, verbatim: Test Files 3 passed (3); Tests 117 passed (117). Source pin regeneration uses the repository parser and validator: 1,338 hash refreshes, no limit increases. One obsolete ActivityStack material scope was removed and its ratchet lowered by one. Full gates are running; host load average reached 84.50. Baseline Mail has passed its initial interactions and is progressing through the full reader probe.Integration fixes are committed at
9721d29995.be7c3fe8a: ActivityStack inherits size and uses three CSS depths. The focused component regression passes:Test Files 1 passed (1)/Tests 2 passed (2). The generated pin refresh reportsUnmatched scopes: 0. No budget increased.9721d2999: Money e2e now opens Import through the real button before asserting/money/import. The assertion is unchanged.No push, deploy, adversarial matrix or screenshot sweep has run.
Head:
5569ecdeee. Working tree clean.Completed gates (verbatim excerpts):
All five full-suite failures were
Error: Test timed out in 5000ms.The focused run keeps the original timeouts and assertions, confirming SLOW-only host timing failures. The full suite was not repeated.Current Calendar reproduces the same initial Today range assertion as origin/dev; tab selection passes on both (#1313). Current Mail passes the layout interactions, then reproduces the prepared-image timeout; the exact baseline result is unconfirmed because baseline stopped earlier in a theme timeout (#1316). Origin/dev Agenda reaches the reported hidden Day fan (#1314). Current Money and Agenda comparisons and the full Rust workspace tests remain active.
No test expectation or fixture has been weakened. No push, deploy, adversarial matrix or screenshot sweep.
Correction to the Money setup finding: the first empty-state visit already opens Import automatically (
apps/web/src/routes/money/+page.svelte,!moneyImportSession.hasOpened). The manual click in9721d2999raced that navigation and timed out after its button detached. That was my setup error.1f05912e0replaces the manual click withwaitForURL('**/money/import'), then runs the unchanged route assertion. This waits for the existing first-visit behavior rather than assuming the URL changed synchronously with the empty-state paint. Node syntax check passes. Money will run once more after the active Agenda comparison. The initial failing run is retained in the logs.Starting reconcile-c1 on job/deploy-c1 at
6a63934d67. Investigating exact performance pins and the durable Money Undo failure; each fix will be committed separately, followed by the requested full gates. No push or deploy.The corrected Money rerun exposed a second setup mismatch: its first-visit Import URL includes
?step=source&format=actual-zip(the restoration grammar fromMoneyImportSession.link()), so a glob ending exactly in/money/importnever matches.5b2825e6cwaits forurl.pathname === '/money/import', then runs the existing pathname assertion. This preserves query restoration and every assertion. Node syntax check passes; the full Money runner is active once more for this focused correction. Initial failed attempts remain in the logs.Both current and origin/dev Agenda reproduce the same hidden Day fan (#1314). Current and origin/dev Calendar reproduce the same range contract mismatch (#1313). Current Mail's prepared-image timeout is filed as #1316; baseline stopped earlier in a theme timeout, so exact baseline reproduction is unconfirmed.
Finding: the focused Money Undo matrix fails at durable_import_tests.rs:683. Comparing payload fields without logging contents shows only paths changes: the startup cleanup worker reclaims private import sources after the test snapshots the receipt. Money source is identical on merge31, collabloss-1197 and deploy-c1. The fix drains the existing cleanup in test setup before the snapshot; all assertions remain unchanged. The 111 performance findings are confined to hidden_items (78) and shared retry_when (33), introduced by the visibility retry call graph. Refreshing exact tested capability proofs will keep the existing rule and debt ceilings unchanged.
Committed
9f7df52c7: restore exact hidden_items proofs after #1293 and add exact bounded retry proofs backed by existing isolation/lock-retry/attempt-limit tests. New guard regression proves a retry proof cannot hide provider IO in its caller closure. Regenerated pins with scripts/perf-lint --adopt-7c: perf-lint: PASS; 0 violations; 22536 scoped exceptions. Ratchet shrank from 22548 to 22536; no guard rule or limit increased. scripts/perf-lint test: Ran 137 tests in 0.101s; OK. Requested web production build and cargo fmt --check passed; branch comparison and Rust gates continue.Branch comparisons (same target directory, no changes to either worktree): the unchanged Undo refusal matrix passed on job/merge31 at
139d4378eand job/collabloss-1197 at69976d30d, each 1 passed / 0 failed. The candidate previously failed at line 683 with only paths changed. These outcomes fit the independent startup reclamation race, not date-dependent arithmetic or a change to Money calculations. Existing Money assertions remain unchanged. Per-crate clippy passed; full Money tests and the requested full clippy gate are running.All four requested area comparisons are now resolved at head
5b2825e6cd./moneyvs/money/importassertion. The merged runner now waits for the Import pathname with its query and passes this step. It reaches CSV Review, then fails the unchanged four-check assertion's obsolete Totals checked list selector (#1318). Both source trees use Check groups Cards; exact baseline CSV runtime reproduction is not claimed.Focused baseline runner diffs are retained under artifacts/merge32/baseline-probe.diff. No assertion or fixture was weakened; no product source changed in baseline. Full Rust workspace tests are still compiling. All other gate results remain as reported.
Committed
41102c015: settle the existing source cleanup in the Money refusal fixture before snapshotting the receipt. No existing assertion, response expectation or financial calculation changed. Per-crate gates passed: cargo clippy -p calternal-plugin-money --all-targets -- -D warnings: Finisheddevprofile [unoptimized + debuginfo] target(s) in 3m 49s. cargo test -p calternal-plugin-money -- --test-threads=4: test result: ok. 123 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 192.75s / test result: ok. 27 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 14.08s. Both previously reported test names pass. Full clippy and the requested workspace tests continue.The first workspace test run stopped at calternal-collab after 60 passes and 32 failures. All 32 failures contain FreeSpaceReserve: the root filesystem had about 13.9 GB available and the configured reserve is 31.7 GB. Earlier API/Auth tests passed. This is an environment capacity failure, not SLOW-only and not a failed security invariant.
The preset CARGO_TARGET_DIR points at /home/kayg/build/targets/merge32 on the root filesystem. I initially aliased the requested /mnt/hdd/targets/merge32 to that cache to avoid duplicate output. That kept the cache on root and contributed to the reserve failure. I am relocating the same owned cache to the actual HDD target, preserving both paths through a reverse alias. The requested TMPDIR remains /target/tmp and will point at that owned HDD target's tmp directory. No production reserve, fixture, assertion or limit changes. The failed log is retained as artifacts/merge32/rust-test-reserve-failure.log. Then the workspace tests will run again against the copied build cache.
Progress at head
41102c015: requested production web build and cargo fmt --check exited 0. Full cargo clippy --all-targets -- -D warnings exited 0; verbatim terminal line: Finisheddevprofile [unoptimized + debuginfo] target(s) in 8m 40s. The full cargo test --workspace -- --test-threads=4 gate is still compiling/linking its test targets with CARGO_BUILD_JOBS=4. Compiler CPU counters advance and target jobs move between crates; host load was about 56. No failure has appeared. No rerun or parallel build was started; both fixes are committed and the working tree is clean.Storage recovery update: the failure is the test Home filesystem's free-space reserve. The sufficient fix is to place test temp storage on HDD while preserving
TMPDIR=<worktree>/target/tmp. That path now links to the owned/mnt/hdd/targets/merge32-test-tmp, with 180 GB free. The cache copy was stopped and its partial destination removed; the existing compiled cache stays in place until final cleanup. No reserve, fixture, assertion or production code changed.The cached workspace rerun is active. Cargo rebuilds only the server targets after the earlier web asset changes; the shared sccache process stopped, so these targets compile locally. The first failed run remains in rust-test-reserve-failure.log. The final run writes rust-test-final.log.
Full workspace test gate stopped in calternal-collab: test result: FAILED. 72 passed; 62 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.15s. Root cause is environmental FreeSpaceReserve refusal, not test timing or a weakened assertion: reserve 31695649792 bytes exceeds root-filesystem availability 18013233152 bytes. The required worktree TMPDIR was on that filesystem; shared jobs reduced free space during the build. I moved this job-specific scratch directory behind a symlink at the same required target/tmp path into /mnt/hdd/targets/reconcile-c1/tmp, which has ample free space. Production reserve rules and assertions stay unchanged. Retrying the blocked Rust gate once using the already-built targets; original output is retained in artifacts/reconcile-c1/04-rust-tests-root-reserve.log.
The HDD temp-storage change resolved all 32 free-space failures. The cached rerun compiled only the server targets, then reached one SLOW-only Collab timeout:
The history dictionary durability test took over 60 seconds and passed. The failing persistence-race test then passed in isolation with the unchanged eight-second timeout and assertions:
The full command stops on the first failed package. I am continuing once with
--no-fail-fast, excluding only the five packages already run (async-imap, calternal-api, calternal-auth, calternal-cli, calternal-collab). Their results are retained. This completes the remaining workspace coverage without repeating the earlier groups. No production code, test expectation or reserve changed.Final ancestry audit: all 14 heads recorded at merge time are ancestors of
5b2825e6c. The live job/bash-calendar ref advanced after its merge froma2d343da3tofebe9ef8a. New commits area6019dfe3(tablet range title),827c5e6a9(Event touch/keyboard Undo tests), andfebe9ef8a(stable-identity Event editing). They are not in this verified round. The other 13 branch refs still match the merged snapshots. Per the one-round verification rule, I am preserving the tested tree and flagging these later commits for the orchestrator rather than starting another merge/gate loop. Exact snapshots are retained in artifacts/merge32/branch-snapshot.txt.The corrected scratch-location workspace run has one SLOW-only failure: Files test internal_temp_paths_never_enter_index_during_atomic_write_reconcile_storm hit its existing five-minute bound at lib.rs:8292. Verbatim: writes, reconcile scans, and watcher adoption complete within five minutes: Elapsed(()) / test result: FAILED. 261 passed; 1 failed; 4 ignored; 0 measured; 0 filtered out; finished in 751.62s. No temp-path correctness assertion failed. Per the brief, I will not change or rerun this timing bound. Cargo stops at this crate by default; I am completing the remaining workspace crates without repeating completed suites, then running bun run check and bun run test. All 62 earlier collaboration disk-reserve failures are resolved by HDD-backed fixtures, with no code or reserve-policy change.
Rust continuation findings (source still frozen at
5b2825e6c):Files finishes with 262 passed, 1 failed, 4 ignored in 760.79s. The #1213 storm cleanup reports the original five-minute deadline cleanly:
writes, reconcile scans, and watcher adoption complete within five minutes: Elapsed(()); no secondary JoinHandle or removed-Home error appears. No bound or assertion changed.Mail finishes with 127 passed, 1 failed, 6 ignored in 43.24s.
sync::tests::delta_catch_up_shares_the_bounded_window_budget_and_resumesreportsfirst delta pass failed: Transport; classified log: WARN mail sync step failed step="cache" error_kind="storage". I am not classifying this storage error as SLOW without further evidence. One focused unchanged run is queued after the continuation. Full failure traces remain in artifacts/merge32/rust-test-continuation.log.Money continuation trace: 122 passed, 1 failed, 2 ignored in 781.49s. The malformed-input test failed in recheck_local_http at its unchanged ten-second TCP deadline (
Elapsed(())), not at a status or data assertion.The root volume recovered while verification ran: 251986907136 free bytes at the restore. I paused only Cargo’s parent, let the current Money suite exit, restored the owned temporary directory from the HDD to the real worktree target/tmp, and resumed Cargo. No test process was moved while running; TMPDIR retains its required worktree path. Remaining plugin/server suites run on the original volume. Source and all expectations remain unchanged. Files/Money timing failures and the classified Mail storage error each get one focused unchanged check after the continuation.
Review found that an exact generic operation/predicate call-site proof could conceal a named callback from another caller. Added failing regressions, then constrained the proof to exact hidden_items -> retry_sqlite_busy caller hashes and exact named predicate helper hashes. Both safe/unsafe traversal orders and cycles retain the unresolved unsafe edge. Commit
18e37c351. Guard tests: Ran 140 tests in 0.062s; OK. perf-lint: PASS; 0 violations; 22544 scoped exceptions. Original candidate baseline was 22548: no rule count or limit increased. Restored eight pre-existing unresolved callback scopes which the initial proof had incorrectly removed. Read-only reviewer found no remaining blockers. Full Rust continuation is still running after the reported Files SLOW-only timeout.Full Rust continuation found a second SLOW-only failure: live_apps_run_in_separate_processes stopped at startup_search_reconciliation_keeps_calendar_writes_responsive_on_large_home. Exact assertion output: Calendar write p95 10.188288572s exceeded 10s. No timing threshold or assertion will be changed. The deterministic performance guard is now running. After the continuation completes, run only the three unvisited startup children (full_app_setup_session_config_and_backup, owning_session_freshness_protects_trash_and_calendar_grants, admin_money_jobs_are_content_free), not the wrapper again.
The server deterministic guard now passes on HEAD
18e37c351d:test deterministic_performance_guards ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 68.06s
The continuation finished through Tags. Its only failed target is the server live-app wrapper because of the previously reported Calendar p95 SLOW-only failure. Running only the three startup children that wrapper had not reached, then workspace doc tests and the web gates.
Final head:
0419170fe4Reconcile-c1, issue #1122
Built
Commits
9f7df52c7fix(perf): restore exact visibility retry proofs without growing debt41102c015ctest(money): settle source cleanup before snapshotting Undo receipts18e37c351dfix(perf): scope retry proofs to exact caller and helper bodies0419170fe4fix(perf): preserve the original ownership of retained callback debtFiles
contracts/perf/{adoption-1058,exceptions,ratchet,registry}.json
scripts/perf_guards/{rules,test_rules}.py
crates/plugins/money/src/durable_import_tests.rs
Decisions
Known gaps
Gate output (verbatim excerpts; complete logs remain in artifacts/reconcile-c1)
(cd apps/web && bun install && bun run build) — exit 0; log: 01-web-build.log
cargo fmt --check — exit 0; log: 02-fmt.log
No output.
cargo clippy --all-targets -- -D warnings — exit 0; log: 03-clippy.log
cargo test --workspace -- --test-threads=4 — exit 101; log: 04-rust-tests.log
cargo test --no-fail-fast --lib --bins --tests -p calternal-plugin-mail -p calternal-plugin-money -p calternal-plugin-notes -p calternal-plugin-notifications -p calternal-plugin-photos -p calternal-plugin-video -p calternal-search -p calternal-server -p calternal-sync -p calternal-tags -- --test-threads=4 — exit 101; log: 04-rust-remaining.log
Three unvisited isolated server startup children — exit 0; log: startup-admin_money_jobs_are_content_free.log
cargo test --workspace --doc -- --test-threads=4 — exit 0; log: 04-rust-doc.log
(cd apps/web && bun run check) — exit 0; log: 05-web-check.log
(cd apps/web && VITEST_MAX_WORKERS=2 bun run test) — exit 0; log: 06-web-tests.log
Final repo generator: scripts/perf-lint --adopt-7c — exit 0; log: perf-owned.log
Original branch comparisons (focused unchanged Money refusal matrix):
Exact ledger comparison: 0 new entries; 4 removed entries; all retained records unchanged
Verification accounting: the original full Rust run stopped at Files. The continuation covered every later crate and stopped neither at the server timing failure nor at later targets. The live-app wrapper stopped at its sixth child; the last three children each ran once separately and passed. Workspace doc tests ran once. No correctness failure remains unexplained. Do not describe the full Rust gate as passing.
No test expectation, timeout, limit, or monetary arithmetic was weakened. No dependency was changed. Source comments were re-read. No UI control or runtime operation was added.
Cleanup confirmed: cargo clean removed 20758 files, 28.5GiB total. The dedicated /mnt/hdd/targets/reconcile-c1 directory, web build output, and temporary scratch link are gone. Logs and this report remain under artifacts/reconcile-c1. The worktree is clean.
The original target-selection diagnostic reproduced the failure in 6.81s and printed only fixed metadata:
Code 5 is SQLite BUSY. This is a persistent lock-contention finding in the reduced workspace continuation context. The library-only and standalone probes pass, so their result does not resolve it. The context difference and the exact failing command remain in artifacts/merge32/mail-diagnostic-all-targets.log. No underlying error message or provider data was printed.
The temporary diagnostic is removed; git status is clean at
5b2825e6c. No assertion, fixture, timeout or retry limit changed. Mail source and its library dependency sources remain identical to origin/dev. Root cause and baseline runtime comparison remain open. This is not reported as a passing gate or dismissed as SLOW.Merge32 report for #1122
Built: all fourteen branches were merged in the requested order with --no-ff. Each branch head recorded at its merge is an ancestor of HEAD. bash-calendar advanced during verification: this round contains
a2d343da3; later commitsa6019dfe3,827c5e6a9andfebe9ef8aare not included and need the next round. The other thirteen heads still match their merged snapshots. origin/dev was fetched and merged once before gates; it was already up to date at3601719b8. No push or deploy ran. No migration was added by these branches.Integration fixes: combined shared primitive variants without duplicate definitions; kept PillGroup content-width behavior, Pill rowMenuAction/facet alignment, OverlaySurface full-viewport sheets and solid Card, formatter tooltip props, hidden-item actions, watcher cleanup and password tests. ActivityStack inherits size and uses three CSS deck depths. Money e2e routes the current production assets and waits for the first-visit Import pathname with its restoration query. No existing assertion or fixture was weakened.
Files: 170 merged files. Main integration files are packages/ui/src/components/{Card,Pill,PillGroup,OverlaySurface,StatusPill}.svelte, packages/ui/src/components/calendar/ActivityStack.svelte, packages/ui/src/tokens.css, packages/ui/README.md, apps/web/src/lib/editor/format/FormatButton.svelte, focused component tests, apps/web/e2e/{money,notes,photos,files,settings-review-50}.mjs and contracts/perf/*.json. Imported performance profiles and measurements remain in bench/ and docs/perf/. A new focused ActivityStack component test verifies its bounded deck and primary action.
Shared controls: Card owns surfaces, elevation and tints; Pill owns row/facet/menu/editor actions; PillGroup owns toolbars; OverlaySurface owns dialogs and sheets; StatusPill owns live action feedback. Feature files supply content and behavior.
Decisions: preserve the union of opt-in primitive props; normalize Card's glass alias to its card material; use separate compact surface and compact dialog tokens because the branches specify different widths; put formatter sizing in shared Pill props; use static CSS depths for the finite three-card deck. No new product behavior or design was chosen. Exact perf pins use the repo parser and retain every accepted limit. One removed dynamic-style scope lowers the material ratchet from 19 to 18 and the total from 22548 to 22547.
Expected integration cost: O(1), at most three deck cards; no new I/O, scan, observer or per-row layout read. This is a merge job, so no new perf-VM measurements ran. Branch measurements are preserved.
UX gaps closed: kept hidden-item actions and primary actions when combining the restyles; restored all shared opt-in controls; fixed the Money runner's asset and first-visit route synchronization. UX gaps left: the filed area-flow failures below. No screenshot sweep or adversarial matrix ran.
Full area flows ran once on each tree. Two focused baseline diagnostics resolve the earlier SLOW stops: Mail omits only the capture matrix; Money uses one width/scheme. They preserve every assertion and fixture; their temporary runner diff stays in artifacts/merge32/baseline-probe.diff. Area comparisons use real production web builds with macOS emulation and the same prebuilt bash-security server binary. This compares frontend origin/dev and merged behavior; it is not a baseline backend build comparison.
Known gaps: these flows stop before their remaining acceptance steps. Do not read this report as all acceptance flows passing. Full web tests have five SLOW-only 5-second timeouts; the unchanged focused rerun passes all 95 tests. No secrets were displayed.
Head:
5b2825e6cdGate output (verbatim summary lines; full logs remain in artifacts/merge32):
cargo fmt --check— exit 0(No output.)
cargo clippy --all-targets -- -D warnings— exit 0(cd apps/web && bun install)— exit 0(cd apps/web && bun run build)— exit 0(cd apps/web && bun run check)— exit 0(cd apps/web && bun run test --maxWorkers=2)— exit 1Focused unchanged timeout files plus ActivityStack— exit 0CARGO_TARGET_DIR=/mnt/hdd/targets/merge32 cargo test --workspace -- --test-threads=4— exit 101Focused unchanged collaboration regression— exit 0The first Rust run failed the unchanged free-space reserve because the test Homes used the crowded root volume. I moved only this job’s temporary Home directory to the HDD and kept TMPDIR at the worktree path through a symlink. The cached full rerun then failed only the unchanged 8-second collaboration flush deadline. Its focused rerun passed. No timeout or assertion changed. The no-fail-fast continuation covers the remaining packages; separate doc tests cover the packages that the original fail-fast command passed before stopping.
Rust continuation command:
CARGO_TARGET_DIR=/mnt/hdd/targets/merge32 cargo test --workspace --exclude async-imap --exclude calternal-api --exclude calternal-auth --exclude calternal-cli --exclude calternal-collab --no-fail-fast -- --test-threads=4. Its newly failed groups printed:The Money failure is the unchanged ten-second HTTP deadline. The Files failure is the unchanged five-minute storm bound. The Mail storage error is not assumed to be SLOW. When the root volume recovered to 251986907136 free bytes, I paused only Cargo’s parent, let Money finish, restored the real worktree target/tmp, and resumed the remaining suites. No running test had its temporary directory moved.
Earlier-package doc coverage command:
CARGO_TARGET_DIR=/mnt/hdd/targets/merge32 cargo test -p async-imap -p calternal-api -p calternal-auth -p calternal-collab --doc --no-fail-fast -- --test-threads=4. CLI is a binary with no doc-test target.Final verification outcome: NOT READY FOR MERGE. The requested gates and all four area flows ran. The persistent Mail storage failure is filed as #1339; the four area blockers are filed as #1313, #1314, #1316 and #1318. Later bash-calendar commits after
a2d343da3are outside this round. No push or deploy ran.Rust continuation exit 101; all remaining package tests and doc tests finished. It records 2890 passing test executions and three failures. Earlier-package doc coverage exits 0. The server suite and its nine isolated live-app cases pass:
Focused original test binaries (same assertions and bounds):
Files atomic-write/reconcile storm — exit 0
Money malformed-input TCP round — exit 0
Mail delta catch-up — exit 101
Mail diagnosis: #1339. Mail and its library dependency sources, and Cargo.lock, are unchanged from origin/dev. The unchanged workspace binary reproduces the failure in 9.58s. Temporary test-only diagnostics report only an error discriminant and numeric SQLite code. Standalone and library-only workspace contexts pass in 28.58s and 28.57s; the latter differs from the failing binary’s direct dependency fingerprints only for lightningcss. That difference does not establish the cause. The original target selection fails again:
SQLite code 5 is BUSY. This persistent lock-contention finding in the reduced workspace continuation context is unresolved, and is not assumed to be SLOW. The temporary diagnostic was removed. No diagnostic code is committed; the shipping source still matches the source checked by the original gates. No assertion, fixture, timeout or retry limit changed. A separate baseline Mail runtime comparison was not made.
Cleanup — cargo clean exit 0; owned cleanup exit 0:
Cleanup gap: the worktree target/tmp remains because a live host-wide sccache daemon inherited it and other jobs use that daemon. Deleting it would disrupt their builds. Both CARGO target paths are removed, as are the web build, .svelte-kit output and borrowed server copy. Evidence logs and area captures remain in ignored artifacts/merge32; no review artifact was committed.
Final head:
5b2825e6cd. Final git status: clean.Continuing merge32b on job/merge32, base/head
5b2825e6cd. Read the repository contracts and prior report. Investigating #1339 SQLite BUSY first, then the four area-flow contracts and five web timeouts. Will merge origin/dev once before final gates, keep atomic commits, and report READY or NOT READY with gate evidence. No push or deploy.Evidence so far:
A production frontend build passes. Focused area flows are running with macOS emulation and a copied prebuilt Oct 7 bash-notes2 server. Browser plugin not available; using repository Playwright runners. A workspace-context Rust test build is running for #1339. Temporary diagnostics report only static source locations and SQLite numeric codes, not query values or error messages.
Progress at
88fa7d54e:Mail layouts e2e passed; screenshots are in /home/kayg/Developer/calternal-wt/merge32/artifacts/merge32b/mail. Includes all 17 raster decode/count/natural-height checks and a clean console. The fixture delivery enqueue and shared macOS platform regression are committed as796689bcc.calendar header e2e: all geometry checks passed. Forward fourteen-day Agenda plus one API carry-in day checks are committed as88fa7d54e. Screenshots cover 390/820/1440, light/dark, macOS.No push or deploy. No secret displayed.
#1339 reproduced in the workspace-context Mail test binary (calternal_plugin_mail-81e455bc4adbb477):
Line 1764 is the mail_thread_keys INSERT, the first main-Index write for that message. commit_window starts BEGIN DEFERRED and reads folder ownership, generation and message/thread state first. Maintenance can take the WAL writer lock between those reads and the first main write. Its TRUNCATE follows a complete PASSIVE pass above the 16 MiB threshold (19,005 frames here). The test has no workers or concurrent authority jobs; its authority connection is idle and its account commit already finished. The separate maintenance connection is the only other active writer in this isolated fixture. A pinned deferred reader cannot safely upgrade while that writer owns the lock, so SQLite returns BUSY at the upgrade instead of waiting with busy_timeout. This is a real product contention bug, not SLOW.
A new one-attempt regression holds BEGIN IMMEDIATE on the authority connection and changes the generation. Before the fix it fails at the same upgrade:
The product fix uses BEGIN IMMEDIATE in commit_window before any owner/generation read. The existing busy timeout now applies at writer admission. The admitted window must re-read the committed generation and refuse a stale one without publishing messages. No timeout or retry budget changed. There is no provider I/O under this lock. SQL statements and per-window bounds stay unchanged. See SQLite's transaction contract: https://www.sqlite.org/lang_transaction.html#deferred_immediate_and_exclusive_transactions
The temporary numeric/static-location diagnostics are removed. A fresh workspace-context build, the new regression, and 20 consecutive runs of the original delta test follow. Evidence logs remain under artifacts/merge32b/mail-lock-red.log and mail-delta-diagnostic.log.
merge32b progress, head
0b4a3aca06: Mail #1339 has a product fix with no timeout or retry increase. The new lock-admission regression passes, the original workspace-built delta test passes 20/20 consecutive runs (22.18–32.15 s each), and the complete Mail suite passes 129 tests / 6 ignored / 0 failed. Per-crate clippy exits 0; fmt exits 0. Calendar #1313 and Mail #1316 complete their full area flows at all requested widths/themes with macOS emulation. CSV Review #1318 passes all six empty-state Review/cancellation captures; the flow next exposed a native-input locator blocked by the shared Checkbox indicator. Its enclosing 44 px label is being checked without changing Money logic or numbers. Agenda #1314 is running the final full flow after the cramped-card and deferred-focus fixture corrections. The required fetch/merge of origin/dev ran once: Already up to date, origin/dev remains3601719b80. Full ordered gates follow.Production screenshot evidence for merge32b: 141 PNGs are attached to #1122. They use the real production app and macOS platform emulation. The full sets cover phone (390 px), tablet (820 px) and desktop (1440 px), light and dark. The orchestrator reviews visual quality.
Representative Agenda and CSV Review surfaces:
Mail and Calendar header sets are also attached. Every upload returned HTTP 201. Local attachment map: artifacts/merge32b/attachments.json.
Found during merge32b (#1122), after fixing the current CSV Review selector (#1318). A focused production User flow preserves all numeric and Markdown assertions and omits only screenshot loops. It passes Budget creation, Category and Account creation, inline assignment, register posting, tag rendering and the displayed derived values. It then fails assertPersistedMonthRows: the original regular expression anchors the final Transaction row at end of file, but the file has an additional empty child line
- notes:: "". The top-level Transaction and numeric values match.DESIGN §48 separates Transaction notes from the Payee. The #1130 JSON property tests admit empty notes. The Money TransactionForm and plugin store have no diff from origin/dev
3601719b8, so this serialization behavior is pre-existing. It causes no data loss, corruption or changed balances.The owner rule forbids changing an existing expectation unless the issue changes that behavior. #1318 changes the Review contract, not this file expectation. I kept the original anchored regular expression and all source values unchanged. Owner follow-up: decide whether a new Transaction with empty Notes should omit the child line, or whether the exact e2e expectation should include it. No Money product change was made.
Evidence: artifacts/merge32b/money-numeric-probe2.log. The full Money area flow cannot be reported as passing to the end until this preserved expectation is resolved.
Money landing does not select a refreshed Budget after CSV Review cancellation.
Observed in merge32b, head
ed12462cee, own production build and server. The fixture creates Household, opens CSV Review, then cancels. Job DELETE returns 204 and Review closes. The existing assertion confirms cancellation creates no new Budget. The route then remains /money and shows No budget yet for 30 seconds.Diagnostic output, verbatim:
Source: apps/web/src/routes/money/+page.svelte calls openFirstBudget once. loadBudgets can return the cached empty array while it refreshes the catalog. The page selects its empty state from that array and does not select a Budget when the catalog refresh completes. The relevant page, layout and store are unchanged from origin/dev
3601719b80. This establishes pre-existing source behavior; a complete baseline runtime replay was not run.No data loss was observed. The API and client cache both retain Household. The merge32b brief forbids Money logic changes, so this finding is filed without changing product behavior or weakening the route assertion. This blocks completion of the full Money area runner after populated Review cancellation. DESIGN §48 requires the Budget view to remain reachable.
Evidence: artifacts/merge32b/money-catalog-diagnostic.log and screenshots in artifacts/merge32b/money-catalog-diagnostic/. A fix should select the refreshed existing Budget and add a focused regression for an initially empty cached catalog.
merge32b report (#1122)
READY
All six ordered gates pass. The requested lock and contract failures are fixed. The two remaining Money findings (#1343 and #1347) are filed, with no observed data loss, crash, security hole or sync collision. They do not block integration under the owner policy. The full Money area runner is NOT reported as passing.
Head:
ed12462cee.Base:
5b2825e6cd.Origin/dev after the required single fetch and merge:
3601719b80. Git reported Already up to date.Built
Files
crates/plugins/mail/src/cache/store.rs
apps/web/e2e/money.mjs
apps/web/e2e/calendar.mjs
apps/web/e2e/agenda-decks-822.mjs
apps/web/e2e/mail-layouts.mjs
apps/web/e2e/harness.test.mjs
tests/adversarial/mail_screenshot_fixture.py
Earlier web failures
Each of the four affected files ran alone with uptime recorded. All passed: 34, 27, 19 and 13 tests. No expectation or timeout changed. Isolated load averages ranged from 24.47 to 50.20. Exact output is in isolated-*.log.
UX gaps closed
The review fixture uses the current shared Cards. Browser contexts do not abort import cancellation. Starter Category selection uses the real 44 px labels. Account submission does not depend on toast expiry. Mail images use delivery-time work. Narrow Calendar cards retain their count and their keyboard deck. Keyboard Escape is tested after Quick Look owns focus.
UX gaps left and known gaps
#1343: the focused Money User flow passes displayed numbers, then the original exact Month regex rejects an empty notes:: "" child after its last Transaction. The Transaction row and amounts match. Product code is unchanged from origin/dev. This is a harmless serialization/test mismatch. The existing expectation is preserved for owner review. The full Money area flow is not reported as passing to the end.
#1347: after populated Review cancellation returns 204 and closes, /money shows No budget yet even though the API and refreshed client cache both contain Household. The landing page selects the old empty cached catalog once and does not react to its refresh. Relevant product files are unchanged from origin/dev. No complete baseline runtime replay was run. No Budget was lost. The brief forbids Money logic changes; this User flow gap is filed. The runner stops at its preserved restoration assertion.
#1314 also records the existing prepaint Escape edge: before the deferred trap claims focus, the opener can handle Escape. The test waits for keyboard ownership. No shared focus behavior changed.
Decisions
No new product design. The fixes follow DESIGN §§2, 38, 45 and 48. Writer admission uses the existing authority pattern and busy timeout. No dependency, migration, visual control or user-visible operation was added. Existing visible controls remain the shared Checkbox, Pill, Card, AttachmentDeck and Quick Look.
The lock-admission change is O(1). Window work stays O(messages). The existing budget is 80 UIDs per window and 100 windows per pass. The repeat fixture processes 8,000 messages, then resumes for the final 100. The 8,100-message repeat scenario takes 22.18–32.15 seconds per run on this loaded host. These are test timings, not a perf baseline. No perf VM benchmark was required for this verification job.
Evidence
141 production screenshots are attached to #1122: real app, macOS emulation, 390/820/1440 px, light/dark. Mail, Calendar headers and Agenda matrices pass. Money empty-state and CSV Review captures cover all six width/theme combinations; later Budget captures are partial because the full runner meets the filed gaps. Mail used the prebuilt backend with current-build assets; The final Agenda run used this branch server. The Mail prepared-image path uses the real delivery worker. The final workspace server and Mail tests pass. The gallery and attachment map remain in artifacts/merge32b. The orchestrator reviews visual quality. No screenshots were committed.
Code review
A read-only review found no Critical or Important issues. One optional test improvement remains: separately assert the unchanged generation cursor in the new stale-window regression, which currently asserts zero messages. The product checks generation before mutation. Existing catch-up/cursor tests pass.
Gates
The required fetch and origin/dev merge ran once before these gates. All ran in the requested order. No SLOW-only failure or timeout rerun was needed in this final gate round. Full logs, load records and exit codes are attached in the evidence archive. These excerpts are verbatim.
cd apps/web && bun run build, exit 0:cargo fmt --check, exit 0. No output.cargo clippy --all-targets -- -D warnings, exit 0:CARGO_TARGET_DIR=/mnt/hdd/targets/jobs/merge32 cargo test --workspace --no-fail-fast -- --test-threads=4, exit 0. Every unit, integration and doc-test result passes. Relevant excerpts (Mail, Money plugin, Notes plugin, server):cd apps/web && bun run check, exit 0:cd apps/web && bun run test --maxWorkers=2, exit 0:The four check warnings and jsdom scrollTo/CSS diagnostics are retained in the logs. They did not fail a gate. The original five web failures pass both their isolated reruns and this full suite. The original Mail catch-up test has 20 consecutive exit-0 logs. The deterministic one-attempt writer-admission test was red before the fix and green after it.
Browser output, verbatim:
The full Agenda output additionally records 36 production layouts without item overlap or escaping thumbnails. Mail's complete runner exits 0 with all 17 prepared images rendered and decoded, no external requests, natural frame height and a clean console. See their complete logs for exact output and assertions.
This continuation ran the requested focused reliability and browser scenarios, not a fresh full e2e/adversarial matrix. No new endpoint or API contract was added. Earlier merge32 matrix findings remain on #1122; this report does not claim a new staging or Mac interop pass.
Cleanup
Completed. Cargo output, verbatim:
The owned HDD target is empty. Web build and .svelte-kit output and the borrowed server artifact were removed. Reports, logs and screenshots remain. No push, deployment, issue closure or merge into dev. Git status is clean.
Download exact gate and focused evidence logs.
Starting merge round 33 on
job/merge33-1122, base0419170fe. I will merge the six reviewed heads in the prescribed order, preserve both sides of conflicts, then run the full merge-round gates and production browser screenshot smoke. No pushes or deploys.All six reviewed heads merged in order. Round 32 conflicts: safe worker cleanup helper retained; cookie-origin/Licence probes added beside production probes; Instance feature keys use the newer explicit classification; source-pin conflicts refreshed against exact merged source. Chrome conflicts: keep shared Pill/ActionPill controls and both Checkbox regressions; move toast safe-area geometry into OverlaySurface; keep keyboard and touch context menus plus aria-expanded. Calendar: keep both README additions and exact source pins. Mail and DAV: no manual conflicts. Performance: keep BEGIN IMMEDIATE admission plus page-local thread-key batching; retain Files incomplete-phase profiles and safe cleanup; keep Mail large fixture/folder coverage plus batching profiles and original 180 s bound.
Finding: test_xuser_classification.py has incompatible assertions for admin_feature_flag_put (feature_flag_id and instance_feature_flag_id). Both expectations are retained, per owner rule; the newer explicit Instance-level class is used. This requires orchestrator review.
Pin refresh: 151 hashes each in exceptions.json and adoption-1058.json; zero new scopes; ratchet stays 22543.
Merge heads are committed in the requested order. Production build passed; fmt passed with no output; Clippy is compiling in the preset target with four jobs. Cross-User and Admin preflights pass (429 operations, 1206 generated tools, 53 Admin operations). The incompatible feature-key unit assertions are filed as #1350 and preserved. The production screenshot runner now covers the required eight screens and includes tablet evidence in addition to the requested phone and desktop.
Finding filed as #1350: the combined offline classification tests demand both
feature_flag_idandinstance_feature_flag_idfor one route. I preserved both expectations under the owner rule and retained the newer explicit Instance-key implementation.Focused output, verbatim:
Full verbatim failure log.
Live-matrix preflight output, verbatim:
No expectation was changed to make this pass. The production web build and fmt pass. Clippy is progressing through the cold dependency and calternal build; no compiler failure has appeared.
Clippy found one integration error in the Files storm fixture. The perf branch changed
watcherto an immutable binding because its cleanup consumed the handle. The production cleanup helper retained by this merge borrows the handle mutably. Restoringlet mut watcherat line 8305 preserves single-join cleanup and the perf branch phase diagnostics. No expectation or timeout changed.Verbatim first-gate error:
The full Clippy gate is rerunning after that one-line correction. Both outputs will be attached.
Head
0ebb27db8commits the Files storm watcher binding fix. Full Clippy retry passed:Workspace
cargo test -- --test-threads=4is compiling in the preset target with four build jobs. No error so far. Production build and formatting are already green. Native media runtime and Chromium are ready for the later real-server security and screenshot rounds. No push or deploy.Integration ancestry verified:
Workspace tests continue compiling in the preset job target; currently at calternal-tags and the remaining Plugin crates, without a compiler error. No uncommitted changes. Head remains
0ebb27db8.Head
57977551b. The production capture matrix now reuses waitForAppearanceThemeCard, so Settings waits for real controls before capture. Shell syntax passed for the optional ADVERSARIAL_SECURITY_WITH_ROBUSTNESS flag: the merge round will reuse the complete hostile-payload API campaign between the Cross-User and Admin matrices, before Admin revoke-all ends its own fixture sessions. Focused security jobs keep their existing scope.Workspace cargo test is still compiling under heavy host load (about 43 at the latest sample), with four build jobs and no compiler error. No uncommitted changes.
Workspace tests are still running. Completed key crates, verbatim:
Files:
Mail:
Money:
No workspace test failure so far. Head remains
57977551b. Web check and full tests follow this workspace command; production captures then the one bounded live adversarial round follow those gates.The workspace cargo test command passed all runtime binaries through calternal-server, then failed its deterministic guard on 12 stale NotesExplorer hashes after the row-positioning fix. The exact scope keys, limits, owner, expiry and ratchet are unchanged. The same guard passes after refreshing those hashes. Remaining binaries passed from the Cargo workspace artifact manifest: Sync daemon 2, Sync library 60, Tags 51, private-index permissions 1. Doctest compilation is still running. Original failure and continuation logs will be attached verbatim.
Live merge-round campaign on
95b1ea5724: media/document boundaries, auth redirects and 30/30 passkey fixture requests passed. Non-SLOW shared-video range inconsistency is filed as #1358 with the unchanged probe and exact 404 response. No authorization leak observed in that probe. The bounded campaign continues; image-proxy has a SLOW-only pending worker diagnostic. Gate output archive: https://git.kayg.org/attachments/beedb642-267c-4b72-98e4-c9b11c52add5. Mac production screenshot archive (48 images and capture logs): https://git.kayg.org/attachments/dff38bc7-88c0-40b2-8c4b-f8e1ddd8c7b9. Final readiness will account for #1350, #1358 and any unfinished bounded phases.Merge round 33 — #1122
Built: combined the six reviewed heads in the requested order on job/merge33-1122. Kept one shared implementation per UI primitive. Added a reusable production capture matrix with Mac platform emulation at 390, 820 and 1440 px, in light and dark.
Integration files: shared OverlaySurface, Checkbox regressions, sidebar/tree actions, NotesExplorer, Calendar shared-component docs, Mail commit-window and backfill probe, Files storm probe, adversarial classifier/probes, exact perf ledgers, and apps/web/e2e/merge-review.mjs. The combined branch also includes the reviewed feature files from the six heads; files.txt lists them.
Conflicts: round 32 kept production cleanup and security probes. Chrome kept shared Pill/ActionPill controls, both Checkbox regressions, keyboard/touch context menus and shared toast-safe Search geometry. Calendar kept both documentation additions. Mail and DAV merged without manual conflicts. Performance kept BEGIN IMMEDIATE writer admission together with page-local thread-key batching; Files keeps single-join cleanup and phase diagnostics; Mail retains the original 180 s backfill bound and large fixture profiles.
Corrections: anchor each Note touch action to its own row; make the Files storm watcher mutable for the retained cleanup helper. Test assertions and timeout budgets were not weakened. Exact source hashes were refreshed only in changed files, with no new scopes and no ratchet increase (22543).
Known gap: #1350 records mutually incompatible feature-key classification expectations. Both assertions are unchanged; the newer Instance-level classifier remains. Offline unit run: 20 tests, 1 failure. The contract preflights pass: 429 operations, 1206 generated tools, 53 Admin operations.
Decisions: place Search toast geometry in OverlaySurface, its existing owner; add tablet captures to satisfy the device-width rule; use the preset Cargo target directory rather than overriding it. No product design decision added.
UX gaps closed: Note touch action positioning; merged shared-control, Mail, Calendar and DAV fixes covered by the reviewed branches. UX gaps left: visual approval belongs to the orchestrator; classification expectation decision is #1350; playback/preview probe consistency is tracked in #1358/#1359.
Performance: this merge adds no production operation beyond the reviewed branches. It retains their bounded page-local batching, storm profiles and performance budgets. No perf VM run: the verification policy reserves new measurements for performance issues.
Head:
1d4abf495c. Origin/dev was fetched and merged once before final gates (already up to date). All six requested heads are ancestors.Gate output (verbatim excerpts; the attached archive contains complete original stdout/stderr, including initial failures):
The original workspace test command stopped at the stale source pin after all preceding crates passed. The guard was fixed and rerun with the workspace feature graph; the remaining Sync, Tags and private-index binaries passed, then all workspace doc tests passed. The canceled per-crate guard attempt and artifact collection are retained in the archive. No runtime assertion was changed. Initial build dependency setup and clippy mutability failures, plus successful retries, are also retained.
Screenshots: 48 production PNGs cover Calendar Week, Tasks, open Note with formatting controls, Files, Mail, Money, Settings and open Search, each at 390/820/1440 px in light and dark with macOS platform emulation. Successful captures span retries: the full last run captured 46/48; the final focused desktop Note run passed both palettes (exit 0, empty failure list) after reusing the shared theme helper at the post-hydration capture boundary. No visual approval is claimed. Build identity, initial failed attempts and successful retry logs are included. Screenshot archive: download final macOS set. Earlier archive remains attached for provenance.
Verbatim focused capture output:
Live adversarial round: full log, one 900-second local-server campaign. The security-origin/licence, image-proxy, Share options, Unicode titles and isolation phase completed with four findings in two cases: #1358 shared-video range playback returned 404; #1359 Notes preview DNS pinning ended unavailable with no private upstream hits. The server was alive at the phase end. SLOW-only diagnostics are recorded separately.
Cross-User matrix completed: 429 operations classified; 203 replayed; 938 owned-ID/missing-ID comparisons across other Users and anonymous; 122 Job/Mail/quota comparisons with zero denial failures. Calendar subscription ownership and Photos Share contracts passed. Revoked Share timing profiles were identical HTTP 404 (median delta 3.4 ms). It reports 39 identifier routes without seeded object factories, listed in the log.
Local probe measurements (not a perf VM benchmark): cookie-origin denial p50/p95 6.204/8.869 ms; invalid Licence key p50/p95 5.067/11.554 ms; Appearance PUT burst p95 0.517 s across 31 requests. No comparable baseline is claimed. Robustness campaign ended at the fixed 900-second deadline (exit 124), during the tag rename storm after 30/100 progress was printed. Earlier completed probes include zero-failure search storm (p50/p95 373.3/1081.5 ms), upload PATCH concurrency, 200-directory storm and rename race. The remaining robustness cases and Admin matrix did NOT complete; no pass is claimed. This is the one time-boxed round, not an endless rerun. To complete verification, rerun the existing robustness and Admin phases against a fresh isolated fixture; the full command is:
The merge round is NOT READY until these gaps and the filed inconsistencies are resolved.
Readiness: NOT READY. #1350, #1358 and #1359 remain unresolved; the robustness/Admin verification is incomplete. The required screenshot matrix is complete across successful captures; orchestrator visual approval remains pending. No push, deploy or merge into dev performed.
Cleanup: cargo clean and web/native-test build output removal completed; review artifacts are retained. No screenshots or videos were committed. Working tree is clean.
Shared controls retained: Pill/PillGroup/ActionPill, Checkbox, OverlaySurface, SidebarSectionHeader, PageChrome and Menu. No duplicate visual primitive added. The Note row anchor costs one CSS containing block per rendered tree row (bounded by the existing 200-row page); it adds no IO or runtime layout measurement.
Comment review: integration module/helper comments were re-read; they explain shared ownership, writer admission, bounded rendering, single-join cleanup and capture invariants. The last changes after web gates affect only the review fixture; Node syntax checks and its real-server focused capture passed.
Cleanup output (verbatim):
Continuing merge33b on job/merge33-1122, base/head
1d4abf495. Read the prior findings. Resolve #1350, prove the production video behavior for #1358, isolate #1359, fix the three reviewed UI defects, then run full ordered gates and one bounded split adversarial round. No push or deploy.Evidence for #1359: the isolated image-proxy phase passes on production
0419170fewith fresh DNS state. Host load at phase start: 53.36, 46.34, 37.22. Verbatim outcome:The earlier pending-only diagnostic is load. The later unavailable result was a test-fixture collision: attack2.py contained two complete image-proxy phases, but the LD_PRELOAD shim has one process-wide public-then-private DNS counter. Commit
213c79934removes the duplicate, keeps the phase before User deletion, and adds a regression that fails with two phases. No private upstream hit occurred. The focused runner seam in87a0a93bbavoids unrelated storms before an isolated replay. Combined release verification remains pending.Evidence for #1358 on origin/dev / production
0419170fe: the original plain-text .mp4 fixture returns the same 404 as in merge round 33. This is not introduced by this round. Video requires a content-sniffed video MIME type on both revisions.The replay now reuses crates/plugins/files/tests/fixtures/media/source-generated.mp4, the existing two-frame decodable MP4. The 206 assertion and exact-byte assertion are unchanged. Added explicit non-recipient/missing-item equivalence. Verbatim output on production:
Host load: 66.69, 52.84, 43.50. The real video also exposed an assumption in the Photos fixture: it chose the first owner media Item, which can be the video outside the Photos Share, rather than the uploaded share-probe.jpg. The probe now waits for that exact JPEG; every original denial, scope, recipient and revoke assertion remains. A replay with this fixture correction has zero findings. The fresh production release build and the combined release round remain in progress.
merge33b UI findings
The top-of-window grip belongs to the first body paragraph (block position 19), not the title. A production-build diagnostic measured its retained DOM node after hydration: it was disconnected and returned a zero rectangle. Floating UI can measure after an await, so resolving the node only when the virtual reference is created is too early. Commit
c14e7ab5aresolves the current block inside each reference getter. The regression replaces the node after reference creation and fails before the fix. Line centering now uses shared CSS line-height tokens, with no Range or computed-style reads for alignment. The first corrected 1440 px capture passes the in-Note grip assertion; the full width/palette capture is running.DESIGN §42 docks the phone capsule above the software keyboard. The previous headless screenshot represented a reduced visual viewport but did not render an OS keyboard, so the capsule appeared over Linked mentions. Commit
4fbc624d8keeps the documented dock while the keyboard is open and reuses EditorFormatBubble beside selected text when it is closed. Tests cover this fallback; the capture checks the real viewport boundary separately from the no-keyboard screenshot.The Files collection now retains FileIcon for Markdown, text and code, even if a thumbnail hint is present. Other image thumbnails remain. The focused regression fails with the old collection and passes with the fix. No new visual primitive was added. The original empty-circle screenshot could not be reproduced with the production assets; this correction pins the document-glyph contract instead of claiming an unverified cause.
Final before/after captures and gate output will follow. No visual approval is claimed; the orchestrator remains the reviewer.
Corrected production captures completed at head
4f3273473: all 12 checks pass for Notes and Files at 390/820/1440 px, light/dark, macOS emulation. Before/after PNGs and capture log.The grip is beside the first body paragraph inside the Note. The phone capsule is directly above selected text when the software keyboard is closed; a separate viewport assertion verifies the §42 keyboard dock. Markdown uses the document glyph. Source comments and capture geometry checks are committed; PNGs remain review artifacts. Please use this set for the orchestrator visual review. No push, deploy or merge into dev.
Fresh production proof: built origin/dev at
0419170fe4in a detached worktree. The first build needed the production frontend assets for RustEmbed; after using the existing assets from the same revision, the release build completed:The built binary was copied before the combined build. The fresh video-only replay exited 0, at host load 63.41, 65.68, 61.04. Output, verbatim:
The earlier fresh replay of isolation plus preview completed its assertions with FINDINGS 0 / SLOW 9, but its 600-second wrapper expired during cleanup (exit 124). This focused replay keeps that result separate. The preview-only check previously completed FINDINGS 0 / SLOW 0 at load 53.36, 46.34, 37.22. No server authorization behavior was relaxed.
Merge33b gate progress at head
4f3273473: source tree clean; production web build and fmt exit 0; full-workspace clippy exit 0. Verbatim clippy output:The ordered workspace cargo test gate is now compiling its test artifacts. The combined release build is progressing separately. The fresh production video-only probe exited 0 with FINDINGS 0/SLOW 0; all 12 corrected macOS capture checks passed and are attached. The final bounded continuation will run security, cross-User, API robustness and Admin in the established runner order, against the combined release binary. Final readiness remains pending those results.
Merge33b progress at
5382ca7a1(last change: test doc comment only). The combined release build exited 0 in 20m 37s. Final before/after captures against that combined release server: all 12 Notes/Files checks pass at 390/820/1440 px, light/dark, macOS emulation, including the separate software-keyboard dock assertions.The 90-minute continuation started at 17:46 CEST with load 36.46/50.85/58.27. Security phase: FINDINGS 0, SLOW 5. Viewer video: recipient 206 with matching bytes; non-recipient and missing Item return the same 404. Cross-User: 203 operations replayed, 938 owned-ID/missing-ID comparisons; Job/Mail/quota: 122 comparisons, 0 denial failures; Photos Share contracts and Calendar subscription ownership pass. The 39 identifier routes without fixture factories remain listed as a coverage gap.
API robustness has reached tag rename 80/100. Before it, Search storm reported 0 failures (local p50/p95 487.5/781.5 ms), upload PATCH concurrency, the 200-directory storm and rename race passed. No non-SLOW finding has appeared. The round remains bounded at 90 minutes; Admin runs last. Full clippy passed; workspace test artifacts still compile with four jobs. Web check/test follow it in the requested order. Final readiness is pending completion, not claimed here.
The combined release continuation completed before the 90-minute limit (exit 1), including API robustness and all 3036 Admin requests. Security: FINDINGS 0/SLOW 5. Cross-User: 938 owned-ID/missing-ID comparisons; Job/Mail/quota 122 comparisons with 0 denial failures. API: 312 finding rows, 242 explicitly SLOW and 70 other rows. The other rows include two fixture inconsistencies plus client timeouts and their dependent upload/projection checks. I did not suppress them or change expectations.
Filed #1381: first-open Appearance assertion runs without opening the app in normal setup; expectation retained for owner review. Filed #1382: Files DAV credential creation can outlive fresh authority; the existing refresh helper is now called before creation, preserving all 200/403/revocation checks. Its focused regression is running. Filed #1383: direct API client timeouts coincide with long Index pool/query/checkpoint waits, with derived fixture failures retained. No actual 5xx, product crash or accepted hostile input is identified in these rows.
The full Admin matrix had one client timeout on GET /api/v1/admin/system/codecs as app_password_notes_full/valid. Replayed that one operation through the same inventory/denial matrix: 25 requests, no failure, exit 0, at load 88.69/82.59/76.70. Commit
a9e331a3cadds the focused runner seam; its initial preflight-mode error and correction remain in the logs. This supports a load-related timeout, not an observed authorization grant. The original full-run failure is retained.Rust workspace tests have begun running after the cold compile. Full clippy already passed. Final readiness is still pending the remaining gates and recorded fixture/timeout gaps.
#1382 fixture fix committed as
3d0c88200. Refresh the existing owner assertion immediately before Files DAV App Password creation, and retain the existing refresh before revoke. All authorization assertions remain unchanged.The focused real-server retry completed with exit 0. Verbatim evidence:
The bounded combined round finished with findings filed as #1381 and #1383. The Rust gate also found a non-timeout Shared Notes 403 instead of 101; filed as #1386. Keep its assertion. No Rust source was changed in merge33b. Continue the remaining compiled workspace test binaries after Cargo stopped on this failure.
Merge33b head
3e60d38f2b: both web gates pass after origin/dev was fetched and merged once. Preserve both initial fixture type failures and the successful final check in the final archive. Verbatim:Workspace doctests passed. Rust cargo test remains failed on #1386 (Shared Notes viewer 403 rather than 101). No Rust assertion or production authorization behavior was changed. Continued binaries and timeout-only retries remain in progress; final readiness is NOT READY.
Merge33b continuation — #1122
NOT READY. Head:
3e60d38f2b. Branch job/merge33-1122. Origin/dev0419170fe4fetched and merged once before gates: already up to date. No push, deploy or merge into dev.Built: corrected the older Instance feature-key review; retained both tests. Removed the duplicate DNS-pinning probe lifecycle. Replaced the text-as-MP4 fixture with the existing decodable video and added exact Range/opaque denial checks. Fixed the Photos probe to select its known shared JPEG rather than an unrelated owner media Item. Fixed asynchronous grip anchoring; CSS owns line centering. Reused the selection bubble on phones with no software keyboard while preserving the documented dock when it opens. Text file rows retain the shared document/code glyph. Added regressions and production capture geometry checks.
#1358 evidence: the original invalid-video probe returned 404 on the existing production
0419170febinary too. Built that exact revision in a detached worktree and ran the real-video probe on the freshly built binary: recipient 206, exact requested bytes; non-recipient and missing Item both 404 with the same body. Focused replay exit 0, FINDINGS 0, SLOW 0 at load 63.41/65.68/61.04. No production video authorization change needed. An earlier fresh isolation+preview replay completed FINDINGS 0/SLOW 9 but its 600-second wrapper expired during cleanup; retain exit 124. The first baseline build needed its same-revision frontend assets for RustEmbed; its retry completed. A redundant second baseline compile was stopped after preserving and running the successful first binary, to start the combined release build.#1359 evidence: two identical image-proxy phases consumed one process-wide public-then-private DNS answer sequence. The second phase was a fixture inconsistency. One retained phase covers every hostile URL, redirect, size/encoding, public-cache and private-trap assertion. Preview alone completed FINDINGS 0/SLOW 0 at load 53.36/46.34/37.22; later pending-only results on the fresh production replay are SLOW diagnostics. No assertion or deadline was weakened.
Screenshots: before/after files in artifacts/merge33/review-fixes; all 12 corrected Notes/Files captures pass at 390,820,1440 px, light/dark, macOS emulation. Separate viewport assertions test the §42 software-keyboard dock. Zoom inspection covers the requested grip, capsule and file glyph. The first body paragraph owns the old stray grip (block position 19); its stale detached DOM node yielded a zero rect. The reference now resolves the current block at asynchronous measurement time. The exact original empty-circle Files image was not reproduced; the regression pins document/code glyphs even with old thumbnail hints. Orchestrator visual approval remains separate. PNGs are not committed.
Files: apps/web/e2e/merge-review.mjs; editor/format/EditorFormatBar.svelte and test; files/FileCollection.svelte.test.ts; notes/NoteEditorSurface.svelte and noteProse.css; packages/editor/src/extensions.ts and dragHandle test; packages/ui/src/components/files/FileCollection.svelte; tests/adversarial/attack.py, attack2.py, run.sh, test_link_preview_fixtures.py, test_xuser_classification.py; exact source pins in contracts/perf/{exceptions,adoption-1058}.json. No Rust source or lockfile changed.
UX gaps closed: grip beside its block inside the editor on hover/focus; selection capsule beside phone text when the keyboard is closed and above it when open; document glyph for Markdown/text and code glyph for code. Reused the existing editor DragHandle, PillGroup, EditorFormatBubble, FormatCommandRow, IconLabel, FileIcon and FileThumb. No duplicate visual primitive. Existing command, focus, touch and reduced-motion paths remain shared.
Decisions: DESIGN §42 specifies the open-keyboard dock; for a closed keyboard, reuse the existing selection bubble. Text file rows identify their kind even when an old thumbnail hint exists. Use the preset CARGO_TARGET_DIR (/home/kayg/build/targets/merge33b), per the no-override rule; the brief's historical /mnt/hdd path was not substituted. No OPEN design item built.
Cost: one current-block lookup per existing Floating UI geometry getter; traversal follows the editor view tree, with no Home IO; line alignment uses CSS, with no Range/computed-style alignment reads. File glyph selection is three constant comparisons per already virtualized row. No new IO, full-Home scan or background job. Exact perf pins refreshed in existing scopes only; ratchet remains 22543. No new perf VM measurement: this is a merge verification issue, and current policy reserves measurements for performance issues.
Bounded adversarial continuation: completed within 90 minutes, exit 1. Security FINDINGS 0/SLOW 5. Cross-User: 938 owned-ID/missing-ID comparisons and 122 Job/Mail/quota comparisons with zero denial failures. Admin: 3036 requests, one client timeout; its single-operation retry passed all 25 denial checks at load 88.69/82.59/76.70. API: 312 finding rows, 242 marked SLOW and 70 other rows. Retain all non-SLOW rows: Appearance first-open fixture #1381; Files DAV stale owner proof #1382 (fixed, focused run exit 0); direct client timeouts plus dependent upload/projection checks #1383. No observed actual 5xx, product crash, unauthorized success or accepted hostile input was identified in these rows. One isolation Share thumbnail was not generated within 30 seconds, so its byte checks were skipped; the separate Photos Share thumbnail checks passed before and after revoke. This and 39 inventory routes without factories remain coverage gaps. No assertions weakened.
Rust blocker: #1386, Shared Notes viewer WebSocket returns 403 rather than 101; Files access rejects the current Share identity. This is a non-timeout gate failure. Existing assertion retained. Cargo stopped before later workspace tests. Remaining compiled test binaries were continued; the root cargo test gate remains failed regardless of that continuation.
Web check initially failed with two strict TypeScript errors in the new file-icon regression fixture (possibly absent indexed fixture row and Set). Type correction exposed three required collection selection props. Added them without changing assertions; focused nine tests pass. Both failed checks and the final retry are retained.
Known gaps: #1381, #1383, #1386 remain open. No Rust workspace pass claimed. The orchestrator must review the before/after images. No follow-up security or filesystem behavior was changed to hide these failures.
Screenshots: combined-release before/after archive. Gates and cleanup follow below.
Gate output verbatim (full logs will be attached):
Web build, exit 0:
Cargo fmt --check, exit 0: no output.
Full clippy, exit 0:
Workspace cargo test, exit 101:
Initial web check, exit 1:
Web test, exit 0:
Second web check, exit 1 (required props exposed after the first type fix):
Workspace doctests: exit 0. The full raw output is in cargo-doctests-merge33b.log.
Files changed in this continuation:
Final web check, exit 0:
The four warnings are existing unused selectors in MailView and Money. All new test fixture errors are fixed.
Continued Rust verification: all 75 compiled binaries were run after the root Cargo runner stopped. 71 passed; four reached an explicit 180-second continuation cap. There was no additional FAILED case in their partial logs. Those caps are not native assertion failures. Retry each unfinished group with exact skip filters, four test threads and a job deadline; do not repeat completed cases. Original result:
The four capped binaries were calternal_plugin_money, calternal_plugin_files, calternal_plugin_notes and indexer. Both partial output and focused output will be attached.
Intermediate focused retry output, verbatim:
Final focused Rust continuation, verbatim:
The Notes 700-Note reconciliation case completed in its retry. The indexer retry reached the job deadline while overflow_recovery_answers_a_queued_integrity_check was pending. The other four unfinished indexer cases completed. This unresolved timeout is not claimed as a proven load-only result. The additional calternal-server binary (284 tests) was not run before the deadline. All other continued binaries and completed retry cases had no new assertion failure. The original workspace cargo test remains exit 101.
Verification left after fixing #1386:
No push, deploy or merge into dev. Final source comments were re-read. Working tree is clean. Cleanup output and the full evidence archive follow.
Cleanup completed, verbatim:
Full gate, probe, retry and cleanup output.
merge33c continuation started on job/merge33-1122, head/base
3e60d38f2b. First compare #1386 against production0419170fein a detached worktree, then trace Share identity enforcement. Retain viewer 101 and live-revoke assertions. Finish overflow recovery and server tests before the final combined gates. No push, deploy or merge into dev.The previously unfinished overflow_recovery_answers_a_queued_integrity_check completed on the merge branch without a source change:
running 1 test
test overflow_recovery_answers_a_queued_integrity_check has been running for over 60 seconds
test overflow_recovery_answers_a_queued_integrity_check ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 528.51s
A live stack capture while it was slow placed the fixture writer in fsync before actor startup. File count increased from 1722 to 2378, then reached completion. No hang established; no dev comparison needed for this passing run. Full log and stack retained under artifacts/merge33c.
The previously unrun calternal-server binary completed at head
cec7ddf72c:cargo test -p calternal-server --bin calternal-server -- --test-threads=4
Finished
testprofile [unoptimized + debuginfo] target(s) in 7m 43stest wire::tests::live_apps_run_in_separate_processes has been running for over 60 seconds
test wire::tests::live_apps_run_in_separate_processes ... ok
test result: ok. 272 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 209.96s
Exit 0. The live-app wrapper ran its nine process-isolated checks. The required full workspace fmt/clippy/test gates now run once after fetch/merge origin/dev (Already up to date). Final web check already passed; full web test remains running.
Merge33c progress at
ef0aa12b12. The unchanged production and branch Shared Notes tests both passed. The fixture now uses an explicit stale-inode denial barrier instead of a fixed sleep; it keeps the existing handshake, viewer-write denial and revoke assertions. Final focused test passes; its trace proves stale denial, refresh, viewer access and live revoke. No production authorization code changed.Required focused blockers complete: overflow recovery passes in 528.51s; server binary passes (272 passed, 12 ignored, zero failures). The single final workspace test run is active and has passed Shared Notes too:
test owner_editor_viewer_and_live_revoke ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 11.41s
Final workspace fmt: exit 0, no output. Workspace clippy: exit 0.
Finished
devprofile [unoptimized + debuginfo] target(s) in 5m 40sFinal web check: exit 0.
perf-lint: PASS; 0 violations; 22543 scoped exceptions
svelte-check found 0 errors and 4 warnings in 2 files
Final web test: exit 0.
Test Files 293 passed (293)
Tests 2103 passed (2103)
Duration 415.99s (transform 29%, environment 26%, import 24%, tests 16%, setup 5%)
Fetch/merge origin/dev ran once before final gates: Already up to date, origin/dev
0419170fe. The full-workspace gate began before the final test-only strengthening; focused fmt/clippy/test then passed that final change. All production code and web code stayed unchanged in this continuation. No push, deploy, merge into dev or issue closure. Final readiness remains pending the complete workspace test result and cleanup.Merge33c final report — #1122
READY. Head:
ef0aa12b12. Branch: job/merge33-1122. Started at3e60d38f2. Fetched and merged origin/dev once before final gates: Already up to date. origin/dev remains0419170fe4. No push, deploy, merge into dev or issue closure.Built: a deterministic Shared Notes save-window regression. The callback holds the first atomic save until the real Files resolver denies the viewer's stale inode. It then refreshes the Files Index. The next Hub check must allow the viewer. The test also checks that the installed fingerprint changed while the Share and Index item IDs still match. Existing viewer 101, rejected viewer writes, saved bytes and live-revoke assertions stay unchanged. Production authorization checks and retry limits stay unchanged.
Files: crates/calternal-collab/tests/shared_notes.rs only. Commits:
cec7ddf72(save barrier),30e37a4a8(callback documentation),ef0aa12b1(require a real stale-inode denial). Final module and function comments were re-read. Working tree is clean.#1386 cause evidence: the exact unchanged test passes on detached production
0419170fe(12.13s) and on the unchanged merge branch (11.83s). The Share resolver, collaboration session, Note writer, filesystem and database source are unchanged from production. No merged branch changed the identity check, so there is no identity-change parent to bisect. The original failure showed matching Share/Index IDs but no refresh completion before the viewer exhausted retries. The fixture's fixed 100-ms delay made its intended ordering depend on host scheduling. This is the supported fixture explanation; the original scheduler delay itself was not captured. The final regression explicitly observes stale denial after 204 ms, then refresh, viewer access and live revoke. Cause and evidence were posted on #1386; it remains open.Remaining blocker results: the focused overflow recovery test passed in 528.51s. A live stack placed slow setup inside fsync; fixture file counts increased. The full indexer suite also passed all 29 tests in 422.21s. The previously unrun server binary passed all 284 accounted tests: 272 passed, 12 ignored; its live-app wrapper passed nine isolated checks. The full workspace run then passed without a failed assertion. No SLOW-only failed test needed an exact retry.
Decisions: use a first-save notification after an actual stale-inode denial, rather than a wall-clock sleep. This keeps the test's security boundary explicit. Use the preset CARGO_TARGET_DIR (/home/kayg/build/targets/merge33c), without replacing it with the brief's historical path. No OPEN design item was built.
Cost: fixture-only constant-size state (two flags and one notification); it uses the existing bounded access checks. No production operation, route, background job or UI cost changed. Reused Access, shared_note_access, record_note_write and RelPath; no new helper or dependency. No performance profile was needed for this test-only change.
UX gaps closed / left: no UI changed in merge33c. The accepted merge33b Notes grip, phone capsule and Files glyph fixes remain intact. No new screenshot set was needed.
Known gaps: the original scheduling delay is inferred from the failed callback sequence, not directly measured. Prior #1381 and #1383 and merge33b adversarial coverage gaps remain recorded: one isolation thumbnail timed out before byte checks, and 39 inventory routes lacked factories. This continuation does not claim a new adversarial matrix, Mac interop or deployment run. The prior bounded adversarial round was not repeated. No requested command in this continuation was deferred.
Gates, verbatim output excerpts (all exited 0):
cargo fmt --check: no output. Final fixture fmt also produced no output.
cargo clippy --workspace --all-targets -- -D warnings:
cargo test --workspace -- --test-threads=4:
The workspace gate began before the final test-only documentation and strengthening commits. The full run passed Shared Notes too (11.41s); focused fmt, clippy and the strengthened test passed the final fixture source. Production and web source did not change during the gates.
Final focused clippy/test for the strengthened fixture:
Focused overflow:
Focused server binary:
apps/web bun run check:
The four existing warnings are unused CSS selectors in Mail and Money.
apps/web bun run test --maxWorkers=2:
The required production web asset build also exited 0:
Workspace test result lines, verbatim
Cleanup, verbatim:
Owned web build output and target/tmp were removed. The detached production comparison worktree was removed. Raw logs and the evidence archive remain in artifacts/merge33c; no review artifact was committed.
READY
ef0aa12b12Deployed to production as
ef0aa12b1at 2026-10-08 02:22 IST (backup /srv/calternal/backup-pre-m33-20261007-2236).