765ed36340
The owner's wording, taken from the PR 111 review, with one correction from the
PR 113 review folded in: {temp} {word} rather than {temp}°, because the degree
sign reads as nothing through piper.
What the wording changes: query_unknown drops "не знаю.", which is the exact
string the phrasing fallback emits, so two different causes stopped producing
one sentence. weather_nolocation stops reading voice.weather.default_location
out loud and just asks which city. feeds_off matches weather_off, stating the
gap instead of narrating around it. The passive doubles and the near-identical
pairs go.
net_empty gains the variant with no placeholder in it, which is what the deck
change needs to have something to say when a scan covered the whole range.
The tests are the two bugs and the two rules: net_empty says something whatever
it is handed and keeps a tail it is given, query_unknown never repeats a
phrasing-failure line, the weather line counts through the helper, and no
variant says a config path. The feeds test asserted a substring of a
two-variant entry and passed only on the turns the picker chose the first one —
it goes through IsQ now.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGTGCWX33aX8SMBSRz9VmS
96 lines
4.7 KiB
JSON
96 lines
4.7 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"name": "russian query answers and gaps v1",
|
|
"notes": [
|
|
"What a query source says when it answers from something other than the model, and what it says when it has nothing. Edit the wording here, no Go changes needed.",
|
|
"Rules: she is feminine about herself, he is a man addressed as ты. Never вы/вас/ваш, never он/его about him. No pet names.",
|
|
"A gap names its own gap. \"the feeds are not configured\", \"the search failed\" and \"I do not know\" are different sentences and must never collapse into one entry.",
|
|
"query_unknown here is a real answer — she looked and found nothing. The phraser's identical-looking line in fallbacks_ru_v1.json is a failure to phrase. Two files, two entries, on purpose, so no variant here may repeat a string from there.",
|
|
"Placeholders: {key} {value} a stored fact, {when} when she wrote it, {items} what she found, {text} a passage, {location} {temp} {condition} the weather, {word} the counted noun in the form {temp} needs, {tail} a caveat about how the answer was gathered.",
|
|
"A count never carries a hardcoded noun. Russian inflects it — 1 градус, 2 градуса, 5 градусов — so the number goes in {temp} and the noun comes from the Go helper through {word}.",
|
|
"{tail} is optional, and an entry that can be said without it needs one variant carrying no placeholder at all. Otherwise nothing is fillable and she says nothing, which he hears as a hang.",
|
|
"fixed: true means exactly one variant and no picking. Used where the wording is load-bearing: the personal boundary, and the refusal to re-ask a question for another day."
|
|
],
|
|
"entries": {
|
|
"query_unknown": {
|
|
"variants": ["ничего не нашла.", "искала — не нашла."]
|
|
},
|
|
"other_day": {
|
|
"fixed": true,
|
|
"variants": ["про другой день так не отвечу — спроси целиком."]
|
|
},
|
|
"personal_none": {
|
|
"fixed": true,
|
|
"variants": ["не знаю — не нашла у тебя такой записи."]
|
|
},
|
|
"fact_when": {
|
|
"variants": ["записала это {when}"]
|
|
},
|
|
"fact_value": {
|
|
"variants": ["у меня записано: {key} — {value}", "вот что записано: {key} — {value}"]
|
|
},
|
|
"found": {
|
|
"variants": ["вот что я нашла: {text}", "нашла вот это: {text}", "есть такое: {text}"]
|
|
},
|
|
"page_text": {
|
|
"variants": ["вот что на странице: {text}", "на странице вот это: {text}"]
|
|
},
|
|
"page_blocked": {
|
|
"fixed": true,
|
|
"variants": ["эта страница закрыта для чтения — robots.txt не разрешает."]
|
|
},
|
|
"page_empty": {
|
|
"variants": ["страница открылась, но читать там нечего."]
|
|
},
|
|
"feeds_off": {
|
|
"variants": ["ленты не настроены."]
|
|
},
|
|
"feeds_new": {
|
|
"variants": ["вот что нового: {items}", "нового вот что: {items}"]
|
|
},
|
|
"feeds_empty": {
|
|
"variants": ["в лентах пока ничего нового.", "в лентах тихо."]
|
|
},
|
|
"feeds_empty_topic": {
|
|
"variants": ["по этой теме в лентах пока ничего.", "по этой теме в лентах тихо."]
|
|
},
|
|
"weather_now": {
|
|
"variants": ["в {location} сейчас {temp} {word}, {condition}.", "{location}: {temp} {word}, {condition}."]
|
|
},
|
|
"weather_off": {
|
|
"variants": ["погода не настроена."]
|
|
},
|
|
"weather_nolocation": {
|
|
"fixed": true,
|
|
"variants": ["для какого города?"]
|
|
},
|
|
"net_empty": {
|
|
"variants": ["в сети никого не нашла.", "в сети никого не нашла{tail}."]
|
|
},
|
|
"fail_plan": {
|
|
"variants": ["не получилось собрать план."]
|
|
},
|
|
"fail_notes": {
|
|
"variants": ["не получилось посмотреть записи."]
|
|
},
|
|
"fail_feeds": {
|
|
"variants": ["не получилось посмотреть ленты."]
|
|
},
|
|
"fail_calendar": {
|
|
"variants": ["не получилось проверить календарь."]
|
|
},
|
|
"fail_weather": {
|
|
"variants": ["не получилось узнать погоду."]
|
|
},
|
|
"fail_answer": {
|
|
"variants": ["не получилось найти ответ."]
|
|
},
|
|
"fail_page": {
|
|
"variants": ["не получилось прочитать страницу."]
|
|
},
|
|
"fail_netscan": {
|
|
"variants": ["не получилось просканировать сеть."]
|
|
}
|
|
}
|
|
}
|