Market on the engagement, job numbers, dispatch, customer accounts, market-scoped lists
Service work orders: - createJob stores the chosen market on Engagement.market (it only picked the engagement type before) and the customer account on Engagem...
Market, lines, approval decisions, and the vendor order lifecycle (send, receive, close, cancel)
ProcurementService owns purchase requests and vendor orders: - the engagement carries the market (chosen Procurement market, else the vendor's); lists filter by...
A rental needs a renter; market on the engagement; cancel, re-date, check out, return and cancel a booking
- createRentalRequest refuses a missing or foreign customer account, records the market (the asset's, else the chosen one) on the engagement, and validates da...
BLAKE3-256 that is 32 bytes on every BouncyCastle on the classpath
new Blake3Digest(256) is 256 BITS on bcprov 1.78 but 256 BYTES on bcprov-jdk15on 1.70, which this library brings and which loads FIRST in services that also dec...
ACCESS_COMMERCE reads "Access Markets"
The owner retired "Commerce" in the UI; the nav option is Markets.
An engagement belongs to a member-defined market
commerce_engagements.market_id (applied by hand, FK to commerce_markets, indexed with org_id). Retail orders, service jobs, rental and procurement records have ...
Shared-library half of Antivirus — gate, client, tables, rights, kinds, templates, report
- Entities/repos for the six hand-applied tables (content_scan_verdicts, antivirus_detections, antivirus_false_alarm_reports, antivirus_allowlist, antivirus_o...
File rental and procurement records under a customer account
A rental request, booking, purchase request and vendor order had no customer, so the account page could not list them. The account now lives on their Engagement...
The Super Intelligence Setup Journey latch beside Getting Started (SIS6)
OrgSetupWizardProgress gains **************** the stored, never-cleared latch of the SI Setup Journey on Settings > Super Intelligence > Overview. DDL: security...
File a patient record under a CRM account (ehr_account_patient)
The account page's Healthcare tab lists the patient records filed under an account and, through the patients' own portal proxies, the other records they may see...
Package description (Quick Request message) and one submission per round
- LegalPackage.description: HR's short note shown at the top of a package. - LegalPackageSubmission declares the unique (assignment_uid, version_request_uid, ...
Requested documents, HR review and Quick Requests — entities, REVIEW_LEGAL_SUBMISSIONS (697)
Legal & Compliance packages can now ask members to UPLOAD documents and can route a finished assignment to an HR reviewer who approves it or returns items for c...
Meeting-bot apps per org and the external meeting's join path (SIE10)
OrgMeetingBotAppEntity **************** an organization's app for a provider's approved meeting-bot path (Zoom Meeting SDK, Teams via Azure Communication Servic...
Reviewed translations of the SI's spoken lines (SIE8)
Declares ai_spoken_line_reviews (kamoai-service **************** applied) so KamoInitializer can recreate it.
Quality reviews, satisfaction checks and KB gap entities; learned guidelines in tuning (SIE9)
AiQualitySettings, AiQualityReview, AiCsatCheck, AiCsatOptOut and AiKbGap declare the tables of kamoai-service **************** (applied; kamoai-service reads a...
AiRehearsalTrigger.SCHEDULED for the standing weekly red team (SIE3)
An org's SI call languages, clear speech and relay support on its voice notices row (SIE8)
Declares the columns **************** (kamoai-service) added, so KamoInitializer can recreate them.
Websites and social profiles on a lead
Two text columns on leads (WEBSITES one per line, SOCIAL_PROFILES JSON) exposed as a list and a map on LeadDTO, CreateLeadRequest and UpdateLeadRequest; null le...
Customer thread and handoff entities (SIE7)
ai_customer_touch (one line of a customer's conversation thread across channels, keyed by a hash of each CP07 identity) and ai_handoff (an SI's conversation han...
CharterRevision and SiRoleTemplate entities for job description history and SI Role Templates (SIE6)
Declared so KamoInitializer can recreate charter_revisions (append-only version history of every charter layer) and si_role_templates (an organization's own SI ...
UPDATE_OWN_SIGNATURE (696), on for Team Members by default
A member's own say over which details their email signature prints. Standalone root; Team Members role default via **************** Taxonomy counts move (441 / ...
Recordings keep their transcript as timed turns with speakers
RECORDINGS.TRANSCRIPT_TURNS (TEXT, nullable; DDL applied by hand 2026-11-06) holds the transcript as timed turns, each naming who spoke when it is known. The pl...
SI incidents, on-call roster and settings, health samples entities (SIE1)
The five SIE1 tables (si_incidents, si_incident_events, si_oncall_members, si_oncall_settings, si_health_samples) declared so KamoInitializer can recreate them....
Live Changes — commit deployments and the VIEW_LIVE_CHANGES widget rights (690-695)
CommitDeployment (COMMIT_DEPLOYMENTS) is one push to main, keyed by its head commit, and how far CI has carried it. CommitLog.deploymentHash points each entry a...
VaultItem.allowedHosts, the sites a supervisor approved for an SI's fills (TPVAULT phase 2)
VAULT_RECONFIRM_CODE canonical email for members without a password (TPVAULT)
Password Vault entities and VAULT_* access-log events (TPVAULT)
Seven tables for the Password Vault (vaults, items, encrypted fields, an append-only access log, shares, emergency requests, known devices), declared here so Ka...
Answer a status write before its follow-ups, and read lead rows by their own key
Call Floor outcome press, profiled with JFR on a SecurityService pod (lab org, 40 presses): the /stage write took 160-360 ms, median ~220 ms. About 90 ms of it ...
View Floor Reports (675) opens Floor Activity
Floor reports are their own security right (owner, 2026-11-06). VIEW_FLOOR_REPORTS is a standalone CRM root taken from the calling workspace's reservation (676-...
Check a page of leads in one read, and read a lead's loans by index seeks
OutreachCheck.checkPage answers a person's check for a page of leads with the same rules and the same decision code as check(): the leads' rows and open points,...
Read the pipeline's borrowers beside its rows, not after them
Each of the reader's two queries takes about a second for a large lender, and they ran back to back. The borrower read now runs on its own connection while the ...
Add MANAGE_MLOS_AUTOMATION and MANAGE_SAVED_TEXTS narrow settings rights
Two standalone roots (688-689) so the mortgage Automation tab switches and the Phone Saved Texts tab can be granted without MANAGE_SUBSCRIPTION_SETTINGS or MANA...
An updated invoice keeps its due date; an overdue one takes no new charges
Re-sending an updated invoice moved its due date forward, which quietly forgave what the customer already owed late. It now keeps its date and only restarts rem...
One org SI record, and drafts take their voice from an SI, never a typed profile
The org's SI is si_floor_settings.si_member_id alone: automation_outreach_settings no longer maps its own copy, so the Automation Streams page and SI settings c...
Floor Activity, each person's calls on their reporting line
A Report Studio report over the dial ledger, counted by DialTally so it can't disagree with the scoreboard: dials, conversations, confirmed conversations, conne...
The reporting line decides whose calls a screen shows
Owner, 2026-11-02: a generic right such as Manage the Call Floor opens a screen and never widens its rows. Adds the pieces both Report Studio and the floor pane...
The sales floor gets its own notification kind
SALES_FLOOR, appended last, so a member can silence the floor (review items, stopped runs, the send queue, a stream's Notify step, deal roles, briefings and cap...
A stage move names itself, and a rate change can start a stream
A status set off a call wrote its contact attempt as a CALL, so a stage move into a Contacted stage read "Call · Conversation". The attempt now says STAGE_MOVE ...
A line for bulk starts, stream settings, state rules and a list of people not to start
New tables for the line, per-stream settings, state contact rules and the people list, a record of the leads an import made, a current rate on the lead, and new...
View Loan Revenue & Cost hangs off own loans
Hanging off the whole pipeline made the own-loans rule unreachable: a holder without View Mortgage Pipeline lost the right at sign-in.
Every script block says whether it is spoken or for the caller alone
The kind column was added by hand first. Only an explicit SAY is speech; anything unset reads as agent only, so a block nobody classified can never pass for wor...
Stream outbox for claims, status frames, and a report's own-records rule
A credit claim writes LEAD_ASSIGNED, a status change reaches floor panes, a run can be asked about by lead and stream, and a report can name a second right that...
One merge field list, a script on the call list and dial ledger, and duplicate
MergeFields is the one list a script, stream step or saved template fills from, with older spellings kept as aliases. script_id on call_list_entries and dial_le...
Group the Automation tab's lead and other-system switches
Two new groups: Leads and pipeline, and Your other loan system. Labels only. A switch is stored and checked by its own name, so what it does is unchanged. The r...
A stream's SI, a voice channel for the outreach gate, and a stream step as a run
The org chooses an SI for its stream calls, where it used to type a provider's voice name. The voice is the SI's.
A stream filter starts from the stream's runs, never the org's leads
On the largest org the planner drove the EXISTS from all 795,946 leads. The caller now reads the runs first.
Stream state, org fields, reactivation dates and a role on a lead's deal
Neutral pieces the engine needs: three trigger events, a reactivation purpose on LeadCallback with its time as an org setting, a lead filter on live runs, a dea...
Read pipeline rows as scalars, so a large lender's board loads
The kanban read every application as a plain AppMortgage. Hibernate cannot proxy or batch the inverse one-to-ones, so each row cost about four more round trips;...
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.
