Resources upload to a real bucket and stream back through the app
The resource library has never stored a file. KbMediaService wrote to the constant bucket "kb" โ two characters, below S3's three-character minimum โ so minio-j...
Turn Antivirus scanning on in kbservice
KamoAntivirus is Ready (StatefulSet kamowsantivirus 2/2, /readyz ready, release 2026.11.08.0101); a direct scan from the cluster returns MALICIOUS/TEST_FILE for...
KBService checks knowledge-base resources and looks up the verdict before signing
- Resource upload writes the raw kb bucket, so it goes through AntivirusUploadGuard (KB) before anything touches storage: 422 ANTIVIRUS_BLOCKED (nothing store...
The phone's session header signs in a READ, so KamoMobile can open help, scripts and tasks
KamoMobile calls api.<org> with X-***-Token and cannot mint an OTK, so every KBService read it made (the Password Vault's help article, sales scripts, task list...
A task notification opens My Tasks, under Organizer
The old /notes?task= address still reaches it by a 307 in kamo-internal.
The help tree reads titles, not whole translated articles
Any language but English loaded every translated help row on each tree read, about 4 MB, outside the minute-long cache. The tree now carries titles alone and th...
The deployed config names the platform organization
The pods read the ConfigMap's application.yml, not the one in the image, so sharing stayed off, which is the safe way to fail.
Every write keys on the article's owning organization
Reads now cross one edge, so writes must not lean on anything a read decides. Each write takes the acting organization and asks ownedBy, in the service as well ...
Any organization may read the platform's published help
KbReaderScope gets one exception to its organization rule: a reader in any other organization may read a platform article that is active, published and open to ...
One pod translates an article, not every pod at once
The sweep's fleet-wide lock is held only while it queues work, which takes milliseconds, so each pod ran its own sweep a minute or two apart and queued the same...
Translate an article's words, not its Lexical JSON
contentJson was sent to the translation engines as if it were a sentence. On 2026-10-22 one sentence of it came back from Russian with the sentence gone and the...
An SI reads the checklists of a member it manages (SITP TP20)
Owner decision 2 (2026-10-18): an SI may see the work of the members it manages, SIs and people alike, read-only. GET **************** now answers an SI session...
Review steps stay in the caller's organization; pins take VIEW_KB_ARTICLES (SITP TP14)
submit-review, approve and reject named an article by guid alone, so a member holding CREATE_/REVIEW_KB_ARTICLES in one organization could move another organiza...
Stop logging the database password at startup
com.zaxxer.hikari at DEBUG makes HikariConfig print its whole configuration on every start, including dataSourceProperties {password=...} and password......; Pr...
Internal task endpoint for IoT automations
POST /internal/checklists/iot/tasks: one task on behalf of an automation's owner, into the assignee's Inbox (SP06 CREATE_TASK). Notes must be on, the assignee e...
An SI that sends a note with no level the internal default back changes nothing
CP97 Task 17's Luna compare found a live SI's own My Master Note, written before KamoCollab, carrying sensitivity MEMBER after one of her own appends in an AUDI...
A release that keeps someone the note already named no longer fails with 500
The release reads the note's current NAMED audience before it writes, and the request keeps one persistence context (open-in-view), so those note_audience_membe...
The CP11 memory-card DDL file and its contract test (KamoCollab CP11 Task 1)
note_memory_cards (eleven columns, keyed by the note, cascading its delete) and its three per-SI indexes, plus ix_notes_member_updated for the supervisor review...
NoteAppendProvenanceTest builds NotesController with the ProvenanceGate (KamoCollab CP07 Task 10)
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.
