From d819fc09f00b2b8cac83ff2e65b348faa18e378d Mon Sep 17 00:00:00 2001 From: claude Date: Tue, 4 Aug 2026 01:44:18 +0400 Subject: [PATCH] say: the summaries copy file (V-506) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit summary_ru_v1.json: the morning plan, the ranked task list, and the habit sentences read back out of behaviour records. Own schema_version. The empty cases are the point. "I have not seen enough yet" and "there is nothing there" are different claims about his life, and the habit entries keep the first — three days of taps produce the same "обычно ты ..." as a year of them. plan_rest_empty stays separate from plan_day_empty for the same reason: a day that is over was not an empty day. Count forms stay in Go. день/дня/дней and задача/задачи/задач are morphology, and they arrive here through {word}. Loader in the next commit. --- internal/say/summary_ru_v1.json | 140 ++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 internal/say/summary_ru_v1.json diff --git a/internal/say/summary_ru_v1.json b/internal/say/summary_ru_v1.json new file mode 100644 index 0000000..d4d55a9 --- /dev/null +++ b/internal/say/summary_ru_v1.json @@ -0,0 +1,140 @@ +{ + "schema_version": 1, + "name": "russian summary sentences v1", + "notes": [ + "The sentences she builds around aggregated data: the morning plan, the ranked task list, and the habits she reads back out of behaviour records.", + "Rules: she is feminine about herself, he is a man addressed as ты. Never вы/вас/ваш, never он/его about him. No pet names.", + "\"I have not seen enough yet\" and \"there is nothing there\" are different claims, and the habit entries keep the first. Three days of taps do not license a statement about his life, so habit_*_none says she does not see a pattern, never that he has no habits.", + "Placeholders: {date} a formatted date, {items} a joined list, {day} a weekday name, {span} the stretch of records a habit claim rests on, {n} a count, {word} a Russian count form built Go-side.", + "The count forms (день/дня/дней, задача/задачи/задач) are morphology, not copy. They stay in Go and arrive here through {word}.", + "fixed: true means exactly one variant and no picking. Used where the wording is the distinction: the day that is over versus the day that was empty, and the list of tasks he never confirmed." + ], + "entries": { + "plan_rest_empty": { + "fixed": true, + "variants": ["на сегодня больше ничего не запланировано."] + }, + "plan_day_empty": { + "fixed": true, + "variants": ["на {date} ничего не запланировано."] + }, + "plan_day": { + "fixed": true, + "variants": ["план на {date}: {items}."] + }, + "plan_uncertain": { + "fixed": true, + "variants": ["похоже, {line}"] + }, + + "tasks_none": { + "fixed": true, + "variants": ["задач нет."] + }, + "tasks_first": { + "fixed": true, + "variants": ["сначала: {items}."] + }, + "tasks_candidates": { + "fixed": true, + "variants": ["ещё я нашла, но ты не подтвердил: {items}."] + }, + + "reason_overdue": { + "fixed": true, + "variants": ["просрочено"] + }, + "reason_overdue_day": { + "fixed": true, + "variants": ["просрочено на день"] + }, + "reason_overdue_days": { + "fixed": true, + "variants": ["просрочено на {n} дн."] + }, + "reason_today": { + "fixed": true, + "variants": ["сегодня"] + }, + "reason_tomorrow": { + "fixed": true, + "variants": ["завтра"] + }, + "reason_in_days": { + "fixed": true, + "variants": ["через {n} дн."] + }, + "reason_important": { + "fixed": true, + "variants": ["важно"] + }, + "reason_urgent": { + "fixed": true, + "variants": ["срочно"] + }, + "reason_stale": { + "fixed": true, + "variants": ["давно в списке"] + }, + + "habit_weekday": { + "variants": ["по {day} ты обычно {items}.", "по {day} у тебя обычно {items}."] + }, + "habit_weekday_same": { + "variants": [ + "по {day} у тебя нет ничего особенного — то же, что и в остальные дни: {items}.", + "по {day} всё как обычно — то же, что и в остальные дни: {items}." + ] + }, + "habit_weekday_none": { + "variants": [ + "по {day} я пока не вижу у тебя ничего постоянного.", + "по {day} я пока не набрала записей, чтобы говорить о постоянном." + ] + }, + "habit_weekend_both": { + "variants": ["по субботам ты обычно {sat}, по воскресеньям — {sun}."] + }, + "habit_weekend_sat": { + "variants": ["по субботам ты обычно {items}, а по воскресеньям ничего постоянного."] + }, + "habit_weekend_sun": { + "variants": ["по воскресеньям ты обычно {items}, а по субботам ничего постоянного."] + }, + "habit_weekend_same": { + "variants": [ + "по выходным у тебя нет ничего особенного — то же, что и в остальные дни: {items}.", + "по выходным всё как обычно — то же, что и в остальные дни: {items}." + ] + }, + "habit_weekend_none": { + "variants": [ + "по выходным я пока не вижу у тебя ничего постоянного.", + "по выходным я пока не набрала записей, чтобы говорить о постоянном." + ] + }, + "habit_overall": { + "variants": ["обычно ты {items} — {span}."] + }, + "habit_overall_none": { + "variants": [ + "я ещё не набрала достаточно записей, чтобы говорить о привычках.", + "записей пока мало — на привычки я так не сошлюсь." + ] + }, + "habit_span_today": { + "variants": ["по записям за сегодня"] + }, + "habit_span_days": { + "variants": ["по записям за последние {n} {word}"] + }, + "habit_unglossed": { + "fixed": true, + "variants": ["отмечаешь «{key}»"] + }, + "habit_at": { + "fixed": true, + "variants": ["{gloss} около {time}"] + } + } +}