Catalogue management

Why a capability answers in Hebrew and not English, and how to fix it

A capability can publish complete in every other way and still be unreachable in one language — the coverage report finds the gap and fills it without deleting anything.

By The Kav team Published 2 min read

A capability can pass every check that exists — a complete contract, complete semantics, a clean draft gate, a successful publish — and still be invisible to an entire language, because nothing in that path checks whether the capability has any way to be found in it.

The gap that looks like a working system

No English synonym in the registry means the phrase "hotline" or "106" retrieves nothing at all when an English speaker asks for it — not a wrong capability, none. The resident gets a fallback answer, the transcript shows a turn that answered nothing in particular, and no other screen in the console says a word, because from every other angle the capability looks finished. It's the platform's own working example: an unfilled English gap here is the entire, sole cause of that specific miss.

Reading the coverage report

/catalogue/synonyms is a table, not a list — capabilities down the rows, the city's own languages across the columns, gaps marked distinctly from a low-but-present count. It's counted over published capabilities only; a draft with no synonyms yet is unfinished authoring, not a live gap, and is called out separately rather than inflating the number you're trying to drive to zero.

Terms in a language your city doesn't currently offer aren't treated as gaps either, and they're never silently deleted. A city that stopped offering Amharic still holds its Amharic phrases; the report surfaces them as an "unoffered" count and leaves them exactly as they are.

Filling a gap without losing what's already there

Click a gap cell and a small panel opens for that one capability and language. It shows the terms already stored for every other language on that row, and the new phrases you type are strictly additive — the underlying mutation actually replaces the whole synonym set, so the form sends back everything the row already held (in every language, not just the one you're editing) plus what you just added. Typing English phrases into an English gap never touches the Hebrew ones sitting beside it.

A capability with exactly one synonym in a language is worth a second look even though it isn't flagged as a gap — a single, narrow phrase is often as unreachable in practice as none at all.

What this screen deliberately won't fix

A draft capability's empty synonym cell has no fill control here — it's unfinished authoring, not a live gap, so the fix is the ordinary capability authoring form, not this report. This screen exists for exactly one job: making a data gap that "looks like a working system" visible and fixable, for capabilities that have already shipped.