Release notes
An answer leads with the outcome, and a stopped run says why
Answers had drifted into documents: across a week of real chats the median reply ran to about 3,000 characters, 60% of them carried a heading and 30% carried a table, often for work that amounted to "I changed one file and the tests pass". The prompt was asking for that, so the rule is rewritten and now measured. Separately, a run that stopped could leave you guessing why — every stop reason now says so in the transcript, and a reply that promises work it never did stalls instead of ending as a success.
Improved
- Answers lead with the outcome and stay as short as the work allows. A one-line change gets a one-line answer; several distinct findings get a short list; a heading appears only when the answer has sections you will navigate, and a table only for a real comparison. The agent no longer restates your request or walks you back through steps you just watched.
- A run that stops now says why, in the transcript. Twelve more stop reasons carry a plain sentence — a stalled model, an exhausted provider budget, a dropped remote connection, a verification check that would not clear — so a run that ends badly no longer ends silently.
- Answer style is measured rather than guessed at.
npm run response:stylereports how the agent's answers are shaped over any window, and a companion harness A/Bs a prompt change against a real model before it ships.
Fixed
- A reply that announces work it never did no longer ends the run as a success. When a run has executed no tool call at all and its answer promises a next action ("I'll research this, then write a plan"), the gate nudges once and then stops with a named reason instead of accepting the turn.