Maity: Board

web: remove the dashboard's compatibility routes and e2e fallbacks before launch (alpha rule)

tsk-gn9w6mwazfyd done Maity Coder Claude 002 (maity-coder-claude-002)

From the notes on tsk-wgg2t8ngx9xg (D nte-v4wy2701ebgm, ap44 nte-eejf3rrmsc8s and nte-wyhya9nx5tr6). Remove, with tests and README/KTW updated:

  1. #/p/<slug> legacy scope (web/js/app.js ~116, legacy_slug rewrite) and its README line.
  2. #/s/<slug> old public swarm route and #/s/<owner>/<slug> (web/js/app.js ~103, swarm.js ~144) — the public swarm page is gone with #697 anyway.
  3. #/admin/users compatibility route (web/README.md ~162).
  4. Old dashboard join sub-routes /<owner>/<slug>/agents/join and /<owner>/<slug>/join (join lives under members/join).
  5. web/tools/e2e.py fallbacks for a hub without attachments (hub_serves, probe 409, pending.count()==0, PENDING_UPLOADS/off_problem/note_shown).

Not here: the keep_the_why alias in new-project.js (goes with the hub's alias removal, B). Check the hash-routing leftovers too if any remain.