Skip to content

fix(diagrams): preserve literal SVG comments in CDATA (FU-1015) - #1835

Merged
mergify[bot] merged 5 commits into
mainfrom
codex/fu1015-svg-comments
Oct 22, 2026
Merged

mergify[bot] merged 5 commits into
mainfrom
codex/fu1015-svg-comments

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 22, 2026 •

Copy link
Copy Markdown
Owner

Die drei vorhandenen Stripper-Tests laufen jetzt im bestehenden Diagramm-Export-Gate mit.
Ihre Datei, Testnamen und Assertions sind unverändert erhalten.
Die vollständige Prepush-Bahn und der Push-Hook sind grün; unabhängiges Delta-Review, Roots Abnahme und Merge stehen noch aus.

Report

Plan-ID: FU-1015

Current test-wiring correction (2026-10-22)

Review: ausstehend (Stufe B). This worker launches no reviews. Root owns the bounded 9cf8738d..fc1d4662 delta review by glm-5.3 and deepseek-v4.1-flash (round two, last), the GPT observer workflow, acceptance and Mergify. The parent FU-1015 goal stays open.

Predecessor / correction base: 9cf8738d1b5afc7a597697b3cfa193c9898ca9a8, verified clean on the assigned branch before editing.
Final checked / pushed head: fc1d4662856fa7cb3234010d1f73c4428ad6e9ac.
Observed main tip: b0d92b112ec77cc396aeb34079aaf62f70348496 (fetch at entry and remote read after publication).
Actual package merge-base: 88c10c7716ad2dca629930adbcd8a291baf5d858; no freshness merge or history rewrite.
Raw package size: 78 additions + 2 deletions = 80 lines, four files, including all prior implementation, tests and PLAN changes. This correction adds exactly one line in one file.

Change: Add import './strip-comments.test.mjs'; to docs/diagrams/export-svg.test.mjs. No other tracked file changed in this correction. Runtime stripper code, PLAN, all existing tests/options/assertions, CI scripts, fixtures, dependencies and generated SVGs are unchanged. Architecture drift: existing gate passed, no new finding or allowlist change.

Method adaptation / preserved history: Root accepted R1835-G2 / R1835-D3 because the canonical diagrams-export gate runs only node --test docs/diagrams/export-svg.test.mjs. The original proposal was to move the cases and delete their separate file. Inspection found inherited Test-First: docs/diagrams/strip-comments.test.mjs::<name> trailers in both a3a1eab6 and 417eec28; stock red-first validates their HEAD paths even in plan mode. Deletion would invalidate mandatory historical evidence. The authorized replacement is this static side-effect import: the same tests register under the existing entrypoint, without copying, moving, deleting, filtering or adding tests. Remaining acceptance is independent delta closure and Root acceptance; no gate change or acceptance relaxation was made.

Byte proof: docs/diagrams/strip-comments.test.mjs SHA-256 before and after is 6a40888d37269b2ae0d2e0112d47ac03f0dd369faa2d3c6e97214b6302523bcd. Exact-byte comparison against 9cf8738d passed. A literal diff assertion confirms the export suite differs only by the import.

Canonical gate proof: Both the explicit full prepush and the normal push hook printed and passed all three names below, together with the six existing export-suite tests: 9 passed, 0 failed, 0 skipped. Only the canonical export entrypoint was invoked for this proof; the two test files were not supplied together.

  • stripComments treats processing instructions as opaque before CDATA
  • stripComments preserves literal comment text in CDATA
  • stripComments retains removal behavior outside CDATA
Command / check Exit code / result
Exact-byte, exact-diff and file-scope assertions; git diff --check 0; one added import only; stripper tests unchanged.
node --test docs/diagrams/export-svg.test.mjs before commit 0; 9 passed, no skips, including all three names above.
bash scripts/ci/secret-scan.sh before the normal commit 0, no leaks; also passed in the hook.
Normal git commit -F <message-file> 0, mandatory precommit and commit-message hooks passed; English subject, No-Test: test wiring only, assertions unchanged, observed-model coauthor.
bash scripts/ci/red-first.sh --plan at final head 0, count=6, specs=4; inherited paths remain valid.
bash scripts/ci/red-first.sh at final head 0; historical selectors absent on the merge-base and green at head; no new semantic RED claim for this wiring change.
bash scripts/ci/gates.sh lane prepush at final head in the assigned worktree 0, 270 seconds; canonical diagrams-export includes all three names, 9/9 pass. Rust: 2,320 passed, 7 existing skips.
git push -u origin codex/fu1015-svg-comments 0, foreground; mandatory full prepush hook 0, 176 seconds, same head and same 9/9 export gate result.
git ls-remote origin codex/fu1015-svg-comments 0, exact candidate fc1d4662856fa7cb3234010d1f73c4428ad6e9ac.
Final scope/hash/gate assertions and clean tracked status 0; package raw size 80 lines. PR remains OPEN, ready, labels empty, base main.

Admission evidence: Fresh start-check returned 0 before every heavy phase; adjacent one-minute loads were 1.50 (targeted browser suite), 1.73 (commit hooks), 3.09 (full prepush) and 4.89 (push hook), all below 8. MemAvailable exceeded 14,300 MiB; Cargo count was zero at each admission. Commands were awaited in the foreground. The predecessor conflict worker's log ends with JOB-EXIT=0, corroborated by its dated completion event before this run. Earlier operational caveats below remain historical and unresolved by this evidence, including the earlier push at load 16.00 and the predecessor's missing commit-adjacent load sample.

NICHT ABGEDECKT — current correction

  • Linux does not compile #[cfg(windows)] tests or Windows clippy branches; the Windows lane runs in the merge queue.
  • Existing skips remain: 7 Rust, 3 HQ, 1 Denkraum; no skips, assertions, timeouts or retries changed. The export gate itself had no browser skips in either final-head run.
  • The full Linux lane's dedicated browser-smoke, frontend build and workflow gates, external services, real desktop app and visual acceptance are not covered by prepush. No new visual, performance, security-feature or general XML-parser claim.
  • Native project-memory/graph tools and the lage-jetzt mirror were unavailable; bounded exact-source inspection was used. Offline PLAN checking does not establish global online plan freshness. This correction has no PLAN ownership and makes no PLAN edit.
  • The optional XML-only source comment from R1835-D1 was intentionally omitted under the authorized test-wiring-only scope. The malformed-input follow-up R1835-D2 stays open. Overall FU-1015, Root acceptance, independent review, merge and end-user usability are not complete.

Current accepted-finding disposition and handover

Finding Disposition
R1835-G2 / R1835-D3, ungated stripper tests Implemented in fc1d4662; all three unchanged cases pass under the canonical gate. Independent closure pending Root's last delta review.

No unrelated disposition was changed. PR ready/draft state, labels, queue and merge actions were left as found. The worker's bounded native goal covers this checked handover only; Root owns all remaining parent duties. All prior RED evidence, review findings/dispositions and resource caveats are preserved below as historical records bound to their stated heads.

Historical correction report and Root dispositions (preserved from the predecessor)

Plan-ID: FU-1015

Package: FU-1015 / R1581-K1, accepted correction on existing PR #1835. Tier: B.
Goal / benefit: Fix the public stripComments regression introduced at 417eec28: a CDATA-looking opener inside a processing instruction must not protect a later real XML comment. Preserve original PI and genuine CDATA bytes and existing malformed-comment behavior.
Parent / owner: Ticket 3913f1fa-1ba7-448d-baa6-e188dc26b544, same execution owner; Root owns qualified reviews, acceptance and Mergify. The worker's native get_goal returned null on entry; create_goal created the bounded delivery goal, and milestone get_goal calls confirmed it active during implementation/publication. No predecessor goal was replaced.
Scope: Only docs/diagrams/strip-comments.mjs, its test file, and the existing FU-1015 row in docs/PLAN.md. No new dependencies, generated SVG changes, export-test edits, app launch, review launch or merge action.

Observed PR base tip: main@9cc16b859fa2ec6be20ab95185a32b460a710376.
Actual merge-base: 88c10c7716ad2dca629930adbcd8a291baf5d858; the original report's base is historical, not a live main-tip claim.
Reviewed predecessor: 417eec28c40acde3a83a31059dd96d612dfca354.
RED-test commit: 9208233c0c67a25c7dd3b71df32001a9464d5b57.
Fix / checked / remote head: 9cf8738d1b5afc7a597697b3cfa193c9898ca9a8.
Raw diff against merge-base: 77 additions + 2 deletions = 79 lines, three files, including the prior 59 lines. Fix-round delta against 417eec28: 26 raw lines.

What changed and test boundary

Evidence (Linux, 2026-10-22)

Command / boundary Exit code / observed result
node --test docs/diagrams/strip-comments.test.mjs, added regression before changing production code at 417eec28 1, compiling assertion failure: actual <svg><?probe <![CDATA[ ?><!-- remove --><![CDATA[x]]></svg> versus expected <svg><?probe <![CDATA[ ?><![CDATA[x]]></svg>; 2 existing tests pass. Committed as 9208233c.
node --test docs/diagrams/strip-comments.test.mjs at final head 0, 3 passed, no skips.
node --test docs/diagrams/strip-comments.test.mjs docs/diagrams/export-svg.test.mjs after the fix 0, 9 passed, no skips; export suite unchanged.
Literal public-API assertion using the stripper loaded from git show 88c10c77:docs/diagrams/strip-comments.mjs 0, the exact reported PI/CDATA input was already GREEN on the frozen merge-base. This is candidate regression evidence, not frozen-base RED.
bash scripts/ci/red-first.sh --plan 0, count=6, specs=4 (inherited duplicate Test-First trailers plus two Regression-For trailers).
bash scripts/ci/red-first.sh 0. The two inherited named selectors are absent on the merge-base and pass at head; this is not a compiling RED for the new PI case. Regression-For: 417eec28c40acde3a83a31059dd96d612dfca354 resolves to a head ancestor.
bash scripts/ci/secret-scan.sh before each of the two normal commits, also repeated by their hooks 0, no leaks.
Normal git commit hooks for 9208233c and 9cf8738d 0, precommit lanes and trailer validation passed. Both commits use the actual regression SHA and observed model coauthor.
bash scripts/ci/gates.sh lane prepush in the assigned original worktree at 9cf8738d 0, 315 seconds; all gates green, including 1,707 frontend, 995 HQ, 388 Denkraum and 2,320 Rust tests passed.
git push -u origin codex/fu1015-svg-comments 0, foreground normal push; mandatory prepush hook also passed in 194 seconds at the same head.
git ls-remote origin codex/fu1015-svg-comments 0, exact final head 9cf8738d1b5afc7a597697b3cfa193c9898ca9a8.
gitleaks git --config .gitleaks.toml --redact --log-opts=88c10c7716ad2dca629930adbcd8a291baf5d858..HEAD . 0, four commits scanned, no leaks.
git diff --check; git status --short; own-row-only PLAN diff assertion 0; clean tree; exactly one removed and one added FU-1015 row, no other PLAN changes.

Both new commits truthfully use Regression-For, with no new Test-First claim against the frozen merge-base. Original a3a1eab6 / 417eec28 evidence remains historical: original CDATA regression RED, then eight targeted/integration tests GREEN; the prior report's full prepush and publication were bound to 417eec28 and are superseded by the checks above.

NICHT ABGEDECKT

  • Linux does not compile #[cfg(windows)] tests or Windows clippy branches; the Windows lane runs in the merge queue.
  • Existing skips remain: 7 Rust, 3 HQ and 1 Denkraum test. No skip, timeout, retry or assertion was weakened.
  • Prepush does not run the full Linux lane's browser smoke, frontend build or workflow gates. External services are not verified.
  • No real desktop app, screenshot, visual acceptance, performance claim, general XML parser or security-feature claim.
  • Native memory/graph tools and the lage-jetzt mirror were unavailable. Bounded exact-source/caller inspection was used. The offline PLAN gate plus bounded live own-row / test(diagrams): pin exact SVG fixture output (FU-1015) #1833 / fix(ci): accept equivalent step indentation and cover guards #1839 checks do not prove global online PLAN freshness.
  • Resource-admission deviation: the explicit full prepush started below the required load threshold. Before the later push hook, start-check returned 0, but the separately printed one-minute load was 16.00, above the required <8. The hook was already started by the sequential command; it completed successfully. This does not establish compliant load admission for that hook. No further heavy command was started afterward; Root must assess this operational deviation.

Current findings and review disposition

Review: ausstehend (Stufe B). Root commissions two qualified non-author families (glm-5.3 or permitted glm-5.3-flash, plus deepseek-v4.1-flash) and the GPT observer. Historical glm-5.2 is NOT eligible and does not count. No independent QA/delegation/reviewer was launched by this worker.

Finding Disposition at final head
4349235916, accepted P2 PI/CDATA regression Fixed by 9cf8738d, compiling candidate RED committed first in 9208233c; public literal expectations now pass. Closure remains subject to Root's review of 417eec28..9cf8738d.
4349235873, accepted own-PLAN finding Fixed by 9cf8738d, only the existing FU-1015 row changed; unresolved siblings retained. Independent closure pending.
4349235904, missing qualified second family Open process duty for Root; required qualified reviews and GPT observer pending.
R1835-G1..G3 Prior dispositions preserved verbatim below; old glm-5.2 review not counted.

This is the accepted-finding correction delta 417eec28..9cf8738d; Root owns the bounded round-two verification and final merge/split/drop decision. No readiness/draft toggling, labels, review-ok, queue, merge or new PR action was taken.

Checked handover

Implemented, tested, pushed and reported at the final head. Qualified independent review, Root acceptance, merge and end-user usability acceptance remain open. Next owner: Root for review/acceptance/Mergify; the dispatcher releases the sole PLAN editing lane after this worker ends, then #1839 may proceed. If it later conflicts on the same row, Root coordinates a genuine conflict merge; no freshness merge/rebase was performed. The parent goal remains open.

Historical review record (superseded; preserved verbatim)

Review disposition (Root, 2026-10-22 ~13:55Z, head 417eec2)

Tier B (scripts/docs code with test). Author family OpenAI (Codex gpt-6.1-sol). Reviewer: glm-5.2:cloud (Zhipu) via scripts/review/run-local.sh 1835 --via ollama, verdict approve with conditions.

ID Source Severity Finding Disposition
R1835-G1 glm-5.2 high strip-comments.test.mjs:38 expected value wrong, test would fail Rejected: measured at 417eec2, node --test docs/diagrams/strip-comments.test.mjs exit 0, 2/2 pass. The reviewer's trace misses the repeat-until-stable loop.
R1835-G2 glm-5.2 low unterminated <!-- <![CDATA[x]]> now protected Rejected: old and new output are byte-identical ( <![CDATA[x]]>); only the <!-- opener is removed in both.
R1835-G3 glm-5.2 low comment regex duplicated Rejected for this package (two-line literal, smell only).

Root decision: accept; no open high finding. review-ok bound to 417eec2.

Review disposition, amendment (Root, date -u ~15:25Z, head 417eec2) — acceptance WITHDRAWN

Root removed review-ok, which takes the PR out of the queue. Root had applied an outdated tier-B rule. AGENTS.md at main 9cc16b8, rule 5 plus lines 133-137, requires two non-author families via the approved Ollama credit (glm-5.3, glm-5.3-flash, deepseek-v4.1-flash), a GPT observer, and the PLAN row updated in the same PR. glm-5.2 is not on that list, so the earlier review does not count.

ID Source Severity Finding Disposition
4349235904 codex bot (GPT observer) P1 second tier-B review missing Accepted. After the fix round, the new head gets reviews from glm-5.3 and deepseek-v4.1-flash.
4349235873 codex bot P1 PLAN row FU-1015 (docs/PLAN.md:365) stale Accepted. Fix in this PR (AGENTS.md:139).
4349235916 codex bot P2 a CDATA opener inside a processing instruction protects a later real comment Accepted, reproduced at 417eec2: stripComments('<svg><?probe <![CDATA[ ?><!-- remove --><![CDATA[x]]></svg>') returns the input unchanged, so <!-- remove --> survives (the base removed it). Fix: treat processing instructions as opaque, with a red test first.
R1835-G1..G3 glm-5.2 — see above Kept for the record, not counted.

Next: NACHBESSERN on this branch (Stabschef dispatches), then the review of the delta and the new head by glm-5.3 and deepseek-v4.1-flash.

Review — Root disposition (2026-10-22 ~18:10Z, head 9cf8738, base origin/main b0d92b1)

Tier B. Reviewers outside the author family (OpenAI): glm-5.3 (Zhipu) "reject" (based only on G1, rejected below), deepseek-v4.1-flash (DeepSeek) approve with conditions.

ID Source Sev Finding Disposition
R1835-G1 glm-5.3 F1 high 4th CDATA fixture is unterminated, so the suite is red rejected: strip-comments.test.mjs:38-39 at 9cf8738 is terminated (<![CDATA[<!-- keep -->]]>); Root ran node --test docs/diagrams/strip-comments.test.mjs on the head files: exit 0, pass 3, fail 0
R1835-D1 deepseek F1 high Comment text inside PI data survives (<?x > <!-- secret --> ?> unchanged); unsafe if SVG is inlined into HTML rejected: PI-as-opaque is the accepted fix for codex bot P2 4349235916; XML treats it as PI data, not a comment; the exported files are standalone SVG written by export-svg.mjs:125-126 and referenced as images (README.md, docs/design/…/README.md), never inlined; export input is our own diagram HTML. Follow-up: one-line code comment "XML-only output"
R1835-D2 deepseek F2 medium Unterminated <? before CDATA-like text keeps the comment follow-up: malformed input; the CDATA match behaves as on base 417eec2 (not introduced here)
R1835-G2 / R1835-D3 glm-5.3 F2, deepseek F3 medium/low docs/diagrams/strip-comments.test.mjs is run by no gate (gates.sh:164 runs only export-svg.test.mjs) accepted → NACHBESSERN: make the new cases run in the existing diagrams-export gate (move them into export-svg.test.mjs, no scripts/ci change), red-first irrelevant (test wiring), prove with gate output
R1835-G3 glm-5.3 F3 low CDATA re-assembled after comment removal gets no protection no change: direction is over-removal (safe), malformed input only
R1835-G4 / R1835-D4 glm-5.3 F4, deepseek F4 low PLAN row 366 facts unverifiable rejected: verified ~18:10Z — #1833 MERGED 72ae3f7; #1581 = CI-SEC-CODEQL (MERGED); #1839 open; status prefix "In Arbeit:" valid

After the NACHBESSERN: one delta review of the changed test file by glm-5.3 + deepseek-v4.1-flash (round 2, last).

NACHBESSERN delta — Root, 2026-10-22T18:38Z, 9cf8738..fc1d466

  • R1835-G2/D3 closed by fc1d466: docs/diagrams/export-svg.test.mjs imports ./strip-comments.test.mjs, so the gated command node --test docs/diagrams/export-svg.test.mjs (gates.sh:164, diagrams-export) now runs the stripper cases. Root ran it on the head files: exit 0, tests 9, pass 9, fail 0, incl. the three stripComments tests.
  • Delta is one test-wiring line (tier C, no runtime effect): gates suffice, no second external review round (Root decision; round limit). Acceptance after green PR checks on fc1d466 and the codex observer on that head.

Acceptance — Root, 2026-10-22T18:43Z, head fc1d466

ID Source Sev Finding Disposition
R1835-B4 codex bot 4351578122 (on 9cf8738, strip-comments.mjs:6) P2 A quoted CDATA opener inside an internal DTD entity value (<!DOCTYPE svg [<!ENTITY m "<![CDATA[">]>…) is treated as real CDATA, so a later comment survives follow-up (Root decision after the review limit): our only input is Chromium-serialized SVG from export-svg.mjs:125, which never emits a DOCTYPE/internal subset; the stripper is output hygiene, not a trust boundary. Logged with R1835-D1/D2 for a later tokenizer package (PLAN FU-1015 stays "In Arbeit")

PR checks on fc1d466: all green (gh pr checks --watch exit 0, incl. CodeQL and red-first). Tier B: glm-5.3 + deepseek-v4.1-flash on 9cf8738, delta fc1d466 tier C (test wiring). No open high. Root decision: merge.

Cuarroc and others added 2 commits October 22, 2026 14:02
Exercise the public stripper with literal expected SVG strings and retain the observed removal behavior for malformed comment openers.

Test-First: docs/diagrams/strip-comments.test.mjs::stripComments preserves literal comment text in CDATA
Test-First: docs/diagrams/strip-comments.test.mjs::stripComments retains removal behavior outside CDATA

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Protect original CDATA spans before applying the existing fixed-point comment removal to surrounding markup. Ignore CDATA-looking text in real comments, and keep removing openers assembled by earlier removals.

Test-First: docs/diagrams/strip-comments.test.mjs::stripComments preserves literal comment text in CDATA
Test-First: docs/diagrams/strip-comments.test.mjs::stripComments retains removal behavior outside CDATA

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
@Cuarroc
Cuarroc marked this pull request as ready for review October 22, 2026 13:51
@Cuarroc Cuarroc added the review-ok Pipeline: review disposition complete, no open high finding label Oct 22, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-22T17:41:35.448544Z 9cf8738 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 417eec28c4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@@ -1,8 +1,21 @@
// Separate from export-svg.mjs so tests can import it without Chromium or argv.
export function stripComments(s) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Update the FU-1015 plan status

When this implementation lands, docs/PLAN.md:365 will still describe FU-1015 as “Geplant: nicht disponiert,” even though this commit implements its #1581 K1 follow-up. Update the row in this commit so the canonical plan reflects the post-merge state; the repository explicitly treats this mismatch as a finding that must be resolved before acceptance.

AGENTS.md reference: AGENTS.md:L139-L139

Useful? React with 👍 / 👎.

@@ -1,8 +1,21 @@
// Separate from export-svg.mjs so tests can import it without Chromium or argv.
export function stripComments(s) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Obtain the second Tier-B review

Before accepting or merging this Tier-B change, obtain and record the required second independent review. The commit’s review disposition names only one non-author reviewer (glm-5.2:cloud) before declaring acceptance, while Tier B requires two reviewers from different non-author families, using the documented subscription/OpenRouter pairing or its E1 substitution.

AGENTS.md reference: AGENTS.md:L28-L33

Useful? React with 👍 / 👎.

Comment thread docs/diagrams/strip-comments.mjs Outdated
const parts = [];
let start = 0;
// Match comments too, so CDATA-looking text inside a comment is not protected.
for (const match of s.matchAll(/<!\[CDATA\[[\s\S]*?\]\]>|<!--(?:[\s\S]*?-->)?/g)) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Ignore CDATA-looking text inside processing instructions

For a valid SVG such as <svg><?probe <![CDATA[ ?><!-- remove --><![CDATA[x]]></svg>, the matcher treats the text inside the processing instruction as a real CDATA opener and consumes through the later genuine CDATA terminator. Consequently <!-- remove --> is returned unchanged even though it is an actual markup comment; processing instructions must be consumed as opaque regions before recognizing CDATA starts.

Useful? React with 👍 / 👎.

@Cuarroc

Cuarroc commented Oct 22, 2026

Copy link
Copy Markdown
Owner Author

Root 14:55Z: CI re-trigger only (no code change, head stays 417eec2). Attempt 1 of run 39790632897 hung 52 min in setup-linux and was cancelled; the attempt-2 rerun ended startup_failure, because the rerun of the cancelled run also re-ran the main-only main-red-guard job. A reopen starts a fresh pull_request run on the same head; review-ok stays bound to 417eec2.

@Cuarroc Cuarroc closed this Oct 22, 2026
@Cuarroc Cuarroc reopened this Oct 22, 2026
@mergify mergify Bot added the queued label Oct 22, 2026
@mergify mergify Bot mentioned this pull request Oct 22, 2026
27 of 51 tasks
@Cuarroc Cuarroc removed the review-ok Pipeline: review disposition complete, no open high finding label Oct 22, 2026
@Cuarroc

Cuarroc commented Oct 22, 2026

Copy link
Copy Markdown
Owner Author

@Mergifyio dequeue

@mergify

mergify Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Merge Queue Status

  • ✅ Entered queue — 2026-10-22 15:07 UTC · Rule: default · triggered by merge protections
  • 🟠 Checks running · on draft merge queue: checking #1835 on main (9cc16b8) #1840
  • 🚫 Left the queue — 2026-10-22 15:20 UTC · at 417eec28c40acde3a83a31059dd96d612dfca354

This pull request spent 13 minutes 36 seconds in the queue, with no time running CI.

Reason

Pull request #1835 has been dequeued

Queue conditions are not satisfied:

  • all of: [🚦 Auto-merge conditions]
    • label = review-ok
  • any of: [🔀 queue conditions]
    • all of: [📌 queue conditions of queue rule default]
      • label = review-ok

Hint

You should look at the reason for the failure and decide if the pull request needs to be fixed or if you want to requeue it.
If you do update this pull request, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio queue comment.

Waiting for
  • check-success = gates (linux)
  • any of: [🛡 GitHub repository ruleset rule main-pr-required-checks]
    • check-neutral = @github-actions/gates (linux)
    • check-skipped = @github-actions/gates (linux)
    • check-success = @github-actions/gates (linux)
All conditions
  • check-success = gates (linux)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-neutral = @github-actions/gates (linux)
    • check-skipped = @github-actions/gates (linux)
    • check-success = @github-actions/gates (linux)
  • check-success = gates (windows)
  • check-success = red-first
  • github-review-approved [🛡 GitHub repository ruleset rule main-pr-required-checks]
  • label != do-not-merge
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (windows)
    • check-neutral = @github-actions/gates (windows)
    • check-skipped = @github-actions/gates (windows)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/red-first
    • check-neutral = @github-actions/red-first
    • check-skipped = @github-actions/red-first
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-neutral = @mergify/Mergify Merge Protections
    • check-skipped = @mergify/Mergify Merge Protections
    • check-success = @mergify/Mergify Merge Protections

Requeued — the merge queue status continues in this comment ↓.

Cuarroc and others added 2 commits October 22, 2026 19:25
Assert literal public API output for CDATA-looking processing instruction content before real comments and genuine CDATA.

Regression-For: 417eec2

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Consume processing instructions as opaque spans before recognizing CDATA. Remove following markup comments and preserve genuine CDATA bytes. Reconcile only the FU-1015 plan row with the partial delivery and outstanding siblings.

Regression-For: 417eec2

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
@mergify mergify Bot removed the dequeued label Oct 22, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9cf8738d1b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

const parts = [];
let start = 0;
// Consume processing instructions and comments before interpreting CDATA.
for (const match of s.matchAll(/<\?[\s\S]*?\?>|<!\[CDATA\[[\s\S]*?\]\]>|<!--(?:[\s\S]*?-->)?/g)) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Ignore CDATA openers in DTD entity values

When the input is a valid SVG with an internal DTD subset, such as <!DOCTYPE svg [<!ENTITY marker "<![CDATA[">]><svg><!-- remove --><![CDATA[x]]></svg>, this matcher treats the quoted entity value as a real CDATA opener and consumes through the document's genuine CDATA terminator. As a result, <!-- remove --> survives unchanged; lex the DOCTYPE so quoted values cannot open CDATA, and add this sibling case to the regression coverage.

AGENTS.md reference: AGENTS.md:L110-L112

Useful? React with 👍 / 👎.

Import the unchanged stripper test module from the existing export entrypoint. Preserve historical Test-First paths and all assertions.

No-Test: test wiring only, assertions unchanged

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
@Cuarroc Cuarroc added the review-ok Pipeline: review disposition complete, no open high finding label Oct 22, 2026
@Cuarroc

Cuarroc commented Oct 22, 2026

Copy link
Copy Markdown
Owner Author

@Mergifyio queue

@mergify mergify Bot added the queued label Oct 22, 2026
@mergify mergify Bot mentioned this pull request Oct 22, 2026
24 of 56 tasks
@mergify

mergify Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Merge Queue Status

This pull request spent 5 minutes 45 seconds in the queue, including 5 minutes 7 seconds running CI.

Reason

The merge conditions cannot be satisfied due to failing checks

  • gates (linux)
  • gates (linux)

Failing checks:

Hint

You may have to fix your CI before adding the pull request to the queue again.
If you update this pull request, to fix the CI, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio queue comment.

Waiting for
  • check-success = gates (linux)
  • check-success = gates (windows)
  • any of: [🛡 GitHub repository ruleset rule main-pr-required-checks]
    • check-neutral = @github-actions/gates (linux)
    • check-skipped = @github-actions/gates (linux)
    • check-success = @github-actions/gates (linux)
  • any of: [🛡 GitHub repository ruleset rule main-pr-required-checks]
    • check-neutral = @github-actions/gates (windows)
    • check-skipped = @github-actions/gates (windows)
    • check-success = @github-actions/gates (windows)
All conditions
  • check-success = gates (linux)
  • check-success = gates (windows)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-neutral = @github-actions/gates (linux)
    • check-skipped = @github-actions/gates (linux)
    • check-success = @github-actions/gates (linux)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-neutral = @github-actions/gates (windows)
    • check-skipped = @github-actions/gates (windows)
    • check-success = @github-actions/gates (windows)
  • check-success = red-first
  • github-review-approved [🛡 GitHub repository ruleset rule main-pr-required-checks]
  • label != do-not-merge
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/red-first
    • check-neutral = @github-actions/red-first
    • check-skipped = @github-actions/red-first
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-neutral = @mergify/Mergify Merge Protections
    • check-skipped = @mergify/Mergify Merge Protections
    • check-success = @mergify/Mergify Merge Protections

Requeued — the merge queue status continues in this comment ↓.

@mergify mergify Bot added dequeued and removed queued labels Oct 22, 2026
@Cuarroc

Cuarroc commented Oct 22, 2026

Copy link
Copy Markdown
Owner Author

@Mergifyio requeue

@mergify mergify Bot added queued and removed dequeued labels Oct 22, 2026
@mergify mergify Bot mentioned this pull request Oct 22, 2026
30 of 46 tasks
@mergify
mergify Bot merged commit 5a07fc0 into main Oct 22, 2026
18 checks passed
@mergify

mergify Bot commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

This pull request spent 11 minutes 11 seconds in the queue, including 10 minutes 26 seconds running CI.

Required conditions to merge
  • check-success = gates (linux)
  • check-success = gates (windows)
  • check-success = red-first
  • github-review-approved [🛡 GitHub repository ruleset rule main-pr-required-checks]
  • label != do-not-merge
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (linux)
    • check-neutral = @github-actions/gates (linux)
    • check-skipped = @github-actions/gates (linux)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (windows)
    • check-neutral = @github-actions/gates (windows)
    • check-skipped = @github-actions/gates (windows)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/red-first
    • check-neutral = @github-actions/red-first
    • check-skipped = @github-actions/red-first
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-neutral = @mergify/Mergify Merge Protections
    • check-skipped = @mergify/Mergify Merge Protections
    • check-success = @mergify/Mergify Merge Protections

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review-ok Pipeline: review disposition complete, no open high finding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant