From d787e05794a14e7c86e16eb71f65bbe774b81b3b Mon Sep 17 00:00:00 2001 From: NikitolProject Date: Wed, 25 Feb 2026 04:05:10 +0300 Subject: [PATCH] docs: define milestone v1.1 requirements --- .planning/REQUIREMENTS.md | 72 +++++++++++++++++++++++++++++++++++---- 1 file changed, 65 insertions(+), 7 deletions(-) diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index 73f15d6..2fb37f0 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -3,7 +3,7 @@ **Defined:** 2026-02-24 **Core Value:** Архив невозможно распаковать без знания формата — стандартные утилиты не распознают содержимое -## v1 Requirements +## v1.0 Requirements (Complete) ### Format (Бинарный формат) @@ -59,7 +59,43 @@ - [x] **TST-02**: Golden test vectors: известный plaintext/key/IV → ожидаемый ciphertext - [x] **TST-03**: Базовые unit-тесты для каждого модуля pipeline -## v2 Requirements +## v1.1 Requirements + +### Format (Бинарный формат) + +- [ ] **FMT-09**: Тип записи в TOC entry (файл/директория) — 1 байт +- [ ] **FMT-10**: Unix permission bits (mode) в TOC entry — 2 байта (u16) +- [ ] **FMT-11**: Относительные пути с `/` разделителем вместо filename-only +- [ ] **FMT-12**: Обновлённая спецификация FORMAT.md с новыми полями + +### Directory (Поддержка директорий) + +- [ ] **DIR-01**: `pack` рекурсивно обходит директории и добавляет все файлы +- [ ] **DIR-02**: Относительные пути сохраняются при архивации (dir/subdir/file.txt) +- [ ] **DIR-03**: Пустые директории сохраняются как записи типа "directory" в TOC +- [ ] **DIR-04**: `unpack` создаёт полную иерархию директорий +- [ ] **DIR-05**: `unpack` восстанавливает Unix mode bits для файлов и директорий + +### Kotlin Decoder + +- [ ] **KOT-05**: Парсинг нового TOC с типом записи и permissions +- [ ] **KOT-06**: Создание иерархии директорий при извлечении +- [ ] **KOT-07**: Установка permissions (File.setReadable/setWritable/setExecutable) + +### Shell Decoder + +- [ ] **SHL-04**: Парсинг нового TOC с типом записи и permissions +- [ ] **SHL-05**: mkdir -p для иерархии и пустых директорий +- [ ] **SHL-06**: chmod для восстановления permissions + +### Testing + +- [ ] **TST-04**: Round-trip с вложенными директориями (3+ уровня) +- [ ] **TST-05**: Round-trip с пустыми директориями +- [ ] **TST-06**: Проверка сохранения mode bits +- [ ] **TST-07**: Cross-validation: Rust archive → Kotlin/Shell decode с директориями + +## Future Requirements ### Расширенная обфускация - **OBF-01**: Shuffled blocks (хранение блоков в случайном порядке с scramble map) @@ -86,8 +122,10 @@ | Асимметричное шифрование | Избыточно для hardcoded key модели | | Self-extracting архивы | Shell-скрипт — отдельный файл | | DRM / лицензирование | Не цель проекта | -| File permissions в архиве | Android управляет своими permissions | | Дедупликация файлов | Разные файлы, нет дублей | +| Симлинки и хардлинки | Только файлы и директории | +| uid/gid и timestamps | Только mode bits — достаточно для target use case | +| Обратная совместимость с v1.0 | Формат меняется, старые архивы не поддерживаются | ## Traceability @@ -123,12 +161,32 @@ | TST-01 | Phase 3 | Complete | | TST-02 | Phase 3 | Complete | | TST-03 | Phase 3 | Complete | +| FMT-09 | — | Pending | +| FMT-10 | — | Pending | +| FMT-11 | — | Pending | +| FMT-12 | — | Pending | +| DIR-01 | — | Pending | +| DIR-02 | — | Pending | +| DIR-03 | — | Pending | +| DIR-04 | — | Pending | +| DIR-05 | — | Pending | +| KOT-05 | — | Pending | +| KOT-06 | — | Pending | +| KOT-07 | — | Pending | +| SHL-04 | — | Pending | +| SHL-05 | — | Pending | +| SHL-06 | — | Pending | +| TST-04 | — | Pending | +| TST-05 | — | Pending | +| TST-06 | — | Pending | +| TST-07 | — | Pending | **Coverage:** -- v1 requirements: 30 total -- Mapped to phases: 30 -- Unmapped: 0 +- v1.0 requirements: 30 total — all Complete +- v1.1 requirements: 19 total +- Mapped to phases: 0 (pending roadmap) +- Unmapped: 19 --- *Requirements defined: 2026-02-24* -*Last updated: 2026-02-25 after Phase 4 completion* +*Last updated: 2026-02-25 after milestone v1.1 requirements definition*