SP06 alarm logic — ISA-18.2 state machine, escalation, suppression, schedule, flood
SP06 rule logic — loop maths, fingerprints, fire keys, templating, reasons
SP06 rule logic — solar, schedules, site days, conditions, triggers
SP06 vocabulary, entities and read-only repositories
25 enums (stored by name), IotServiceJobOrigin (SP13 ships on it), 17 entities matching the SP06 DDL and their read-only repositories; IotActivityKind += AUTOMA...
The do-not-block list, the allowlist beside the do-not-contact list
Owner 2026-10-15: "remove it and add it to a do-not-block list" (the company's own main line had been put on the do-not-contact list by a test call). For an org...
The organization's do-not-contact list, per channel
One company-wide list per organization (owner 2026-10-15), scoped per channel: a CALL entry blocks calls only, SMS texts only, EMAIL email only. Package com.kam...
AiCallEventType.TEAM_REQUEST records who asked for an SI's call and the message to deliver
Owner 2026-10-15: when a team member asks an SI to call someone, the SI calls them with no approval and no consent gate, says who it is calling for, delivers th...
A routing slot for SI phone calls and meetings — **************** routes as TEXT_GENERATION with TOOL_CALLING required, and CapabilityRequest carries the slot (null for every existing call)
Owner 2026-10-15: SI phone calls get their own model order; chat and everything else stay as they are. A slot is not a model capability: its order is stored in ...
Seat an organization's existing staff when its subscription is set up
A comp, like a first purchase, created its seats UNASSIGNED and seated the owner alone. Everyone else waited for the owner to hand seats out in Billing, which n...
JOIN_MEETING, joining one of the organization's meetings, is its own action class and not PLACE_CALL
Owner 2026-10-14: Luna (crm) asked the owner to approve joining the meeting he had just told her to join. meetings_join was classed PLACE_CALL, so the charter's...
The default Live Support welcome no longer promises someone 'shortly'
Nobody on the team is notified until the visitor sends their first message, so the default now says that: send a message to reach the team, they're notified whe...
SP12 health enums, entities, repositories and monitoring-state derivation
SP12 pure vitals mapping — LOINC/UCUM, unit conversion, plausibility, opaque Validic uid
SP12 Observation source columns, FHIR device and tag, remote-reading queries
SP03 grant enums, device type rank and catalogue lookup
IotDeviceType (SP01's copy) gains HEALTH_VITALS, storedType and a position map; SP01's tests are kept beside SP03's.
SP12 enum appends — PhiAccessKind.CREATE, RPM_ENROLLMENT, three EHR rights, RPM_ALERT
SubscribeQueueBatch binds a WorkQueue stream with DeliverPolicy.All
IOT_EVENTS is a WorkQueue stream (IoT SP00-D6) and NATS refuses any other deliver policy there (10101), so iot-service crashlooped at boot. The policy is read f...
An Img keeps the extension its content is stored under — on dedup and on rename
fileExt is part of the storage key (<imgDatId>.<ext>) every reader builds, but dedup matches on the BYTES. Content already held arriving under another name (a ....
Append STREAM_OPENED, STREAM_CLOSED, STREAM_REFUSED activity kinds
SP01 enums, safety rules, command transitions, event ids, geohash, device-type rank
IoT SP01 Task 2, on SP02's vocabulary and catalogue (a2cc3154, 36cc42b6).
SP01 value columns, org settings, connection, site, space entities and repositories
IoT SP01 Task 3. A whole number reads back at scale 0 (210, not 210.0) so a stored value round-trips equal.
SP01 device, function, state, activity and write-once command entities
IoT SP01 Task 4. IotDevice.providerDeviceType is the provider's suggested primary capability KEY (String): SP02 ships no device-type enum and DiscoveredDevice c...
Provider vocabulary, registry types 18-24 and the IoT callback path
ReauthMarkers and **************** (delayed naks, exhausted callback)
IoT SP01 Task 5. The plan's test used AssertJ fail() without importing it; import added.
IotRights, the one owner rule every IoT gate applies (IoT SP00)
An SI member never holds the six IoT management rights (IoT SP00-D4)
The IoT Devices rights (370-401) under VIEW_IOT_DEVICES, and SHOW_TOUR_IOT (IoT SP00)
IoT Devices app (40), inside the PHI boundary and never automatic (IoT SP00)
The letter a triggered sign-in detection rule sends
SUSPICIOUS_SIGNIN_DETECTED joins the canonical templates. SecurityService's SuspiciousDetectionService sends it when a tenant-configured detection rule (failed-...
Vet and pin every webhook target, return only failure categories, encrypt signing secrets
The outbound webhook worker POSTed to whatever URL a subscriber stored, from inside the cluster, with no egress control - a subscription aimed at **************...
Read the bulk-export and exchange-document sweeps instead of reporting 0
OrgObjectStorageSweep writes BULK_EXPORTS and EXCHANGE_DOCUMENTS rows into object_storage_days, but OrgStorageAggregator only read that table for BRANDING and D...
MANAGE_BRANCH_TYPES
Branch types, and the security models behind them, move from every organization's Settings -> Account to Platform Administration -> Configuration. This is the p...
A letter for an offered lead nobody accepted in two minutes
LEADS_AVAILABLE goes to everyone the accept-lead window offered a new lead to when it is still unclaimed two minutes later. It names the lead by last name and s...
ExpirePendingForKey and findFirstByPublicKeyAndStatus for the enrollment fixes
KamoCameraService retires a connector's older pending codes when it hands out a new one (an old code read from a log could otherwise be claimed into another org...
SHOW_TOUR_KAMO_CAMERAS (369), and an enrollment's code hash is never serialized
The Show Tour block (338-368) was written while KamoCameras (334-337) was landing, so the newest app security group had no tour right and kamo-internal's guided...
A Show Tour right for every app security group (338-368)
SHOW_TOUR_<APP>, one per app group — thirty-one, E-Signatures included — each a standalone root filed under its app, labelled "Show Tour", and GRANTED by defaul...
A market save rejects a missing or unknown custom form
Both association loops skipped a null form id, or one the organization does not own, and the save still returned success. That is how every market lost its form...
A deleted meeting's guests get the organisation's cancellation letter
The invitation and the update were branded letters; the cancellation was a one-line "has been cancelled". Add calendar.meeting_canceled beside them: the same le...
Saving a form no longer rejects its own field IDs
updateForm replaces every stack and field, but the field-ID check compared the request against the rows already stored. The editor sends no field id, so each ke...
Land KamoCameras — app 39, rights 334-337, entities in com.kamo.z.shared.cameras
Merges feat/kamo-cameras (16f184ad, 6fd4e3fd, 1dfeb3b4). Main took 333 for RELEASE_TO_ORGANIZATION (a3630977) after the branch was cut, so the four camera right...
KamoCameras entities and repositories (schema camera)
Sites, device-code enrollments, go2rtc config history, camera systems, cameras, groups, access rules and saved layouts. Tables are created by KamoInitializerSer...
A retired SI's workstation carries the admin's choice — retire_disposition (KEEP, DELETE_NOW, DELETE_AFTER) and delete_after, written only by their own UPDATE (updatable = false, like the AI session columns, so a sweep's stale save cannot undo it); RetireChoice parses and validates it (none = KEEP, DELETE_AFTER 1-365 days, default 7); findDueForDeletion reads only due rows through the partial index, oldest first, LIMITed; AccessLogEventType gains AI_WORKSTATION_AUTO_DELETED
Owner decision 2026-10-11: at retire the admin chooses Delete now, Delete after N days or Keep. The columns and ix_hosted_computer_delete_after were applied by ...
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.
