- dashboard.html: each section sits in OPTIONAL:<name> BEGIN/END blocks in
the style, markup and script, with sample answers so a page with no bot
shows it working. Core change: setUser records the role on <body>, so CSS
hides admin-only parts from operators.
- templates/sections.py keeps the chosen sections and deletes the rest,
markers included; it stops on a broken marker.
- templates/sections.md: what each section needs from the host (events,
actions, desktop slot snippets, the role re-check, the login hand-off).
- SKILL.md step 5 asks one multi-select question and runs sections.py.
- Page check: checkpoint states, admin visibility by role and assign/remove,
login theme and hand-off to auth or the stub. Cases skip on a generated
page without the section; the template must carry all three. The harness
signs in when the page has a login screen.
- tests/test_sections.py: no sections leave no trace, and that page still
passes the page check.
- Eval runner: a-empty-sections variant (all three) and per-section checks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>