Files
tverd-plus-tokenizer/docs/CONTRIBUTORS.md

8.5 KiB
Raw Blame History

Участники разработки

Правовые аспекты и требования к контрибуторам

Настоящий документ устанавливает требования и процедуры для участников разработки программного изделия (ПИ) «Ъ» (компонент «Токенизатор») в рамках Проекта «Твердь».


1. Общие положения

Разработка ПИ ведется в соответствии с требованиями к безопасной разработке (SDL) и направлена на создание детерминированного системного программного обеспечения, предназначенного для сертификации на отсутствие недекларированных возможностей (НДВ).

2. Требования к участникам разработки

2.1. Квалификационные требования

Участники разработки должны обладать:

  • Технической компетентностью: Знание языка программирования Rust, понимание принципов компиляторостроения, лексического анализа и обработки формальных грамматик.
  • Безопасностью разработки: Понимание принципов безопасной разработки программного обеспечения, знание методов защиты от внедрения уязвимостей.
  • Специализацией: Опыт работы с системами, требующими сертификации, понимание специфики разработки для архитектур семейства «Эльбрус» и x86.

2.2. Обязательства участников

  • Соблюдение принципов безопасной разработки (SDL) на всех этапах жизненного цикла программного обеспечения.
  • Обеспечение прослеживаемости всех изменений кода и документации.
  • Строгое следование установленным стандартам кодирования и архитектурным решениям проекта.
  • Гарантирование отсутствия недекларированных возможностей в реализуемом коде.

3. Процедура внесения изменений

3.1. Подготовка изменений

  • Все изменения должны быть задокументированы с указанием мотивации и области применения.
  • Изменения должны сопровождаться соответствующими тестами, обеспечивающими верификацию функциональности.
  • Код должен соответствовать требованиям no_std окружения и не использовать внешние динамические библиотеки.

3.2. Процесс ревью

  • Все изменения проходят обязательное ревью кода с фокусом на безопасность и соответствие требованиям проекта.
  • Особое внимание уделяется проверке отсутствия потенциальных векторов атак и скрытых возможностей.
  • Изменения, затрагивающие критичные компоненты (токенизатор, обработка UTF-8, грамматика), требуют расширенного ревью.

3.3. Требования к коммитам

  • Коммиты должны содержать четкое описание внесенных изменений.
  • Ссылки на соответствующие задачи и требования технического задания.
  • Информация о влиянии изменений на безопасность и детерминизм системы.

4. Области ответственности

4.1. Модули проекта

Модуль Область ответственности Критичность
tokenizer.rs Основной лексический анализатор Высокая
token.rs Определения типов токенов Высокая
grammar.rs Правила и константы грамматики Высокая
dfa.rs Состояния детерминированного конечного автомата Высокая
utf8.rs Обработка UTF-8 последовательностей Высокая
position.rs Отслеживание позиций токенов Средняя
error.rs Обработка ошибок Средняя
comment.rs Обработка комментариев Низкая

4.2. Тестирование

  • Все новые функции должны сопровождаться соответствующими тестами.
  • Особое внимание уделяется тестам для кириллических идентификаторов и обработки UTF-8.
  • Интеграционные тесты должны покрывать критические сценарии использования.

5. Контроль качества кода

5.1. Статический анализ

  • Код должен проходить статический анализ без ошибок и предупреждений.
  • Использование механизмов строгой типизации языка Rust для обеспечения безопасности на этапе компиляции.
  • Соблюдение принципов no_std разработки.

5.2. Проверка безопасности

  • Анализ на наличие потенциальных уязвимостей безопасности.
  • Проверка отсутствия недекларированных возможностей.
  • Верификация детерминизма реализуемых алгоритмов.

6. Документирование

6.1. Требования к документации

  • Все публичные функции и структуры должны содержать документацию в формате Rust doc.
  • Изменения в грамматике языка должны отражаться в файле docs/grammar.md.
  • Критические архитектурные решения должны документироваться отдельно.

6.2. Обновление документации

  • Документация должна обновляться синхронно с изменениями кода.
  • Изменения в API должны быть задокументированы с указанием причин и миграционных путей.

7. Конфиденциальность и безопасность

  • Участники разработки обязаны соблюдать требования конфиденциальности в отношении деталей реализации, касающихся безопасности.
  • Обсуждение уязвимостей и вопросов безопасности должно проводиться в установленном порядке.
  • Запрещается внесение изменений, которые могут компрометировать безопасность системы или создавать векторы атак.

Примечания

  • Настоящий документ может быть дополнен в соответствии с требованиями проекта и стандартами безопасной разработки.
  • Все участники разработки должны быть ознакомлены с требованиями данного документа перед началом работы над проектом.