Repository navigation
Conversation
alecantu7
force-pushed
the
alejandrocantu/eng-3444-web-tasks-ignore-the-users-limit-settings-and-stop-at-10
branch
2 times, most recently
from
October 21, 2026 16:06
d1d4028 to
daf8832
Compare
… (ENG-3444) A web turn ran on anton's built-in 25 steps, 3 auto-continues and 1.25M tokens whatever the tenant set, because the pod never received the tenant's settings. TurnRequestV1 now reads an optional `limits` block (max_tool_rounds, max_continuations, max_turn_tokens) and the cloud session applies each one in place of the default. Unknown names and unusable values are dropped one by one, so a bad value leaves that limit at the default rather than failing the turn. A token limit of 0, which anton reads as no limit, is refused. No block (an older controller) keeps today's behaviour. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… (ENG-3444) A limit dropped in silence looked exactly like a controller that sent no block: the only symptom was a web turn stopping at anton's default. Each drop is now logged as a warning with the limit's name, the reason (unknown limit, not an integer, below its minimum) and the conversation id, as an unparsable started_at is. Values are never logged. A block that is not an object is logged too; an absent block logs nothing. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The wire test sent 250 / 10 / 25M, the higher defaults anton#576 brings, so with both merged it would pass even if the session ignored the request. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
alecantu7
force-pushed
the
alejandrocantu/eng-3444-web-tasks-ignore-the-users-limit-settings-and-stop-at-10
branch
from
October 21, 2026 22:40
daf8832 to
e793f47
Compare
This was referenced Oct 21, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Web turns run on anton's built-in limits (25 steps, 3 auto-continues, 1.25M tokens), whatever the tenant set in Settings, because the pod never receives the tenant's settings (ENG-3444). Desktop doesn't have this problem: cowork-server overlays the settings onto anton for an in-process turn.
What changed
TurnRequestV1reads an optionallimitsblock:max_tool_rounds,max_continuations,max_turn_tokens.build_cloud_chat_sessionapplies each one present in place of anton's default.started_atis. Values are never logged. A block that isn't an object is logged too; an absent block logs nothing.Validation
uv run --group dev pytest tests/ --ignore=tests/e2e: 5,282 passed, 237 skipped on the first commit. On the logging commit, 5,276 passed and 9 subprocess tests failed (test_cloud_turn_process.py,test_chat_scratchpad.py) identically with the change stashed: locally the venv's.pthfiles carry the macOShiddenflag, which Python 3.12.12 skips, so a child process can't importanton. Environmental; CI on Linux decides.ChatSessionfrom a request line and check its step, auto-continue and token caps; without a block it keepsCoreSettingsdefaults; one limit replaces only its own default. Contract tests cover a missing or non-object block, unknown names, strings, floats, negatives, bools, a 0 token limit, and 0 auto-continues (a real value).uv run --group dev pytest tests/ --ignore=tests/e2e: 7,749 passed, 267 skipped (run from a checkout outside~/Documents, where the macOS hidden-.pthproblem doesn't occur).Limitations
Merge order (ENG-3442)
minds-anton-scratchpad:staging/:production, pulled withAlways), so merging ENG-3443: Raise the built-in turn limits to safety limits #576 is itself the web rollout of its higher defaults, with nothing on the wire. Today a long web task stops at 25 steps with a summary; at 250 it runs on until the controller's 600 s hard timeout ends it with "This turn took too long and was stopped", and the user loses the summary.mindsdb/cowork_evals#35 can merge at any time.
The wire is skew-safe in any order. An older controller drops the block (
_build_requestis an allowlist) andparamsaccepts any key. An older pod ignores an unknown request key. A pod with no block keeps anton's defaults.🤖 Generated with Claude Code