SP95 Task 7 rulings SP95-T7-1..2 (the settings PUT stays a full replacement; the team line's 404 reason)
The phone server's team line for an AI member's unnamed transfer
SP95 D10: the AI voice settings take defaultTransferExtension (digits, like the fallback; blank clears it) and echo it. The new internal route GET *************...
Trim the mirrored-alias check, and stop it forcing a lazy load per member
Review findings on the AI-full-name fix (4ea53c5): - LOW: the mirrored-username comparison didn't trim either side, so an alias saved with stray whitespace (...
The AI-dispatch audit trail names people the same way chat does
**************** hand-duplicated MemberDisplayNames' pre-fix precedence (usernameAlias wins unconditionally over the real name), with its own comment warning th...
SP93 phone outbound policy settings — spec, plan, ledger
Plans the two per-phone-server settings the owner asked for (2026-09-28): a default for whether a new extension, human or AI, starts allowed to dial out (off by...
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...
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.
