Q9: eight review findings, five of them guards that could pass uncheckedQ9: восемь замечаний ревью, пять из них — проверки, способные пройти вхолостую
What this cycle decidedЧто решил этот цикл
Eight findings are closed in their own cycle: six the previous review raised but could not route to the implementer, plus two absorbed from an older follow-up issue whose other seven items earlier cycles had already closed. Five are the defect class this wave has been closing: a check that reports success because its subject was absent. The check-dist control test now asserts a positive marker that the spawned script actually reached the stage under test, and a committed mutation test that injects an upstream throw proves the control goes red instead of passing vacuously; scripts/check-dist.mjs gains the top-level try/catch wrapper its own comment already claimed, so an accumulated report prints instead of being lost to a stack trace, and every problem line now carries the check-dist prefix, including the ones that come from a failed read rather than from the script's own throw; scripts/vendor-assets.mjs now rejects a manifest entry whose filename carries no content hash at all, instead of accepting it because there was nothing to compare against; and the chip-literal guard in test/work.test.ts matches on a word boundary, so a future comment containing a longer word can no longer fail while naming a literal that is not hard-coded. The fifth is the one absorbed from the older issue: a version number typed into two project descriptions, which the project's own rules forbid. It had survived because the gate meant to prevent it scans templates only and its pattern requires two consecutive digits, so a three-part version of single digits was both outside the directories it reads and invisible to the expression it reads with. A version-shaped matcher over project copy now covers it, deliberately not extended to the journal or the decision records, where numbers are the subject matter rather than a leak. The remaining three are corrections by inspection: the entry-point test's header now names all three scripts its own list enforces, the composite keys in the font test use a printable separator instead of a raw NUL byte that made the whole file invisible to grep, and a comment describing the chip guard no longer says it warns on a missing translation, which it stopped doing when the guard was changed to throw — that comment being the one place a reader looks to find out.Восемь замечаний закрыты отдельным циклом: шесть подняло предыдущее ревью, но они не доходили до исполнителя, и ещё два перенесены из более старого follow-up issue, остальные семь пунктов которого закрыли предыдущие циклы. Пять из них относятся к тому же классу дефектов, который эта волна закрывает: проверка сообщает об успехе, потому что её предмет отсутствовал. Контрольный тест check-dist теперь проверяет положительный маркер того, что запущенный скрипт действительно дошёл до проверяемого этапа, а зафиксированный мутационный тест, подставляющий исключение выше по потоку, доказывает, что контроль краснеет, а не проходит вхолостую; scripts/check-dist.mjs получает обёртку try/catch верхнего уровня, о которой его собственный комментарий уже говорил, так что накопленный отчёт печатается, а не теряется в трассировке стека, и каждая строка проблемы теперь несёт префикс check-dist, включая те, что приходят из неудавшегося чтения, а не из собственного исключения скрипта; scripts/vendor-assets.mjs теперь отвергает запись манифеста, в имени файла которой вовсе нет хеша содержимого, вместо того чтобы принимать её из-за отсутствия предмета сравнения; а проверка литералов чипов в test/work.test.ts сопоставляет по границе слова, так что будущий комментарий с более длинным словом больше не сможет упасть, назвав литерал, который нигде не захардкожен. Пятое — перенесённое из более старого issue: в двух описаниях проектов был вписан номер версии, что правила проекта запрещают. Оно уцелело потому, что гейт, обязанный это предотвращать, просматривает только шаблоны, а его выражение требует двух цифр подряд, — трёхчастная версия из однозначных чисел оказалась и вне читаемых им каталогов, и невидимой для самого выражения. Теперь её ловит выражение, распознающее форму версии в текстах проектов, — сознательно не распространённое на журнал и записи о решениях, где числа составляют содержание, а не утечку. Остальные три — исправления по результату чтения: заголовок теста точки входа теперь называет все три скрипта, которые его собственный список проверяет; составные ключи в тесте шрифтов используют печатаемый разделитель вместо сырого нулевого байта, из-за которого весь файл был невидим для grep; и комментарий к проверке чипов больше не утверждает, что она предупреждает о пропущенном переводе, хотя проверку давно изменили на выброс исключения, — а именно в этот комментарий читатель и смотрит, чтобы узнать поведение.
TimelineХронология
- Issue openedIssue открыт:
- Proposal approvedПредложение одобрено: +3 h 10 min+3 ч 10 мин
- MergedСмержено: +40 min+40 мин
- ReleasedРелиз выпущен: +2 min+2 мин
Manual interventionsРучные вмешательства
No manual intervention was recorded for this cycle.Ручных вмешательств в этом цикле не зафиксировано.