**************** — every charter owner table carries every CharterItem column and its owner, from the docs/sql files in order and a dated legacy baseline (KamoCollab CP03 T7)
The program's one cross-table charter DDL guard (master R1-12). It reads every docs/sql/*.sql in filename order and collects what the six owner tables (dept_req...
MailSearchWiringTest registers the recipient-domain validator EmailController now takes (SP98 T26)
ec2c638 gave EmailController a RecipientDomainValidator; the wiring test's context did not have one, so it has failed on main since 2026-09-28 **************** ...
Pin what an org with no active chat-policy set answers (KamoCollab CP00 final fix)
sp00verify's only chat-policy set is CP02 Task 6's enforced version 1, now an inactive history row. The new test pins the facts CP00 Task 12's restore rests on ...
Pin that a same-org Enter-As is refused before any audit row or session (KamoCollab CP00 final fix)
EnterAsController answers 400 'target is current session organization' before ImpersonationAudit.enteredAs runs, on both branches, so no same-org entry can writ...
Pin Luna's voice view before and after Task 21 sets her sex (SP96)
Sp96LunaVoiceExpectationsTest runs the resolver over production's inputs, read 2026-10-05: her migrated Eleven Flash v2.5 / Bella row and the five TTS voice lis...
The wiring test no longer registers the legacy chat facts repository, which shared-lib removes (KamoCollab CP02 T18)
The CI image build compiles test sources (package -DskipTests), so this test must stop naming ChatPolicyFactsRepository before shared-lib drops it. It passes ag...
The route guard expects twelve charter URLs now that SP96 dropped the voice catalogue (SP98 T23)
e844e7f2f removed charterApi.voices and its BFF route (an AI member's voice is chosen on its profile), so the client calls 12 charter URLs; the guard's sanity f...
The route guard expects twelve charter URLs now that SP96 dropped the voice catalogue (SP98 T23)
e844e7f2f removed charterApi.voices and its BFF route (an AI member's voice is chosen on its profile), so the client calls 12 charter URLs; the guard's sanity f...
Find the signature editor's Save by its dictionary key, and expect an AI line's outside-calls switch (SP98 T22)
The signature editor's Save label became a dictionary key in UI sweep C, and the test still looked for the English word; it is skipped without KAMO_SHARED_LIB, ...
Find the signature editor's Save by its dictionary key, and expect an AI line's outside-calls switch (SP98 T22)
The signature editor's Save label became a dictionary key in UI sweep C, and the test still looked for the English word; it is skipped without KAMO_SHARED_LIB, ...
Pin that the SP93 host patch keeps the first pre-image as its backup
The existing re-run test patches nothing on its second run, so it never reaches the backup and could not catch a script that overwrote it. The new test rolls th...
Capture the rights and session-timeout waterfall goldens on unchanged main (CP01 T1)
RightsWaterfallGoldenTest (933 lines: cascade 588, templates 324, closure 18, AI 3) a94381d6 and checked in both fixture modes (lazy collections, bulk repositor...
SP96 the pin test's real controller takes the charter-change publisher
SP95 T6 (de022c1) added KamoaiEventPublisher to MemberCharterController's constructor after this test was written, so the rebased test no longer compiled (and C...
SP96 the charter's VOICE TTS pin is refused and resolves to nothing
SecurityService picks up the retired pin from shared-lib (Task 14); no SecurityService code read it. Pins the service's side: a member item naming voiceModelId/...
Stopping the repeat from an edited instance leaves that instance as it showed
SP98-F-2. The count-exhausted way into a split that leaves one event was pinned by fdd44fc; this pins the other way in, an explicit stop from an edited instance...
The OAuth-default guard reads the platform API host from the shared constant
Follows 8f68912. The guard asserted that the YAML defaults use the paths the settings screen advertises, but it hard-coded the api.kamocrm.com host. The default...
A group chat of two AI members with identical columns holds both (SP10)
SP10 T47, live: chat_find_or_create_dm for the owner, Ava and Ben answered 400 "one or more memberIds not found": TeamMember's value equality kept one of the tw...
Pin the bare cookie domain against Tomcat's own cookie processor
bc54945 stopped logout clearing *** on ".kamocrm.com", which Tomcat's RFC 6265 processor refuses by throwing from addCookie: logout answered 500 after the sessi...
OrgPrimaryDomain may read an organization's domains
It is the one rule the no-reply sending domain is chosen by, for the three files already allowed here; it builds no link. Completes e43179d.
Hold the Inbox note and the task tone's copy to what they describe (KamoAI SP06)
The Inbox's locked note said its tasks could not be reordered while ChecklistBody lets them be dragged into a new order, and Settings -> Sounds described the ta...
MailSearchWiringTest registers the outgoing composer EmailController takes
EmailController gained OutgoingMailComposer in 3908372; the wiring test's Docstor list did not, so it failed with UnsatisfiedDependencyException. OutgoingMailCo...
Accept either read-timeout message in the owner-client test
OkHttp arms the socket's SO_TIMEOUT ("Read timed out") and its own watchdog ("timeout") with the same 300 ms; either can fire first, so the assertion failed abo...
Compose manifest, fixtures and 232 goldens from the legacy renderers
The fixtures carry the logo ladders (full: header rung with ?v=, a laddered logo badge; company: header and signature rungs without a revision) and the uploaded...
Fictional people in the correspondent-name tests
They used a real lead's name and address from the report.
Fictional people in the correspondent-name tests
They used a real lead's name and address from the report.
Fictional people in the correspondent-name tests
They used a real lead's name and address from the report.
Fictional people in the correspondent-name tests
They used a real lead's name and address from the report.
StatusReasonAdviceTest's alias case also needs MANAGE_EMAIL_ACCOUNTS
Same shape as the AliasResponseMemberIsTextTest fix: this class's one shared session lacked the right, so createAlias's new gate answered 403 "MANAGE_EMAIL_ACCO...
Growth Hub files are reported on their own line
This pins the GROWTH_HUB domain kamo-shared-library gained today. Before it, no domain claimed the Growth Hub's two associations, and the imaging pass dropped t...
AliasResponseMemberIsTextTest's session carries the right createAlias now needs
The full suite caught what the targeted run alone would not have: this fixture's session had no rights on it, so createAlias's new MANAGE_EMAIL_ACCOUNTS gate 40...
A shared mailbox response carries no IMAP login
GET /api/email/shared-mailboxes (and /my-access, create, update) return SharedMailboxEntity itself to any session in the organization. Until the library's crede...
A search term reads the lead's email
Walks the grid specification's LIKE branches on the Hibernate this service runs (the HQL rendering leaves function arguments out, so it cannot show which column...
The sendToUser ratchet counts three overloads [skip ci]
TransactionalSendRatchetTest pinned sendToUser at two overloads, so that its first test provably inspects them rather than passing on none. c47fcf6 added the bl...
Count PLAY_CHESS, PLAY_HOLDEM and MANAGE_EMAIL_OPT_OUTS
The two game roots shipped without moving the audited shape, so RoleRightHierarchyTest had been red on main since. The opt-out right is a child of MANAGE_EMAIL_...
MANAGE_OUTBOUND_EMAIL_HOSTS is enforced in EmailService
PlatformOutboundHostsController checks it through SessionPlatformFacts and the shared PlatformRightsResolver, so it is listed with the rights enforced elsewhere...
Spring can build the bulk-email, warm-up and delivery beans
Several of them have a second constructor taking a clock for tests, and with two constructors Spring needs to be told which to use or the whole context fails at...
Parse the desk's audience query at test time
findHolderMemberIdsOf lives in the shared library, so nothing in this package parsed it — and a mistyped path there crash-loops MediaService at boot, every endp...
Cover the topInset the maximized window already honours
ToolWindowShell has taken a topInset since the tab strip landed — it starts the window below the strip and stops it short by the same amount, or the strip is dr...
Prove submit actually writes the signature date, and ignores the wire
The unit tests around this cover the pieces — the format, the type predicate, the required-field exclusion — and none of them can see the wiring. A signature_da...
The motion guard matched a form, and longhand opted out of it
The reduced-motion walker scanned for the `animation:` shorthand. Writing the same animation as `animationName:` plus longhand properties — the first refactor a...
Prove the chat window's menu consults the entitlement too
The companion to the MediaService endpoint test, at the second door. The chat games menu had the entitlement hole independently of the nav icon — it asked for t...
The ramp-order fallback was a branch no test took
The invariant added in 80aee0ee falls back to the whole allowance when `clockStages` reports no critical boundary — which happens when the clock opens critical ...
The two clock ramps are independent, but not unordered
The colour and the sound escalate on deliberately different beats — a rate and a state are different vocabularies, and each says something the other cannot. Tha...
Prove the endpoints actually CONSULT the entitlement, not just that it works
GamesEntitlementTest proves the gate answers correctly. Nothing proved the three controllers ask it — and that distinction is the entire defect this change set ...
Stop pinning setThemeSlug's argument list in a source assertion
`tabOrgResolution` was red on main. It asserts on the SOURCE of app/validate/page.tsx and required the literal text `setThemeSlug(orgRef)`, so `f9bd7621` — whic...
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.
