guardrails in plain english + a gui; no posting command — the browser, navigated like a person - #59
Merged
Merged
Conversation
…lick is judged by what it lands on: pressing X's post button (by text, coords or cmd+enter) asks u first w the words in the box, and says so in red when they're not what u asked for. every question is one card w caine's own sentence + the exact post/command, per-kind allow/if risky/ask/never in settings, "always allow" on the card. "make a tweet “testing"" posts exactly that via post_to_x (clears the box, proves a NEW post). window server only talks to the window now (any web page could open the chat socket before). and the window stopped being a claude clone: colours from tilcayo's icon, pond teal + tabby ink + the charm's amber >//< Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ryuzz9EtCjeeR8ofVxhGW
…ly bit. caine posts like a person now: open the page, type into the box by its selector, click the button beside it, read it back. the page hands over its boxes + send buttons (not just after a fail), words u didn't ask for get pointed out, a click w x/y is a click_at, a failed step carries ur request so it doesn't wander off to the last task, a reply can chain type+click, and “smart quotes” count as things the turn has to do. the send guardrail is site-neutral: any post/reply/send button next to a filled box asks first. tested live on the 14B: fake x.com AND a fake forum built nothing alike, 3/3 posted exactly what was asked :3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ryuzz9EtCjeeR8ofVxhGW
…t forgets our json, and nothing read it, so every call it made that way just vanished T_T parse_tools reads the native form now, json form untouched, prose that only mentions function= isn't a call :3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ryuzz9EtCjeeR8ofVxhGW
…rch saw "about" + a number, googled the user's own disk, and swapped the answer for "couldn't find it in the search results" T_T a hedged figure that rounds from something a tool printed this turn isn't a guess anymore :P Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ryuzz9EtCjeeR8ofVxhGW
…yers can't be rewound, so any change to the prompt rebuilt the whole 6.5k-token cache from zero T_T a cache like that now keeps copies where the next prompt picks up (end of the system prefix, where the newest user message starts, end of the last message) and restarts from the longest one. same tokens as the live cache on a real hybrid model, 14B path untouched :3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ryuzz9EtCjeeR8ofVxhGW
huyedits
marked this pull request as ready for review
September 27, 2026 22:58
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
Asked to post
make a tweet “testing"on x.com, the agent typed "Hi" into the composer and clicked Post. It usedbrowser_typeandbrowser_click, neither of which asked for approval, so "Hi" went out publicly under the user's name. The user also foundsafety.pytoo rigid. After review, the user ruled out any site-specific shortcut: no tweet-to-X command; the model has to learn to use the browser itself.What changed
No posting command.
post_to_x, its aliases, the forced quoted-tweet route, and every x.com-specific selector and rule are removed. Symbio now posts the way a person would:Browser navigation, the same on every site
[disabled]until its box has text. Before, this list only appeared after a step failed.“testing”) and the model types something else, the result says so.browser_clickgiven x/y coordinates is handled as a click at that point.Guardrails, by kind of action and in plain English
Desktop window
/api/guardrails.Look (
/avoid-ai-design)symbio_desktop/DESIGN.md.Verified
test_thinking_alignment, 2 ×test_install_layout,test_rag(subprocess environment), and thetest_dispatchrefusal test (browser tool group not enabled in the test config).<form>, a textarea, and a Reply button): 12/12 checks.testingin 50 s.testingin 73 s.