SP98 Task 25A rulings SP98-T25A-1..7 — provider-neutral computer use
check over Kamo's own computer_* contract; toolVersion probe-filled; router serves COMPUTER_USE where an adapter carries images and tool loops; Tool Plane image...
A colleague's call card for AI calls, and consent to AI calls on one's own profile (SP95 T5)
- GET **************** (X-Internal-Auth): a team member's name, kind, whether they are still here, their effective zone (work site, member, org, UTC), the E...
SP96 the charter's VOICE TTS pin is refused and resolves to nothing
SecurityService picks up the retired pin from shared-lib (Task 14); no SecurityService code read it. Pins the service's side: a member item naming voiceModelId/...
SP96 Task 15 ruling SP96-T15-1 (no SecurityService reader of the pin; how to prove the image carries Task 14)
An upstream image follows the wrapped text instead of filling it (SP98 T25A)
A workstation screenshot is an MCP image block of about 250 KB of base64. The untrusted wrap serialized it into the result text, so the text budget held base64 ...
Computer use is earned through Kamo's own computer_* tools by any provider (SP98 T25A)
native computer tool with a beta header and passed on any 2xx. AI members drive their workstation through the Tool Plane's computer_* tools, never a vendor's na...
Phone_call calls a colleague by memberId, as PLACE_INTERNAL_CALL (SP95 T9)
A colleague is named by memberId, never by number: the planner reads their SecurityService call card and dials the cell, else the phone, else the work number on...
@kamo/tool-core 0.1.7, which carries ?openSms= and ?openVoicemail= through the sign-in bounce (SP98-Q-2)
SP96 Task 17 ruling SP96-T17-1 (profile field errors, card placement, captions, parsing)
SP96 sex on the member profile, gated as personal data
A Personal details card in the Identity room holds the member's sex: Not specified, Female or Male. It is on the member row, so the gates mirror SecurityService...
SP96 sex on the member profile, gated as personal data
A Personal details card in the Identity room holds the member's sex: Not specified, Female or Male. It is on the member row, so the gates mirror SecurityService...
Name the unknown recipient instead of a generic send failure
Review round-1 MAJOR: EmailService's RecipientDomainValidator now answers 422 RECIPIENTS_UNKNOWN before a send is attempted whose recipient names one of the org...
Close three false-refusal paths the review found in RecipientDomainValidator
Independent review of D-luna-1 (email-fix-review-1.md) found two BLOCKERs and a MAJOR, each a real false refusal of legitimate mail, demonstrated from code alre...
SP98 Task 16 ship rulings T16-5..8 (AI workstation wake: desktop stopped across the sleep, estimate 70 s)
Use the RECIPIENTS_UNKNOWN constant instead of a string literal
Review round-1 NIT: the constant was declared and never referenced, so it and the literal in withDirectoryHint could silently drift apart if either were ever ed...
Why allow= alone keeps G.722 out of the offer to LiveKit
Review 1 asked whether codec_prefs_outgoing_offer (prefer:pending, operation:union) could still put a caller's g722 into Asterisk's offer to LiveKit. It cannot:...
The computer-use check writes the contract a model passed (SP98 T25A)
COMPUTER_USE is earned through Kamo's own computer_* tools by any provider, so toolVersion is probe-filled: the check records which contract the model passed, a...
SP95-T3 ruling SP95-T3-1 (request_ref applied from spec §5.1 ahead of Task 30's file)
SP96 retire the charter's VOICE TTS pin
A VOICE item is style only: validation refuses voiceModelId/voiceId (FIELD_NOT_ALLOWED), the resolver has no TTS key and EffectiveCharter no Tts, and CharterVie...
PLACE_INTERNAL_CALL, member consent, the spoken company name, the team line, ON_REQUEST approvals
SP95 Task 4 (spec §5.2, D1, D4, D10, D15, D24): - AiActionClass gains PLACE_INTERNAL_CALL (AUTONOMOUS), appended last. CharterResolver resolves an unnamed PLA...
AI extensions offer G.711 only, so the AI leg is never G.722
livekit-sip answers an offer with the codec it ranks highest, not the first one offered (media-sdk sdp.SelectAudio: G722 -5 > PCMU -10 > PCMA -20). With allow=!...
An AI member's chat name is the full name, same as a human's
**************** trusted Member.usernameAlias over the account's own full name whenever the alias was non-blank. MemberCreationService mirrors the account's use...
UI sweep A: theme tokens, plain errors, empty states and phone layouts (SP98 T20)
AI settings (registry, routing, MCP, workforce controls, Security & Models), personas, Platform admins and the assistant's model picker, from a static-harness s...
An AI member's remembered voice per speech model, and the resolver that keeps or re-picks it
The ai_member_voices store (JDBC, TransientDbRetry, compare-and-set re-picks, an hourly touch, the CHOSEN upsert and the one-statement preferred flag), the memb...
The platform main line survives a boot, and 8200 is the team line
Luna's go-live (2026-09-28) wrote [kamo-main-luna] into extensions_custom.conf and KAMO_LUNA_EXT / KAMO_LUNA_MAX_RING into globals_custom.conf by hand on the ho...
SP96 Task 16 rulings SP96-T16-1..2 — dictionary key shapes for Tasks 17-19
The brief words an action class it has no case for, so a new shared-lib class never breaks the build
CharterCompiler.actionClass gains default -> words(name): the enum name in lower-case words, first letter capitalised (PLACE_INTERNAL_CALL reads "Place internal...
The DDL file for the phone server's team line
SP95 Task 2. **************** a nullable VARCHAR(20) that holds the extension an AI's unnamed transfer rings (the team line, 8200 on the k1m1 FreePBX). Hand-app...
SP94 phonetic org names — spec, plan, ledger, PROGRESS row, master §11 row
Plans the owner's 2026-09-28 request for phonetic spellings of an org's name and short name, spoken only by AIService's E5 speech API (a single-pass, case-insen...
SP96 T6 rulings (hire options: retire relabels an opted-out step, option parsing)
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.
