An impersonating admin may not set the member's status text
PUT /api/media/presence/status accepted a sudo session. It is now refused 403: unlike the heartbeat, which nobody chose to send and is ignored quietly, setting ...
A session type without its own gate takes no messages, and a session is described only to its readers
POST **************** authorized CHAT, SUPPORT_TICKET and SOCIAL and then simply ended, so a POST, SYSTEM_BUG or EXEC2EXEC session fell through every gate: any ...
Another org's agent, topic or AI member is a 400 naming the field
The sales agent and support topic checks threw a bare IllegalArgumentException that nothing caught, so saving one the org does not own answered 500. They, and t...
Close the AI identity edge cases the SP02 review left open
- A never-hired AI relabelled a person no longer keeps ai_state and the pause columns (master 6.1: NULL for a person). They are written only by SQL, so the ...
A lead you may not open takes no status change and no note
PUT /api/security/leads/{id} and POST /api/security/media/posts checked only the lead's organization, so a member without VIEW_UNASSIGNED_LEADS could change the...
An in-cluster model gets the time to read its prompt, inside the walk's budget
kamo-llm reads a prompt at about 110 tokens a second on k3m1 before it writes a word, so an E2 prompt past ~6k tokens spent E2's whole 60 s per-attempt bound (a...
A Hugging Face text stream is metered as the router counted it
HuggingFaceAdapter streamed through the interface's text-only default: every chunk was read for its text and nothing else, so no usage ever reached the executor...
An Ollama model's context is the window the server serves, not the trained one
OllamaDiscovery took model_info.*.context_length from /api/show: the window the model was TRAINED for. The registry listed granite4:tiny-h at 1 048 576 (and qwe...
Read a FreePBX sweep's mailboxes over one manager session
The voicemail sweep runs inside syncInstance's database transaction and asked FreePBX extension by extension, each over a fresh AMI connect and login. A manager...
Basic sign-in asks SecurityService's real credential check
DavAuthFilter posted Basic credentials to **************** which never existed (405), so every username-and-password sign-in from iOS or DAVx5 was answered 401 ...
CalDAV and CardDAV sign in with a username and password, through every sign-in gate
EmailService's DavAuthFilter posted Basic credentials to **************** a route that never existed (405), so since 2026-03-19 no phone (iOS, DAVx5) could add ...
A retired AI's hiring checklist says Retired, not "Everything is set up"
A retire skips every open hire step and adds TASK_HANDOFF, so by the server's count the hire is COMPLETE and the checklist read "Complete — Everything is set up...
The confirmation dialog and the landings' empty state follow a dark theme
ConfirmationDialog was drawn in fixed Tailwind greys: a #1f2937 title, #6b7280 small print, a #f9fafb well and a #f3f4f6 disabled button, so on a dark paper the...
Hosted Computers on the App Shelf, and a pinned band that opens it
The launchpad's sectionsForTool had no case for hostedComputers and fell through a default to an empty list. A parent tool with no sections is dropped from the ...
The rest of the red on a clean install — registry mocks, shared-lib lookup, a typed fetch mock
- ToolDock and MaximizedTabStrip mocked ../registry/tools without windowIcon, which both now call for every window (af879443f), so 36 tests threw on the fir...
Render the dev machine menu hook in a real root, and cover the cloud session row
devMachineSections.test.tsx called useDevMachineSections() bare, outside any render. It worked while useTranslations (mocked) was the hook's only React dependen...
Clear the session cookie on the bare apex, not ".apex"
Logout built the cookie domain as ".kamocrm.com". Tomcat's RFC 6265 cookie processor refuses a leading dot and throws, so logout answered 500 "Logout failed" af...
The DNS page opens on the org's primary domain, not whichever row came first
The domains list comes back in database order. The platform organization has three roots (kamocrm.com, kamouniverse.com, localhost), and each of the last two pa...
A platform apex can't be removed from the DNS page
The platform organization gained kamouniverse.com as a second root domain, and the DNS page then offered "Remove" on kamocrm.com. Deleting it took kamocrm.com a...
Send en->es, en->fr and en->pl to LibreTranslate, not Bergamot's tiny models
Bergamot's enes, enfr and enpl models are student.tiny11 builds decoded with beam-size 1, and they write words that do not exist: the charter message "Ask an ad...
A long workstation wake is asked about less often
An AI workstation's wake took 9 min 19 s against ComputeService's 75 s estimate (SP11 Task 30). Every computer_* call on a waking machine answered WORKSTATION_W...
Read FreePBX voicemail over the Asterisk Manager Interface
FreePBX's API has no voicemail messages: its voicemail module serves mailbox settings only. FreePBXProvider.getVoicemails GET /admin/api/api/rest/voicemail, a r...
A mail domain, and every account on it, belongs to the organization that proved it
The KamoMail server's virtual_domains and virtual_users are shared by every tenant, and nothing stopped one tenant from writing to another's part of them: - PO...
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...
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.
