Skip to content

feat(intl-pipeline): partial-success runs ship; failures surface in PR#18064

Merged
wackerow merged 1 commit into
devfrom
intl-pipeline-v7-2
Apr 29, 2026
Merged

feat(intl-pipeline): partial-success runs ship; failures surface in PR#18064
wackerow merged 1 commit into
devfrom
intl-pipeline-v7-2

Conversation

@myelinated-wackerow
Copy link
Copy Markdown
Collaborator

Summary

A single failed (file, locale) combination no longer aborts the whole run. The pipeline now ships partial-success runs and reports failures in the PR body with copy-pasteable rerun commands.

Why

Real example: a 12-language run translating public/content/videos/ (58 files × 12 = 696 tasks) hit Gemini's RECITATION filter on one combination. The whole run aborted, stranding 695 successful translations on the temp branch. Manual recovery was needed to squash and merge per-language. With ~24 locales and growing content, single-task failures will only get more common.

Changes

  • main.ts: submitWithContext() wraps pool.submit() to capture file context on failure. The pool.hasErrors() -> throw block becomes log-and-continue. Hard abort retained only for the all-failed case (no empty PR).
  • pr-creation.ts: generateRunSummary and createOrUpdateTranslationPR accept an optional failures[] array and render a "N task(s) failed:" section with each (file, locale, message) plus rerun commands.

Per-file manifest stamping is unchanged: failed files don't stamp, so a rerun naturally retries only the failed combinations.

Test plan

  • Run with all tasks succeeding -> behaves identically to before, no failures section in PR body.
  • Run with at least one task failing (e.g., dispatch with a known RECITATION-tripping file) -> PR body includes failures block + rerun commands; successful translations land normally.
  • Run with all tasks failing -> hard abort, no empty PR created.
  • Rerun via the suggested command -> retries only the failed combinations.

Generated by Claude (Opus 4.7)

Per-task failures no longer abort the whole run. The pool runs to completion; failures are captured with file context and rendered into the PR body as a "N task(s) failed" block with copy-pasteable rerun commands. Per-file manifests are still stamped only on success, so a rerun naturally retries only the failed combinations.

Hard abort retained for the all-failed case (no empty PR).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 29, 2026

Deploy Preview for ethereumorg ready!

Name Link
🔨 Latest commit 7f12467
🔍 Latest deploy log https://app.netlify.com/projects/ethereumorg/deploys/69f187893871480008a44d55
😎 Deploy Preview https://deploy-preview-18064.ethereum.it
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
7 paths audited
Performance: 71 (🟢 up 22 from production)
Accessibility: 93 (no change from production)
Best Practices: 100 (no change from production)
SEO: 98 (🔴 down 1 from production)
PWA: 59 (no change from production)
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions github-actions Bot added the tooling 🔧 Changes related to tooling of the project label Apr 29, 2026
@wackerow wackerow merged commit 3d1f908 into dev Apr 29, 2026
11 checks passed
@wackerow wackerow deleted the intl-pipeline-v7-2 branch April 29, 2026 04:36
@wackerow wackerow mentioned this pull request May 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tooling 🔧 Changes related to tooling of the project

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants