chore(plans): instance picker — all tasks complete, gate evidence

Claude-Session: https://claude.ai/code/session_01NcMG6xXdsJbmD2wYAgkK29
This commit is contained in:
Joseph Doherty
2026-09-08 10:04:45 -04:00
parent 50eca87e99
commit c27b22ead3
2 changed files with 14 additions and 5 deletions
+9
View File
@@ -250,3 +250,12 @@ Text: "The instance is picked through the shared **`InstancePicker`** combobox (
### Task 8: Gate (controller)
Build solution (0 warnings), run `CentralUI.Tests` + `Commons.Tests`, `bash docker/deploy.sh`, Playwright `FlowDebuggerTests` + `DebugViewTests` + `DebugViewTreeTests`, browser check of both pages (collapsed areas, typing filter, Enter, Escape, deep link `?instanceId=`), then append gate evidence to this plan and finish via `finishing-a-development-branch`.
## Gate evidence (2026-09-08, branch `feat/instance-picker`)
- Solution build: 0 warnings. `CentralUI.Tests`: 1335 passed (picker 30 + builder 12 + Flow Debugger page 29 + Debug View picker 7 among them). Playwright project builds.
- Rig rebuilt (`docker/deploy.sh`) twice. Playwright `FlowDebuggerTests` + `DebugViewTests` + `DebugViewTreeTests`: **7/7, 0 skipped** on the second build. The first build failed two of them and skipped two: the tests typed into the picker immediately after choosing a site, while the site's instances were still loading; the loaded lists then arrived as a new reference and the picker reset (its "site changed" rule), so the row never appeared. Fixed by keeping the picker **disabled until the load completes** (`_instancesLoading` on both pages, pinned by TCS-based bUnit tests) — a real race for an operator on a slow database, not just a test artefact.
- Browser (Claude-in-Chrome, `localhost:9000`): Flow Debugger deep link `?instanceId=3687` shows `DelmiaSim01` in the field without opening the tree; typing `Delmia` opens the panel with the single matching row; Escape restores the selection text and closes. Debug View: after picking Test Plant A the panel lists the three `zztest-area-*` areas first (collapsed) and the Enabled instances after them with the `(State)` suffix.
- Whole-branch review findings closed: keyboard activation now routes through `TreeView` selection (mouse + keyboard one handler; `SelectedKey` deliberately unbound to avoid the TreeView reset loop); `aria-label`/`InputId`; `aria-controls` only while open; Debug View's localStorage auto-reconnect guards a stored instance that is no longer Enabled; select-era `OrderBy` dropped; deep-link-in-area test added; design doc corrected (tab-out does not close — needs JS `relatedTarget`; explicit handlers instead of `@bind`).
- Untested on the rig: keyboard activation inside the tree in a real browser (pinned by bUnit only); `overflow: hidden` clipping (neither page has such an ancestor today; CSS comment warns integrators).
@@ -25,7 +25,7 @@
{
"id": 4,
"subject": "Task 4: Wire Flow Debugger to the picker",
"status": "in_progress",
"status": "completed",
"blockedBy": [
3
]
@@ -33,7 +33,7 @@
{
"id": 5,
"subject": "Task 5: Wire Debug View to the picker",
"status": "in_progress",
"status": "completed",
"blockedBy": [
3
]
@@ -41,7 +41,7 @@
{
"id": 6,
"subject": "Task 6: Playwright tests drive the picker",
"status": "in_progress",
"status": "completed",
"blockedBy": [
3
]
@@ -49,7 +49,7 @@
{
"id": 7,
"subject": "Task 7: Docs",
"status": "in_progress",
"status": "completed",
"blockedBy": [
3
]
@@ -57,7 +57,7 @@
{
"id": 8,
"subject": "Task 8: Gate (controller)",
"status": "pending",
"status": "completed",
"blockedBy": [
4,
5,