Skip to content

webbrain - #3308

Merged
webbrain-one merged 2 commits into
webbrain-one:mainfrom
esokullu:main
Nov 4, 2026
Merged

webbrain-one merged 2 commits into
webbrain-one:mainfrom
esokullu:main

Conversation

@webbrain-one

Copy link
Copy Markdown
Owner

No description provided.

esokullu and others added 2 commits November 4, 2026 13:52
…e is refused

An automatically routed Ask turn hands itself to Act or Dev through
request_action_mode, whose `evidence` must quote the user's own words.
The check was an exact, case-sensitive substring match, so a quote the
model wrapped in quotation marks, capitalized, ended with a full stop or
typed with a curly apostrophe was refused. A 45.0.3 trace showed it:
two refusals within milliseconds and no decision call between them, the
tool withdrawn, a third call to it that came back tool_unavailable, a
read-only answer, and the user sending the request again in Act.

readModeEscalation tries the exact match first and then compares folded
text: NFC, quotation marks straightened, lower case (Turkish dotted and
dotless i as i), whitespace runs as one space, with enclosing quotes and
trailing punctuation stripped from the quote. The match maps back to the
request, so the hand-off carries the user's words as they wrote them.
Paraphrases, translations, page text and parts joined with an ellipsis
still do not match, and the page-free run_mode check still has to agree.
acceptModeEscalation stays as its null-on-refusal wrapper.

A refusal now has a reason from a closed list (invalid arguments, bad
mode, empty, unmatched or too short quote, or a page-free answer that
does not confirm it), and modeEscalationRefusal tells the model which
one and whether to call again. The second refusal says the tool is
withdrawn for the turn, so the model answers instead of calling it a
third time. Traces get a mode_escalation_refused note with the reason
code, the attempt and whether the tool was withdrawn, never the quote;
its fields survive metadata-only feedback exports.

Both builds share auto-mode.js byte for byte and their agent.js changes
are the same. docs/architecture.md and docs/security-model.md describe
the new matching and the trace note. test/auto-mode.mjs covers the
markup the check now tolerates, what it still refuses and why, the
refusal text before and after the tool is withdrawn, an agent turn that
hands off on a curly, capitalized quote, and the trace projection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Accept a hand-off quote however the model marks it up, and say why one is refused
@vercel

vercel Bot commented Nov 4, 2026

Copy link
Copy Markdown

@webbrain-one is attempting to deploy a commit to the esokullu's projects Team on Vercel.

A member of the Team first needs to authorize it.

@webbrain-one
webbrain-one merged commit 613509c into webbrain-one:main Nov 4, 2026
1 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants