Commit 05991db
committed
fix: report a boundary-path failure once, and never over the root cause
Three defects in the reporting, plus the docs that described it wrongly.
The report sat inside the error-boundary walk, so one throwing layout was
reported once per boundary in the chain. The convergence argument written
beside it was wrong: layoutsForBoundary selects by segment ancestry, not by
boundary depth, so two boundaries can resolve to the same layout set and a
root layout that throws fails every attempt. The loop still terminates, on
its bounded index rather than on a shrinking set. Deduplicating by identity
would not work either, since a layout that constructs its error yields a
fresh object per attempt, so the 500 path carries one latch across the walk
and the global-error attempt.
The dev overlay keeps ONE retained frame per url and its slot is last-write
wins, so pushing a secondary failure after the page error replaced the root
cause with a symptom, and the replacement survived a reconnect. The 500 path
no longer sends secondary failures to the overlay; the page error owns that
frame. The 404 / 403 / 401 paths still do, because nothing else claims it
there: their trigger is a sentinel, which is never reported.
A broken global-error, the app's last-resort boundary, still reached no sink
at all. It reports through the same latch now.
The docs said a throwing layout falls through to the next boundary out, which
is true only on the 500 path. The other three render one nearest boundary and
degrade to a chrome-less standalone render, and discard a control-flow throw
from a wrapped layout rather than honouring it. Both surfaces say so now.1 parent 7b26242 commit 05991db
4 files changed
Lines changed: 133 additions & 9 deletions
File tree
- .agents/skills/webjs/references
- packages/server/src/ssr
- test/ssr
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
212 | 212 | | |
213 | 213 | | |
214 | 214 | | |
215 | | - | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
216 | 223 | | |
217 | 224 | | |
218 | 225 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
340 | 340 | | |
341 | 341 | | |
342 | 342 | | |
343 | | - | |
| 343 | + | |
344 | 344 | | |
345 | 345 | | |
346 | 346 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
435 | 435 | | |
436 | 436 | | |
437 | 437 | | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
438 | 456 | | |
439 | 457 | | |
440 | | - | |
| 458 | + | |
441 | 459 | | |
442 | | - | |
| 460 | + | |
443 | 461 | | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
444 | 467 | | |
445 | 468 | | |
446 | 469 | | |
447 | | - | |
| 470 | + | |
448 | 471 | | |
449 | 472 | | |
450 | 473 | | |
| |||
570 | 593 | | |
571 | 594 | | |
572 | 595 | | |
573 | | - | |
| 596 | + | |
574 | 597 | | |
575 | 598 | | |
576 | 599 | | |
| |||
622 | 645 | | |
623 | 646 | | |
624 | 647 | | |
625 | | - | |
| 648 | + | |
626 | 649 | | |
627 | 650 | | |
628 | 651 | | |
| |||
1047 | 1070 | | |
1048 | 1071 | | |
1049 | 1072 | | |
| 1073 | + | |
| 1074 | + | |
| 1075 | + | |
1050 | 1076 | | |
1051 | 1077 | | |
1052 | 1078 | | |
| |||
1097 | 1123 | | |
1098 | 1124 | | |
1099 | 1125 | | |
1100 | | - | |
| 1126 | + | |
| 1127 | + | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
1101 | 1131 | | |
1102 | 1132 | | |
1103 | 1133 | | |
| |||
1119 | 1149 | | |
1120 | 1150 | | |
1121 | 1151 | | |
1122 | | - | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
1123 | 1162 | | |
1124 | 1163 | | |
1125 | 1164 | | |
| |||
0 commit comments