Skip to content

review: absorb HTML entity decoding into the gate's sanitizer tolerance - #375

Merged
jwbron merged 1 commit into
mainfrom
jwbron/gate-entity-decode
Aug 24, 2026
Merged

review: absorb HTML entity decoding into the gate's sanitizer tolerance#375
jwbron merged 1 commit into
mainfrom
jwbron/gate-entity-decode

Conversation

@jwbron

@jwbron jwbron commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

The reviewer run on #371 (run 32758584548) died at the dispatch-conformance gate on a fully conforming review: 3 queued comments, 3 planned, verdict staged, and rule 7 still went red. The plan's footer quoted my <STOP: ...> line entity-escaped (&lt;STOP: ...&gt;, the renderer escapes angle brackets it quotes), gh-aw's ingest sanitizer decoded the entities on the queued side and convertXmlTags parenthesised the resulting pseudo-tag, and the normalized comparison saw two different bodies. The gate failed closed and withheld the whole review, including a blocking finding.

HTML entity decoding was already on sanitizer-normalize.ts's documented-not-absorbed residual list ("needs a pathological body"); turns out the pathological body is just a reviewer quoting angle brackets, the same way the <skill> placeholder shape got absorbed after kore-marketplace run 31609578203. So let's just absorb it: normalizeBody now mirrors sanitize_content_core.cjs's decodeHtmlEntities (gh-aw v0.85.4: named entities, decimal, hex, one level of &amp; double-encoding), applied to both comparison sides and sequenced before the invisible-character strips exactly as hardenUnicodeText sequences it (an entity-spelled &shy; decodes to U+00AD, which the next fold deletes). An entity-vs-literal splice that changes the text still fails; the incident shape, the decode forms, the ordering, and the out-of-range guard are all pinned in sanitizer-normalize.test.ts.

no-jira: reviewer-infra incident fix from run 32758584548; no open lane task covers gate false-blocks.

Run 32758584548 (PR #371) was blocked by rule 7 on a fully conforming
review: the staged plan quoted <STOP: ...> entity-escaped in a footer, the
ingest sanitizer decoded it and parenthesised the resulting pseudo-tag,
and the normalized comparison saw different bodies. Entity decoding was on
the documented-not-absorbed residual list; this absorbs it by mirroring
sanitize_content_core.cjs's decodeHtmlEntities (v0.85.4) on both sides of
the comparison, before the invisible strips, in the sanitizer's order.
@changeset-bot

changeset-bot Bot commented Aug 24, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 3982f10

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
review Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

Review live A/B

No reviewable delta: review.md is byte-identical in both arms (baseline origin/main, sha 1a6020971f11), so the extracted prompts and the orchestrator body match and no arms were run. Pass --force-arms for a deliberate wobble control.

@khan-actions-bot
khan-actions-bot requested review from a team, kevinb-khan and somewhatabstract and removed request for a team August 24, 2026 18:18
@jwbron
jwbron requested a review from jeresig August 24, 2026 19:35
@jwbron
jwbron merged commit cc3589d into main Aug 24, 2026
14 of 16 checks passed
@jwbron
jwbron deleted the jwbron/gate-entity-decode branch August 24, 2026 19:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants