hermes-android/agents/antigravity/done/TASK-2026-08-24-05-repo-hygiene.md
2026-08-24 22:50:59 +07:00

143 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Task 05: Гигиена репозитория — бинарники, зависимости, документы
**Date**: 2026-08-24
**Base SHA**: `3ec16c492793a45117c3451b1b257086d752827a`
**Task Spec**: `agy-work/TASK-2026-08-24-05-repo-hygiene.md`
---
## ## Кодер 1
### 1. Выполненные действия по §Scope
#### Scope 1 (BUILD-01 — Удаление бинарников из Git, Release Job, Документация)
1. **Удаление бинарников из индекса и дерева**:
- Выполнена команда `git rm -r --cached hermes-pair/dist`.
- Удалены файлы `hermes-pair/dist/linux/hermes-pair` (15.9 MB) и `hermes-pair/dist/windows/HermesPair.exe` (21.2 MB).
- В [`.gitignore`](file:///e:/Agent%20projects/hermes-android-apk/.gitignore) добавлены правила: `hermes-pair/dist/`, `dist/`, `**/dist/`.
- Проверено: `git ls-files hermes-pair/dist` возвращает пустой вывод.
2. **Release Workflow в CI**:
- В [`.github/workflows/ci.yml`](file:///e:/Agent%20projects/hermes-android-apk/.github/workflows/ci.yml) добавлены триггеры на теги `v*` (`tags: ['v*']`).
- Добавлены джобы:
- `build-pair-linux` (Ubuntu, `cargo build --release`, сборка `hermes-pair-linux-x86_64`).
- `build-pair-windows` (Windows, `cargo build --release`, сборка `hermes-pair-windows-x86_64.exe`).
- `publish-release` (Ubuntu, выгрузка собранных бинарников, вычисление `SHA256SUMS.txt` из тех же файлов в джобе, публикация релиза с бинарниками и контрольными суммами через `softprops/action-gh-release@v2`).
3. **Обновление README**:
- В [`README.md`](file:///e:/Agent%20projects/hermes-android-apk/README.md) удалены все ссылки на `./hermes-pair/dist/...`.
- Добавлены секции для загрузки бинарников из GitHub Releases и сборки из исходников (`cargo build --release`).
- Добавлены команды проверки контрольных сумм SHA-256 для Windows (`Get-FileHash ... -Algorithm SHA256`) и Linux (`sha256sum -c SHA256SUMS.txt`).
#### Scope 2 (BUILD-06 — Version Catalog & Dependabot)
1. **Gradle Version Catalog**:
- Создан [`gradle/libs.versions.toml`](file:///e:/Agent%20projects/hermes-android-apk/gradle/libs.versions.toml).
- Все версии плагинов и библиотек из [`build.gradle.kts`](file:///e:/Agent%20projects/hermes-android-apk/build.gradle.kts) и [`app/build.gradle.kts`](file:///e:/Agent%20projects/hermes-android-apk/app/build.gradle.kts) перенесены без изменения ни одной версии (диф версий пустой).
- В `build.gradle.kts` и `app/build.gradle.kts` плагины и зависимости переведены на `alias(libs.plugins...)` и `libs...`.
2. **Dependabot**:
- Создан [`.github/dependabot.yml`](file:///e:/Agent%20projects/hermes-android-apk/.github/dependabot.yml) с еженедельным расписанием для экосистем `gradle` (директория `/`) и `cargo` (директория `/hermes-pair`).
#### Scope 3 (BUILD-07 — Документы репозитория)
1. [`SECURITY.md`](file:///e:/Agent%20projects/hermes-android-apk/SECURITY.md): Политика сообщения об уязвимостях (приватные отчеты, срок первичного ответа 48 часов, оценка 7 дней, описание механизмов безопасности).
2. [`CONTRIBUTING.md`](file:///e:/Agent%20projects/hermes-android-apk/CONTRIBUTING.md): Руководство по сборке Android и Rust частей, запуск верификационных тестов и линтеров, требования к Pull Requests.
3. [`CHANGELOG.md`](file:///e:/Agent%20projects/hermes-android-apk/CHANGELOG.md): Формат Keep a Changelog, зафиксированы изменения задач 0104 и задачи 05.
4. [`LICENSE`](file:///e:/Agent%20projects/hermes-android-apk/LICENSE): Добавлен файл лицензии (MIT License по умолчанию из `hermes-pair/README.md`) с пометкой о подтверждении владельцем.
#### Scope 4 (BUILD-08 — Оптимизация Gradle)
1. В [`gradle.properties`](file:///e:/Agent%20projects/hermes-android-apk/gradle.properties) добавлены:
- `org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8`
- `org.gradle.parallel=true`
- `org.gradle.caching=true`
- `android.nonFinalResIds=true`
- `org.gradle.configuration-cache=true`
2. Проведено тестирование флага `org.gradle.configuration-cache=true`:
- `./gradlew --no-daemon testDebugUnitTest` — успешно пройден (22s при повторном запуске с использованием кеша).
- `./gradlew --no-daemon lint` — успешно пройден (`Configuration cache entry stored`).
- `./gradlew --no-daemon assembleDebug` — успешно пройден (`Configuration cache entry stored`, APK собран).
---
### 2. Список изменённых и созданных файлов
| Файл | Статус | Назначение |
|---|---|---|
| `hermes-pair/dist/linux/hermes-pair` | Удалён | Удаление бинарника из git tracking |
| `hermes-pair/dist/windows/HermesPair.exe` | Удалён | Удаление бинарника из git tracking |
| `.gitignore` | Изменён | Игнорирование `hermes-pair/dist/`, `dist/`, `**/dist/` |
| `.github/workflows/ci.yml` | Изменён | Добавление release jobs для Windows и Linux + `SHA256SUMS.txt` |
| `README.md` | Изменён | Удаление путей к `dist/`, добавление инструкций по Releases, сборке и SHA-256 |
| `gradle/libs.versions.toml` | Создан | Централизованный каталог версий Gradle |
| `build.gradle.kts` | Изменён | Использование `libs.plugins` |
| `app/build.gradle.kts` | Изменён | Использование `libs.plugins` и `libs.*` |
| `.github/dependabot.yml` | Создан | Еженедельные проверки обновлений Gradle и Cargo |
| `SECURITY.md` | Создан | Политика безопасности |
| `CONTRIBUTING.md` | Создан | Руководство для контрибьюторов |
| `CHANGELOG.md` | Создан | Журнал изменений (Keep a Changelog) |
| `LICENSE` | Создан | Файл лицензии |
| `gradle.properties` | Изменён | Оптимизации Gradle: параллелизм, кеш, 4G heap, nonFinalResIds, configuration-cache |
---
### 3. Результаты проверок
#### 3.1. Проверка отсутствия бинарников в git
```powershell
PS E:\Agent projects\hermes-android-apk> git ls-files hermes-pair/dist
# Вывод пуст
```
#### 3.2. Unit Tests
```text
.\gradlew.bat --no-daemon testDebugUnitTest
BUILD SUCCESSFUL in 22s
25 actionable tasks: 25 up-to-date
Configuration cache entry stored.
```
#### 3.3. Android Lint
```text
.\gradlew.bat --no-daemon lint
BUILD SUCCESSFUL in 1m 45s
28 actionable tasks: 9 executed, 1 from cache, 18 up-to-date
Configuration cache entry stored.
```
#### 3.4. Assemble Debug APK
```text
.\gradlew.bat --no-daemon assembleDebug
BUILD SUCCESSFUL in 2m 34s
37 actionable tasks: 19 executed, 18 up-to-date
Configuration cache entry stored.
```
#### 3.5. Git Diff Stat
```text
.github/dependabot.yml | 13 +++++
.github/workflows/ci.yml | 111 +++++++++++++++++++++++++++++++++++++++++++++++
.gitignore | 4 ++
CHANGELOG.md | 33 ++++++++++++++
CONTRIBUTING.md | 56 ++++++++++++++++++++++++
LICENSE | 21 +++++++++
README.md | 46 ++++++++++++++++----
SECURITY.md | 34 +++++++++++++++
app/build.gradle.kts | 96 ++++++++++++++++++++--------------------
build.gradle.kts | 10 ++---
gradle.properties | 9 +++-
gradle/libs.versions.toml| 68 +++++++++++++++++++++++++++++
12 files changed, 437 insertions(+), 64 deletions(-)
```
---
## ## Вопросы владельцу
1. **История git и бинарники (`BUILD-01`)**:
- **Вариант A (выполнен сейчас)**: Бинарники удалены текущим коммитом. Они исключены из дальнейшего версионирования через `.gitignore`. Локальные клоны разработчиков не ломаются, но прошлая история в git сохраняет ~37 МБ.
- **Вариант B (требует решения владельца)**: Переписать историю через `git filter-repo` / BFG Repo-Cleaner и сделать force push. Размер репозитория уменьшится до ~1 МБ, однако все существующие форки и локальные ветки потребуют перебазирования (`git pull --rebase` или пересоздание клона).
- *Вопрос: Оставляем вариант A или выполняем вариант B с force push?*
2. **Выбор лицензии (`BUILD-07`)**:
- Создан шаблон `LICENSE` на базе MIT License (так как в `hermes-pair/README.md` была ссылка на MIT).
- *Вопрос: Подтверждает ли владелец лицензию MIT, либо требуется Apache 2.0 / GPLv3 / проприетарная лицензия?*
3. **Подпись Windows-бинарника `HermesPair.exe` (`BUILD-01`)**:
- Релизный workflow собирает бинарники и контрольные суммы SHA-256. Windows SmartScreen может предупреждать о неподписанном `.exe` без EV/OV Authenticode сертификата.
- *Вопрос: Планируется ли приобретение и добавление сертификата подписи кода (Code Signing Certificate) в GitHub Secrets для автоматической подписи Windows-бинарников в CI?*