The rail decision

The label and the merge are one decision. A passive word cannot hold an obligation; an active one cannot leave the wheel in another item.
SHIPS TODAY
◈  Decide
◱  domain verbs
▦  Find
Open cases only. No run history, no logs, and nothing in flight.
OPTION A — TWO VERBS
◉  Watch
◈  Decide3
◱  domain verbs
▦  Book
The obligation keeps its own badge, at the cost of one run living in two places. Decide is also empty most days.
OPTION B — ONE VERB (RECOMMENDED)
◈  Steer3
All · Needs you · Running · Done
◱  domain verbs
▦  Book
One record, one place. Decide survives as the needs-you facet. Push belongs to notifications.
THE ARTIFACT VERB — SETTLED, AND IT CHANGES WHAT THE CHECK IS FOR
Four labels were proposed and none of them won. The word is Book, the same in every app.
label
Book. One word in every app, not a thing each consumer re-picks.
concept
Artifacts. What the architecture and the documents call the thing. A different question from what the rail displays, and the two had been conflated.
id
Unchanged. It is a route and a view key, and those two already drifted apart here once, so the label moves and the id does not.
withdrawn
Find collided with Search. Reference and Artifacts were each proposed as the label and are not. Study, as a per-consumer override, is gone with them.
The check was asserting the wrong invariant. It required a present imperative verb, which let Chart and Model through as nouns and forced Reference to be admitted by name. What actually matters is that a rail does not mix registers: one app is mostly nouns and is right to be, another is mostly verbs and is right to be. So the app declares its register and the check validates against that, and the exception list stops being necessary.
THE ONE DECISION THE ADR HAS TO MAKE
Does the route id move with the label?
Keep id: "decide", label Steer. Nobody's URLs move, and it follows the precedent already set for the library verb, whose id stayed while its label changed. Cost: the id and the label disagree forever, and every maintainer meets that surprise once.
Move to id: "steer". The code reads as it looks, and the view key matches the concept. Cost: every tenant's #/decide link breaks, the docket shipped in 0.58.x, and partners are already looking at it.
Unchanged by any of this: chat is not a verb, it is home, owned by the New-chat button and Recents. Search stays the rail header affordance. History and Recents stay in the rail. They key on the session, which may hold several agents; Steer keys on the agent, across sessions. Two projections of the same turns, neither replacing the other.