ADR 0215 — Решение проекта доходит до dev и QA
Статус
Accepted. 2026-10-14 (AT-526; решения владельца от 14.10). ПЕРЕСМАТРИВАЕТ часть
ADR 0214: правило "решение без
afeta, касающегося задачи, не входит" в контекст dev. Правила в RN-870,
RN-871 и RN-872.
Тема: gates. Важный эффект — эффект gate QA: он перестаёт повторять
вопрос, на который пользователь уже ответил.
Контекст
Измерено в TP-01 (15-й раунд, viralabs-app-2026-10-11b):
- Пользователь ответил на "código inexistente ou apagado responde 404?" в 15:45.
Задача "listagem e exclusão de links" принадлежала ДРУГОЙ истории, и её QA
утверждал, что вопрос остаётся без ответа, выдал
needs_user_decision, и gate запарковался без открытого вопроса в проекте — в ленте не на что было отвечать. afeta.regras, которые записывает Criativo, — это ЗАГОЛОВКИ правил, а фильтр ADR 0214 (afetaAlgum) сравнивает с ID: ни одно решение Criativo никогда не совпадало. Даже с id упомянутые правила не были правилами истории задачи.- Вердикт принимал
openQuestionIdнесуществующего или уже отвеченного вопроса и парковался бы навсегда.
Решение
openQuestionIdвердикта проверяется (RN-870): он должен существовать в проекте и быть ОТКРЫТЫМ, до любой записи. Несуществующий (или другого проекта) — 404pergunta_nao_encontrada; уже отвеченный — 409pergunta_ja_respondidaс текстом решения в теле (decisao), без записи и безpr.gate_changed— QA читает решение вместо ожидания.afeta.regrasпринимает точный заголовок (RN-871): в воронке событий точный заголовокartifact.business_ruleпроекта становится id (самого свежего, если заголовок повторяется); то, что не является ни id, ни точным заголовком, — названный 400. Чтение контекста dev также сопоставляет по ЗАГОЛОВКУ правил истории, для решений, записанных до этого правила.- Остальные решения проекта тоже доходят (RN-872, вариант (a)
владельца):
GET /internal/sessions/:sessionId/dev-contextвозвращает, помимоdecisoes(касающихся задачи),decisoesDoProjeto— прочиеdecision_recordпроекта, ОТДЕЛЬНЫМ списком, в пределах ТОГО ЖЕ предела 10: относящиеся к задаче идут первыми и расходуют предел раньше. Именно это пересматривает ADR 0214, чья фраза "решение безafetaне входит" перестаёт действовать для списка проекта (продолжает действовать дляdecisoes).
Последствия
- Новое поле аддитивно: engine его игнорирует, пока lane engine не напечатает
раздел "Outras decisões do projeto" в kickoff dev и в срезе QA
(
context_builder.exчитает контекст черезMap.getс именованным ключом). - Предел 10 ОБЩИЙ. В проекте с множеством решений старые, не касающиеся задачи, остаются вне — цена того, чтобы не расширять контекст.
decisoesDoProjetoвключает каждоеdecision_recordпроекта, а не только рождённые из вопроса, на который ответил пользователь (решения Criativo о технических ограничениях тоже, RN-711).- Заголовок, повторяющийся между версиями правила, разрешается в самую свежую; отказа из-за неоднозначности нет.