Pin the quote letter's dotted templateKey, as the HR family already is
The constant is not the templateKey. CanonicalTemplateLoader.load derives only the FILENAME from the constant (QUOTE_SENT -> quote-sent.json) and reads template...
Guard the confirmation on a single-message delete
A member reported deleting the wrong email from /messages: the row's trash icon fired straight through to the API, so one stray click on the right edge of a row...
Pin the status-label body an org sends to drop a label
The two shapes that used to fail: an empty list, which is what clearing the last remaining label sends and what the handler rejected as malformed, and an entry ...
Pin the attachment sniff to real encoder output
The existing cases build a header by hand, which tests the code against my belief about the format rather than against the format. These sixty-four-byte prefixe...
Match the SIP status code, not the reason phrase
sip-probe.py required the literal string "200 OK". 2600Hz's Kamailio config answers OPTIONS with "200 Rawr!!", so the probe reported a healthy, correctly config...
Probe SIP for real, and assert the white-label holds on the wire
A TCP connect to 5060 proves almost nothing — it succeeds against anything listening, and on UDP it cannot fail at all. That ambiguity is exactly what led me to...
Fail the build on a @Transactional Spring cannot advise
Two shapes get no transaction advice at all, and neither is visible at a call site or in a unit test: a non-public method, which the proxy cannot intercept, and...
Pin the reason dialog, and let app/patients be tested at all
app/patients/** was in no vitest include pattern, so a test written beside the clinical console's own kit was collected by nothing and would have passed by neve...
Pin the two form rules that fail silently
Both decide what NOT to send, which is the half of a form with no visible symptom when it goes wrong. A blank remittance line must not become a zero. Every lin...
Actually exercise the terminal guards
The test that shipped with them asserted only that an ACCEPTED quote reports itself terminal — true before the guards existed and still true if both were delete...
Pin toSessionType and backendCategoryFor
Neither had a single caller in this file before now, despite being exactly the class of function its own header warns about: a one-character typo ('Text' for 'T...
Parse every core repository query against the real mapping
Spring Data validates an annotated @Query at bean creation, so a bad JPQL path ships green and crash-loops the consuming service instead of failing CI. The clin...
Pin down bucketOf and unreadForRow against a repeat
This file just shipped four silent defects in one review round — an AI row that fell through to the wrong bucket, a title that was never read off the row, a buc...
Prove library HQL parses on the Hibernate this service actually runs
kamo-shared-library builds on Boot 3.3.4 / Hibernate 6.5; BillingService runs Boot 3.1.5 / Hibernate 6.2.13. The library's own HQL tests therefore pass vacuousl...
Pin the optional signature header and cover all three failure branches for body leaks
Baseline the desktop probe, which is guarded where the scan cannot see
**************** has been failing on main since ba3f85c. DesktopProbeController#probe is not unguarded — it checks X-Internal-Auth through authorized(auth), con...
Ratchet that a blocked capability with no app has a call-site guard
Splitting an app from the capability inside it is what lets a clinic hold a phone system and a video room at all, but it moves the enforcement burden. PhiModule...
Give the audit test the new constructor argument
Missed in the previous commit, which I pushed off a grep's exit code instead of maven's — so a red suite went out as green. The controller gained a ClassicSaveP...
An opt-in probe that executes the grid's SQL, not just its HQL
/leads went down on 2026-08-20 with 'missing FROM-clause entry for table a2_1' and no test caught it, because none of them could: the library compiles against H...
Catch a template-built i18n key that next-intl cannot reach
The catalogue's keys contain dots, and they were written into en.json as literal flat keys. next-intl resolves by splitting on dots, so every one of the 46 even...
Make 'do not hand-edit the unenforced list' enforceable
The list has been wrong four times (58 -> 52 -> 47 -> 57) and every single time because it was edited by reasoning instead of regenerated. The file already said...
Strengthen hrOverview id-precision and attendance-state coverage
The precision test used a 15-digit memberId, which round-trips through Number() losslessly and never proved the join key stays a string. Switch to an id past Nu...
Pin how the pool divides into per-mailbox limits
Dovecot needs a byte figure per mailbox, but storage is one organization-wide pool across eighteen domains. The division has to hold one property above all — th...
Pin the delegation-mode semantics
These predicates are what the surfaces hide themselves on, so getting one wrong either offers a button that cannot work or silently permits a charge the owner m...
Pin the deprecated-alias exclusion
The catalog key is ServiceType's numeric id, and several retired constants deliberately share one with the app that replaced them — DOC_MANAGER with DOCS on 8, ...
Script the half of the scan invariant this repo cannot see
SharedLibBeanSafetyTest can only police the library: it knows a bean requires a repository from some package, and nothing about whether the ~40 services scan it...
Detect the unsafe repository dependencies instead of listing them
The guard carried 29 baselined offenders and a location exemption, and caught none of the four outages it exists to prevent. Both were guesses standing in for a...
Cover the chat-routing propagation that broke assignLoanOfficer
assignLoanOfficer gained a step that looks up the loan's source lead to reroute the borrower's open public-chat session. That lookup runs a JPQL query through t...
Pin the contact-point and linker invariants, and drop timeline count queries
The two classes the whole feature rests on had no tests, and all three properties they guarantee fail silently in production: an unmatched call is indistinguish...
Fail the build when a repository package is missing from the scan
This service has @ComponentScan("com.kamo") but an EXPLICIT @EnableJpaRepositories list. The moment a bean here needs a repository outside that list, the reposi...
Ratchet on endpoints that resolve no session
ResourceServerConfig is anyRequest().permitAll() and @EnableMethodSecurity appears nowhere in this service, so every @PreAuthorize is inert and public is the de...
Prove closed-loan trainer convergence + retire + concurrency
Drives ClosedLoanTrainerService across successive passes with the (pre-live) MeridianLink wire and vision read stubbed, locking the behaviour the design hinges ...
PlatformOAuthProviderType append-order guard
Regression-locks the Phase 5 pull-forward: MERIDIANLINK(8,"meridianlink", "MeridianLink Mortgage") must stay the LAST constant so no existing provider's persist...
Lock the system-managed originator (projection, freeze, assignment)
8 tests over LoanTransactionService: live projection fills name/NMLS/subject-state license + org and marks LIVE; stale hand-entry is cleared when no LO is assig...
[11] doc 11 §6.2 single-active enum↔DDL drift guard
**************** is derived from enum metadata, but the DB backstop is four partial-unique indexes in KamoInitializer whose type IN(...) lists HARD-CODE the sin...
Update CanonicalTemplateLoaderTest for the change-password template set
Commit 7c6b20f (change-password support) added the canonical PASSWORD_CHANGED template and reworded EMAIL_VERIFICATION's expiry variable ({{expiryMinutes}} → {{...
Lock the D28 stage-override write logic (legal-wall reject, delete+audit, rollback)
6 tests over the new MlosConfigWriteService methods: legal-wall stages rejected before any write; routine upsert bumps profileVersion + appends the WORM change-...
Tier 4 — LoanPaymentPostingService unit tests
Six mocked-repository unit tests covering the heart of the payment posting: - **************** payment of $100 against loan with $25 fees / $50 interest / la...
Smoke script for existing /mortgage-apps API end-to-end through KamoLOS proxy
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.
