Why this matters
The TUI commands /subagents, /hooks, /profiles, and /runs are real product paths but lack isolated list/select fixtures, so they cannot be marked N/A.
Acceptance contract
Provision deterministic server records and selector state; drive each through real 100x30 PTY including focus/selection/error; assert rendered output, raw API and durable postcondition, plus follow-up message where conversation remains active.
Current architecture and search evidence
/subagents model.go:2100; /hooks :2177; /profiles :2210; /runs :2389; their existing /v1/* server endpoints.
In scope
Provision deterministic server records and selector state; drive each through real 100x30 PTY including focus/selection/error; assert rendered output, raw API and durable postcondition, plus follow-up message where conversation remains active.
Out of scope
All other TUI command groups, cron/callback scenarios, native GUI, and product fixes absent a separately filed live failure.
Work type
Engineering change / feature slice
Change class
Infrastructure, CI, or process change
Protected path
Registry-derived command case -> real harnesscli 100x30 PTY -> rendered TUI state -> isolated harness/API/store or filesystem postcondition -> continued usable conversation -> bounded cleanup.
Cross-surface impact map
Test-only PTY matrix/fixtures and existing read/write API endpoints. Isolated config/workspace/DB paths only. Explicit focus/keyboard/error/confirmation handling, durable probes, no secrets. Native GUI is excluded. No production behavior/schema/deployment change unless a live test demonstrates a separate bug. Required plan, impact map, logs, indexes, focused/race/full regression and hosted CI.
Product and UX contract
Drive exactly the keyboard interaction a user uses; capture success, invalid/error, selection/focus and destructive-confirmation states. A fixture shortage is not an N/A outcome.
Coordination and dependencies
Child work for #1088/#1010. It may build on the non-closing current 24-command matrix foundation, but must use a fresh current-main worktree and a single PR with Closes #N.
Test-first plan
Add red real-PTY fixture case(s) proving the command cannot be credited without rendered and durable evidence, then implement the narrowest deterministic fixture/driver support. Run focused tests, race, ./scripts/test-regression.sh, repeat bounded PTY smoke, and retain artifacts.
Verification plan
Record exact source SHA, terminal frame hashes/transcript, typed keys, API/SSE and relevant DB/filesystem evidence, IDs, cleanup, race/full regression and independent review. Do not claim GUI proof.
Rollout and rollback
Acceptance-only; revert the isolated PR, with no migration or deployment.
Documentation and handoff
Update active plan, impact map, engineering/observational/long-term logs, indexes and #1088 applicability matrix.
Definition of done
Process acknowledgement
Why this matters
The TUI commands
/subagents,/hooks,/profiles, and/runsare real product paths but lack isolated list/select fixtures, so they cannot be marked N/A.Acceptance contract
Provision deterministic server records and selector state; drive each through real 100x30 PTY including focus/selection/error; assert rendered output, raw API and durable postcondition, plus follow-up message where conversation remains active.
Current architecture and search evidence
/subagentsmodel.go:2100;/hooks:2177;/profiles:2210;/runs:2389; their existing/v1/*server endpoints.In scope
Provision deterministic server records and selector state; drive each through real 100x30 PTY including focus/selection/error; assert rendered output, raw API and durable postcondition, plus follow-up message where conversation remains active.
Out of scope
All other TUI command groups, cron/callback scenarios, native GUI, and product fixes absent a separately filed live failure.
Work type
Engineering change / feature slice
Change class
Infrastructure, CI, or process change
Protected path
Registry-derived command case -> real harnesscli 100x30 PTY -> rendered TUI state -> isolated harness/API/store or filesystem postcondition -> continued usable conversation -> bounded cleanup.
Cross-surface impact map
Test-only PTY matrix/fixtures and existing read/write API endpoints. Isolated config/workspace/DB paths only. Explicit focus/keyboard/error/confirmation handling, durable probes, no secrets. Native GUI is excluded. No production behavior/schema/deployment change unless a live test demonstrates a separate bug. Required plan, impact map, logs, indexes, focused/race/full regression and hosted CI.
Product and UX contract
Drive exactly the keyboard interaction a user uses; capture success, invalid/error, selection/focus and destructive-confirmation states. A fixture shortage is not an N/A outcome.
Coordination and dependencies
Child work for #1088/#1010. It may build on the non-closing current 24-command matrix foundation, but must use a fresh current-main worktree and a single PR with
Closes #N.Test-first plan
Add red real-PTY fixture case(s) proving the command cannot be credited without rendered and durable evidence, then implement the narrowest deterministic fixture/driver support. Run focused tests, race,
./scripts/test-regression.sh, repeat bounded PTY smoke, and retain artifacts.Verification plan
Record exact source SHA, terminal frame hashes/transcript, typed keys, API/SSE and relevant DB/filesystem evidence, IDs, cleanup, race/full regression and independent review. Do not claim GUI proof.
Rollout and rollback
Acceptance-only; revert the isolated PR, with no migration or deployment.
Documentation and handoff
Update active plan, impact map, engineering/observational/long-term logs, indexes and #1088 applicability matrix.
Definition of done
Process acknowledgement