Files
2026-02-27 14:33:30 +03:00

41 lines
2.8 KiB
Markdown
Raw Permalink 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.

## Context
CherryPick — монорепозиторий DIэкосистемы для Dart/Flutter, включающий ядро рантайма, аннотации, генератор и Flutterинтеграцию, а также адаптер логирования для Talker. Требуется системная спецификация модулей и их контрактов на русском языке.
## Goals / Non-Goals
**Goals:**
- Зафиксировать архитектурные границы и контракты модулей.
- Согласовать терминологию и жизненные циклы ключевых сущностей.
- Дать проверяемые требования с однозначными сценариями.
**Non-Goals:**
- Изменение или рефакторинг кода.
- Детализация низкоуровневых алгоритмов генератора.
- Документация внешних библиотек (Flutter, Talker).
## Decisions
- Разбить спецификацию по четырем capability: `di-runtime`, `annotations-and-codegen`, `flutter-integration`, `talker-logging-adapter`.
- Все требования формулировать нормативно (MUST) и снабжать сценариями WHEN/THEN.
- Описывать сущности, жизненный цикл, ошибки и точки расширения в каждом capability.
**Альтернативы:**
- Единый монолитный spec.md: отклонено из-за ухудшения навигации и поддержки.
- Использовать SHOULD/MAY: отклонено для уменьшения двусмысленности.
## Risks / Trade-offs
- [Risk] Спецификация может расходиться с фактическим поведением кода → Mitigation: привязка требований к публичным API и README, дальнейшая валидация при реализации.
- [Risk] Перекрывающиеся требования между capability → Mitigation: строгие границы и минимальный повтор.
## Migration Plan
- Спецификация вводится как документ без влияния на runtime.
- При необходимости последующих изменений — через отдельные changeзапросы OpenSpec.
## Open Questions
- Нужно ли фиксировать требования по производительности (O(1) lookup) как отдельный раздел?
- Нужны ли отдельные сценарии для edgecases (например, singleton + params)?