Commit 1b717e5
authored
The capstone of the #3563 audit. The dispatcher (#3563), REST (#3587) and
service-mount (#3636) ledgers all run server → client and never asked whether
the URL the client BUILDS matches anything a server MOUNTS — so a method could
name a real function, carry a green ledger row, and 404 everywhere. That
shipped four times, found one at a time by hand (#3584 x2, #3611, #3636 x2).
client-url-conformance.test.ts drives every method on a real client with a
recording fetch and matches each captured URL against the union of all four
ledgers. A real drive rather than a hand-written mapping table, which would be
an assertion ABOUT the code that the code can drift away from. Mutation-checked:
re-injecting the #3636 dialect bug fails the suite.
The sweep's own completeness is asserted, because that is what rots silently —
every method is driven or declared NON_HTTP with a reason; a driven method
emitting zero requests fails; a URL containing undefined fails; and the
__api-endpoint `(unmatched)` catch-all is excluded so it cannot match
everything and make the suite vacuous.
196 of ~219 methods matched. Two bounds are reported rather than papered over:
/api/v1/cloud/* belongs to the sibling cloud repo and is exempt by prefix,
bounded so no other namespace can use it (#3655); and 60 matched calls rest
only on a `**` prefix claim, 54 of them on `* /auth/**` — ratcheted so it can
only shrink (#3656).
No runtime change.
Closes #3642.
1 parent 1986594 commit 1b717e5
4 files changed
Lines changed: 466 additions & 7 deletions
File tree
- .changeset
- docs/audits
- packages
- client/src
- runtime/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
195 | 195 | | |
196 | 196 | | |
197 | 197 | | |
198 | | - | |
199 | | - | |
200 | | - | |
201 | | - | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
202 | 239 | | |
203 | 240 | | |
204 | 241 | | |
| |||
211 | 248 | | |
212 | 249 | | |
213 | 250 | | |
214 | | - | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
215 | 254 | | |
216 | 255 | | |
217 | 256 | | |
0 commit comments