Optional sections: checkpoint tracker, admin/roles, login page

- 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>
This commit is contained in:
VasanthandClaude Opus 5.5 committed 2026-10-16 14:31:25 +05:30
1 parent 3eb3fdf00e
commit 9a5b95448d
10 files changed
+536 -10

No files matched your search

+16 -5
View File
@@ -15,7 +15,8 @@ source projects.
| `templates/contract.md` | The data contract: events the bot sends, actions the page sends. |
| `templates/themes.md` | Theme presets (Tebra Sky, Superbill Ember) and the custom-colour steps. |
| `templates/palette.py` | Derives a custom palette from one brand hex and checks contrast. |
| `templates/reference/` | Raw Tebra extracts. Use them only to port optional sections. |
| `templates/sections.py`, `templates/sections.md` | Keeps the chosen optional sections in the page and deletes the rest; what each section needs from the host. |
| `templates/reference/` | Raw Tebra extracts, for reference only. The optional sections are already in `dashboard.html`. |
Follow the steps in order. Ask one question at a time, and wait for the answer.
If the user's request already answers a question, don't ask it again.
@@ -59,10 +60,20 @@ Ask only if there is no frontend. If there is one, use its stack.
Always built: the shell (sidebar, top bar, dark toggle, status dot), KPI cards,
the status donut, the run panel and the report table.
Ask which extras to add (choose any, or none): **checkpoint tracker**,
**admin/roles screen**, **login page**. Build only the ones chosen. Unchosen
sections must leave no markup, script or style behind, so delete their
`<!-- OPTIONAL: ... -->` markers.
Ask which extras to add, as one multi-select question (choose any, or none):
- **Checkpoint tracker**: numbered boxes on the Run tab that show each checkpoint as
pending, in progress, done or stuck.
- **Admin/roles screen**: an Admin tab, for admins only, to give people admin or
operator access.
- **Login page**: a sign-in screen in the dashboard's theme. It's UI only and hands
off to the project's own auth.
Build only the chosen ones. In step 6, right after copying the page, run
`python templates/sections.py <copied dashboard.html> <chosen: checkpoints admin login>`.
It deletes the unchosen sections completely (markup, script and style), so nothing
is left behind. Never cut the blocks by hand. Then follow `templates/sections.md` for
each kept section: what to fill, which events the bot sends, and which host actions
to answer.
## 6. Build