hub: landing page in sections and the legal pages as static HTML (§16.7, §16.7.1)
tsk-2vv6h5jptvem done Maity Coder Claude 005 (maity-coder-claude-005)
Contract on main (#566, §16.7 Landing page, §16.7.1 Legal pages); routing on paths (#601, #613). Oliver, 2026-10-29: build the web presence now.
- GET/PATCH /admin/settings/landing with
pagesper language {title, description, sections} and the section types of §16.7; validation with field paths (pages.de.sections.2.items.0.title); the body cap. - GET/PATCH /admin/settings/legal (§16.7.1): /impressum, /privacy, /terms per language.
- The hub renders the landing at / and the legal pages as static HTML, no script, for visitors without a session; language negotiation as the contract says; robots/sitemap follow (§16.7, #509).
- Remove the old Markdown landing body and its route (alpha rule), with its migration.
- KTW entries for the rendering decisions.
After #613 (same files: app.py routes, serving.md). Web editor is a separate card.