← All posts

Release notes — 2026-09-15 (afternoon)

The second release of the day: Review folds into Needs you, the app gets its first notification surface, the nav sweep, a chat composer that never locks, a real conversations list, team report v2, a live versioned artifact — and the Claude 5 sampling-parameter outage that opened the afternoon and the two defects in its fix that closed it.

Chris Fitkinvocion-v2.74.0

This is the second release notes post for 2026-09-15. The morning's is Release notes — 2026-09-15 and it covers a different set of pull requests; nothing here replaces anything there except the canvas, which is called out below.

Where this went next. The release branch this post describes, release/2026-09-15-rail, was merged into main the following morning and cut as v2.82.0. Everything below is now on main at its own commit. Vocion 2.82 is that release: the reconciliation itself, scoped memory, the extractor and crawler work, and the follow-ups to the sampling-parameter story told here. Six further versions shipped the same day, in Vocion 2.88 — including the two defects this post's work left behind on main.

Everything in this post is merged onto the release branch release/2026-09-15-rail, whose head is now bd05027c, deployed to a deployment we operate. Migrations 0100_team_measures.sql and 0101_artifact_version.sql are applied on top of the morning's 0094–0099; the full 0000→0101 chain — 102 migrations — was applied to a clean Postgres before the deploy. The individual pull requests are still landing on main behind the release branch, so for a short window a path a post cites may be on the release branch before it is on main.

What you can do now that you could not this morning

Feature releases

ChangePostSource
Review folds into Needs you: one list, one detail, one action barOne place to decide#348
The app's first notification surface, and a pending state on every submitEvery action tells you what happened#351, #348
Reports and Developers out of the work nav; three pairs of pages become tabsA sidebar you can hold in your head#347
The chat composer stays live for the whole turn; Enter queuesThe composer never locks#352
A real conversations list; the header control toggles; the rung goes icon-only“All conversations” now means all conversations#353
Team report v2: typed measures, provenance, human load, lineageIs the workforce earning its keep?#350
One live, versioned artifact replaces the tile gridOne live artifact beside the conversation#354

Developer updates

SubjectPostSource
Claude 4.7+ rejects temperature; the outage, and the two defects in the obvious fixThe parameter Claude 5 will not take — and the fix that was worse than the bug#346, #355
The checkpoint exists; the message shape blocks it; the smallest unlockWhy mid-turn steering is not possible yet#352
A client-only function in a server component, a tab count that read 0, a poll that retried a 400 foreverTwo render environments, one import#349

The correction

This morning's post A canvas beside the conversation described the canvas as a grid of tiles you arrange. That design was replaced the same day. The grid was tried, used, and found to be the wrong object: it asks you to be a dashboard author, it gives an instruction like “make the third column currency” no obvious target, and it has nowhere to put the second version of anything.

What replaces it is one live artifact open beside the conversation, edited in place by both the agent and the person, with a version for every change. The replacement — #354 — merged onto the same release branch at 8daff9bc and is in the deploy running now; /dashboard/canvases answers with a 308 to /dashboard/artifacts, because the old path is in people's pins and in this morning's post.

The morning post now carries an update at the top pointing here. It is left in place rather than rewritten, because a post that quietly changes its mind is worse than one that was wrong.

How it started, and how it ended

The afternoon opened with an outage rather than a feature. A workspace moved its agents to Claude Sonnet 5 and every chat turn on it came back 400 invalid_request_error: temperature is deprecated for this model. The harness had always sent temperature, and 4.7 and later reject it outright. #346 was a thirteen-line fix that took an hour.

The afternoon then closed on the same file. Writing the post up found two defects in that fix: it did not cover the Bedrock branch, so the same models over the second transport still 400'd; and it matched 4.6, which still honours sampling parameters — and since claude-sonnet-4-6 is the default main model, that silently moved every default call off temperature: 0. A loud bug fixed by a change that introduced a quiet one. #355 fixes both and adds the test that draws the line at 4.7. The post is the whole story.

How to read these

Each post opens with a status line saying what state the change is in and which commit it is. Every falsifiable claim cites a file, a pull request or a commit, and the developer posts end with a "Where this lives in the repo" section. Where something was not verified end to end, the post says which part. Screenshots come from local workspaces on fixture data; nothing in them is a customer's.

Where this lives in the repo