BLOCKER: DAV XML has no element-depth bound #785
Open
opened 2026-10-02 13:10:40 +00:00 by kayg
·
13 comments
No Branch/Tag specified
dev
wip/rev2-webperf
wip/rev2-money-ident
wip/restyle-notes
wip/previewcard-1098
wip/palette2-1123
wip/palette-1093
wip/onboard2-1141
wip/onboard-1141.aborted-early
wip/onboard-1141
wip/nlpchip-1127
wip/morph-1104
wip/merge-round-7c5
wip/merge-round-7c4
job/notifloop-1194
wip/merge-round-7c3
wip/merge-round-7c2
wip/merge-round-7c
wip/mchrome-1084
wip/mailghost2-1094
wip/mailghost-1094
wip/kbpreview2-1118
wip/kbpreview-1118
wip/kanban-1092
wip/importhang-1121
wip/hiderev-1153
wip/hide4-1153
wip/hide3-1153
wip/hide2-1153
wip/hide-1153
wip/editreg-1132
wip/editorrail3-1113
wip/editorrail2-1113
wip/editorrail-1113
wip/e2e-b2-1071
wip/e2e-b-1071
wip/draw4-1101
wip/draw3-1101
wip/draw2-1101
wip/draw-1101
wip/directory-1199-r
wip/directory-1199
wip/delete-1119
wip/collabrev-1197
wip/collabloss-1197
wip/cards2-1083
wip/cards-1083
wip/canvas-visual
wip/canvasvis2-976
wip/calhdr-1112
wip/calcards-1115
wip/browserfix
wip/blocks-1125
wip/allday-1107
wip/agenda-decks
wip/agenda-1086
wip/adv7c-1105
wip/txentry-1198
wip/trayicons2-1095
wip/trayicons-1095
job/onboard-1141
wip/sidebar3-1094
job/collabloss-1197
job/hide-1153
job/perf-1124
job/perf2-1124
job/tocrail-1191
job/restyle-settings
wip/restyle-settings
job/segmented-1200
wip/notifloop-1194
job/tagperf-1186
wip/tagperf-1186
wip/segmented-1200
job/restyle-files
job/tagdnd-1187
job/merge30
job/cards-1179
wip/cards2-1179
wip/cards-1179
wip/tocrail-1191
wip/tagdnd-1187
wip/restyle-files
wip/perf-1124
wip/merge30j
job/restyle-notes
job/wizchoices-1140
job/adv-1202
wip/wizchoices-1140
wip/restyle-1190
job/moneyfmt-1180
job/txentry-1198
wip/moneyfmt2-1180
wip/moneyfmt-1180-r
wip/moneyfmt-1180
job/pillglass-1189
job/flags-1181
wip/flags-1181
job/restyle-1190
job/restyle-mailmoney
job/restyle-search
job/settingsreg-1195
job/wizard-1140
site/website
wip/wizardrev2-1140
wip/wizardrev-1140
wip/wizard5-1140
wip/wizard4-1140
wip/wizard3-1140
wip/wizard2-1140
wip/wizard-1140
wip/pillglass-1189
wip/settingsreg-1195
job/merge29
job/fu-1171
wip/merge29j
wip/fu-1171
job/fu-1166
job/directory-1199
job/proflog-1204
job/txresearch-1188
wip/fu-1166
job/merge28
job/search-1066
wip/search-1066
wip/merge28j
job/gateslot-1182
job/bulkimport-1157
job/mailnet-1160
wip/mailnetrev-1160
wip/mailnet-1160
wip/bulkrev-1157
wip/bulkimport-1157
job/startup-1161
wip/startup-1161
job/merge27
job/linkcards-1151
wip/linkcards3-1151
wip/linkcards2-1151
wip/linkcards-1151
job/traydate-1144
wip/traydate3-1144
wip/traydate2-1144
wip/traydate-1144
job/draw-1101
wip/merge27j
job/blockpill-1152
wip/blockpill3-1152
wip/blockpill2-1152
wip/blockpill-1152
job/minihover-1149
wip/minihover2-1149
wip/minihover-1149
job/merge25
wip/merge25-r
wip/merge25b
wip/merge25
job/inspector-1129
job/tags-1110
wip/inspector3-1129
wip/inspector2-1129
wip/inspector-1129
wip/tagsrev-1110
wip/tags2-1110
wip/tags-1110
job/dates-1148
wip/datesrev-1148
wip/dates2-1148
wip/dates-1148
job/licence-1145
wip/licence2-1145
wip/licence-1145
job/selfhost-1156
job/merge23
wip/merge23
job/tagfilter-1109
wip/tagfilter2-1109
wip/tagfilter-1109
job/kbd-1134
wip/kbd2-1134
wip/kbd-1134
job/palfoot-1137
wip/selfhost-1156
wip/palfoot2-1137
wip/palfoot-1137
job/toggle-1158
wip/toggle-1158
job/kbpreview-1118
job/docratchet-1155
job/perflint-1133
job/devtests-1159
wip/docratchet-1155
wip/devtests-1159
job/segv-1136
wip/toast-1142
wip/segv-1136
job/toast-1142
job/blockreload-1147
wip/blockreload-1147
job/font-1150
wip/font-1150
job/importui-1120
job/minimonth-1149
wip/importui-1120
wip/minimonth-1149
job/depcheck-1146
wip/perflint-1133
wip/depcheck-1146
job/calcards-1115
job/blocks-1125
job/plus-1128
job/shift-1138
wip/plus2-1128
wip/plus-1128
wip/shift-1138
job/moneyfid-1130
job/editorrail-1113
wip/moneyrev-1130
wip/moneyfid-1130
job/noext-851
wip/noext-851
wip/noext3-851
wip/noext2-851
job/week-1135
wip/week-1135
job/editreg-1132
job/smoke-1122
wip/smoke-1122
job/docs-1143
job/palette2-1123
job/calhdr-1112
job/nlpchip-1127
job/mailghost-1094
job/reconnect-1131
wip/reconnect-1131
job/trayicons-1095
job/delete-1119
job/importhang-1121
job/cards-1083
job/palette-1093
job/mchrome-1084
job/e2e-a-1071
job/canvas-visual
job/previewcard-1098
job/allday-1107
wip/e2e-a2-1071
wip/e2e-a-1071
job/e2e-b-1071
job/adv7c-1105
job/kanban-1092
job/agenda-1086
job/merge-round-7c
job/morph-1104
wip/surfaces-p2
job/merge-round-9
wip/merge-round-9
job/7cfix-small
wip/7cfix-small
job/mailui-1078
job/merge-round-8
wip/merge-round-8
wip/mailui-1078
job/mailround-1038
job/applemail-accept
wip/settitle-1068
wip/mailround2-1038
wip/mailround-1038
wip/e2e-7b
job/crash-1069
wip/crash-1069
job/searchlost-1066
wip/searchlost-1066
job/7b-reconcile
job/flake-1065
wip/flake-1065
wip/merge-round-7b7
wip/merge-round-7b6
wip/merge-round-7b5
wip/merge-round-7b4
wip/7b-reconcile
job/appupdate-1059
job/nfd-1044
wip/appupdate-1059
job/e2e-7b
job/loop-1062
wip/loop-1062
job/pdfprev-1045
job/invtoggle-1053
wip/pdfprev-1045
wip/nfd-1044
wip/invtoggle-1053
job/7bfix-e2e
job/mailstress-b
wip/7bfix-e2e
wip/mailstress-b
job/7bfix-adv
wip/7bfix-adv
job/mailstress-a
job/stack-1054
wip/stack-1054
wip/mailstress-a
job/mailstress-1038
wip/mailstress-1038
job/upload500-1051
wip/upload500-1051
job/share-1034
wip/share-1034
job/syncerr-1037
job/7bfix-photos
wip/7bfix-photos
job/paste-1036
job/setside-1039
wip/setside-1039
wip/paste-1036
job/lease-1042
wip/syncerr-1037
wip/lease-1042
job/7bfix-data
job/passkeybind-1043
wip/apprevoke-1041
job/invite-1035
wip/invite-1035
job/merge-round-7b2
wip/merge-round-7b2
job/mailproxy-486
job/apprevoke-1041
job/rebuild-1033
job/pillborder-1029
wip/pillborder-1029
wip/mailproxy-486
wip/applemail-486
job/headless-998
wip/headless-998
job/groups-1028
wip/groups-1028
job/rebuildwarn-1016
wip/rebuildwarn-1016
job/startup-1011
wip/startup-1011
job/monthpill-1009
job/bgthumb-1025
job/sharetitle-1012
wip/monthpill-1009
wip/bgthumb-1025
wip/sharetitle-1012
job/canvas-cards-977
wip/canvas-cards-977
job/canvas-pencil-978
job/canvas-sketch-990
wip/canvas-sketch-990
wip/canvas-pencil-978
job/canvas-files-989
wip/canvas-files-989
job/canvas-collab-991
wip/canvas-collab-991
job/weekscroll-1018
wip/weekscroll-1018
wip/canvas-core-976
job/canvas-core-976
job/round-drag
wip/round-drag
job/round-settings
job/browserfix
wip/oapi-974
job/oapi-974
job/hist2-integrate
job/mailhtml-726
wip/mailhtml-726
wip/hist2-integrate
job/moneyfu-984
job/drag-1015
wip/drag-1015
job/rename-1017
wip/rename-1017
job/hist2-api
wip/hist2-api
job/oneacct-1014
wip/oneacct-1014
wip/moneyfu-984
job/hist2-bench
job/hist2-restore
wip/hist2-bench
job/hist2-write
job/hotfix-724
wip/hotfix-724
wip/hist2-write
wip/hist2-restore
job/hist2-store
job/hist2-ui
wip/hist2-ui
wip/hist2-store
job/searchstarve-965
job/shutdown-963
wip/shutdown-963
wip/pubedit-981
job/pubedit-981
job/analytics-973
wip/searchstarve-965
job/authflash-850
job/weeklane-969
job/pvtitle-1004
job/hist-975
wip/authflash-850
job/voicepill-617
wip/pvtitle-1004
job/headring-1003
wip/weeklane-969
wip/voicepill-617
wip/headring-1003
wip/analytics-973
job/agentscope-980
wip/thumbsandbox-988
job/thumbsandbox-988
wip/hist-975
job/links-856
wip/links-856
job/davetag-966
wip/davetag-966
job/filesstorm-1000
job/hoverpad-725
wip/filesstorm-1000
job/ffmpegblas-993
job/merge-round-7a
wip/hoverpad-725
wip/ffmpegblas-993
job/nowdot-1002
wip/verify-7a
job/noteid-857
wip/nowdot-1002
wip/noteid-857
wip/merge-round-7a
wip/agentscope-980
job/imapedge
job/a11yfix2
wip/imapedge-941
wip/imapedge
wip/a11yfix2
job/notetask-986
job/logheading
wip/logheading-998
job/textthumb-652
job/photolive-987
wip/photolive-987
job/davactive-983
job/savefix-985
job/tabicons-607
wip/davactive-983
wip/tabicons-607
wip/notetask-986
wip/savefix-985
job/dirid-627
job/buildspeed-1007
wip/dirid-627
job/agenda-decks
job/perfguards-impl
job/undo-a11y
wip/undo-a11y
job/mailperf
job/wal-824
wip/settings-50
job/settings-50
job/notesfilter-606
wip/notesfilter-606
job/surfaces-p2
wip/wal-824
job/maillayouts
wip/mailperf
wip/maillayouts
job/taskmeta-659
job/money-ident
wip/money-ident
wip/taskmeta-659
job/errstates
wip/perfguards-impl
job/headings-881
wip/headings-881
wip/errstates
job/voice-619
job/gaps-827
job/notesperf
wip/notesperf
wip/voice-619
job/hddsql-549
job/perf-stream-668
wip/perf-stream-668
wip/deeplinks-fix
job/deeplinks-fix
job/authfix
job/docsfix-rust
wip/docsfix-rust
job/webperf
job/docsfix-web
job/datafix2
job/webdav-lock-476
job/copyfix
wip/copyfix
wip/webperf
job/focus-658
wip/protofix
job/mediafix
job/protofix
wip/mediafix
job/agentfix
job/hhmm-724
wip/agentfix
job/undo-722
job/reuse
wip/webdav-lock-476
wip/reuse
job/scopefix
job/datafix
wip/hhmm-724
wip/undo-722
job/surfaces-p1
wip/hddsql-549
job/voicememos-618
wip/datafix2
wip/surfaces-p1
job/fix-940
wip/fix-940
job/blaze-surfaces
wip/datafix
wip/blaze-surfaces
job/taskday-655
job/linknav-639
wip/linknav-639
wip/gaps-827
job/isolation-707
job/audiophotos-720
wip/audiophotos-720
job/advfind-664
wip/voicememos-618
wip/taskday-655
wip/isolation-707
wip/advfind-664
wip/scopefix
wip/focus-658
job/testgaps
wip/testgaps
job/overscroll-718
wip/authfix
job/deps
wip/overscroll-718
job/rev2-agentfix
job/rev2-money-ident
job/rev2-mailperf
wip/deps
job/hardening-728
wip/hardening-728
job/searchgen-832
wip/searchgen-832
job/photopw-849
job/mailsql-825
wip/photopw-849
job/sharefix
wip/sharefix
job/rev2-mailhtml-726
job/rev2-perfguards
job/copyval-723
job/lightglass-r2
wip/lightglass-r2
wip/docsfix-web
job/copy-audit
job/macinterop-staging-r2
job/design-sync
job/rev2-taskmeta-659
job/rev2-webperf
job/docs-audit
job/rev2-advfind-664
job/rev2-mailproxy-486
job/states-audit
job/rev2-datafix
job/design-drift
job/test-gaps
job/rev2-voicememos-618
job/rev2-mediafix
job/rev2-deps
job/rev2-datafix2
job/licence-audit
job/issue-hygiene
job/rev2-protofix
job/rev2-voice-619
job/rev2-isolation-707
job/rev2-surfaces-p1
job/deeplink-audit2
job/rev2-audiophotos-720
wip/test-gaps
job/rev2-overscroll-718
job/rev2-undo-722
wip/states-audit
job/rev2-dropmd-719
job/rev2-linknav-639
job/merge-7b-plan
wip/merge-7b-plan
job/rev2-taskday-655
wip/mailsql-825
job/rev2-webdav-lock-476
job/rev2-browserfix
wip/design-drift
job/rev2-hddsql-549
wip/deeplink-audit2
job/rev2-scopefix
job/rev2-authfix
job/rev2-hardening-728
job/rev2-wal-824
job/rev2-sharefix
job/calsidebar-638
job/chrome-audit
job/ioperf
wip/ioperf
wip/chrome-audit
wip/calsidebar-638
job/dropmd-719
wip/dropmd-719
job/ocr-build
wip/ocr-build
job/blaze-settings
wip/copyval-723
job/toastring-721
wip/toastring-721
job/deployfix-732
wip/deployfix-732
wip/blaze-settings
job/money-import-recheck
job/rev-a11y
job/perf-arch-db
job/rev-7b-data
wip/textthumb-652
wip/perf-arch-db
job/sec-protocols
job/sidehdr-660
job/rev-7b-security
job/research-surfaces
job/rev-design-gaps
job/rev-mcp-api
wip/sidehdr-660
job/perf-arch-memory
wip/sec-protocols
job/perf-arch-bundle
job/snapedge-714
wip/rev-mcp-api
job/sec-supplychain
wip/research-surfaces
job/perf-arch-sync
job/rev-consistency
job/perf-arch-server
wip/perf-arch-server
wip/perf-arch-memory
job/perf-arch-io
job/perf-arch-client
job/sec-fs
job/sec-mcp-scopes
job/sec-sharing
job/perf-guards
job/sec-browser
job/sec-admin-deploy
job/sec-auth
wip/snapedge-714
job/bgpicker-717
wip/perf-arch-bundle
wip/money-import-recheck
job/advsetup-654
wip/bgpicker-717
wip/advsetup-654
job/burst-709
job/kbdcaps-710
job/app-pw-chooser
wip/burst-709
wip/app-pw-chooser
job/imaptest-625
wip/kbdcaps-710
job/fix-499
wip/fix-499
job/perf-mut-667
job/calimg-589
job/perf-snap-666
wip/calimg-589
wip/perf-snap-666
wip/perf-mut-667
job/perf-cache-665
wip/perf-cache-665
job/voicefiles-620
wip/voicefiles-620
job/admin-burst-705
wip/admin-burst-705
job/voicememos-review
wip/voicememos-review
wip/ryw-653
job/ryw-653
job/writeonopen-661
job/instant-663
wip/writeonopen-661
job/money-import-review
wip/money-import-review
wip/importjs-610
review/integrations-407-round6
wip/integrations-review
job/dragghost-612
wip/dragghost-612
job/integrations
wip/integrations
job/decider-656
job/merge-round-6
job/perf-rerun
wip/merge-round-6
job/integrations-review-round5
job/selalign-576
wip/selalign-576
job/mcp-events-491
job/files-631
job/cal-e2e-569
wip/cal-e2e-569
job/reload-423
wip/reload-423
wip/mcp-events-491
wip/files-631
job/notesbridge-644
wip/notesbridge-644
job/editor-series
job/calcard-series
wip/calcard-series
job/mcp-events-review-491
wip/mcp-events-review
wip/editor-series
job/quirks-546
job/integrations-recheck
job/tocrail-636
wip/tocrail-636
wip/quirks-546
wip/reminders-643
job/reminders-643
wip/davscale-573
job/davscale-573
job/integrations-review
wip/ocr-eval-584
job/ocr-eval-584
job/esc-537
wip/esc-537
job/toastname-586
wip/toastname-586
job/submenu-579
wip/submenu-579
job/tasks-mode
wip/tasks-mode
job/agentdocs-630
job/dupwrite-634
wip/agentdocs-630
wip/dupwrite-634
job/lightglass-588
wip/lightglass-588
job/tabswitch-549
job/ghosttask-623
wip/ghosttask-623
job/toaststack-616
job/weekstate-609
job/mailsync-613
wip/mailsync-613
wip/weekstate-609
job/maildup-626
wip/tabswitch-549
wip/maildup-626
wip/toaststack-616
job/motion-611
wip/motion-611
job/tlstest-601
wip/tlstest-601
job/perf-495
job/floating-sheet
wip/floating-sheet
job/remdup-585
wip/remdup-585
job/fix-502
wip/fix-502
job/attachplay-622
job/perf-batch
wip/perf-batch-563
wip/perf-495
hotfix/mail-sync-diag
job/mail-m3
wip/mail-m3
job/attach-poof-603
job/calhover-608
job/editorbar-604
job/mentions-605
job/merge-round-4
job/allday-514
wip/merge-round-4
wip/allday-514
job/merge-round-4a
wip/merge-round-4a
job/sharestack-580
job/fix-501
wip/sharestack-580
wip/fix-501
job/perf-batch-563
job/apw-cache-review
wip/apw-cache-review
job/probe-520
wip/probe-520
job/mac-393
wip/mac-393
job/header-571
job/flake-513
wip/flake-513
job/docs-thumb-547
wip/header-571
job/webcal-572
wip/webcal-572
wip/shortcuts-542
job/shortcuts-542
wip/docs-thumb-547
job/caldav-stress
wip/caldav-stress
wip/sweep-478
job/apw-cache-512
wip/apw-cache-512
job/money-empty-540
wip/restart-505
wip/money-empty-540
wip/fix-510
job/restart-505
job/fix-503
job/perf-496
wip/perf-496
job/fix-498
wip/fix-498
job/info-inspector-465
wip/info-inspector-465
job/fix-510
job/fix-507
wip/fix-507
wip/fix-503
job/fix-493
job/money-kinds
wip/money-kinds
job/hygiene-548
job/merge-round-3
wip/fix-493
job/drag-snap-536
wip/merge-round-3
wip/merge-round-0930
wip/drag-snap-536
job/align-538
wip/align-538
job/bg-flash
wip/bg-flash
job/money-import
job/search-count-544
wip/search-count-544
wip/money-import
job/settings-key-541
wip/settings-key-541
job/toast-539
job/preview-421
wip/preview-421
wip/toast-539
job/tasks-500-531
job/title-plain-526
wip/title-plain-526
wip/tasks-500-531
job/notes-bridge
wip/parity-484
job/parity-484
job/files-slow
job/crash-525
wip/notes-bridge
wip/files-slow
wip/crash-525
job/kbd-motion-527
wip/bg-422
job/analytics-504
wip/analytics-504
wip/kbd-motion-527
job/upload-pill-523
wip/upload-pill-523
wip/tray-order
job/tray-order
wip/overflow-mid
wip/merge-round-2
job/perf-494
wip/perf-494
wip/mcp-fast-492
wip/motion-477
wip/asr-ab-489
wip/theme-variants-506
wip/overflow-511
wip/week-header-508
wip/attach-427
job/dav-delete-471
job/iso-435
wip/iso-435
wip/files-sel-keys
wip/dav-delete-471
job/align-253
job/siwc-490
wip/siwc-490
job/money-kinds-review
wip/align-253
wip/money-kinds-review
job/small-bugs-3
wip/overlay-title-487
wip/multiget-500
wip/hidden-420
wip/webcal-ui
wip/webcal-431
job/perf-367
job/location
wip/small-bugs-3
wip/location
wip/perf-367
wip/admin-deny-483
job/tag-unicode-473
wip/tag-unicode-473
job/blur-436
wip/photos-470
wip/blur-436
wip/small-bugs-4
wip/hunt-20260930
wip/settings-hdr-482
wip/chips-416
job/dedup-375
wip/dedup-375
job/doc-stack
wip/doc-stack
job/tokens-literals
wip/tokens-literals
job/jobs-leftovers
wip/send-fast
wip/paste-467
wip/money-numbers
job/money-plugin
wip/money-plugin
job/break-dav
wip/merge-batch
wip/crossday-469
wip/mac-verify
wip/mail-m2
wip/break-dav
wip/money-review2
job/money-md
job/modes-424
wip/money-md
wip/jobs-leftovers
job/agenda-413
wip/agenda-413
wip/modes-424
job/recog-417
wip/recog-417
wip/bounce-425
wip/ab-384-luna
job/webdav-perf
wip/webdav-perf
job/toast-ring
wip/toast-ring
job/money-review
wip/money-review
wip/micro-motion
wip/settings-card
wip/minical
job/notes-imap-428
job/least-priv
wip/ui-small-2
wip/flaky-426
wip/drag-end-418
job/jank
wip/jank
wip/least-priv
wip/docs-site
job/agenda
job/sec-batch
wip/sec-batch
wip/per-user-index
job/area-calendars
wip/area-calendars
job/parity
wip/parity
job/documents-research
wip/documents-research
job/test-infra
job/reminders-sync
wip/small-bugs-2
wip/reminders-sync
wip/gestures
job/google-oauth
wip/tags-merge
wip/tags
job/e2e-theme
wip/e2e-theme
job/icon-align
wip/test-infra
wip/select-align
wip/editor-385
job/voice
wip/webdav
job/webdav
job/app-pw-ui
job/editor-integrity
wip/editor-integrity
wip/voice
wip/quota
wip/cal-followups
wip/icon-align
job/composer-scale
wip/composer-scale
job/jobs-page
wip/jobs-page
job/hig-type
wip/hig-type
wip/app-pw-ui
job/motion-spring
job/mcp
wip/motion-spring
wip/mcp
job/small-bugs
wip/push-hosts
job/profile-sign
wip/touch-369
wip/profile-sign
job/mobile-focus
wip/mobile-focus
wip/ui-polish-354
wip/small-bugs
wip/dup-task
job/toast-polish
job/app-pw-scopes
wip/toast-polish
wip/app-pw-scopes
wip/cli-agent
wip/selection-pills
job/preview-attach
wip/preview-attach
job/dav-proppatch
wip/dav-proppatch
wip/cal-switcher
job/atomic-race
wip/atomic-race
job/photos-shared
wip/photos-shared
wip/cal-grid
wip/note-rewrite
wip/search-rebuild
job/mail-m1
job/paperless-import
wip/paperless-import
wip/mail-m1
wip/hidden-activity
wip/search-d
wip/pricing-research
wip/cursors
wip/auto-scheme
job/single-pills
wip/single-pills
wip/xuser-matrix
wip/money-format
wip/app-pw-setup
wip/purge-dos
wip/vault-health
wip/caldav-apple
wip/xuser-audit
wip/e2e-green
wip/tabbar
wip/adv-harness
wip/maple-mono
job/search-fix
wip/search-fix
wip/search-perf-c
job/adv-harness
wip/sidebar-headers
job/glass
wip/temp-index
job/polish
wip/polish
wip/file-protocols
wip/money-research
wip/glass
wip/voice-models
wip/collab-redo
job/voice-research
wip/hunt-20260928
wip/notes-actions-research
wip/search-pad
wip/search-perf
wip/search-sticky
wip/editor-undo
wip/chrome-rules
wip/motion
wip/appearance-research
wip/appearance
wip/audit-bugs
wip/cal-glass
wip/block-actions
wip/authz-order
wip/event-stripes
wip/chrome-sidebar
wip/auth-flaky
wip/robust-2
wip/gate-fix
wip/menu-blur
wip/import-calternaljs
wip/tray-fix
job/import-calternaljs
wip/index-order
wip/audit-fixes
wip/search-chevrons
research/mail
wip/phone-chrome
wip/dedup-break
wip/csp
wip/ui-audit
wip/select-toast
wip/perf
wip/flat-layout
wip/fonts
wip/event-tint
wip/sync-converge
wip/data-split
wip/glass-audit
wip/robustness
wip/sync-chaos
wip/search-thumbs
wip/fuzz
wip/menu-icons
wip/search-pill
wip/sync-changing
wip/heading-links
wip/date-formats
wip/a11y
wip/break-editor
wip/e2e-fix
wip/settings-sections
wip/sync-root-guard
wip/search-palette
wip/share-edit
job/toasts
wip/toasts
wip/cont-analytics
wip/authz-review
wip/popovers
wip/overlay-glass
wip/change-feed
wip/editor-modes
wip/composer-align
wip/cont-agenda
wip/agenda-merge
job/agent-conventions
wip/agent-conventions
wip/backend-misc
job/route-audit
wip/route-audit
wip/ui-batch
wip/heif-hardening
wip/grid-resize
wip/ask-page
wip/webmcp
job/deeplink-audit
wip/deeplinks
wip/shortcuts
wip/cont-tz-days
main
No results found.
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
kayg/calternal#785
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?
Protocol audit assigned under #663; source base
c4a61e8cf0. Source review only; no hostile payload, live exploit or crash-threshold measurement. The owner rule blocks authorization holes and crash/DoS risks. No product code is changed by this audit.Evidence on the base:
crates/calternal-dav/src/protocol.rs:298,:391,:1132parse requestbytes with
xmltree::Element::parse. REPORT accepts up to 512 KiB(
:269,:1128). PROPFIND and PROPPATCH have smaller byte caps.crates/calternal-dav/src/files.rs:419,:430buffer PROPFIND and LOCKup to 64 KiB, then pass them to dav-server. Its 0.11.0
handle_props.rs:300and
handle_lock.rs:117also use xmltree without a depth check.src/lib.rs:199–232callsbuildrecursively foreach child. Locked xml 1.4.0
reader/config.rs:109–124bounds entities,names, attributes and text, but has no element-depth field. A body byte cap
does not provide a safe call-stack bound.
Impact: an authenticated DAV request can reach input-dependent recursion on
the server worker stack. Stack exhaustion can terminate the process. This is
a crash/DoS risk under the owner merge rule. It persists in round-7a. This is
not an external-entity disclosure finding: xml's external entity declarations
are unsupported, and entity expansion has separate default bounds.
Repair: use one shared streaming XML validation boundary before tree parsing
and before dav-server. Bound element depth, node count, text and attributes.
Reject DTDs for these DAV request grammars. Set a small decoded-data budget.
Validate using parser events, not a byte scan, so encodings cannot bypass it.
Regression coverage: all XML-consuming DAV methods; valid Apple requests;
element-depth and node-budget boundaries; alternate encodings; entity/DTD
rejection; malformed documents; and a normal follow-up request after rejection.
An HTTP Depth header test does not test XML element depth.
Dependency evidence: xmltree 0.12.0 source.
Versions also match Cargo.lock and the local registry source. No dependency
was added or upgraded.
Duplicate check: searched all issue states for XML depth, connection cap, SSE revocation and MCP session. Read related #457, #328, #329 and #668. No matching repair issue identified. Track the repair with source-level tests and a safe local validation of the repaired boundary. Do not close this issue from the audit job.
Started protofix on job/protofix. Base and HEAD:
2f4482ded0(job/merge-round-7a). Read #785–#789 and sec-protocols/audit-findings.md. Scope: shared DAV XML validation, shared listener caps, live credential validity, SSE authorization lifetime, legacy MCP owner binding. No push or deployment. Validation uses bounded defensive tests; no crash or exploit reproduction.DAV has five direct xmltree request parses on this base plus WebDAV PROPFIND and LOCK forwarding. They now share an iterative decoded-event validation boundary before recursive parsing. Limits: depth 32, 8192 nodes, 64 attributes per element, 512 KiB total decoded strings; DTDs denied. xml 1.4.0 was already locked and cargo info verified its version and MIT license. Counter boundary tests avoid invoking excessive trees on the old parser.
Validation is in progress. No completion or live exploit claim.
Progress: committed the SSE performance profile as
8020fede1. A perf-VM reference run under /root/perf.lock and the existing HDD emulator opened 50/50 streams: setup p50 23.3 ms, p95 33.3 ms, mean RSS 139014483 bytes, peak CPU 67.88%. Shared pre-fix release: /root/perf-stream-668/calternal-server. This is a reference run, not a fixed-build result. Rust guard/cap/credential and session changes are being checked; the first fresh auth test build is still compiling dependencies on the shared host (load 115). Web locked dependencies installed; web check is running. Read-only code review is running.Read-only review found two MCP lifetime problems in the first implementation: response-time owner insertion could miss cancelled initialization, and inbound-only idle tracking could close an active SDK session. Replaced them with OwnedSessions/OwnedTransport. Ownership is inserted synchronously at SDK allocation and admission is retained through worker/session cleanup; SDK inactivity remains unchanged. Added cancellation, close/DELETE, and private-context tests. Review confirmed the revised rmcp 3.5.0 API shape. Added unconditional rmcp formatting-layer filter because SDK tracing emits session IDs even at info; RUST_LOG cannot re-enable it.
Final sync: fetched origin once; origin/dev was already included. Re-merged origin/job/merge-round-7a; only adversarial route classification entries arrived. No changes to test expectations. Web check: svelte-check found 0 errors and 0 warnings. Initial web test: 5 deadline failures (TimeGrid clock cycle, Agenda dense rows, ThemePicker Auto variant, collaborationUndo, StatRow mode); 1068 passed. A run with two workers and 30-second deadlines is checking load effects; assertions are unchanged. Rust dependency build remains active; server clippy is queued on its target lock.
Progress: committed bounded loopback lifecycle probe
f5f8bb8d9; no excessive XML or connection load is sent. Web check passed with 0 errors and 0 warnings. Initial web test run had five 5-second timeouts on the shared loaded host; bounded retry with two workers and a 30-second timeout passed all 154 files and 1073 tests without assertion or fixture changes. Production web build passed. Rust fmt check passed; first auth regression compile remains in dependencies and server clippy is queued on that target lock. Host load recorded 135.33/149.15/135.60 at 16:44 CEST.The new protocol authority bench profile ran on the locked perf VM with HDD emulation and the shared #668 reference release binary (not the fixed build): one stream p50/p95 2.7/2.7 ms, mean CPU 3.4%, mean RSS 129793779 bytes; 50 streams p50/p95 51.4/64.2 ms, mean CPU 2.87%, mean RSS 137289929 bytes. Each ran 15 seconds, all streams HTTP 200. Loads inside the lock were 0.08/0.44/0.48 and 0.58/0.54/0.51. Fixed-build validation and comparative measurement remain pending; these numbers are not claimed as after results.
Validation progress at 17:27 CEST: HEAD
fde2b73d4, bounded probes and bench changes committed. Rust fixes are implemented and fmt passes, but the first calternal-auth regression build has spent almost two hours compiling fresh dependencies on the shared host (load 139.88/127.97/127.14 at 17:23). No Rust diagnostic yet. The queued server clippy was cancelled only to reorder gates: auth clippy/full test, DAV gates, then server gates. Rust fix commits await the touched-crate gates. Web check, bounded full test retry (154 files / 1073 tests) and production build passed. The optional reference lifecycle run on the perf VM could not obtain its lock, so it did not run; no result is claimed. Fixed-build lifecycle and comparative measurements remain pending. The four-hour job limit will be respected, with any remaining checks stated explicitly.protofix #785–#789
Built:
Files: crates/calternal-auth/src/store.rs; crates/calternal-dav/{Cargo.toml,src/{lib,files,protocol,request_xml}.rs}; crates/calternal-server/src/{main,wire,notes_imap,notes_submission,mcp,mcp_events,mcp_sessions,protocol_authority}.rs; Cargo.lock; tests/adversarial/protocol_lifecycle.py; bench/sse_storm.py.
Decisions not fixed by DESIGN: DAV budgets depth 32, nodes 8192 and decoded bytes 512 KiB; DTD is not part of accepted request grammar. Quiet SSE authority lease one second. Legacy MCP transport admission capped at 1024 active sessions; cleanup holds slots until SDK worker termination. Security timers skip missed ticks instead of repeating outdated reads. Native SDK inactivity timer remains authoritative.
UX gaps closed / left: not applicable; no UI source or behavior changes. No screenshots were required.
HEAD:
b3e7c14adb(job/protofix). The worktree is clean. origin/dev and origin/job/merge-round-7a were merged once before final gates; no push or deploy.Validation is incomplete. The first focused auth build took 188 minutes on the shared host. The focused grant regression passed before the later read-pool refinement and added closed-writer assertion. Full auth clippy remained in dependency checks; DAV and server clippy waited on cache/build locks. These commands were stopped for the four-hour limit. Full crate tests, the fixed-server lifecycle round, and fixed-build before/after performance results remain undone. These commits are not merge-ready. No existing test assertions or fixtures were changed to get a pass.
Gate output, verbatim:
cargo fmt --check: no output; exit 0 (final HEAD).
Focused auth regression (earlier revision):
Web check:
Web test bounded retry (two workers, 30-second deadline):
The initial web run had five 5-second timeouts; the retry changed runner settings only. Production web build passed. Python probe/profile syntax checks passed.
Incomplete Rust gates ended with dependency checks (auth) or:
Performance: docs/perf/runs/2026-10-02-protocol-authority-788-reference.json records the locked HDD reference runs, not the fixed build. One stream: p50/p95 2.7/2.7 ms, mean CPU 3.4%, mean RSS 129793779 bytes. Fifty streams: p50/p95 51.4/64.2 ms, mean CPU 2.87%, mean RSS 137289929 bytes. Both ran 15 seconds with all HTTP 200; loads were 0.08/0.44/0.48 and 0.58/0.54/0.51. The existing fifty-stream baseline has p95 31.4 ms, peak CPU 51.91%, peak RSS 136183808 bytes. Routes and sample windows differ, so this is reference data only. The optional reference lifecycle check did not acquire the VM lock and did not run.
Final doc comments reviewed. The query uses the existing read pool; stream checks share immutable identity/route data. SDK inactivity remains native. Cleanup output:
Web build output and generated Python caches were removed. Remaining validation is handed back explicitly; no issue is closed.
Independent read-only review started on job/rev2-protofix. Review branch base:
440e19dce2. Target:b3e7c14ad. I will inspect source and tests without builds, servers or probes, and commit review-protofix.md and audit-findings.md. The author report is excluded from the review inputs.Independent read-only review complete. Target:
b3e7c14ad. The author reportwas not used. Branch: job/rev2-protofix. Review head:
4e739be474.Built:
review-protofix.mdandaudit-findings.mdonly, in two atomiccommits. No product code changed. No P1 defect was confirmed. Findings:
crates/calternal-server/src/protocol_authority.rs:125calls the SELECTat
crates/calternal-auth/src/store.rs:2548for each chunk and quietlease. That SELECT uses the one-connection writer pool. Use the existing
read pool and test with a separate, unavailable writer. Evidence was
added to #788. This is source-level contention, not a measured regression.
crates/calternal-dav/src/request_xml.rs:115tests counters directly;:134never crosses a budget boundary with a document.tests/adversarial/protocol_lifecycle.py:130covers only root PROPFIND.Removing event accounting or Files validation can leave these tests
passing. Add bounded depth/node/decoded-data tests through the parser
and each XML-consuming route, alternate encodings and a normal follow-up.
This evidence stays on #785, which owns the XML repair.
tests/adversarial/protocol_lifecycle.py:43uses only one credential.Removing
crates/calternal-server/src/mcp.rs:1399can leave the addedequality and lifecycle tests passing. Test another User and a second
credential of the same User on POST, GET/resume and DELETE; the original
owner must still succeed. Evidence was added to #789.
Issue list: #785, #788 and #789. Searches found these existing repair owners;
no new issue was created and no issue was closed.
Source checks: DAV parses share the iterative validator; all Notes listeners
share caps; retained Notes authority checks expiry; SSE bodies check current
authority; MCP handles bind to User and credential identity before SDK use.
No confirmed new authorization bypass, data loss or corruption was found in
the assigned paths. No weakened existing test expectation was found in the
protocol-fix commits. Module comments state the repair invariants.
Known gaps: runtime behavior is not verified. The added tests do not cover
real Notes expiry during commands/IDLE/SMTP, all live-listener failure paths,
or the full SSE Plugin/scope/event matrix. The target's DESIGN §58 contains
Agent discovery; the performance citation in #788 does not match that
section. No latency target was invented. Exact-version docs.rs lookups
failed; locked versions and matching local registry source were inspected.
Verification output, verbatim:
This is the output of the one required origin update.
git diff --checkexited 0 with no output. Rust/web gates were not run under the explicit
LIGHT prohibition; there is no build/test gate output to quote. No server,
browser, probe, performance measurement or cleanup command was run.
For the merge round: run
cargo fmt --check, and per-crate clippy/test forcalternal-auth, calternal-dav and calternal-server. Run
python3 tests/adversarial/protocol_lifecycle.py --server "$CALTERNAL_SERVER_BIN"to prove stream termination and DAV follow-up. Add the missing focused
regressions in the build job; the current lifecycle script cannot prove them.
The committed review lists each exact command.
Decisions: reuse existing repair issues; rank missing security regressions
as P2 coverage defects, without claiming a current bypass; treat unmeasured
contention separately from merge-blocking security defects. No product design
decision was made. UX gaps closed: none. UX gaps left: not assessed; no UI
was changed.
Started the review-fix round on branch
job/protofix. Initial job head:b3e7c14adbf4a6824f9ca5a6a8224ffcf77e214f. Fetched and mergedorigin/devat basec4faf184df726a9375ae0c13bdfb6018ac2cf57ebefore editing. I am addressing the three P2 findings inreview-protofix.md, including the related #788 and #789 test gaps.Finding #785: parser unit tests alone did not prove that each DAV XML route invokes the shared boundary checks. I added exact and over-limit parser cases for depth, node count, and decoded payload size, including UTF-16LE/BE; route regressions cover PROPFIND, PROPPATCH, REPORT, and the Files adapter's PROPFIND/LOCK with ignored extension content beyond the depth limit, followed by valid-request recovery. DAV gates are pending.
DAV parser and route regressions are committed as
c283850bb.cargo clippy --offline -p calternal-dav --all-targets -- -D warnings:cargo test --offline -p calternal-dav:The route cases cover PROPFIND, PROPPATCH and active REPORT handlers plus Files PROPFIND and LOCK. Exact parser limits use namespace-aware decoded accounting and comments for the node boundary. Legacy Journal REPORT returns 410 before parsing, so the test covers the active untagged collection handler instead.
Forgejo #785 report
Built
require_live_sessionnow reads from the read pool. Its regression test holds the writer pool's only connection and verifies session checks still complete.Files and commits
crates/calternal-auth/src/store.rs—185c475e5(Use read pool for live session checks)crates/calternal-dav/src/{request_xml.rs,protocol.rs,files.rs}—c283850bb(Test DAV XML budgets at parser and route boundaries)crates/calternal-server/src/notes_submission.rs—661bcad35(remove stale unused import reported by clippy)crates/calternal-server/src/wire.rs—4d2e86385, thenf1259332a(MCP boundary test; correct Plugin denial assertion)Head:
f1259332aa8540409fc864d80918ae57970eabb9.Gates
cargo fmt --all --check: exit 0, no output.cargo clippy --offline -p calternal-auth --all-targets -- -D warnings:cargo test --offline -p calternal-auth:The new
session_checks_answer_while_the_writer_pool_is_busytest passed. Most failures were transientUnavailableerrors while creating in-memory SQLite fixtures; the host's I/O pressure reported 98.97% average over 10 seconds. One existing Argon2 scheduling test did not reach its verifier in time. I did not repeat this gate.cargo clippy --offline -p calternal-dav --all-targets -- -D warnings:cargo test --offline -p calternal-dav:cargo clippy --offline -p calternal-server --all-targets -- -D warnings:This pass was before the final test-only assertion adjustment in
f1259332a.cargo test --offline -p calternal-server -- --test-threads=2:The failure was the test expecting a non-2xx API denial at
result.isError. MCP returns it as a JSON-RPCerrorwith the API envelope aterror.data.error.code. Commitf1259332anow assertsnot_foundthere and asserts an object result after re-enabling Analytics. The corrected assertion was not rerun before the four-hour job limit.cargo clean:Decisions
Known gaps and merge-round work
CARGO_PROFILE_DEV_DEBUG=line-tables-only CARGO_INCREMENTAL=0 CARGO_BUILD_JOBS=4 cargo test -p calternal-auth -- --test-threads=2to prove the complete auth suite with bounded test concurrency.CARGO_PROFILE_DEV_DEBUG=line-tables-only CARGO_INCREMENTAL=0 CARGO_BUILD_JOBS=4 cargo test -p calternal-server -- --test-threads=2to verify the corrected MCP Plugin denial assertion and the full server suite.python3 tests/adversarial/protocol_lifecycle.py --server "$CALTERNAL_SERVER_BIN"to exercise the bounded local DAV/MCP credential lifecycle for #785–#789.bash tests/adversarial/run.shin the merge round to prove the full XUser, authorization, robustness, and cross-Plugin adversarial matrix.UX gaps closed/left: not applicable; no UI changed.