DO ревьюера: exclude_flags — golden-невидимая логика, переписанная в этом
PR (loop → comprehension) и без единого юнит-теста. Добавил
test_stage6_exclude_flags.py: пинит семантику мембершипа —
(1) спец-случай "all" исключает пост с флагами, (2) исключение по
конкретному флагу (merged дропается, ['no_image'] выживает),
(3) None/несовпадающий флаг оставляет все, (4) сохранение порядка
выживших. Мутация (обнуление предиката фильтра) роняет 3 из 4 тестов —
логика реально залочена. Это и есть «dedicated unit tests» из шапки
golden_replay.py. Голдены не тронуты, полный набор 447 passed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Финальный этап render-pipeline рефактора. Чисто косметика, вывод
байт-в-байт неизменен (golden-оракул нетронут, 0 изменений в
tests/test_data/).
1. `_wrap_post_html(body, footer)` — единая обёртка поста вместо трёх
байт-идентичных копий (_format_html + обе ветки
_render_messages_groups).
2. Инлайн-стили 400px/200px/max-width → именованные константы.
3. `_trim_messages_groups` заинлайнен как `[:limit]`; импорты в
test_stage4_eventloop.py/test_group_ids.py перевязаны на _render_pipeline
без потери покрытия тримминга.
4. Устаревшие комментарии «stage-4»/«4.4» переписаны под текущую границу
санитайза.
5. Фильтр exclude_flags → list-comprehension (эквивалент по де Моргану);
фильтр exclude_text и его excluded_post-debug-лог сохранены дословно.
Гейт: pytest 443 passed (без дельты); test_stage0_golden зелёный под
PYTHONHASHSEED 0/1; ни одной golden-фикстуры не изменено.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>