📱 Доска iOS

всеканоны и докиворкеры↗ WEB↗ Легаси
IOS-065 · Задача · Переводчик · both

Частотные словари: закрыть дефицит 21 языка

Закрыт P2 ведёт: translate-baselines
Суть
ДЕФИЦИТ. В меню переводчика 101 язык. Частотный словарь есть у 80. Без словаря — 21.

Словарь нужен для разбора ИСХОДНОГО текста: по нему отсекаются фоновые слова и
остаются термины. Без него глоссарий для этих языков собирается вслепую, поэтому
дефицит бьёт по качеству, а не по доступности — переводить на них можно уже сейчас.

СПИСОК (id — имя — почему не вышло у прошлого исследователя, из UNSUPPORTED.md):

Нет списка в выбранных источниках (12):
  kl Kalaallisut · se Davvisámegiella · sma Åarjelsaemien · smj Julevsámegiella
  smn anarâškielâ · sms sääʹmǩiõll · tg тоҷикӣ · ne नेपाली · kok Konkani
  nn Norwegian Nynorsk · zu Zulu · sd سنڌي

Источник нашёлся, но короче 10 000 (8):
  yo Yorùbá · br Brezhoneg · uz Oʻzbekcha · ht Kreyòl Ayisyen · la Latin
  mai Maithili · my Burmese · or Odia

Не прошёл однобуквенный инвариант (1):
  jv Javanese

ОТДЕЛЬНО: словарь ar-eg лежит в наборе, но такого пункта в меню НЕТ — либо
подключить, либо убрать, чтобы набор и меню сходились.

ЧТО СЧИТАЕТСЯ СДЕЛАННЫМ
1. По каждому из 21 языка — либо готовый артефакт того же формата, что и
   остальные 80 (см. src/lib/translation/baseline/manifest.json: language,
   source, version, tokenization, license, attribution, entries — доли, не счётчики),
   либо ПИСЬМЕННЫЙ отказ с названием проверенных источников и цифрой, сколько
   записей реально нашлось. «Нет списка» без имён источников не принимается.
2. Порог 10 000 — цель, а не догма. Если для языка в природе существует только
   4 000 честных записей, это лучше, чем ничего: клади с явной пометкой размера
   в манифесте, а не выбрасывай.
3. Лицензия обязательна: файл в baseline/licenses и строка в NOTICE.md. Словарь
   без лицензии не кладём.
4. UNSUPPORTED.md обновить: то, что закрыто, убрать; по остатку — причина и
   ИМЕНА проверенных источников.
5. Языки покрупнее вперёд: непальский, узбекский, бирманский, яванский, зулу,
   одия, майтхили, таджикский, синдхи — у них носителей десятки миллионов.
   Саамские и гренландский — в конец, там источников объективно мало.

ГДЕ РАБОТАТЬ
Дерево: /Users/milamarty/Projects/note-clone на M4. Результат — ЗАПЛАТКА в
~/Downloads (git diff, имя IOS-059-*.patch). Прод НЕ трогать, ветки на M1 не
трогать: сажаю я.

ЛОВУШКИ
· Словари НЕ статические: они читаются с диска по требованию. Новый файл в
  baseline/ и строка в manifest.json — этого достаточно, импортировать не нужно.
· Формат entries — доли (сумма ≈ 1), не абсолютные счётчики.
· Проверять на живом: /api/translation/baseline/<id> должен отдать JSON.
Чем закрывается (приёмка)
По каждому из 21 языка — либо артефакт в baseline/ + строка в manifest.json + лицензия, либо письменный отказ с ИМЕНАМИ проверенных источников и найденным числом записей. UNSUPPORTED.md обновлён. Живая проверка: /api/translation/baseline/<id> отдаёт JSON.
Починено в
v4-1a2cc76
Лента
2026-08-01T21:20:41.392Z · вахтёр
Воркер translate-baselines-065 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка:   gpt-5.5 xhigh · ~/Projects/note-clone
2026-08-01T21:35:04.448Z · backup-opus
ПОПРАВКА К ТИКЕТУ. Пункт про ar-eg СНИМАЮ — это моя ошибка разбора: ключ ar-eg записан в кавычках (дефис в имени), и мой скрипт его не увидел. Живой список с прода это подтвердил: ar-eg есть и в меню, и в наборе словарей. Сводить нечего. ТОЧНЫЙ СЧЁТ: в меню 102 языка, словарей 81, БЕЗ СЛОВАРЯ 21 — список в теле тикета верен. Не трать время на ar-eg.
2026-08-01T22:07:59.271Z · translate-baselines
SCOPE: закрыт дефицит translation baseline dictionaries для 21 языка.
BASE: a12f1ff3c94cd59ddb57f14c3f2fce5c989457cb (ветка main snapshot)
BRANCH: agent/translate-baselines-ios065-20260801
COMMIT: 23b948c8f093ae37bf93658b5a48b8741c61a2b4
CHANGES: добавлены 21 baseline JSON: ne/uz/jv/zu/or/mai/tg/sd/yo/br/ht/la/kl/se/kok/nn/my/smn/sma/smj/sms; manifest 81→102 artifacts, unsupported 21→0; NOTICE/UNSUPPORTED/license CC-BY-4.0; validator accepts existing ptbr/ptpt/zhhant/ar-eg ids; tests updated for my/ne/uz ready.
COUNTS: 18 языков по 10,000 entries; короткие честные Incubator: sma 2,099, smj 352, sms 2,404; total manifest entries 994,855, bytes 27,556,987.
PROOF: node manifest checksum/count verifier exit 0: artifacts=102 entries=994855 bytes=27556987 required=21; ./node_modules/.bin/tsx scripts/verify-translation-baseline.ts exit 0 verified all 102 sha256; ./node_modules/.bin/tsx --test src/lib/translation/__tests__/languageAdapters.test.ts src/lib/translation/__tests__/baselineRuntime.test.ts exit 0, 12/12 pass; menu coverage probe exit 0: menu=102 artifacts=102; git diff --check exit 0.
PATCH: /Users/milamarty/Downloads/IOS-065-translation-baselines.patch
VERIFY_JSON: /Users/milamarty/.agent_runs/IOS-065/verify.json marker=\"corpus:kal_newscrawl_2011_10K\"
RISK/BLOCKERS: pnpm translation:verify-baseline через pnpm не запускался, потому что pnpm install в этом snapshot падает на approve-builds policy до verifier; direct tsx verifier green. Full build/lint/test не запускались по brief: data-only.
NOT-DONE: prod/Pi/deploy не трогал.
2026-08-01T22:16:08.643Z · вахтёр
Воркер translate-baselines-065 объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-08-01T22:21:11.026Z · вахтёр
Воркер translate-baselines-065 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка:   gpt-5.5 xhigh · ~/Projects/ios065-baselines
2026-08-01T22:26:15.211Z · вахтёр
Воркер translate-baselines-065 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка:   gpt-5.5 xhigh · ~/Projects/ios065-baselines
2026-08-01T22:31:17.900Z · вахтёр
Воркер translate-baselines-065 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка:   gpt-5.5 xhigh · ~/Projects/ios065-baselines
2026-08-01T22:36:19.657Z · вахтёр
Воркер translate-baselines-065 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка:   gpt-5.5 xhigh · ~/Projects/ios065-baselines
2026-08-01T22:41:21.617Z · вахтёр
Воркер translate-baselines-065 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка:   gpt-5.5 xhigh · ~/Projects/ios065-baselines
2026-08-01T22:46:23.462Z · вахтёр
Воркер translate-baselines-065 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка:   gpt-5.5 xhigh · ~/Projects/ios065-baselines
2026-08-01T22:51:25.354Z · вахтёр
Воркер translate-baselines-065 ЖДЁТ УЖЕ 30 мин подряд и не продвигается. Последняя строка:   gpt-5.5 xhigh · ~/Projects/ios065-baselines
2026-08-01T22:56:27.953Z · вахтёр
Воркер translate-baselines-065 ЖДЁТ УЖЕ 35 мин подряд и не продвигается. Последняя строка:   gpt-5.5 xhigh · ~/Projects/ios065-baselines
2026-08-01T22:57:26.498Z · backup-opus
ПРИНЯТО И ПОСАЖЕНО. Прод v4-1a2cc76, словарей в релизе 102 (из упаковки, не из страховки). Живая проверка новых: ne/uz/my/jv/zu/or/sd/tg по 10000 записей, smj 352 — отдаёт /api/translation/baseline/<id>. ЧТО ПРОВЕРЯЛ ПЕРЕД ПОСАДКОЙ: (1) суммы долей 0.46-0.97 — совпадают с прежними 81 (uk 0.822, ru 0.790, en 0.911), значит это верхние 10k из большего распределения, а не сбитая нормировка; (2) верхние слова каждого языка — настоящие служебные слова его письма, доли убывают; (3) все 21 в манифесте, лицензии CC BY 4.0 / CC BY-SA 4.0 на месте, NOTICE.md упоминает все 21; (4) малые наборы помечены размером честно (sma 2099, sms 2404, smj 352). UNSUPPORTED.md: 102/102/0.
2026-08-01T23:14:20.434Z · translate-baselines
IOS-065 готово. Коммит: 23b948c data(translation): fill IOS-065 baseline dictionaries. Закрыты все 21 дефицитных языка; всего 102/102 baseline artifacts, unsupported/insufficient: 0. Проверка: pnpm translation:verify-baseline OK; manifestArtifacts=102, artifactFiles=102, missingManifest=[], missingFiles=[]. Patch: /Users/milamarty/Downloads/IOS-065-translation-baselines.patch, sha256 91b0c17e525019475b2014c924a63a5ef81a928083283026760d7c333967f9a5.
Воркер
не проверен translate-baselines-065 M4 движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
ssh -t poolpooly@192.168.1.74 "ssh -t milamarty@192.168.1.114 '/opt/homebrew/bin/tmux -L gui attach -t translate-baselines-065'"
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
ssh poolpooly@192.168.1.74 "ssh milamarty@192.168.1.114 '/opt/homebrew/bin/tmux -L gui capture-pane -p -S -5000 -t translate-baselines-065'" | less -R
Если при входе tmux покажет «.config/tmux/tmux.conf: Permission denied» — нажми q, это косметика: каталог ~/.config на M4 принадлежит root, сессия работает. Лечится один раз с паролем на M4: sudo chown -R milamarty:staff /Users/milamarty/.config && chmod 755 /Users/milamarty/.config
Обновлён
2026-08-01T22:57:26.629Z