{
  "schema": 1,
  "product": "RAGRAF",
  "version": "0.4.0",
  "declared_at": "2026-10-27",
  "stage": "И27",
  "main": "README.md",
  "note": "Единственное место, где объявлена ТЕРМИНОЛОГИЯ основного документа: какой английский термин каким словом переводится. Объявление лежит в данных, а не в коде проверки, по той же причине, что и состояния переводов (docs/03_implementation/translations.json): добавить термин или язык можно правкой этого файла, и ни одна строка tools/check_glossary.py ради этого не меняется. Устроено так: term_en — термин основного документа; forms_en — формы, которыми он встречается (множественное число, второе написание); required — называется ли термин операцией, режимом или объектом продукта (тогда перевод обязан его назвать) либо это свойство или механизм, который язык может выразить внутри фразы; translations — по языку список допустимых переводов, ПЕРВЫЙ из которых канонический. Канонический обязан встречаться не реже остальных: подмена его синонимом — расхождение, а не стиль. Одно слово не может быть каноническим для двух терминов: это и есть обратный дрейф, когда одно слово перевода обозначает два разных понятия продукта. Граница объявления: оно сторожит СЛОВО, а не смысл фразы — пропущенное предложение при сохранённой структуре раздела не видно ни здесь, ни в tools/check_translations.py.",
  "terms": [
    {
      "term_en": "corpus",
      "forms_en": ["corpus", "corpora"],
      "required": true,
      "names": "центральный объект продукта: проиндексированный набор кода, с которым работает агент",
      "translations": {
        "ru": {
          "allowed": ["корпус"],
          "note": "«корпус» во всех формах; английское corpus осталось только в именах файлов и команд"
        },
        "de": {
          "allowed": ["Korpus", "Korpora"],
          "note": "единственное число и множественное — одна лемма, поэтому обе формы канонические"
        },
        "es": {
          "allowed": ["corpus", "corpora"],
          "note": "испанский пользуется тем же словом; переводить его как «conjunto» значило бы разойтись с термином"
        },
        "hi": {
          "allowed": ["कॉर्पस"],
          "note": "транслитерация, а не описательный оборот"
        },
        "zh": {
          "allowed": ["语料"],
          "note": "«语料» (данные), а не «语料库» (хранилище): продукт работает с набором, а не с библиотекой"
        }
      }
    },
    {
      "term_en": "degraded",
      "forms_en": ["degraded"],
      "required": true,
      "names": "режим продукта capability=degraded: работа без необязательного слоя",
      "translations": {
        "ru": {
          "allowed": ["деградац", "деградир"],
          "note": "«деградация» как состояние, «деградирует» как поведение — одна лемма"
        },
        "de": {
          "allowed": ["degradier"],
          "note": "«Degradierung» и «degradiert» — формы одной леммы; «eingeschränkt» было бы другим словом для того же понятия"
        },
        "es": {
          "allowed": ["degradaci"],
          "note": "«degradación»; «reducido» — синоним, который размыл бы режим"
        },
        "hi": {
          "allowed": ["डिग्रेड"],
          "note": "транслитерация «डिग्रेडेशन», а не «अवनति»: режим продукта должен называться так же, как в выводе"
        },
        "zh": {
          "allowed": ["降级"],
          "note": "«降级» — термин режима; «退化» означало бы деградацию качества, а не режим"
        }
      }
    },
    {
      "term_en": "slice",
      "forms_en": ["slice"],
      "required": true,
      "names": "операция slice: структурный срез графа со строками кода",
      "translations": {
        "ru": {
          "allowed": ["срез"],
          "note": "идентификатор `slice` остаётся как есть; прозу переводит «срез», а не «слайс»"
        },
        "de": {
          "allowed": ["Schnitt"],
          "note": "«Schnitt» для операции; «Ausschnitt» в файле означает выдачу фрагментов текста — другое понятие"
        },
        "es": {
          "allowed": ["corte"],
          "note": "«corte estructural»; слово slice остаётся только идентификатором"
        },
        "hi": {
          "allowed": ["स्लाइस"],
          "note": "транслитерация «स्लाइस», а не «कटौती» (сокращение)"
        },
        "zh": {
          "allowed": ["切片"],
          "note": "«切片» — структурный срез; «切面» было бы поверхностью разреза"
        }
      }
    },
    {
      "term_en": "stale",
      "forms_en": ["stale"],
      "required": true,
      "names": "состояние факта или индекса: он отстал от кода",
      "translations": {
        "ru": {
          "allowed": ["устаревш"],
          "note": "«устаревший индекс», «устаревшие факты». В шаге 1 стояло «отставший индекс» — отставание по времени вместо состояния; приведено к каноническому (замер этапа И27)"
        },
        "de": {
          "allowed": ["veraltet"],
          "note": "«veralteter Index». В шаге 1 стояло «zurückgebliebener Index» — второе слово для того же термина; приведено к каноническому. «Überholt» не допускается: это синоним, который размыл бы режим"
        },
        "es": {
          "allowed": ["obsolet"],
          "note": "«índice obsoleto». В двух местах стояло «atrasado» (запаздывающий) — это отставание по времени, а не состояние факта; оба приведены к каноническому (замер этапа И27)"
        },
        "hi": {
          "allowed": ["पुरान"],
          "note": "«पुराना इंडेक्स»; слово относится к состоянию, а не к возрасту файла"
        },
        "zh": {
          "allowed": ["过时"],
          "note": "«过时的索引». Стояли два слова одного термина — «过期» (истёк срок) в шаге 1 и «过时» ниже; выбрано «过时», оно годится и для индекса, и для строки текста"
        }
      }
    },
    {
      "term_en": "provenance",
      "forms_en": ["provenance"],
      "required": false,
      "names": "свойство факта: stated (доказано) либо derived (вывод)",
      "translations": {
        "ru": {
          "allowed": ["provenance"],
          "note": "имя свойства не переводится: оно приходит в ответе операции и в документации API как есть"
        },
        "de": {
          "allowed": ["provenance"],
          "note": "то же: «Herkunft» разошлось бы с полем ответа"
        },
        "es": {
          "allowed": ["provenance"],
          "note": "то же: «procedencia» разошлось бы с полем ответа"
        },
        "hi": {
          "allowed": ["provenance"],
          "note": "то же: «उद्गम» разошлось бы с полем ответа"
        },
        "zh": {
          "allowed": ["provenance"],
          "note": "то же: «来源» в файле уже занято страницей источников — другое понятие"
        }
      }
    },
    {
      "term_en": "break-even",
      "forms_en": ["break-even"],
      "required": false,
      "names": "порог окупаемости: объём работы, с которого видеокарта выгоднее процессора",
      "translations": {
        "ru": {
          "allowed": ["окупаемост"],
          "note": "«порог окупаемости» — принятая в проекте форма"
        },
        "de": {
          "allowed": ["Rentabilität"],
          "note": "«Schwelle der Rentabilität»; «Amortisation» было бы другим словом для того же порога"
        },
        "es": {
          "allowed": ["rentabilidad"],
          "note": "«umbral de rentabilidad»"
        },
        "hi": {
          "allowed": ["लागत-वसूली"],
          "note": "«लागत-वसूली थ्रेशोल्ड» — сложение, а не заимствование"
        },
        "zh": {
          "allowed": ["回本"],
          "note": "«回本阈值»; «盈亏平衡» — бухгалтерский термин, а не проектный"
        }
      }
    },
    {
      "term_en": "delivery",
      "forms_en": ["delivery"],
      "required": true,
      "names": "поставка: один закрытый набор файлов, который получает пользователь",
      "translations": {
        "ru": {
          "allowed": ["поставк"],
          "note": "«поставка»; «дистрибутив» было бы другим понятием"
        },
        "de": {
          "allowed": ["Lieferung", "Auslieferung"],
          "note": "«Lieferung»; «Paket» в файле означает npm-пакет и архив инструментов — другое понятие"
        },
        "es": {
          "allowed": ["entrega"],
          "note": "«entrega»; «suministro» — другое слово для того же, поэтому не допускается"
        },
        "hi": {
          "allowed": ["डिलीवरी"],
          "note": "транслитерация; «वितरण» (распределение) — другое понятие"
        },
        "zh": {
          "allowed": ["交付"],
          "note": "«交付»; «发布» в файле означает публикацию и выпуск версии — другое понятие"
        }
      }
    }
  ]
}
