Skip to content

release: GT-658 — a broken renderer accused hundreds of innocent diagrams - #445

Merged
beyondnetPeru merged 1 commit into
mainfrom
develop
Aug 8, 2026
Merged

release: GT-658 — a broken renderer accused hundreds of innocent diagrams#445
beyondnetPeru merged 1 commit into
mainfrom
develop

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

Promotes develop to main. One gap, found in the CI of the previous promotion (#443).

01-validate-docs --render-mermaid spawned npx -y @mermaid-js/mermaid-cli with no version, once per diagram. That install came out incomplete on a runner — Cannot find package 'import-meta-resolve', which the package does declare — and every diagram then failed as mermaid render failed, blamed on the document containing it. 23m21s to reach hundreds of wrong accusations.

Two defects in one invocation

The pin. npx -y with no version resolves @latest when CI runs, and the tool appears in package-lock.json zero times — npm ci, npm audit, Dependabot and GT-657's audit gate are all blind to it.

The blame. The corpus and the renderer are different things and only one of them can be broken by a commit. The guard asked about 371 diagrams before asking whether the renderer worked, so the loudest signal pointed at the only innocent party.

A preflight now renders one trivial diagram first; a failure there is one error naming the renderer and saying no diagram is implicated. Exit 0 is not proof — a renderer that writes no SVG has not rendered. Pinned to 11.16.0 in a single constant both paths read.

Both halves measured on the runner, before merging

result
broken renderer (non-existent pin) exit 1, zero mermaid render failed lines
healthy renderer (dispatched full corpus) 405 of 405 rendered, success in 12m01s

The PR's own green was not accepted as verification. It rendered 0 of 405: pull_request builds scope rendering to changed files, and that change touched no diagram-bearing markdown. A workflow_dispatch, where GITHUB_BASE_REF is unset and the whole corpus renders, is what actually proved it.

Not done, deliberately

Declaring the tool a pinned devDependency is the fuller fix — lockfile, npm audit, Dependabot, and npm ci failing loudly on exactly the partial install that caused this — but it drags Puppeteer and a Chromium download into every npm ci to render diagrams only CI renders. Recorded in GT-658 as a separate decision.

Board: 643 / 656 done, 3 in progress, 3 pending, 7 deferred.

🤖 Generated with Claude Code

…71 diagrams, and pin it (#444)

`01-validate-docs --render-mermaid` spawned `npx -y @mermaid-js/mermaid-cli` with
NO version, once per diagram. On 2026-08-08 that install came out INCOMPLETE on a
runner — `Cannot find package 'import-meta-resolve'`, which the package DOES
declare, so the tree was half-written rather than the publish being bad. Every
diagram then failed as "mermaid render failed", blamed on the document containing
it; 23m21s to reach hundreds of wrong accusations.

Two defects in one invocation. The pin: `npx -y` with no version resolves @latest
when CI runs, and the tool is in package-lock.json ZERO times, so npm ci, npm
audit, Dependabot and GT-657's audit gate are all blind to it. The blame: the
corpus and the renderer are different things and only one can be broken by a
commit, but the guard asked about 371 diagrams before asking whether the renderer
worked, so the loudest signal pointed at the only innocent party.

A preflight now renders one trivial diagram first. A failure there is ONE error
naming the renderer, stating no diagram is implicated. Exit 0 is not proof — a
renderer that writes no SVG has not rendered. Pinned to 11.16.0 in one constant
both paths read.

Both halves measured on the runner before merging:
  broken renderer (non-existent pin) -> exit 1, ZERO "mermaid render failed"
  healthy renderer (dispatched full corpus) -> 405 of 405 rendered, success

The PR's own green was NOT accepted as verification: it rendered 0 of 405,
because pull_request builds scope rendering to changed files and this change
touches no diagram-bearing markdown. A workflow_dispatch, where GITHUB_BASE_REF
is unset and the whole corpus renders, is what proved it.

The first version of this preflight carried the defect it removes: on a machine
with no usable Chromium mermaid-cli exits 1 silently, and the message read
"exited 1 on a trivial diagram: ". It now says the process was silent, names the
likely cause and prints the command to reproduce.

NOT done, deliberately: declaring the tool a pinned devDependency is the fuller
fix but drags Puppeteer and Chromium into every npm ci. Recorded as a separate
decision.

Board: 643 / 656 done, 3 in progress, 3 pending, 7 deferred.
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner August 8, 2026 18:02
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown

📊 Bilingual Coverage Impact

PR Changes

  • Paired EN/ES files modified: 3
  • New EN files needing ES translation: 0

Repository Coverage

Metric Value
Total EN files 527
Total ES files 501
Paired files 0
Coverage 0%

Good: All EN changes have ES counterparts.


Generated by GitHub Actions

@beyondnetPeru
beyondnetPeru merged commit e180353 into main Aug 8, 2026
65 checks passed
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.

1 participant