Background work uses three engine slots per pod and is sent as low priority
One background slot per pod left three of the engine's four streams idle during a dictionary sync. Background callers (a wait above the 100-second default: the ...
One engine, MADLAD-400, for every language pair
Replaces the LibreTranslate, Bergamot and IndicTrans providers with MadladProvider (klusterservices madlad/). Their languages did not overlap, and a pair none o...
Never send an engine a text longer than it takes
IndicTrans answers a request over 20,000 characters with a permanent HTTP 413, so a long help article could never be translated into Tamil; a LibreTranslate wor...
One deadline per request, never retry a timeout, and queue for LibreTranslate here
LibreTranslate keeps translating a request after its client stops waiting, so every timeout was work done for no one. Measured over six hours on 2026-10-07: 46 ...
A long text that lost a protected name is translated whole, not piece by piece
Rebuilding a reply around the names takes one engine call per piece. For a help article that is dozens of calls, past KBService's 120-second read timeout, so a ...
Ask LibreTranslate again when it copies a Title-Case label
Argos reads a short capitalised label as a name and hands it back untranslated: live on 2026-10-05, en->tr "Delete" -> "Delete" and "Cancel" -> "Cancel", en->ar...
Never send a brand name to an engine, for every caller
The es locale rendered RingCentral as "RingConexión central" and JustCall as "SóloCall"; zh read "AI Members" as Amnesty International members. The dictionary's...
Send en->ta to Kamo IndicTrans, and log which engine answered
No provider claimed en->ta (LibreTranslate lists no Tamil, Bergamot serves German only), so the router returned the English source for every Tamil request, and ...
Guard ampersands for every spelling of Spanish, keyed on the resolved language
guardAmpersands compared the caller's raw targetLang with {"es"}, so "ES", "es-419" or "es_MX" reached the same en->es model without the guard and came back wit...
Keep ampersands out of LibreTranslate's en->es model, which quotes or truncates them
Moving en->es to LibreTranslate (27888ca) exposed a fault in its model: a spaced ampersand comes back as a double quote ("Billing & Payments" -> 'Billing " Paym...
Say why Bergamot decoders instead of falling back, and cite each sample
A failed LibreTranslate call leaves the caller its English; the dictionary sync writes that English and does not resend it, so a64b00e's "retried on the next sy...
Send en->es, en->fr and en->pl to LibreTranslate, not Bergamot's tiny models
Bergamot's enes, enfr and enpl models are student.tiny11 builds decoded with beam-size 1, and they write words that do not exist: the charter message "Ask an ad...
Pin kamo-shared-library 1.6.1, the only version that exists
The library moved to 1.6.1 and this service still asked for 1.6.0. There is no window in which both resolve: the library is never published to a remote, so the ...
Liveness probe on /actuator/health/liveness, not the DB-aware aggregate
The aggregate /actuator/health includes the DataSource indicator, so restarting the database failed liveness on every pod at once and restarted the whole platfo...
Accept OCI image indexes when resolving the built digest [skip ci]
The images are pushed as OCI image indexes, so asking the registry for a single image manifest only answered 404, the digest came back empty and the check faile...
Restart when a same-commit rebuild leaves pods on the old digest [skip ci]
The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...
Prove the deploy by digest, not by tag
The preceding commit stops `set image` being a silent no-op. This asserts the outcome: after the rollout, the tag is resolved to a digest at the registry and th...
A rebuild of the same commit deployed nothing and reported success
The image is tagged with the commit SHA, so rebuilding the same commit produces an identical image reference. `kubectl set image` then changes nothing, the Depl...
Stop working on translations whose caller has already given up
Three attempts of ninety seconds plus backoff is up to 274 seconds of work per translation, and every caller we have gives up long before that — KBService's cli...
Run two pods
The one @Scheduled method here, **************** populates a map held in this pod's own memory. It is supposed to run on every pod, there is nothing shared for ...
Let a rollout finish what the old pod was doing
Deploys replaced the only pod of each service with nothing to catch the requests in flight. Three settings, applied across the fleet: - preStop sleeps 10s befo...
Pin kamo-shared-library 1.6.0
The library moved to 1.6.0 while every consumer stayed on 1.5.0. Consumer CI builds the library from a fresh clone into a cold ~/.m2 and ci-settings.xml mirrors...
Size the pod above its own JVM heap ceiling [skip ci]
The image starts the JVM with -XX:MaxRAMPercentage=70 -XX:+AlwaysPreTouch, so the heap alone may take 70% of the container limit and pre-touch keeps every commi...
Route translations INTO English, not just out of it
Both providers gated supports() on "en".equals(sourceLang), so every inbound pair was decoderd before a provider was ever asked. ProviderRouter treats "no provi...
Retry the shared-library build, which the LAN uplink keeps corrupting
Three builds died today on "Tag mismatch" pulling a jar — and the mirror added an hour ago did not help, because kbservice, mcpgatewayservice and ragservice hit...
Mirror Maven Central through the Google GCS copy
Every Docker stage starts from a cold ~/.m2 and refetches the whole dependency tree, so Central sees the full weight of every concurrent service build. It answe...
Commit outstanding work in progress
Staged and committed as-is so nothing is left uncommitted in the working tree. 31 files changed, 691 insertions(+)
Harden the kubectl download against flaky egress [skip ci]
dl.k8s.io over the runner's egress intermittently drops mid-transfer: curl: (56) OpenSSL SSL_read: decryption failed or bad record mac which fails the deploy ...
Constant-time internal-auth secret compare (timing oracle)
Replace String.equals with MessageDigest.isEqual so response latency cannot leak the X-Internal-Auth shared secret byte-by-byte. Fleet-wide sweep of the copy-pa...
Migrate to k1m1 (clone+registry+kubeconfig from k1m1, drop k2m1, simple kubectl install)
Bump for kamo-shared-library 1.5.0 snapshot refresh (M2 programs catalog)
Bump LibreTranslate per-call timeout to 90s; keep single-translate backward-compat
Two follow-ups to the retry/failedKeys change: 1. Per-call request timeout was 30s. Production has runtime callers (chat, notifications, etc.) hitting the s...
Retry transient errors and surface failed keys (don't fake passthrough)
Two failure modes were indistinguishable in the response, so the script couldn't tell them apart and kept "translating" the same keys to English on every sync r...
Alias zh -> zh-Hans so en->zh actually translates
LibreTranslate's /languages endpoint advertises Chinese under the region-specific codes "zh-Hans" and "zh-Hant" (never bare "zh"), even though POST /translate a...
Drive supported targets from /languages, not stale list
The hardcoded SUPPORTED_TARGETS claimed sw/ta/etc. were supported, but no public argos packages exist for those, so every en->sw / en->ta translation request hi...
Scope concurrency to build jobs, not Kubernetes deploys
Workflow-level concurrency serialized the whole pipeline (including kubectl rollouts). Move the group to the build job only so deploy jobs from different runs c...
Rebuild for kamo-shared-library update (remove OrganizationType, add isTopLevel)
Rebuild for kamo-shared-library update (remove OrganizationType, add isTopLevel)
Rebuild for kamo-shared-library update (CREATE_CHILD_ORG right + apply-to flags)
Pulls the new RoleRightType.CREATE_CHILD_ORG (id 131), the three apply-to flags on ChildOrgSecurityModel, the two 13-arg service overloads, and the AppliedModel...
Rebuild for kamo-shared-library update (appConfig upsert-only fix)
Pulls the hardened **************** that no longer deletes appConfig rows whose service types are absent from the caller's payload — prevents silent data loss w...
Rebuild for kamo-shared-library update (effective-feature resolver)
Picks up the new AppliedModelEnforcementService methods (computeAvailabilitiesMap, isAppEffectivelyEnabled, getEffectivelyEnabledAppTypes, computeEffectiveFeatu...
Bump kamo-shared-library to 1.5.0 for applied-model enforcement
Brings this service onto kamo-shared-library 1.5.0 so it picks up the new AppliedModelEnforcementService, ChildOrgSecurityModelAppConfig entity, ServiceAvailabi...
Rebuild for kamo-shared-library update (runtime force rules + DEFAULT fallback in MemberRightsAppliedService)
Triggers a rebuild so this service picks up the updated **************** that applies template force rules and DEFAULT-template fallbacks on top of the existing...
Rebuild for kamo-shared-library update (master model, default role templates, force-rule resolver)
Triggers a rebuild so this service pulls the new kamo-shared-library revision containing Organization.branchTypeID, Organization.masterModelID, ****************...
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.
