An AI's scroll scrolls Chrome
computer-use-linux 0.7.1 aims a scroll with ydotool, whose absolute move passes through 0,0 (the panel) on its way to the target, and sends the whole scroll as ...
Two more root-domain picks follow OrgDomains.primaryDomain
BranchTypeController's parentRootDomain (the create-branch wizard's web-alias zone) and PortalAccountController's api.<root> (borrower-portal sign-in) each took...
An organization's NoReply domain is chosen by name, not by row order
The campaign From, the transactional Reply-To and the provider default domain each took "the first root org_domains row". Organization.getDomains() is unordered...
The MCP server form refuses an Expect header while it is typed
AIService's McpServerConfigs has refused an Expect header since SP05 Task 15, but the form's copy of that list (which says it is the same) lacked it, so the nam...
Give a public chat's own turns the message rate limit, not the session one
Every public-chat path lives under /sessions/, so the limiter's contains("sessions") test put the conversation itself on the session-creation budget: 3 requests...
Keep the meeting transcript's ciphertext columns out of JSON
**************** has failed on main since f92765b1 added MeetingTranscript: transcriptTextCipher, transcriptVttCipher and summaryCipher had neither @JsonIgnore ...
Member chat offers the member's tools on Hugging Face models
HuggingFaceAdapter has sent tools and read tool calls since ff1f0ed, and the router routes TOOL_CALLING to it, but supportsToolUse() still answered false. ChatO...
Name K3's NOT_ENROLLED and a missing phone system instead of misreading them
Found by SP05 Task 36 in production (sp00verify): - ApprovalClient read every 404 from K3 as "not deployed". SP10's K3 is deployed and answers 404 {reason:"N...
Registry prune waits for CI before garbage-collect
garbage-collect sweeps every blob the tags didn't reference when it marked, so a push that lands mid-sweep keeps its tag and loses its manifest. On 2026-09-28 t...
An approved action that met a "try again" answer keeps its approval
An approved re-execution on its original key that answered a notice (WORKSTATION_WAKING) or a definitive UNAVAILABLE/RATE_LIMITED released the key and its :appr...
E2's streamed usage chunk reports the metered usage, never zeros
Hugging Face, Google and Cohere text streams carry no usage event, so the assembled response counts 0 input and 0 output tokens. E2 built its stream_options.inc...
The load verdict's budget is the amended acceptance bound, 9.0 s
Task 18 A-3 asked for p95 <= 4.0 s with 4 realtime streams and a batch. k3m1's Haswell CPU cannot reach it with faster-whisper-small: with the language given (S...
F1 takes back the auto it answers as its source language
A caller that echoes F1's from:"auto" is translated with detection instead of refused, and F2's placeholder name says why it exists. Ruling SP05-T32 (e).
Claim a staged recording before processing it, so a long call is never stored twice
DaemonService hands ConversionService every row that is still unprocessed: on its poll tick, on every voip.recording.received message (which does not wait for a...
One call per AI per meeting — a dial is claimed before kamoai-service is asked
Two overlapping requests to dial the same AI into the same meeting (a double click, two organizers, a person and the auto-join sweep) could each pass the not-li...
Measure realtime load as SP13 calls it, and give each transcription 8 threads
The load probe's realtime sessions sent no language, so every turn paid Whisper's language detection (9.4 s alone at 3 threads on k3m1), a call shape no product...
Run llama-server with one thread per core of its CPU limit
Ollama starts llama-server without --threads, so it counted k3m1's 24 physical cores and ran 24 compute threads inside the container's 8-core quota. The contain...
An AI member's own chat session routes, budgets and meters as actor AI
Member chat (/api/ai/sessions/**, /ws/ai-chat) routed every member as HUMAN, so an AI member's session (its SP11 workstation browser) reached UNVERIFIED models,...
Ydotool's pointer lands where the AI aims it
ydotool 1.0 aims an absolute move by pushing its relative device to 0,0 and then by (x, y), and libinput's default adaptive profile doubled that second push. co...
A computer can be removed from the Computers tab
The remove dialog pins its challenge to the computer's own name ('Workstation'), and ConfirmationDialog upper-cased only what was typed before comparing, so no ...
The gateway may frame its own resize sensor
Guacamole 1.5.5 notices a resize through an <object> that loads its own **************** The gateway's X-Frame-Options: DENY blocked it (ERR_BLOCKED_BY_RESPONSE...
An AI workstation shows its organization's wallpaper
KubeVirt's console runs Xorg's VESA driver (RandR 1.1, no named output), so xfdesktop keys the AI desktop's backdrop by index, monitor0, and never read the moni...
The AI's console X server takes the AI's clicks
LightDM's Xorg on :0, the AI workstation's desktop, adds udev input devices only through an input driver, and the golden image had none. It logged 'No input dri...
Watch and Take over open their connection in the gateway's client
Guacamole 1.5.5's client reads the #/client/<id> fragment with atob (one character per byte) and btoa's every connection name it lists, so a name outside Latin-...
An AI workstation's take-over and MCP token are written only by their own UPDATEs
control_member_id/_started_at and **************** are now updatable = false, and HostedComputerRepository gains the only writes they get: recordControl, clearC...
Keep the heading outline in order: section titles are h5, template names are not headings
The screenshot harness's axe pass found two heading-order faults. A job or persona template's name was an h6 inside its card's button (a heading may not sit ins...
The AI workstation panel says what is on screen only after the screen was read
ComputeService answers screen-state with 200 {state:'WAKING'} while the guest restarts after a wake or refuses the read, and {state:'ASLEEP'} just after a sleep...
A transcript download answers 409 NOT_READY while the transcript is still being written
M7's errors are M6's plus INVALID_FORMAT (spec 4.4.1). A PENDING or TRANSCRIBING transcript answered 200 with an empty body for vtt and txt; it now answers 409 ...
AA text colours and named progress bars on the Computers and Capacity tabs
The state chip's "Ready" was --commerce-success as text (2.2:1) and the error text --commerce-error (3.8:1); they now use the AA colours the AI workstation pane...
Register with FreePBX under the names the image reads; one owner; health probes; host-only ingress
The roster, participants, history and send survive a database conflict too
Completes 279a389. After it shipped, production logged the same YugabyteDB 40001 "Restart read required" on Exec2Exec's roster (09-27 16:00Z, and three times ea...
Filter approval changes before the org-change debounce (SP10)
useOrgChanges coalesces a burst and hands onChange only its last frame, so testing isApprovalChange on that frame lost an APPROVAL followed within 400 ms by the...
Place the KamoAI voice cron keys clear of SP05's and SP10's
SP05's Tool Plane jobs add their cron fields after leadLedgerReconcileCron and their ConfigMap entries after kamoai-hire-steps, and SP10's tick adds its field a...
One recording subroutine; file names keep the call's UNIQUEID; AMI reads call events
[kamo-record] now does the recording for every path: the trunk and voicemail predial hooks here call it, and so will the attendant, direct, agent, internal and ...
A message that did not go stays in the box and says why
A failed send was swallowed in useChatConversation.onSend ("matching the old ChatBox"). The core removed the optimistic bubble, the Composer took the resolved p...
A conversation loads and a message sends on the first try
Chat has been failing in two ways a member notices at once: opening a conversation showed "Couldn't load messages" until Retry was pressed, and a sent message s...
A meeting invite answers with a summary, not the entity graph
Sending or updating a meeting invite answered with the CalendarEvent entity. Its attendees point back at their event, so Jackson recursed until the stack overfl...
A deleted task takes back its comment notifications too
Deleting a task (or clearing done tasks, or deleting their list) withdrew only its TASK_ASSIGNED and TASK_DUE notices. Every TASK_COMMENTED about it stayed in i...
A composer's meeting invite goes into the organizer's own calendar
MeetingInviteController handed MeetingInviteService.sendInvite the session's member id in the user-id slot, and sendInvite looked the calendar up with findByUse...
Caption a producer's button from the whole dictionary, not as its key path
KBService's task notifications name their button with the full dictionary path **************** (SP06 spec 4.11). The deck and the notification centre read prod...
A dry run through the web proxy stays a dry run
The /api/email/** proxy builds its own headers for the hop to EmailService and relayed only Range, so X-Kamo-Dry-Run never arrived: a member's dry run of a send...
The media.* host no longer reaches MediaService's server-to-server endpoints
The media-route IngressRoute sends every path on a media.* host straight to MediaService, past the API gateway, so the gateway's carve-outs (master spec section...
A composer names its last draft only through the mailbox that holds it
The composer kept the last saved draft as {folder, uid} and sent it as replacesDraft with whatever mailboxId the From was on at the time. EmailService expunges ...
A signature's icons do not put a paperclip on the message
"kamo Marketing teaser" listed with a paperclip and opened with nothing to download. It has no file: the two parts it carries are the 14px phone and email icons...
Hugging Face chat sends the tools and returns the tool calls
message.tool_calls, but HuggingFaceAdapter sent no tools (so tool_choice was dropped too) and never read tool_calls. Every HUGGINGFACE model therefore failed th...
A create Arive refused offers Resend at once, with Arive's reason
When the Create Loan Zap reports loan_create_failed the server keeps Arive's reason as the link's error and clears its pending clock. The header no longer spins...
A loan Kamo creates now links, and a refused one says why on the lead
Ian's Create Loan reached Arive, was refused inside the Zap, and Kamo never knew: Zapier had already answered 200, and Arive fires no new_loan for a loan made t...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
