## ADDED Requirements ### Requirement: Сущности Flutter‑интеграции Flutter‑интеграция MUST предоставлять `CherryPickProvider` как `InheritedWidget` для доступа к DI‑scope в дереве виджетов. #### Scenario: Публичная сущность провайдера - **WHEN** разработчик импортирует Flutter‑пакет - **THEN** `CherryPickProvider` доступен и может быть помещен в дерево виджетов ### Requirement: Жизненный цикл провайдера `CherryPickProvider` MUST быть статическим проводником к scope и не владеть их жизненным циклом. #### Scenario: Stateless поведение - **WHEN** `CherryPickProvider` пересоздается с тем же child - **THEN** он не инициирует изменения DI‑состояния и не уведомляет зависимые виджеты ### Requirement: Доступ к root scope Провайдер MUST предоставлять доступ к root scope через `openRootScope`. #### Scenario: Открытие root scope - **WHEN** вызывается `openRootScope` - **THEN** возвращается root scope DI‑контейнера ### Requirement: Доступ к subscope Провайдер MUST предоставлять доступ к subscope через `openSubScope` с именем и разделителем. #### Scenario: Открытие named subscope - **WHEN** вызывается `openSubScope` с именем - **THEN** возвращается subscope с указанным именем #### Scenario: Пустое имя scope - **WHEN** вызывается `openSubScope` без имени - **THEN** возвращается root scope ### Requirement: Доступ через BuildContext `CherryPickProvider.of(context)` MUST возвращать провайдер из ближайшего ancestor. #### Scenario: Успешный lookup - **WHEN** вызов происходит внутри поддерева провайдера - **THEN** возвращается экземпляр провайдера #### Scenario: Ошибка lookup - **WHEN** вызов происходит вне поддерева провайдера - **THEN** в debug‑режиме происходит assertion‑ошибка ### Requirement: Ошибки и сообщения При отсутствии провайдера в дереве MUST быть диагностируемая ошибка. #### Scenario: Диагностика отсутствия провайдера - **WHEN** `CherryPickProvider.of(context)` не находит провайдер - **THEN** в debug‑режиме сообщение assertion указывает на отсутствие провайдера ### Requirement: Точки расширения Flutter‑интеграция MUST позволять использовать собственные DI‑scope стратегии поверх `CherryPickProvider`. #### Scenario: Кастомная организация scope - **WHEN** приложение использует собственные правила создания subscope - **THEN** провайдер остается совместимым и не ограничивает стратегию