PROTOTYPE Role: admin Role: member Plan: free Plan: pro View constraints Open Builder

Prototype Constraints

Non-obvious rules that aren't visible from screenshots. Same content lives in README.md.

Generator: Upload flow

Generator: Wizard flow

Generator: Suggestions screen

Schema-enforced caps (from bip_ai_generation_schema.md)

AI behavior contract

Plan gating

Generator → Builder handoff

Required-state coverage matrix

Per prototyping_CLAUDE.md §8, every screen supports six required states: default, loading, empty, form_errors, api_error, permission. Toggle via the prototype banner or by appending ?state=<name> to the URL. Cells: = implemented, n/a = not applicable for the screen (no form / no list / no data fetch), = not yet implemented.

Screen default loading empty form_errors api_error permission
/ (entry) n/a n/a n/a
/generator/import n/a
/generator/wizard/1..11 n/a
/generator/generating is loading n/a n/a n/a
/generator/suggestions n/a*
/generator/handoff n/a n/a n/a n/a
Mini BIP Page 1 (Vite Builder)
Mini BIP Page 2 (Vite Builder)

* Suggestions empty: when the AI returns zero demoted entries, the route redirects directly to /generator/handoff rather than rendering an empty list. Effectively the empty state is "no screen rendered" — the user never sees the suggestions page.

Vite Builder mini-BIP pages: the Vite Builder has no prototype banner; state is URL-driven only — append ?state=loading, ?state=empty, etc. directly to /builder?state=<name>. The state applies to whichever page is currently shown in the page viewer (state is read on every render). form_errors on these read-only pages renders an explanatory banner above the chrome; the pages don't accept form input in reality.

Other Vite Builder pages (Cover, About the Learner, Behavior Overview, Teach: What & How, Teach: Reward, Prevent, Reward & Respond, Resources & Courses) inherit the legacy "default-only" pattern — they have no required-state branches today. Not in scope for this audit pass; tracked as follow-up.