# Модуль m03-program-store — план разработки > План по алгоритму d-dev (`std1\_rules\d\d-dev.md`), адаптация к > сервисному модулю; шлюзы «**Пользователь!**» — d-dev-4. Требования — > [module_reqs.md](module_reqs.md). | Шаг d-dev | Состав | Статус | |---|---|---| | 0. Персистентная подготовка | module_reqs.md, readme.md, SKILL.md | ✅ | | 1. Список единиц к реализации | методы ProgramStore — module_reqs разд. 4 (7 методов) | ✅ | | 1.3. Утверждение списка | — | **Пользователь!** ✅ (2026-10-18) | | 2. Спецификации единиц | `api_specs\` модуля — 2 файла (жизненный цикл 01; чтение 02) | ✅ | | 2.4. Утверждение спецификаций | — | **Пользователь!** ✅ (2026-10-18) | | 3. Код и тесты | `Server.WatchBody.Core\Programs\ProgramStore.cs` + интеграционные тесты (docker `watchbody-pg`): 19 тестов, все PASS; сборка 0 ошибок | ✅ | | 3.4. Утверждение реализации | — | **Пользователь!** ✅ (2026-10-18) | | 4. Завершение | сборка и тесты зелёные; критерии приёмки module_reqs разд. 5 проверены | ✅ (2026-10-18: сборка 0 ошибок, тесты Web 44/44 + Core 55/55 PASS на момент закрытия; после З-35 — Core 56/56) | Примечания: - Разработка поштучно: методы сервиса небольшой группой (жизненный цикл 1–4, чтение 5–7) — шлюзы 1.3/2.4 можно проходить одной группой. - Потребители ProgramStore (подключение в следующих модулях): m05 — создание draft `author=rules`; m06 — импорт пакета программы; m08 — admin-API программ. Sync в m02 остаётся на репозиториях (v1). - Интеграционные тесты Core-сервисов живут в `Server.WatchBody.Web.Tests` (общая docker-инфраструктура: `TestApp`, подключение из конфига); юнит-инфраструктура Core.Tests (fake-транспорт ConnectionStringTest) для сервиса над репозиториями не подходит. - jsonb нормализует пробелы — сравнение body в тестах через `JsonElement.DeepEquals`. - Прогон тестов — PostgreSQL 17 в docker `watchbody-pg` (порт 5433, БД `watchbody`), как в m01/m02.