textmachine/docs/glossary.md

29 KiB
Raw Blame History

Глоссарий — жаргон и сокращения проекта (один экран)

Читать при онбординге по мере надобности; термин непонятен → сюда. Пополняет оркестратор.

Роли и фазы

  • Оркестратор / Бэкенд / Полигон / Фронт / Платформа — роли сессий с зонами записи (CLAUDE.md §Роли); платформа = SaaS control plane (platform/, D39.81). «Оркестратор №N» — канонический счётчик преемственности роли (текущий N — CURRENT-STATE docs/PROGRESS.md, единственный носитель; выдаёт номер автор промта передачи, D39.112 п.6).
  • Хендофф(-промт) — передача роли новой сессии файлом-промтом; аддендумы к бегущей сессии доезжают только релеем владельца.
  • Владелец — человек; ратифицирует деньги, скоуп-сдвиги, продукт, 18+; связной между сессиями.
  • Ф0Ф3 — фазы: Ф0 скелет · Ф1 инфраструктура · Ф2 качество (судья/гейты) · Ф2.5 пилот · Ф3 продукт (веб-фронт, ридер-IDE).
  • S-этапы (S0…) / P-этапы (P0…) — нумерация кодовых сессий зон: S — фронт (S0S4 приняты; ⚠ зона ЗАМОРОЖЕНА, разморозка отдельным словом владельца и к паку платформы НЕ привязана — D39.136 п.2 + D39.147), P — платформа (P0 бутстрап … P13, D39.188); не путать с фазами Ф0Ф3, и не всякий пак несёт P-номер (пак sqlc не несёт, D39.172). ⚠ Живой перечень принятых паков со статусами — реестр architecture/05-decisions-index.md (греп номера: grep -inE '\bP-?[0-9]+\b' docs/architecture/05-decisions-index.md); здесь только расшифровка обозначения. ⚠ P-номер этапа платформы не путать с P-номером ПРОБЫ в отчётах полигона (там контекст локален).
  • Зонный журнал / зонный бэклогfrontend/docs/frontend-PROGRESS.md · platform/docs/platform-PROGRESS.md и BACKLOG зоны: прогресс/пинги фронта и платформы живут ТОЛЬКО там (D39.100); их строки единый бэклог не принимает (D39.84).
  • D-номер с подпунктом (D20.4, D22.7, D39.153 п.9б) — ПОДПУНКТ внутри тела родительской ноты. Реестр architecture/05-decisions-index.md несёт ноты ВЕРХНЕГО уровня, своей строки у подпункта там нет и не должно быть (дисциплина грепа — CLAUDE.md §«Источники истины»).
  • Шиппинг-конфиг — конфиг пайплайна, по которому идёт БОЕВОЙ прогон, в отличие от тестового и от ран-локального. ⚠ Читать строго: «шиппинг-конфиг» = ШАБЛОН в backend/configs/; конфиг РЕАЛЬНОГО прогона живёт РЯДОМ С КНИГОЙ, вне git, — он «ран-локальный», и утверждения о нём проверяются в каталоге книги, а не грепом по репозиторию (клейм «гейт не включён ни в одном шиппинг-конфиге» верен про шаблоны и ложен про прогон).
  • Полигон — eval-зона платных/бесплатных экспериментов (eval/; отчёты — docs/experiments/, статус эксп-аего баннер/D-лог).

Решения и документы

  • D-номер (D39.x) — ратифицированная запись в architecture/05-decisions-log.md; голова — последний номер; эра — куст решений одного курса; лендинг — коммит работ сессии оркестратором после приёмки.
  • Р-номер — ДВА смысла по контексту: Р1Р10 = десять ранних принципов (01-decisions.md, историчны); Р1Р7 в записях эры D39.5x6x = вопросы/решения владельца по банку и промптам (D39.63 и соседние) — «Р2 = ЗНАЧЕНИЕ» (D39.63) не про принцип Р2. H1H18 / L1L8 — находки стратегического аудита (09-target-architecture.md §3); H — HIGH, в т.ч. незакрытые владельческие требования.
  • Q1Qn — нумерованные вопросы КОНКРЕТНОГО пакета/отчёта — контекст локален, Q2 пака-19 ≠ Q2 чекер-пака.
  • V0Vn — секции идей владельца в START_PROMT.MD (живой бриф; разобраны в product-requirements.md).
  • Ш-1/Ш-2 — стоячие трипваеры голден-дрейфа стандартной библиотеки; Ш-2 = пересмотр unicode.Version-зависимых мест (memnorm/classifier/style + chunker/estimator) до перехода на go1.27 (детали — grep «Ш-2» по D-логу).
  • PD-классика — public-domain тексты из претрейна моделей; эмпирика на них предварительна до вебновелл-среза (CLAUDE.md §Дисциплина).
  • Харнесс — обвязка исполнения (наш пайплайн-транспорт или конкурентные agent-обвязки; калибровка — research/2122).
  • ⚠-баннер — шапка «тело superseded, чему верить»; ревью-шапка — вердикты приёмки поверх отчёта в archive/reports/.
  • Пак — пакет работ одной сессии; свип — полная перепроверка обязательств (D39.66: 951 позиция); добор идеала — очередь качества после ре-пробы flash; МАСШТАБ — прогон целой книги.
  • Строка N — стабильный ID строки единого бэклога (docs/BACKLOG.md; не перенумеровывается); вес — блокер-очереди / скоро / когда-нибудь; носитель — артефакт, в котором обязательство живёт; хвост — незакрытый остаток; петля — вопрос, обязанный получить диспозицию; слот — зарезервированное место в будущем пакете/замере.
  • Гвоздь / пин — регрессионный тест, прибивающий контракт (негативный гвоздь — тест на ОТСУТСТВИЕ поведения). ⚠ Замер 11.09 по 167 живым .md: «пин»/«запинить»/«пин пуст» — 244 вхождения в двух главных доках (90 в docs/BACKLOG.md, 154 в D-логе; счёт очищен от «пинг», «пиньинь», «Репин», «спина»), тогда как «гвоздь» вне этой статьи встречается всего 4 раза в двух доках (docs/architecture/13-tech-debt-anchors.md, eval/softsign-decl/README.md), а в BACKLOG.md и D-логе — НИ РАЗУ; статья держит оба имени, потому что определён был редкий синоним, а не рабочее слово. Мутация / мутант — намеренная порча исходника, которой проверяют, что пин ЛОВИТ; инструмент backend/cmd/tmmutate с каталогом mutations.json сажает мутацию, гоняет тесты одного пакета и возвращает исходник (110 упоминаний в тех же двух доках при нуле в глоссарии). Мутация засчитывается по ТЕКСТУ падения, а не по факту красноты (D39.217 п.2в); гоняется на КОПИИ дерева; пин, флейковый на мутанте, измеряет пустой сценарий, а пин, удовлетворённый ЧУЖОЙ уликой, пуст (гардрейлы CLAUDE.md).
  • Реестр 108 / «жилец реестра» — строка 108 единого бэклога: реестр ЗАГЕЙЧЕННЫХ ТРИГГЕРОВ (отложенных реопенов с условием «когда вернуться»); «жилец» = такой реопен; норма «каждое отложено получает строку или жильца» — D39.66/D39.90.
  • Контракт 14 (API v0) — ратифицированный контракт фронт↔платформа: architecture/14-api-contract/ — нормативная спека OpenAPI 3.1 + компаньон-README; ⚠ зонная копия — НЕ байт-зеркало (испр. 10.09): равенство приостановлено на время фриза фронта (D39.142 п.5), и расхождение сегодня измеримо — канон 3467 строк против 1444 в зоне. Прежняя формулировка: зонная копия frontend/docs/api-contract/ — байт-зеркало (D39.99; статус зеркала и версий — карта README.md, здесь не пинятся). Провенанс ✓/◆/○ — классы утверждений компаньона: выведено из кода/ратификации · предложено (подтверждает названная зона) · открыто (К-вопросы). spectral / openapi-typescript — линт спеки и генерация типов фронта с дрифт-тестом (⚠ 3.1-условия генератор игнорирует — К-11).
  • ПТ-N — стабильный ID требования в product-requirements.md; не путать со строками единого бэклога. paused / лимиты «как Claude Code» — статус книги при стопе по потолку + страница статуса использования в настройках (ПТ-35, D39.100) ⚠ испр. 05.09: «сумм на экране нет» ОТОЗВАНО — D39.196; баланс, потолок и холд показываются деньгами, запрет остался только на структуру НАШИХ расходов.

Пайплайн и код

  • tmctl build — $0-глагол ПИСАТЕЛЯ книги: собирает EPUB 3 и чистый txt из BookExport (прод-пакет backend/internal/bookfile, только stdlib), ОДИН файл на книгу на формат рядом с ProjectDB; пути — StatusArtifacts.book_files (канал, который читает дверь выдачи платформы — createExport/getExport/downloadExport, ПОСТРОЕНА 04.09, D39.194), stdout — конверт tm-build-v1, отказ — book_incomplete (exit 16). D39.175.

  • Состояния честности файла (писатель книги) — pending · withheld (текст удержан) · incomplete (юнит отгружен с дырой) · ghost (остаток источника после укрупнения нарезки: без него книга выглядит «молча полной») · stale (финал сделан под исчезнувший исходник; под дрейфом честное stale_unknown, никогда не «нет») — все пять ДЫРЫ (поведение отказа и --partial — ПТ-44, D39.175). Шестое, drift, — НЕ дыра: носитель BuildReport/WARN для оператора, байты файла = байты прогона (слово владельца 30.08, D39.175 п.2). Читательские слова — данные configs/langpacks/<цель>/reader.txt, вне Pack.Version(); без пака цели — несловесная форма.

  • Волны — waveDraft (черновик) → терминолог → waveEdit (редактура); имена только полные, аббревиатуры W0/W1 запрещены (решение владельца 19.07).

  • Чанк — единица нарезки книги; edit-unit (юнит редактуры) — member-чанки, схлопнутые редактором в один финальный текст: гранулярность финала и экспорта пар (~1.9 юнита/главу; якорь синхронизации фронта — D39.84; draft-only-пайплайн шипит по чанкам).

  • Поверхность — слово с ТРЕМЯ смыслами, и без соседей оно не читается (замер 11.09: 53 употребления — 22 в docs/BACKLOG.md и 31 в D-логе, — статьи не было ни одной). (1) банковская — исходное НАПИСАНИЕ термина, ключ, под которым он живёт в банке; ключ уникальности банка — (src, sense, since, until), поэтому «одна поверхность ЗАКОННО несёт несколько ПОДПИСАННЫХ канонов (фамилия и направление у одного написания)» (D39.193 п.3), а дедуп по голому src ронял подпись молча. (2) продуктовая/сетевая — внешняя грань, которой продукт повёрнут к пользователю или к соседней зоне: читающая поверхность платформы, операторская ручка, SSE-поток, «поверхностей у продукта ДВЕ, а не одна» — лендинг и IDE (D39.239 п.1). (3) кодовая — место в коде, до которого прогон или тест реально добрался: «Первый живой прогон НЕ КОСНУЛСЯ поверхностей, ради которых часть кода построена» (строка 255). ⚠ Смыслы (1) и (2) сталкиваются в одних и тех же строках про банк и дверь.

  • Банк (памяти) — термины/имена/голоса книги на весь прогон; сид — стартовый банк книги (YAML; подпись владельца — только вкусовые поля, D39.77); бриф — книжные вводные; банкнота — канал выноса кандидатов из ответа переводчика; майнер — $0-извлечение кандидатов из исходника; KWIC — конкорданс-контекст кандидата; терминолог — роль перевода/подписи терминов батчами.

  • Доктрина инжекта (закон) — банк на проводе обязателен для всех ролей НЕЗАВИСИМО от статуса строки; право «перевести иначе, если сомнительно» упразднено, свобода — только оговоркой ОБЛАСТИ употребления (не-терминные пассажи: игра слов, разбор знаков); на проводе — единый закон-блок редактора, маркер ⟨проверить⟩ снят; статусы строк и подписная таблица не меняются (D39.104; ВНЕСЕНО вайр-батчем, пак принят D39.199; строка 134 закрыта).

  • Гейты — детерминированные $0-проверки перевода; чекеры K1K12 — классы дефектов рубрики; DC1DC7 — data-driven чекеры на данных пары; репэйр — платная петля ремонта (построена, выключена — строка 13).

  • Строгая и якорная колонка — две колонки прибора консистентности по ОТГРУЖЕННОМУ тексту (носитель — строка 406, правило выбора там же помечено как ратифицируемое приёмкой 11.09): СТРОГАЯ требует «равенства стеммов, как у пост-проверки» и ошибается в сторону ЛОЖНОЙ ТРЕВОГИ; ЯКОРНАЯ «признаёт склонённую передачу» и ошибается в сторону СОКРЫТИЯ. «Первичная — ЯКОРНАЯ, строгая идёт полом точности рядом» (на прогоне A точность 0.78 против 0.39); основание НЕ «ложная тревога дешевле сокрытия» — строка 406 прямо говорит, что этот довод аргументирует ОБРАТНОЕ, — а «детектор, врущий в 61 % сообщений, … перестают читать». ⚠ Правило действует, ПОКА прибор флагует и не отказывает: станет он гейтом отгрузки — асимметрия перевернётся и порядок колонок решается заново (строка 406 называет ДВА триггера пере-открытия). ⚠ Не путать с «якорной половиной» канон-проверок (строка 339) — там слово про другое.

  • Судья — Ф2-оценка качества (gemini); канал B — путь чувствительного контента (Mistral+grok); лейблы (labels) — размеченный корпус для precision/recall чекеров, метрики заморожены числами в приёмках.

  • Голден — байт-фиксированный снапшот прогона; маскированный дифф — сверка голдена с маской hex/версий; CheapGateVersion (CGVER) — версия контракта гейтов; паритиTM_MINER_PARITY=1 EXACT-сверка майнера.

  • Эхо-мина — DeepSeek без thinking эхоит вход вместо перевода; гейт echoMineViolation принуждает thinking-ON.

  • Langpack / пар-файл — данные языковой пары (backend/configs/langpacks/); книжное в пар-слое = утечка; общность — ревью-вопрос «заработает ли пара/вторая книга без правки Go».

  • Ведро B/D — корзины триажа карты общности D39.60 (B «пар-модуль без гейта» · D «удалить»).

  • tmctl — CLI бэкенда. Полный список глаголов — ОДИН в коде (backend/cmd/tmctl/main.go, dispatchCommands), и он же печатается в usage (паритет «список ↔ usage ↔ switch» прибит тестом cmd/tmctl/invocation_test.go); сверка одной командой: grep -n -A3 "dispatchCommands = " backend/cmd/tmctl/main.go. ⚠ Копия списка стояла здесь и трижды отставала от кода — снята: носитель один, отдельные глаголы (build, bank-apply) расшифрованы строками ниже.

  • Подстановка цены — тихий фолбэк прайсера: провайдер вернул слаг, которого в каталоге нет, и PriceForResponse (backend/internal/ledger/pricing.go:88=func (p *Pricer) PriceForResponse) пробует actual, потом requested, потом якорь, а ни одно из трёх мест вызова не различает, какая ветвь сработала. Пока подмена падает внутрь той же семьи, счёт верен; опасна не подстановка, а её НЕВИДИМОСТЬ — при маршрутизации провайдера ВНИЗ это «×3.3 из кармана читателя, молча». Носитель — строка 413. ⚠ Сводя такое по диску, помнить строку 428: обход файлов *.db умножает трату на число КОПИЙ базы (замер 11.09 — множитель 10.88×), поэтому деньги считаются по УНИКАЛЬНОМУ (book_id, date) либо по одной авторитетной базе.

  • COGS — себестоимость перевода; ре-проба — дешёвый повторный замер провайдера после аномалии (носитель события — строка 188; исходная 74 закрыта D39.91).

Неймспейсы номеров

  • PD-N — регистр дефектов ПЛАТФОРМЫ (platform/docs/DEFECT_REGISTER.md; счёт — counts.py); П-N — зонный бэклог платформы (platform/BACKLOG.md); Ф-N — зонный бэклог фронта (frontend/docs/BACKLOG.md); В-N — вопрос ВЛАДЕЛЬЦУ от фронта (журнал frontend-PROGRESS.md); К-N — вопрос контракта API (14-api-contract/README.md). «Строка N» без префикса = ЕДИНЫЙ бэклог docs/PROGRESS.md (НЕ номер строки файла).
  • Глава — единица структуры книги: детект chunk/ingest.go (txt: CJK-шапки/form-feed; epub: документ spine), нумерация плотная позиционная + титульная политика chunk/chunker.go (stripHeading/ApplyHeading по langpacks/*/heading.txt), идентичность = контент-хеш в манифесте (pipeline/manifest.go), деньги ключуются ПОЗИЦИЕЙ (сдвиг границы = перекупка хвоста). Дизайн будущего — research/27.
  • Деньги платформы: холд — резервация суммы прироста на счёте ДО спавна; прирост — купленные главы × ставка ($0.03, platform/internal/pricing/pricing.go); аргумент потолка — что уходит движку в --ceiling-usd = committed книги + прирост (PD-158; ЭТО НЕ ХОЛД — он больше холда на committed); baseline — счётчик книги на старте попытки, списание = разница; settle/расчёт — закрытие холда по фигуре движка; leftover-reserved — висячий reserved движка после краша (зануляется его write-open); SpendBound — верхняя граница отложенного расчёта по baseline следующей попытки (PD-159).
  • Лексикон экспериментов: жилец — модель на роли; арм — вариант в бейк-оффе; однопроходка/второй проход — топологии редактуры; закон-блок = доктрина инжекта (D39.104); пол/floor — нижний якорь шкалы судьи; Холм — поправка Холма на множественные сравнения; порог различимости — минимальная дельта, отличимая от шума риге.
  • Входная дверь шва — входная половина контракта движок↔платформа (почему понадобилась — D39.156 п.2). Закон — D39.156 (17-seam-inbound-law.md), построена и заленджена D39.158.
  • tmctl bank-apply — $0-глагол входной двери: кладёт правки банка памяти, сделанные пользователем. Проекция --dry-run, всё-или-ничего, байтовый no-op идемпотентен, лок проекта неблокирующий.
  • Стоп банка — ФЛАЖОК, а не развилка: движок останавливается на границе майнинга, показывает банк и ждёт «ОК» = продолжить. Подписывается БАНК целиком либо правится отдельный термин — пер-термной масс-подписи НЕТ (модель владельца 16.08, D39.144). Предъявленное помнится (bank_stop_presented, схема store v16), поэтому стоп срабатывает ОДИН раз на одно и то же.
  • Остановка прогона — с 10.09 их ДВЕ, и без прилагательного это слово не пишется (D39.234 п.1а). МЯГКАЯ — первое нажатие: новых единиц работы не раздаём, начатое ДОИГРЫВАЕМ, выходим сами; ничего не рвётся ⇒ ни одна позиция не получает пометки cancelled и никто не платит дважды. ЖЁСТКАЯ — второе нажатие: контекст отменяется, летящие вызовы рвутся, доставленные книжатся по ОЦЕНКЕ и метятся cancelled, резюм их пере-делывает. ⚠ В коде на 10.09 построена только ЖЁСТКАЯ (backend/cmd/tmctl/main.go, греп signal.NotifyContext); мягкая ратифицирована и заказана паком — строка бэклога 381. Оба стопа отдают код выхода 5 (полоса кодов заморожена): какой именно случился, говорит ПРИЗНАК в кадре finished, а не код. Не путать со стопом банка (флажок границы майнинга, статья выше) и со стопом по потолку (paused, код 4) — это четыре разных предмета, и слово «стоп» само по себе не различает ни одного.
  • Полоса отказов [10,19] — коды выхода движка, отличающие «отказал ЗАКОННО» от «сломался»: 10 конфиг · 11 источник · 12 лок · 13 схема · 14 решения отклонены · 15 write_incomplete · 16 book_incomplete (tmctl build без --partial на книге с дырами, D39.175) · 19 без имени.
  • Онтология банкаarchitecture/18-bank-ontology.md: три роли носителей (источники · вид · проекции · память флага), их писатели и моменты коммита. Названный там класс дефекта — «проекция без названного потребителя и без якоря свежести в кадре».
  • ОСПОРЕНО(PD-N) — грепаемый токен реестра дефектов платформы: строка стоит fixed, но пак доказал, что её пин доказывает свойство СЛАБЕЕ, чем строка гласит. Статус НЕ меняется, живой пробел несёт новая строка PD-N. Ратифицирован D39.159 при условии двусторонней ссылки.