diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 71b22da3..951588d0 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -302,5 +302,5 @@ | 371 | ⛔ **`WroteRequest` НЕ ДОКАЗЫВАЕТ, ЧТО ПРОВАЙДЕР ПРИНЯЛ ЗАПРОС — и ошибка идёт в сторону ПЕРЕПЛАТЫ ЧИТАТЕЛЯ, единственную, которую `D39.196` п.2а называет недопустимой.** Признак доставки, на котором стоит вся денежная граница пака «вызов, который оборвали мы» (строка **360**), срабатывает, когда байты ушли в НАШ сокет, а не когда их прочитал провайдер. Замер движковой сессии 08.09 (25 прогонов, два независимых серверных счётчика): **3 из 25 списывают оценку за вызов, которого не было** — `elapsed=0s`, `bytes_read=0`. ⚠ Отдельно замерено, что расширение признака заставляет платить и за ОТКАЗЫ: 22 из 25, на боевом пути **$0.80 за запрос, который провайдер отклонил** (эту половину сессия ПОЧИНИЛА, остаётся первая). ⛔ Чинится порогом по времени жизни вызова — а порог по латентности пак ЗАПРЕЩАЕТ, и строка **331** требует ЗАМЕРЕННОГО порога, не назначенного. ⇒ **вопрос владельцу, один: платить ли за вызов, чьи байты ушли в сокет, но провайдер их не прочитал.** До ответа класс живёт с известной переплатой | бэкенд | блокер-очереди для решения о деньгах (кода не блокирует) | порог замерен ЛИБО признак различает «ушло в сокет» и «прочитано» иначе | сдача пака «вызов, который оборвали мы» 08.09 | | 372 | **СТРАЖ ОТМЕНЫ ГЛОТАЕТ НАСТОЯЩУЮ ДЕНЕЖНУЮ ОСТАНОВКУ, когда прогон отменил не человек, а упавший сосед.** Платформа получит `failed` вместо `paused`, а книга без денег упрётся в потолок на ПЕРВОЙ резервации следующего прогона. Сессия стража оставила и была права: ратифицированный комментарий ветки `waitAborted` требует ровно этого для ОБОИХ случаев. ⇒ предмет не движковый, а **продуктовое решение о шве**: должна ли платформа отличать «остановлено человеком» от «остановлено падением соседа» | бэкенд | скоро | шов различает две отмены ЛИБО объявлено, что не различает, с ценой | сдача пака «вызов, который оборвали мы» 08.09 | | 373 | **НА HTTP/2 НАШ ДЕДЛАЙН ИНЕРТЕН, если тело запроса больше окна пира, а провайдер отвечает ранним 2xx, не дочитав его.** Замер движковой сессии: вызов длится столько, сколько держит сервер — **4 с и 8 с при дедлайне 700 мс**, — и всё уезжает в `decode_error`, ту самую дверь, которую пак 360 объявил закрытой. Механизм: запись паркуется в `awaitFlowControl` на `sync.Cond`, которую контекст НЕ будит. ⚠ Дыра ПРЕДШЕСТВУЕТ паку и требует пирa, отвечающего не дочитав тело (НЕ форма DeepSeek). Лечится `http2.Transport.WriteByteTimeout`, но его значение — НОВЫЙ порог, а пороги назначать нельзя | бэкенд | когда-нибудь | дедлайн действует и на записи тела ЛИБО класс объявлен недостижимым с замером | сдача пака «вызов, который оборвали мы» 08.09 | -| 374 | **НАЖАТИЕ ОСТАНОВКИ ПОРТИТ ВЕРДИКТ ГЛАВЫ.** Вердикт главы считается по СЧЁТУ флагов, а остановленная позиция флаг получает ⇒ одна остановка даёт «attention», две — «fail». То есть человек, нажавший стоп, ухудшает оценку КАЧЕСТВА главы, к которому его нажатие отношения не имеет. Продуктовое: должен ли ранг флага «остановлено» вообще участвовать в вердикте, или у остановки своя полоса. ⚠ Исчезает само, если денежная половина пака «вызов, который оборвали мы» (строка **360**) будет урезана: класс `cancelled` уйдёт вместе с ней. Найдено критиком полноты седьмого круга; диспозиция оркестратора жила письмом и носителя не имела до `D39.231` | бэкенд | скоро | остановка не двигает вердикт качества ЛИБО объявлено, что двигает, с доводом | седьмой круг ревью пака 360, 08.09 | +| 374 | ⚠ **СУЖЕНА 10.09: половина про ЕДИНИЦУ снята работой по паку 360 — остановленная позиция больше не решает судьбу редакторской единицы. ОСТАЁТСЯ вердикт ГЛАВЫ, и он продуктовый.** **НАЖАТИЕ ОСТАНОВКИ ПОРТИТ ВЕРДИКТ ГЛАВЫ.** Вердикт главы считается по СЧЁТУ флагов, а остановленная позиция флаг получает ⇒ одна остановка даёт «attention», две — «fail». То есть человек, нажавший стоп, ухудшает оценку КАЧЕСТВА главы, к которому его нажатие отношения не имеет. Продуктовое: должен ли ранг флага «остановлено» вообще участвовать в вердикте, или у остановки своя полоса. ⚠ Исчезает само, если денежная половина пака «вызов, который оборвали мы» (строка **360**) будет урезана: класс `cancelled` уйдёт вместе с ней. Найдено критиком полноты седьмого круга; диспозиция оркестратора жила письмом и носителя не имела до `D39.231` | бэкенд | скоро | остановка не двигает вердикт качества ЛИБО объявлено, что двигает, с доводом | седьмой круг ревью пака 360, 08.09 | | 375 | **ВЫГРУЗКА ЧИТАЕТ ОТМЕНЁННУЮ ПОЗИЦИЮ КАК ВЫПАВШИЙ КУСОК ТЕКСТА.** `memberDrops` считает строку `cancelled` выпавшим членом редакторской единицы — то есть выносит КОНТЕНТ-вердикт по факту нажатия кнопки: читателю сообщается, что из единицы пропал текст, тогда как пропала лишь незаконченная работа. Семантика экспорта, не транспорт. ⚠ Исчезает само вместе с классом `cancelled`, если денежная половина строки **360** будет урезана. Найдено критиком полноты седьмого круга; диспозиция оркестратора жила письмом и носителя не имела до `D39.231` | бэкенд | скоро | отменённая позиция отличима от выпавшего контента | седьмой круг ревью пака 360, 08.09 |