c2d9adc45f
Docker Image CI / build (pull_request) Has been cancelled
Do 1 [test-coverage]: залочил security-инвариант §3.4 (per-post изоляция фрагмента) именованным тестом test_unbalanced_post_does_not_swallow_next_post_html_feed (в test_stage4_eventloop.py — гоняет реальный per-post HTML-пайплайн на истории из 2 сообщений). Пост A несёт висячий `<div><b>DANGLING_A` без закрывашек, пост B целый с маркером. Ассертит: фид бьётся на 2 фрагмента по `<hr post-divider>`; теги A сбалансированы В ПРЕДЕЛАХ фрагмента A; маркер B в фрагменте B и НЕ в A (не заглочен). Проверено, что тест краснеет на регрессии «join-before-sanitize»: при склейке raw-постов до единого whole-feed bleach.clean невайтлистнутый `<hr>` стрипается (strip=True) → 0 разделителей → 1 фрагмент → первый ассерт падает. То есть будущий этап, вернувший склейку до санитайза, ловится этим тестом. Do 2 [documentation]: 4 устаревших коммента про удалённый «whole-feed sanitize для HTML» обновлены на «per-post в _render_pipeline для обоих (RSS и HTML)» (post_parser.py process_message docstring / _generate_html_body NOTE / generate_html_footer coverage-map; rss_generator.py feed-path коммент). Вывод «санитайзится ровно один раз» сохранён. Исполняемый код не менялся. Полный сюит 347 passed (+1 тест изоляции); оракул этапа 0 — 11 passed, golden не менялся. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>