contract + hub: real 404 for addresses that can never be a page
tsk-85dc596aty5w open
Maintainer's decision req-0d6vhrr0xqh8 (2026-11-07): yes.
What: the hub answers 404 for addresses that can never be a page, instead of 200 with the app shell:
- an unknown own word
- more path segments than any route has
- a first segment that is not a valid handle
What stays as it is: handle-shaped and project-shaped addresses without a public page keep 200 + noindex. Otherwise a 404 there would tell a stranger which names exist (context/routing.md e34ae588).
Order:
- Contract first: a §16.11 change, and an update of e34ae588 naming the new boundary and why it leaks nothing.
- Then the hub PR.
When: after tsk-h1e5zmq1wnhj (proposal A, web only) is merged. Its not-found view is what the 404 body should show.
Done when: a hub test shows 404 for each of the three shapes and 200 for an unknown handle and an unknown project, red on main.