Maity: Board

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:

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:

  1. Contract first: a §16.11 change, and an update of e34ae588 naming the new boundary and why it leaks nothing.
  2. 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.