diff --git a/.github/workflows/qwen-triage.yml b/.github/workflows/qwen-triage.yml index 6804f51f10c..4d18da33feb 100644 --- a/.github/workflows/qwen-triage.yml +++ b/.github/workflows/qwen-triage.yml @@ -3325,6 +3325,240 @@ jobs: printf '%s%s\n' "$esc" "$truncated" printf '\n\n\n\n' } + # Render report.md as MARKDOWN instead of an escaped
 dump.
+          # The report is a curated bilingual document (tables, nested
+          # 
, headings); the pre/code embedding displayed it as a + # wall of raw source (#8140's comment was the exhibit). The section + # is wrapped in a collapsed
so it still costs one line in + # the conversation but renders as real markdown when opened. + # + # A node sanitizer (not sed) does the escaping so it can tell code + # regions apart from prose. CommonMark does NOT decode entities in + # code spans or fenced blocks — they render literally there — so + # escaping & < > @ unconditionally showed the reader &&, + # <T>, @pkg inside the very commands, generic types, and + # scoped-package paths a verification report is read to copy (the + # #8140 symptom, relocated into code). The security floor now rests + # on four line-independent guarantees: + # 1. in PROSE every < is escaped, then only the structural tags + # the report uses as raw HTML (details/summary) are un-escaped + # back to live tags — no other tag can form in ordinary + # prose, so /