You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit bdbabb4
Browse filesBrowse the repository at this point in the historyBrowse files
#925's two conversation sentences are false now, so they go
The rebase carried #925's words onto a tree where the cut makes them
untrue. `a pick in a conversation you are sitting in front of still
lands on your next message` and `a model you pick with /model does not
redirect a rescue that is already happening` were both true on the day
they were written and neither survives the request boundary: a pick
lands on the next REQUEST, and a person's word is the head of the chain.
The room's own sentence loses its rescue clause with them. It was worth
a clause while the pick had to wait for a move somebody else made; now
the next request carries the pick whether that request is a rescue, a
retry or the step's own next step, so naming the rescue would name one
road out of three.
#925's `TaskNode.picked` is untouched. It owns where a node's NEXT
WORKER is built and this owns the request already out — two scopes, no
second mechanism.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Copy file name to clipboardExpand all lines: docs/changes/unreleased/935-persons-word-cuts.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,6 +12,7 @@ invalidates:
12
12
- "`Agent.Steer` cancelled `a.generation` itself. `Agent.cutGenerationLocked` is the only place in `internal/session` that cancels a generation, and `internal/session/generation_law_test.go` fails the build on a second one."
13
13
- "`Agent.SetReasoning` said a level latches for the turn `exactly as the model does`. The two rules are deliberately different now — a level lands at the next Submit, a model at the next request — because turning the thinking up is setting a level for the next thing you ask and changing models is redirecting work you are watching go the wrong way."
14
14
- "The five manual claims that a model picked inside a task's room takes effect on `the task's next turn` (tasks.md, models-and-cost.md twice, how-tasks-run.md, screen.md, task-controls.md) are replaced by the next REQUEST and the two landings. models-and-cost.md has a new section for somebody who pressed a model mid-reply."
15
+
- "#925 landed the half of this that could be said a day earlier and its words are superseded here, not contradicted. The room's `the next turn takes it; a rescue goes to it first` is gone: the rescue no longer needs a clause of its own, because the pick rides the next request whether that request is a rescue, a retry or the step's own next step. And #925's two conversation sentences — `a pick in a conversation you are sitting in front of still lands on your next message` and `a model you pick with /model does not redirect a rescue that is already happening` — are both false now and are replaced in models-and-cost.md. #925's `TaskNode.picked` is untouched and still owns where a node's NEXT WORKER is built; this owns the request already out."
15
16
---
16
17
17
18
The owner's evidence, 2026-09-11 14:40:10: a task step on `waiting · rate limited
Copy file name to clipboardExpand all lines: internal/manual/chat/models-and-cost.md
+18-16Lines changed: 18 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1157,10 +1157,11 @@ the model went quiet mid-reply · moving to gpt-5-mini
1157
1157
The turn finishes there and the cost lands against the model that actually answered. **It
1158
1158
is a rescue, not a choice you made**: your model is untouched, `/status` still shows it,
1159
1159
and your next message goes back to it. If it keeps stalling, `/model` is how you move for
1160
-
good.
1160
+
good — and it does not wait for the stall to finish: name a model while nothing has come
1161
+
back and that request is let go of and asked again on yours.
1161
1162
1162
-
Only when there is nowhere to go — you are on `--one-model`, or no chain resolves — does
1163
-
the turn end instead:
1163
+
Only when there is nowhere to go — you are on `--one-model`, or no chain resolves, **and
1164
+
you have not named a model yourself** — does the turn end instead:
1164
1165
1165
1166
```
1166
1167
error: nothing came back from the model in 1m30s, three times. a different model may answer — /model, or set models.fallbacks so this can move on its own
@@ -1343,15 +1344,16 @@ there is no ceiling, only the deadline. That patience is the *call's* own, insid
1343
1344
request. What happens when the whole request
1344
1345
keeps failing — several 429s in a row, a `502` between them — is the next section.
1345
1346
1346
-
**Inside a task, picking another model is worth doing while this is happening.** The call in
1347
-
flight finishes on the model it started on, and so does the rest of that step — but a step
1348
-
being paced no longer just sits there: it moves to **the model you picked in the task's
1349
-
room**, rather than to the next name in your `fallback models` row, and it says so in the
1350
-
run's own log. Before 2026-09-11 a rate limit was the one failure that moved nothing at
1351
-
all, so a pick made over a stuck step was read only after something else had already
1352
-
rescued it. This is about a task's model; **a pick in a conversation you are sitting in
1353
-
front of still lands on your next message.** See *I changed the model but my task is still
1354
-
on the old one*.
1347
+
**Picking another model is worth doing while this is happening, and it is the fastest way
1348
+
out of it.** A call that is only waiting has given you nothing, so it is **let go of at
1349
+
once** and asked again on the model you named — within a second, in a task's room and in
1350
+
the conversation alike. A step being paced no longer just sits there. If the answer had
1351
+
already begun arriving, it finishes on the model it started on and the step's next request
1352
+
is on yours; either way the move goes to **the model you picked**, rather than to the next
1353
+
name in your `fallback models` row, and it says so in the run's own log. Before 2026-09-11
1354
+
a rate limit was the one failure that moved nothing at all, so a pick made over a stuck
1355
+
step was read only after something else had already rescued it. See *Can I switch models
1356
+
while it is replying* above, and *I changed the model but my task is still on the old one*.
1355
1357
1356
1358
## The model kept refusing and aforge moved to another one — 429 and 502 in a row, my turn died while another model was working, does a refusal reach my fallback models
1357
1359
@@ -1385,10 +1387,10 @@ the model would not take the request · moving to gpt-5-mini
1385
1387
The new model gets a whole give-up of its own — what the last one did says nothing about
1386
1388
this one — and the cost lands against the model that actually answered. **It is a rescue,
1387
1389
not a choice you made**: your model is untouched, `/status` still shows it, and your next
1388
-
message goes back to it. **In a conversation the chain is the whole of it** — a model you
1389
-
pick with `/model`applies to your next message and does not redirect a rescue that is
1390
-
already happening. Inside a task's room it is different, and *Changing the model for one
1391
-
task while it is running* on the tasks page says how.
1390
+
message goes back to it. **But a model you name is the head of that chain** — pick one with
1391
+
`/model`while the moving is happening and the next move goes to yours instead of to the
1392
+
next name in the row, in the conversation exactly as in a task's room. *Changing the model
1393
+
for one task while it is running* on the tasks page says what a room adds to that.
1392
1394
1393
1395
**It did not use to.** Until this changed, only a *cut* reply reached your fallback models;
1394
1396
a refusal walked the four tries and then ended the turn, so a measured conversation on
0 commit comments