Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· MCPGatewayService
Identity_request_confirmation; o cerere confirmată de membru în Kamo este comanda sa
Proprietar 2026-10-26: ordinele directe trebuie să fie autentificate. Cineva care doar pretinde că este proprietar Coleg de echipă (telefon, text, e-mail nedovedit, site-ul de chat, întâlnire) este cerut, prin kamoai-service, pentru a confirma în aplicația lor autentificată Kamo; SI-ului i se spune în cuvinte simple ce să facă Odată confirmat, RequestVerifier răspunde la ordinea de rulare și cererea de la care Confirmare (auth:<id>): membrul a garantat pentru ea, deci taint-ul canalului nu contează și SI_AUTH_REQUEST nu ajunge niciodată la un SI.
· SecurityService
Aplicați o personalitate generată la propria cartă a unui SI, în jurul a ceea ce au stabilit oamenii
Realismul vocii VR2, decizia proprietarului D2: fiecare SI primește un SI unic, potrivit pentru locul de muncă personalitate, generată din propria sa muncă. kamoai-service o redactează; acest Punctul final intern (KamoAI secret) aplică elementele PERSONALITY și VOICE Modul în care o salvare face: validată de propriile reguli ale charterului, refuzată de autoritate Limba, scris de MemberCharterWriter, marcat AI_DRAFT, anunțat astfel încât Runtime-ul re-citește carta și este auditat ca AI_CONFIGURATION_APPLIED. Obiectele pe care o persoană le-a setat sunt întotdeauna păstrate; o generație anterioară este înlocuită.
· kamo-internal
Opțiunea de invitație la întâlnire se îngustează, în mod implicit nu există limită suplimentară
Decizia proprietarului 2026-10-26: accesul propriu al SI-ului decide cine îl poate invita (oricine din echipă atunci când include Întreaga echipă poate vedea întâlnirile, altfel doar supraveghetorii ei); această opțiune, listată prima ca implicită, restrânge doar acest lucru.
· MediaService
Drepturile proprii ale SI-ului decid cine îl poate invita la o întâlnire
Decizia proprietarului 2026-10-26, în verificarea partajată (MeetSiInvitePolicy) din spatele invitației în întâlnire, M1, întâlnire Creați și selectorul M3: - supraveghetorii SI-ului (linia de raportare, proprietarul org-ului) îl pot invita întotdeauna: ordinea lor directă îi împrumută politica lor; - oricine altcineva din organizația sa poate, atunci când drepturile proprii ale SI-ului aplicate includ VIEW_MEETINGS (dreptul propriu meetings_join și M1 join are nevoie), și se alătură cu propriul său acces; opțional meeting_invite_policy poate restrânge; - altfel 403 SI_NEEDS_SUPERVISOR (sau NOT_ALLOWED_TO_INVITE_THIS_SI pentru restrictia optionala). Listarea camerei returnează acum și SI-urile pe care această persoană nu le poate invita ca LOCKED cu lockedReason, astfel încât panoul să poată Drepturi citite pe ix_mra_member_right; necitibile = doar pentru supraveghetori.
· AIService
Opțiunea de invitație la întâlnire este o restricție opțională, în mod implicit niciuna
Decizia proprietarului 2026-10-26: drepturile proprii ale SI-ului decid cine îl poate invita (orice membru al echipei atunci când acestea includ întâlniri, **************** este acum implicit la ORGANIZAȚIE (nu este necesară înregistrarea) DDL **************** aplicat (implicit + restricție); Patru rânduri care au purtat numai vechiul implicit).
· kamo-shared-library
Drepturile proprii ale SI-ului decid cine îl poate invita; meeting_invite_policy este doar o restricție opțională
Decizia proprietarului 2026-10-26: un SI a cărui politică de securitate permite întâlniri poate fi invitat de către orice membru al echipei; A cărui politică nu se face numai de către supraveghetorii săi (ordinea lor directă îi împrumută politica lor) ca o restricție suplimentară opțională a cărei valoare implicită, ORGANIZATION, nu restricționează nimic (era SUPERVISORS).
· kamo-shared-library
Fiecare SI vorbește prin personalitatea sa, iar tabelele pentru sunetul de fundal, consimțământul vocal și memoria frazei apelantului
PhoneStyle compilează trăsăturile unui SI în reguli de telefon vorbite (contracții și forme de adresare, caldura, umor, energie, hedging, empatie, curiozitate, inregistrare, Formularea regională) plus numerele pe care le aplică conducta de voce: un capac de umplere pentru fiecare Apelul (D3, oprit până la A / B), decalajul dintre sunetele de ascultare (D4), râsul Intervalul de emoție și emoție (D6), tonul de odihnă și răbdarea la sfârșitul turului Cu nici o personalitate încă vorbește cu valorile implicite de registry (D2). AiAmbienceSetting (D7), AiVoiceCloneConsent (D12) și AiCounterpartyMemory sunt KamoInitializer poate recrea noile tabele ale kamoai-service.
· MediaService
SI-urile joacă Texas Hold'em cu membrii, iar Cheddar-ul fiecărui membru funcționează din nou
SITP TPGAMES (proprietar 2026-10-26). Portofel de cheddar: - Singura ușă a portofelului (universe-gateway -> universe-persistence) a avut Nu există puncte finale de când jocul KamoUniverse a fost parcat pe 2026-09-28, deci fiecare Hold'em buy-in de atunci a eșuat ('portofelul Cheddar nu răspunde'), CheddarLedger scrie aceleași trei tabele în tabelul de mai jos: baza de date kamouniverse direct (același cluster, acest serviciu are propriul utilizator DB), cu regulile serviciului de persistență: o tranzacție pe mișcare, unic cheie idempotenta (replay = aplicat false), linie de registru semnata; un debit este un Actualizare condiționată, astfel încât două buy-in-uri să nu poată depăși El o folosește. - Grantul unic de înscriere (1.000.000, cheie signup_grant:<id>), care se plătește doar Cea mai mare lume 3D parcată făcută vreodată, este făcută prima dată când portofelul unui membru este Atingeți prin intermediul unei aplicații de jocuri pe care le au - persoană sau SI la fel. CheddarSiGrants deschide portofelul fiecărui SI non-pensionat înainte de timp (o dată pe oră, singleton, paginată de ID-urile de membru ale listei SI; nimic altceva atins). Cheddar nu are cale de cumpărare, deci niciun SI nu îl cumpără vreodată cu bani. Hold'em SI: - HoldemSiBrain: Echitate Monte Carlo peste HandEvaluator vs adversarii live, Pot odds, stil CAUTIOUS/BALANCED/BOLD și abilitate CASUAL/CLUB/SHARP, 300 ms Singura sa intrare este HoldemTableView-ul SI-ului per-recipient: propriile două cărțile și informațiile publice, niciodată alte cărți sau pachetul. - HoldemSiPlayer: eveniment-driven (HoldemTurnEvent după fiecare cadru publicat, ~ 1.4-2.3 s pauză în interiorul ceasului de 30 s). Stai când o persoană a invitat-o și Este așezat, acționează prin HoldemGameService.act cu expectedSeq, rebuy-uri la Cel mult de 3 ori pe zi pe masă, stă cu o persoană care stă afară și pleacă Când nu mai rămâne nicio persoană: SI-urile nu se joacă niciodată între ele. Redis revendicare per Tabel; stil/abilitate pe SI pe tabel în Redis. - HoldemSiEligibility fiecare pas: Hold'em app, PLAY_HOLDEM (SI, sau Invitatorul/persoana așezată: Fără nesupunere), timpul de execuție nu este întrerupt. - POST /tables/{id}/si-play (stil, abilitate), apelarea doar a SI. - ChessFaces citește tema gazdă în afara tranzacției (ratchet), memorat în cache. Teste: CheddarLedgerTest 4 (H2), HoldemSiBrainTest 5, HoldemSiFairnessTest 3 (vezi SI nu deține cărți ale altor jucători și nici un pachet; cărți ascunse Nu poate schimba decizia; jucătorul nu are acces la rândurile de mână brute), HoldemSiPlayerTest 7; suite de jocuri 240 verde.
· MCPGatewayService
Mail_send ia o versiune text simplu a corpului HTML și un fișier text scris de apelant (TPRECAPS)
Recapitularea întâlnirii SI poartă acum transcrierea completă a întâlnirii; dincolo de limita corpului se duce ca atașament .txt. textBody (cu bodyFormat HTML) devine partea de text multipart/alternativă; textAttachmentName + textAttachment devin O parte de atașamente (numele păstrat la caractere sigure, .txt) Textul atașat este planificat cu corpul pentru dezvăluire. Listele de instrumente de aur regenerate (numai mail_send).
· EmailService
Faptele expeditorului unui mesaj pentru verificările de identitate SI; SI_AUTH_REQUEST nu aparține niciunei aplicații
Răspunsul provenienței spune acum și ceea ce mesajul însuși pretinde despre expeditorul său: De la, Reply-To, serverul care l-a trimis la al nostru, și rezultatele SPF/DKIM/DMARC înregistrate în SI_AUTH_REQUEST este nespecificat: oricine poate fi întrebat de către serverul SI_AUTH_REQUEST Un SI pentru a confirma o cerere a fost într-adevăr ei.
· kamo-shared-library
Tipul de notificare SI_AUTH_REQUEST și entitățile jurnalului de autentificare SI
Proprietar 2026-10-26: ordine directe care ajung la un SI printr-un canal care nu dovedește identitatea nimănui Toate anunțurile sunt confirmate de către membrul din Kamo mai întâi si_auth_requests / si_auth_request_events (DDL aplicat manual în kamoai-service) **************** și indexul media_session_guid al suportului.
· kamo-internal
Alegeți cine poate invita un SI la întâlniri, în Opțiuni apelare
Kamo Meet "Invitați un SI" (comanda proprietarului 2026-10-26): Numai persoanele care îl supraveghează (implicit) / Supervizorii și Colegii de echipă / Oricine din organizația dvs., cu o explicație simplă a fiecăruia. Salvat prin AIService; MediaService o aplică.
· MediaService
Invitați un SI din interiorul întâlnirii; cine poate invita un SI este opțiunea proprie a SI-ului
Kamo Meet "Invitați un SI" (comanda proprietarului 2026-10-26): - GET **************** pentru o persoană semnată în întâlnire (creator, participant înregistrat, sau au înmânat jetonul acestei camere de către sidecar-ul întâlnirii din propria sesiune: marca MEETPRES), SI-urile active ale organizației pe care le-au Poate invita, grupate SUPERVIZATE / DISPONIBILE, cu fotografie (fotografie -> avatar), titlul postului și disponibilitatea (disponibil, Nu există niciodată un SI în această întâlnire sau în drum spre ea (nu este online, dar se poate alătura, într-un alt apel, întrerupt, indisponibil) (participant live, invitație de auto-alăturare, ai_call live în ea); unul care a rămas este listat din nou. - POST .../invitable-sis/{memberId}: o aduce acum prin calea cu o instanță a lui M1 (upsert participant, exclusiv Revendicare de apelare; indexul unic de apel live al Kamoai-service în spatele acestuia): clicuri simultane sau două persoane efectuează un apel. - MeetSiInvitePolicy: supraveghetorii (linia de raportare a graficului org, proprietarul org) întotdeauna; alții pe SI meeting_invite_policy (SUPERVIZORI implicit | ECHIPĂ | ORGANIZAȚIE). Impuse pe M1 și crearea întâlnirii pentru persoane, Selectorul din M2 și M3 oferă doar SI-uri invitabile (cu "supervised").SI-urile păstrează regula TP12 SI-to-SI. - Căutare cameră pe gazda de temă **************** prin ViewerThemeDomain în afara oricărei tranzacții.
· AIService
Cine poate invita acest SI la întâlniri, în funcție de opțiunile sale de apelare
Kamo Meet "Invitați un SI" (comanda proprietarului 2026-10-26): meetingInvitePolicy (SUPERVISORI implicit | ECHIPĂ | ORGANIZATION) citite și modificate alături de celelalte opțiuni de apel și întâlnire ale SI, aceleași drepturi; stocate în **************** (DDL **************** MediaService o aplică.
· kamo-shared-library
MeetingInvitePolicy — cine poate invita un SI într-o întâlnire; declară ai_member_call_options
Kamo Meet "Invitați un SI" (ordinul proprietarului 2026-10-26). Supervizorii unui SI (linia sa de raportare asupra managerului și SI-supervisor edges, proprietarul organizației) poate invita întotdeauna; propria sa meeting_invite_policy spune cine altcineva poate: SUPERVIZORI (implicit), ECHIPĂ (echipa numită, același manager, rapoartele sale) sau ORGANIZAȚIE.Eșuează închiderea graficului. AiMemberCallOptionsRow declară tabelul manual ai_member_call_options (și noua coloană) astfel încât KamoInitializer Puteți să-l construiți din cod.
· MCPGatewayService
Games_* - un SI joacă șah cu membrii
SITP TPGAMES. Unsprezece instrumente peste punctele finale de șah ale MediaService, închise ca un Lista de jocuri a unui membru este (Șah app + PLAY_CHESS, din nou în aval): games_list, games_get_state (diagramă, FEN, mutări legale, text de mutare, înregistrare), games_invite (abilitate opțională), games_join, games_decoder, games_move (SAN sau pătrate, validat pe partea de server), games_offer_draw, games_decoder_draw, games_resign, games_rematch, games_set_skill. Mutările SI-ului sunt altfel jucate pentru el de către Motorul MediaService; modelul vorbește. Scrieri interne: nu Clasa de aprobare, NOT_DISCLOSING; citește NOT_CONTENT. chat_read numește jocul pe care se află Fraze de aprobare + CHESS_GAME substantiv; games_ prefix; goldens - Fraze de aprobare + CHESS_GAME substantiv; games_ prefix; goldens A fost regenerat (11 adăugate). Teste: GamesPackTest 7, ChatPackTest +1; suită completă 1968 verde.
· EmailService
O versiune în text simplu alături de HTML și o scrisoare de recapitulare a SI pentru un supraveghetor atunci când SI nu are cutie poștală (TPRECAPS)
/api/email/send ia un textBody opțional: corpul este apoi multipart/alternativ (text, apoi HTML), în interior mixt POST **************** (KamoAI secret, multipart like /api/email/send) - trimite un mesaj de e-mail cu un anumit nume de utilizator trimite o scrisoare apelantului său construită ca e-mail tranzacțional al organizației: NoReply@ domeniul său numai atunci când acel domeniu este SPF ne autorizează, altfel platforma este sub numele său, cu versiunea text și până la două fișiere.
· kamo-shared-library
Declarați ai_call_recap și ai_member_recap_options pentru e-mailul de recapitulare a apelurilor SI (TPRECAPS)
Un rând pentru fiecare apel telefonic SI care a avut o conversație, astfel încât rezumatul său ajunge la supraveghetor o dată; și un rezumat SI de două DDL aplicat manual (kamoai-service **************** Acesta este declarat aici astfel încât KamoInitializer să îl poată recrea.
· MCPGatewayService
Fiecare SI are un ceas: time_now, time_convert, time_calc
Raportul proprietarului 2026-10-26: a întrebat ora la un apel, un SI a spus că nu are ceas Calendarul pe care fiecare persoană îl are: ora acum în zona SI sau în orice altă zonă (cu ziua zilei) Ziua, luna, anul, săptămâna, un timp spus într-o altă zonă, și data aritmetică.
· MCPGatewayService
E-mailul dovedit al unui coechipier către un SI este cererea și comanda lor
Raportul proprietarului 2026-10-26: proprietarul a trimis un e-mail SI-ului să-i sune; e-mailul nu a fost niciodată un ([ORDER] no order) și fiecare check-in ulterioară a citit-o ca pe o corespondență externă și a întrebat Mail EmailService dovedește că propria cutie poștală a unui coleg de echipă trimisă la SI este acum disponibilă În interiorul e-mailului (sentByTeammate, taint intern) și un wake sau o citare ca un mesaj de chat: Autorul, actualitatea, această călătorie și păcatul au fost toate verificate.
· MediaService
Un membru SI joacă șah cu membri, mutările sale fiind alese de motorul Kamo
SITP TPGAMES (proprietarul 2026-10-26: un SI cerut să joace șah nu știa cum). - ChessSiPlayer: eveniment-driven (ChessTurnEvent după fiecare schimbare comisă). Invitația unui membru: SI se alătură și mintea sa este trezită o singură dată (un chat Notificare pe conversația cardului) pentru a-i saluta. O extragere a unui membru Oferta: acceptată, cu excepția cazului în care SI este în față cu mai mult de jumătate de pion. ChessAi (alpha-beta + repaus, timp-bugetat) alege mutarea la Nivelul SI și se joacă ca SI prin intermediul ChessGameService.move, ~0.7 s pauză, o sarcină în așteptare pe joc, 100% din timp în așteptare 200 pe pod, Redis revendicări între poduri, FEN re-verificat înainte de scriere. - ChessSiEligibility, fiecare mutare: aplicație de șah pe, PLAY_CHESS aplicat, runtime Nu este PAUZAT/BLOCAT/RETRAT. - Recuperare de măturat (singleton, 30 s) pentru un rând de o repornire sau pauză ratat. - Fără forumuri SI-vs-SI (invitație refuzată; nu se joacă pentru nimeni). - Abilitatea pe joc (CASUAL/CLUB/MASTER, implicit CLUB) în Redis, fără DDL; POST /games/{id}/si-level; mutările scrise (SAN sau e2e4) pe /move. - Tabla arata poza adversarului (opponentAvatarUrl a fost intotdeauna null), opponentIsSi și siLevel. - Fix: un ChessAi partajat de fiecare cerere a concurat propriile sale câmpuri de termen. Teste: ChessSiPlayerTest 11, ChessSiRulesTest 15, interogare parse 1; șah și Jocuri suites verde (100).
· EmailService
Dovediți că un coechipier a trimis un e-mail unui SI, astfel încât o cerere trimisă prin e-mail să poată fi considerată ca o comandă
Un punct final intern răspunde dacă un mesaj din cutia poștală a unui membru a fost trimis de un coleg de echipă: mesajul său De la ajunge la un membru al aceleiași organizații, iar folderul Trimis al acelui membru conține Un From falsificat nu trece niciodată; este doar pentru citire.
· kamo-internal
Pipeline arată când fiecare tranzacție și împrumut a fost deschis, și sortează după aceasta
Ofertele și împrumuturile afișează "Deschis <data, ora>" în zona de membru. Pentru împrumuturi Importat de la Arive, care este timpul de creare al lui Arive - înainte, fiecare import Afacerea sortată după cum a fost deschisă în ziua importului.
· SecurityService
Împrumuturile de conductă deschise în Arive poartă timpul de creare al Arive, nu importul
· kamo-shared-library
Rezumatele împrumuturilor se efectuează atunci când un împrumut MLOS a fost deschis cu adevărat (openedAt)
· kamo-internal
Perspective – tranzacțiile pre-aplicare lasă conducta deschisă
O afacere ale cărei împrumuturi sunt toate la intrare, calificare sau preaprobare (nu Aplicația luată încă) se arată sub propriul său Prospects vedere și număr. Deschis, KPI-urile sale și șina de etapă numără acum numai aplicațiile în curs de desfășurare; Kamo Proiectele proprii rămân deschise. Nimic nu se schimbă în ceea ce privește împrumuturile.
· kamo-internal
Pipeline arată etapele de pre-aplicare, fiecare rezultat, și împrumuturi arhivate
- statusuri: Cerere de admitere, Calificare, Pre-aprobat; Aprobat Nu Acceptată, Închisă pentru incompletitudine, Anulată, Pre-aprobare refuzată / Nu este acceptat — o listă partajată în loc de două copii codificate - bord și oferte: împrumuturi arhivate părăsesc conducta deschisă (afișate sub trecut, Arhivat); rezultatele nefinanțate sunt considerate ca fiind anulate - "submis" nu mai este statusId> = 2 (id-urile sunt identități, nu ordine) - Harta etapei Arive oferă stările de pre-aplicare
· SecurityService
Kamo deține fiecare Arive împrumut, la statutul Arive chiar îl are
- evenimentele de import și de intrare adoptă fiecare împrumut - deschis, finanțat, advers sau arhivate — în loc de doar cele "active" - Nu există ștampilă Get Loan sau crmReferenceId pe împrumut: fiecare este o sarcină Zapier pe Planul clientului (20.000+ pentru un import); GUID recunoaște împrumutul - Datele Arive sunt aplicate ca sistem de înregistrare (șterse unde Arive a (niciuna, de exemplu, o dată de aplicare pe un dosar de pre-aplicare) - o etapă în spatele Kamo este realiniată, pe înregistrare, în loc să fie refuzată - acoperire cu gărzi doar pentru proiecte (editări de împrumut, trimitere proprie, tragere de credit SI / AUS) Etapele de pre-aplicare; "submitted" nu mai este statusId >= 2
· kamo-shared-library
Stările pre-aplicare, fiecare rezultat HMDA, arhivă și datele reale ale Arive
Arive împrumuturi au fost mapate numai din numele etapelor: fiecare etapă de pre-aplicare A devenit Cerere luată, fiecare împrumut arhivat retras (și cele finanțate), Fiecare acțiune adversă a fost respinsă, iar datele au fost ștampilate cu ziua importului. - LoanFileStatus (anexată — coloană ordinală): APPLICATION_INTAKE, CALIFICARE, PRE_APPROVED; rezultate APPROVED_NOT_ACCEPTED, INCOMPLETE, PREAPPROVAL_DENIED, PREAPPROVAL_NOT_ACCEPTED, PREAPPROVAL_NOT_ACCEPTED - mașină de stare: săgeți opționale de pre-aplicare; fiecare rezultat numai de la Stările pe care le poate urma - LoanFile.archivedAt: arhiva este un steag lângă stare, nu un rezultat - Arive: etapa ADVERSE + harta AriveAdverseReason la propriul rezultat (ambele Configurare împrumut = Cerere luată, dezvăluită = În proces; date de la Arive (data TRID, documente semnate, sârmă de finanțare, date de etapă), niciodată astăzi - realignToExternal: MLOS extern este sistemul de înregistrare pentru etapa - Acțiunea HMDA luată din rezultatul real; fișierele în curs nu au nici unul - comerțul / rollup-ul tranzacțiilor / orizontul apropiat se ocupă de noile stări
· kamo-internal
MLOS extern trăiește pe piața ipotecară și pe fiecare credit
- Setări → piețe POS → piața ipotecară: noua filă "External MLOS" (Arive prin Zapier, MeridianLink) cu conexiune, hartă de etapă, tranzacție Importul de credite active; selectorul MLOS de pe piața principală este Înlocuit cu un indicator către acesta - Cerere de împrumut: o bară de stare care arată locul împrumutului în extern MLOS (linked / sending / needs fields / refused), retrimite si deschide-in MLOS; Secțiunile deținute de MLOS sunt doar în citire cu o notă care spune unde să le editați - card de afaceri pentru conducte: cip MLOS extern - pagina principală: Arive/MeridianLink acțiuni eliminate - rutele proxy se mută la ****************

Universul tău te așteaptă.
Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.
Gratuit pentru totdeauna — nu este necesar un card de credit