708a69375f
A task extracted from mail deduped on the live-norm index only, so once he finished it the row left the live set and the next poll of the same immutable message re-extracted it as a fresh candidate. mavmaild is a read-only reader and marks nothing read, so that repeats forever. Derived rows now carry an ext_id built from the message uid and the extracted span, unique across every status, while voice keeps live-only norm dedupe because saying an errand again is the recurrence signal. A derived source can no longer capture straight to open, and saying a task out loud that Maven had only proposed promotes the candidate instead of answering that it is already in the list. SetTaskStatus was classified AuthRead. Resolving a task is not additive, it erases work off his list, so it is a write, and the row now records the caller that moved it. ListTasks was unbounded. The list-query matcher claimed any utterance with "что мне делать", including "с чем мне помочь", and the urgency stripper matched inside words. Found in review of #60.
60 lines
2.1 KiB
JSON
60 lines
2.1 KiB
JSON
{
|
|
"_comment": [
|
|
"The task capture and task-listing vocabulary. Embedded by task_phrases.go.",
|
|
"",
|
|
"These are lexicon, not logic: which words mean 'put this on the list' is a",
|
|
"fact about how he speaks, and it changes as he uses the thing. Keeping them",
|
|
"in Go meant every new phrasing was a source diff.",
|
|
"",
|
|
"capture_prefixes must be LEADING phrases. 'добавь в задачи купить молоко' is",
|
|
"a capture; 'я не добавил молоко в список' is him talking, and only position",
|
|
"tells them apart. There is deliberately no 'надо'/'нужно' entry: 'надо бы",
|
|
"поспать' is a mood, not a task, and guessing would fill the list with them.",
|
|
"",
|
|
"urgency markers carry the weight he stated out loud. Two rungs only:",
|
|
"'срочно' is a deadline he has not named and 'важно' is a preference. A third",
|
|
"shade would be a distinction he never makes.",
|
|
"",
|
|
"list_nouns are the nouns that make a question be about the list.",
|
|
"list_shortcut_nouns are the subset that stand alone as a whole utterance",
|
|
"('задачи'), which the longer nouns do not ('дел')."
|
|
],
|
|
"capture_prefixes": [
|
|
"добавь в задачи",
|
|
"добавь в тудушки",
|
|
"добавь в список задач",
|
|
"добавь в список дел",
|
|
"добавь в список",
|
|
"добавь задачу",
|
|
"запиши в задачи",
|
|
"запиши задачу",
|
|
"новая задача",
|
|
"поставь задачу",
|
|
"в задачи",
|
|
"add a task",
|
|
"add task",
|
|
"add to my tasks",
|
|
"add to tasks",
|
|
"new task"
|
|
],
|
|
"urgency_markers": [
|
|
{ "word": "срочно", "weight": 3 },
|
|
{ "word": "urgent", "weight": 3 },
|
|
{ "word": "важно", "weight": 2 },
|
|
{ "word": "important", "weight": 2 }
|
|
],
|
|
"list_nouns": [
|
|
"задачи",
|
|
"задачах",
|
|
"задач",
|
|
"задачам",
|
|
"дела",
|
|
"делах",
|
|
"дел",
|
|
"tasks",
|
|
"todo",
|
|
"todos"
|
|
],
|
|
"list_shortcut_nouns": ["задачи", "задач", "tasks"]
|
|
}
|