TASK-001F: Operator UI
Goal
Build the minimum operator-facing screen so the first slice is usable and the UI remains a projection of canonical state rather than a second orchestration layer.
Scope
- main operator screen
- ViewModels projecting canonical app state
- command bindings for connect, home, start, stop, abort, acknowledge, and recover or reset
- visible machine state, recipe, stage position, progress, alarms, preview, and diagnostics panel
Non-Scope
- advanced styling
- multi-page navigation
- detailed diagnostics workspace
AI Execution Profile
- Model class:
Budget or Balanced - Reasoning effort:
Low to Medium - Use cheaper models if the state and commands already exist
- Escalate only if binding or threading issues become tricky
Files Or Areas Expected To Change
PresentationViewModels- WPF views
- command projection and binding glue
Acceptance Targets
- UI shows the required operational information
- command availability reflects canonical app state
- ViewModels stay thin and do not orchestrate workflow
- diagnostics and preview are visible enough for the first slice
Copy/Paste Prompt
text
Implement only TASK-001F: Operator UI in this repository.
Read first:
- docs/requirements.md
Focus on Section 8 and the first-slice command/visibility rules from Sections 6.8, 7.11, and 13.2
- docs/specs/SLICE-001-first-strong-vertical-slice.md
Focus on UI Expectations and Acceptance Criteria
- docs/tasks/slice-001/TASK-001F-operator-ui.md
Goal:
- Build the minimal operator UI for the first slice.
Scope:
- Add the main operator screen.
- Project canonical app state into the UI through thin ViewModels.
- Bind commands for connect, home, start, stop, abort, acknowledge, and recover/reset.
- Show connection status, workflow state, recipe, stage position, progress, defect count, active alarms, preview, and a minimal diagnostics surface.
Do not:
- Move orchestration logic into the UI
- Add polished styling beyond what is needed for clarity
- Build extra screens unless needed for a minimal diagnostics surface
Important constraints:
- Command availability must come from canonical app state.
- Background services must not update ViewModels directly.
Verification:
- Build if possible
- Summarize the screens/ViewModels added
- Explain how command enablement is derived
Important:
- Implement only this task
- Do not preemptively implement later tasks