Plan the System Bugs build across six repos
Screenshots turn out to need no table: an Img row already carries an assoc type plus an assoc object id, and imgs has no CHECK constraint on assoc_id, so append...
Design the System Bugs tab and its AI dispatch path
vscode:// URI handler opens a conversation in the window sage already has open, and coderProcessWrapper carries model and effort, which the URI cannot. Also rec...
Record SP1 as complete, and the six things the plan got wrong
Keeps the reasoning rather than just ticking boxes — the top-level-org skip and the PLANNING-stage regression are both the kind of mistake that would be made ag...
Task 7 needed no new migration, and top-level orgs must be included
The app-tree backfill turned out to already exist as **************** restricted to isGated() verticals. Dropping that restriction is the whole change. Records...
Implementation plan for SP1, the app catalog parent/child tree
12 tasks across kamo-shared-library, KamoInitializerService, SecurityService, MediaService, VOIPService, kamo-internal and the translation dictionary. Ordering...
Correct the sign.pink finding
The inventory called SignLinkBuilder's sign.sign.pink fallback a "foreign apex" and I recorded it as one. It is not: sign.pink is a Kamo-owned organization (id ...
Design the EHR/EMR vertical and the parent/child app catalog
Two specs from the pre-build analysis of ~30 repos and the 2026 ambulatory EHR market. The program design records the six decisions that bind every sub-project...
Plan the host-independent tenancy rollout
Six phases, each independently shippable, because pushing deploys: the host path keeps working until Phase 6 removes it. Phase 1 is the crux and is additive --...
Design host-independent tenancy
Org identity comes from the hostname today: OrgHostResolver.resolveByFqdn turns <alias>.<domain> into (orgId, providerId), and its SQL requires od.is_dns_verifi...
Correct what the add-on binding gap actually was in production
The previous commit's reasoning was inferred from the loader, not measured. It claimed every KamoCRM add-on row had service_type NULL and that hosted mail was t...
Design the org chat policy engine and its Policies tab
Rules are an ordered list over ordered member pairs; the first match decides, so every verdict names exactly one rule and the UI can always explain itself. Sele...
Record that the unprocessed claim is now batched
getUnprocessedPayloads() returned every unprocessed payload, and this job holds each one's raw and flattened text for its whole run — so its memory was a functi...
Correct the README to the routes that actually shipped
The WebRTC endpoint moved from /webrtc/<ch>/whep to /live/<ch>/whep when channels were renamed live/<ch> to drop StripPrefix, and the README still described the...
Record the SecurityService unauthenticated-endpoint triage
Three fixed, the rest explained. The headline number needed narrowing three times and the first two attempts were wrong the same way — enumerating helper names ...
Implementation plan for dev machine provisioning
16 tasks across KlusterServices, kamo-shared-library, KamoInitializerService, SecurityService and kamo-internal.
Design for per-member dev machine provisioning
Covers the root cause of the 23-day KamoDesktop outage (netplan matching a first-boot MAC that KubeVirt regenerates on every VMI recreate), the live fix already...
Record the ProxyHmacFilter rollout and what it does not cover
Two ordered steps, the checks that made the second one safe, and the reason the order matters: kamo-internal had to be signing before KamoLOS started validating...
Correct the record — KamoLOS is deployed, and has been for 78 days
§12 concluded that KamoLOS had no deployment and that gating it was therefore free, and the LOS proxy repeated the claim in a comment. Both are wrong. The servi...
Eleventh cluster triaged — employees, time off and schedules all stay
The first cluster whose honest answer is "no action", and two of the six looked deletable until the last check. TimecardService has one authentication boundary...
Sixth cluster triaged — documents span four services, and must not be seeded
CREATE, EDIT, DELETE_DOCUMENTS and MANAGE_STORAGE all have real live features, so nothing here is deletable. VIEW_DOCUMENTS is client-only in navRegistry, the s...
Third cluster triaged — Meet splits in two
All five Meet rights have real running features, so none is a chat-channel case: kamomeet-deployment is live and Meet-jibri is deployed, making recording real i...
Second cluster triaged — PLOS is implement, and cheap right now
The six PLOS_* rights have a real feature: KamoLOS is a full loan service. Not deletable. But nothing enforces any of them — no rights check anywhere in KamoLOS...
First cluster triaged — chat channels are vestigial
Implementing gates for the 57 started with chat and the cluster came back empty. CREATE_CHANNELS, MANAGE_CHANNELS and MODERATE_CHAT have no feature: chat is rea...
The SHARE_DOCS_* client-side-only gap is closed
resolve-alias in DocsService and the two member-search endpoints in SecurityService now enforce these four server-side, mirroring the dialog's isTeamMember-or-r...
Correct what the index-backed read path actually guarantees
The previous comment claimed the read path "refuses to serve any folder it cannot prove it agrees with the server about — so a row that is wrong here is a row t...
Build log through completion
Records the 24-table final schema, the four partial indexes that carry the double-pay and double-code guarantees, the two late schema decisions that each cost a...
Build log for phases 1-3
Records what shipped, the shared-lib push-ordering contract that bit once, the production census that settled the timezone questions, and the pre-existing KamoI...
HR timecards design and plan series
Design grounded in a 25-agent cross-repo survey. Part II closes the twelve blocker-level gaps an enterprise feature-completeness review found between the punch ...
The Dovecot quota change, written out and not applied
Object storage now refuses content that would take an organization past its ceiling, which covers every domain that goes through the object store. Inbound mail ...
The Dovecot quota change, written out and not applied
Object storage now refuses content that would take an organization past its ceiling, which covers every domain that goes through the object store. Inbound mail ...
Design for the platform billing redesign
Records the audit finding that measurement, entitlement and money are three pipelines that were each built well and never connected, plus the 17 confirmed defec...
Implementation plan for the CockroachDB to YugabyteDB migration
15 tasks. The two gates sit before any downtime: Task 5 proves the backups actually restore, and Task 10 diffs the KamoInitializer-built schema against the live...
Implementation plan for the CockroachDB to YugabyteDB migration
15 tasks. The two gates sit before any downtime: Task 5 proves the backups actually restore, and Task 10 diffs the KamoInitializer-built schema against the live...
Design for the CockroachDB to YugabyteDB migration
Records the measured current state (3.4 GB, 791 tables, 671 FKs, ~30 consumers), the five design decisions, and the cutover sequence. The two findings that sha...
Record the corrected mailbox semantics
EMAIL now measures the mail Kamo actually hosts, attributed per mailbox to the organization that owns it, rather than summing a search index that both missed Ka...
Design the platform app catalog behind an Apps & Features tab
Apps on /settings/account?tab=apps are compile-time constants in the ServiceType enum, so "Available" (stage == COMPLETED), the stage itself, the display name a...
Implementation plan for the platform organizations console
17 TDD tasks across BillingService, the translation dictionary and kamo-internal. Physical table names verified against the live cluster -- the org table is 'or...
Design for the platform organizations console
Redesigns **************** from an unbounded card list into a server-paginated console. The current tab loads every org at once and PlatformAdminService fans o...
Record the compatibility bridge and what retires it
The bridge is invisible from the code that will eventually delete it -- the field looks like a real part of the request. Name the condition that ends it: Securi...
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.