T-DO2G-waypost-runner-order-split-brain
State: planning/proposed · Impact: low · Complexity: small
Keep both orders — the project’s stated one and the browser’s dragged one — and make the precedence visible where a person meets them. The override is fine; having no way to clear it is not.
| Location | Role today |
|---|---|
packages/ts/detect-runners/src/config.ts | runners.order and orderRunners(); drives --json, --list, --table. |
packages/ts/waypost/src/tui.ts | The terminal tab row follows runners.order. |
packages/ts/waypost/src/web/state.ts | persistRunnerOrder / restoreRunnerOrder keep a per-browser arrangement in localStorage. |
packages/ts/waypost/docs-site/src/content/docs/guide/web-view.mdx | Documents that the saved arrangement always wins over what the server sends. |
Set runners.order and the web view ignores it. Drag a tab and the CLI never
learns. That much is deliberate and documented. What is not deliberate is that
once a drag has happened, nothing short of clearing site data returns you to the
configured order — a local override with no reset is a trap.
Proposed
Section titled “Proposed”runners.order is the project’s stated order, edited on the settings screen
like any other config key. A drag in the tab bar is a local override that wins
until cleared.
The settings screen’s runner list carries Reset local order, which clears the
saved arrangement and says when one is active — so the two orders and their
precedence are visible in the one place that holds both.
The two other answers were considered and rejected. Writing a drag back to the
config file makes a drag edit a tracked file, which is a much larger act than a
drag looks like. Dropping runners.order for the interactive surfaces loses a
preference a repository can legitimately state for everyone working in it.
Approach
Section titled “Approach”clearRunnerOrderbesidepersistRunnerOrder.- The reset control on the settings screen’s runner list, shown with a note
when a local arrangement is in force. The screen itself is
T-EFZQ-waypost-settings-screen’s
src/web/settings.ts, which is why it is not listed below — this task adds one control to a file that task creates. - One sentence naming the precedence on the web-view guide page.
| Area | Note |
|---|---|
packages/ts/waypost/src/web/state.ts | clearRunnerOrder, dropping the saved arrangement. |
packages/ts/waypost/docs-site/src/content/docs/guide/web-view.mdx | Name the precedence where a user meets it. |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: A user who has dragged tabs can return to
runners.orderfrom the settings screen, without clearing site data. - AC-2: The control appears with a note only while a local arrangement is actually in force, so it does not offer to undo nothing.
- AC-3: One page states which order wins and how to get back to the configured one.
Out of scope
Section titled “Out of scope”- Which runners are shown or collected: T-EFZQ-waypost-settings-screen.
Dependencies
Section titled “Dependencies”- T-EFZQ-waypost-settings-screen builds the screen this control sits on.
Discovery context
Section titled “Discovery context”Drafted as WP-0004 in #1616 and
moved here. Recorded in the first place because two settings answering one
question read as deliberate only while the person who decided it is still
around.
Depends on
Section titled “Depends on”T-EFZQ