Strings family 2: capture acknowledgements into ack_ru_v1.json #110

Closed
claude wants to merge 4 commits from task/502-strings-family-2-capture-acknowledgement into task/501-strings-family-1-phrasing-fallbacks-into
Contributor

Closes Vikunja #502.

Opened during an unattended overnight run: the diff-budget block was off (task overnight). Read the diff, not only the tests.

Acceptance criteria and quality gate are in TASK.md on this branch.
Review the review, not the diff — leave comments and the agent will apply them via task start 502.

Closes Vikunja #502. Opened during an unattended overnight run: the diff-budget block was off (`task overnight`). Read the diff, not only the tests. Acceptance criteria and quality gate are in `TASK.md` on this branch. Review the review, not the diff — leave comments and the agent will apply them via `task start 502`.
claude added 4 commits 2026-08-03 23:27:01 +02:00
Every family of hand-written Russian lines wants the same mechanics: a
schema-versioned embedded file, variants with anti-repeat picking, and a floor
of Go literals under it. The acknowledgements are the second family, and
copying eighty lines of loader per family was not going to survive five of them.

Each family keeps its own file, keys, floor, validation and accessor names.
What she says after storing something he said, and what she says when storing
it failed. They were literals in eight files under cmd/mavend and the stub
replier.

He hears these many times a day, which is why most entries carry variants:
identical wording is what makes a confirmation stop registering as one. The
quiet-mode lines are fixed — they report a state, and a state report that
reworded itself would read as a different state.

His data stays Go-side. The file holds "отметила: {key} = {value}"; nothing he
said lives in the copy.
The daemon tests that compared against one literal ask the entry instead: IsAck
names the line she could have said without pinning the wording. The eval scores
every ack variant on the persona checks the nudges already pass.
kami reviewed 2026-08-04 12:35:31 +02:00
@@ -0,0 +1,84 @@
{
Owner
"ack_fact":       { "variants": ["записала.", "запомнила."] },
"ack_fact_key":   { "variants": ["отметила: {key}", "записала: {key}", "запомнила: {key}"] },
"ack_fact_kv":    { "variants": ["отметила: {key} = {value}", "записала: {key} — {value}", "запомнила: {key} — {value}"] },
"ack_note":       { "variants": ["сохранила заметку.", "записала в заметки."] },
"ack_reminder":   { "variants": ["напомню."] },
"ack_task":       { "variants": ["записала: {text}", "добавила в задачи: {text}"] },
"ack_task_urgent":{ "variants": ["срочное, записала: {text}", "поняла, это срочно: {text}"] },
"ack_task_duplicate": { "variants": ["это уже в списке.", "такое уже есть в задачах."] },
"ack_nudge":      { "variants": ["отметила."] },
"ack_snooze":     { "variants": ["отложила.", "напомню попозже."] },
"ack_generic":    { "variants": ["приняла.", "поняла."] }
``` "ack_fact": { "variants": ["записала.", "запомнила."] }, "ack_fact_key": { "variants": ["отметила: {key}", "записала: {key}", "запомнила: {key}"] }, "ack_fact_kv": { "variants": ["отметила: {key} = {value}", "записала: {key} — {value}", "запомнила: {key} — {value}"] }, "ack_note": { "variants": ["сохранила заметку.", "записала в заметки."] }, "ack_reminder": { "variants": ["напомню."] }, "ack_task": { "variants": ["записала: {text}", "добавила в задачи: {text}"] }, "ack_task_urgent":{ "variants": ["срочное, записала: {text}", "поняла, это срочно: {text}"] }, "ack_task_duplicate": { "variants": ["это уже в списке.", "такое уже есть в задачах."] }, "ack_nudge": { "variants": ["отметила."] }, "ack_snooze": { "variants": ["отложила.", "напомню попозже."] }, "ack_generic": { "variants": ["приняла.", "поняла."] } ```
kami requested changes 2026-08-04 12:50:46 +02:00
kami left a comment
Owner

see comment for json.

see comment for json.
Author
Contributor

Landed transitively. This branch is already an ancestor of master, so there is nothing left to merge and Gitea did not close the pull request on its own.

Reviewed as part of a bottom-up pass over the open stack. The four open findings from that pass are worth a follow-up task, and none of them blocks anything here:

  • internal/router/stage0.go has two grammars named rest-of-day-query, and the second is dead.
  • internal/router/numwords.go holds ruNumerals, a second copy of the lexicon cardinals.
  • cmd/mavend/reminderbody.go and cmd/mavend/historyq.go still match Russian by hand.
  • internal/weather/openmeteo.go guesses declension by reversing endings, and bails under four runes.
Landed transitively. This branch is already an ancestor of `master`, so there is nothing left to merge and Gitea did not close the pull request on its own. Reviewed as part of a bottom-up pass over the open stack. The four open findings from that pass are worth a follow-up task, and none of them blocks anything here: - `internal/router/stage0.go` has two grammars named `rest-of-day-query`, and the second is dead. - `internal/router/numwords.go` holds `ruNumerals`, a second copy of the lexicon `cardinals`. - `cmd/mavend/reminderbody.go` and `cmd/mavend/historyq.go` still match Russian by hand. - `internal/weather/openmeteo.go` guesses declension by reversing endings, and bails under four runes.
claude closed this pull request 2026-08-04 18:34:58 +02:00

Pull request closed

Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kami/Maven#110