# Product voice (Forja UI) All **user-visible** strings in the web UI, API error messages shown in the UI, and **new code** (identifiers, comments, docstrings, logs) must be in **English**. Agent YAML content (`purpose`, `system_prompt`, examples) may use any language required by the domain. ## Tone - Operational and precise, like an internal governance console. - Short labels; full sentences only where explanation helps. - No role-play, lore, or game mechanics. ## Navigation: one page, six stages The UI is a single page (`/`) organised as the lifecycle stages. The header nav contains anchors to each stage; legacy multi-page routes 301-redirect to them. | Stage | Anchor | Content | |-------|--------|---------| | 01 Define | `#define` | Agents (all versions + states) and guardrail policies | | 02 Run | `#run` | Demo button + free-form governed execution | | 03 Approve | `#approve` | HITL queue for paused runs | | 04 Train & evaluate | `#train` | Training runs, evaluation, promotion request | | 05 Promote | `#promote` | Governance promotion queue | | 06 Audit | `#audit` | Completed runs | ## Execution status labels | Internal status | UI label | |-----------------|----------| | `running` | Running | | `awaiting_approval` | Pending approval | | `completed` | Completed | | `failed` | Failed | | `blocked_by_guardrail` | Blocked by policy | ## Forbidden terms (UI copy) Do not use these in templates, buttons, or dynamic HTML from `web/ui.py`: - blade, steel, strike, anvil, forge (as verb), temper, tempered, forging - judgment chamber, bless, shatter, arsenal (as place name) - hearth, crucible, battle (as station names) - FORGE MASTER, level, heat, XP, station I/II/III - Fire • Hammer • Judgment and similar slogans The product name **Forja** is allowed in the header and documentation. ## Development Follow [`karpathy.md`](../karpathy.md): think before coding, simplicity first, surgical changes, verifiable success criteria (`make test`, `make lint`).