Skip to content

v0.18.0 — forward --github integrity; reviewable resync PRs; node24 + 0 advisories

Choose a tag to compare

@mmcky mmcky released this 18 Jul 06:55
0e89302

Everything in this release traces to the 2026-07-18 intro.zh-cn drift-recovery wave — the first large-scale production use of translate forward --github — and the deep-review backlog it reprioritized.

Forward resync integrity (#108: fixes #104, #105, parts of #106; hardens #107)

  • Resync output is finalized deterministically before write/commit: the target's frontmatter is carried forward, a stray --- on frontmatter-less files can no longer corrupt output, and the heading map + title are rebuilt and injected — resynced files no longer stay MISSING_HEADINGMAP after merge.
  • .translate/state/ files are committed in the same branch commit as the content, so merged resync waves leave the target repo discoverable.
  • Forward PR bodies embed a translation-sync-metadata block (mode: "resync", source commit SHA as provenance); review mode falls back to it, so labeling a resync PR for review now produces a verdict instead of a failed run.
  • Bulk discovery selects candidates by status flags (previously date-stale files on unbootstrapped repos were invisible behind MISSING_HEADINGMAP priority), and the run summary reports what actually happened per file.
  • The resync prompt treats the existing translation's in-code localisation (plot labels, legend/column mappings, localized print strings) as ground truth — never to be reverted to English. Field validation pending.
  • gitPrepareAndPush refuses write targets outside the target repo root.

Review verdict integrity (#110: fixes #102)

A model response missing a criterion score previously became NaN → automatic FAIL on clean PRs (rendered "undefined/10"). Scores are now validated; incomplete responses retry once, then error with the missing criteria named — never a verdict.

Runtime (#111: addresses #89)

Declared and built for Node 24 (which GitHub already force-runs): action.yml, CI, bundle target, types, engines. @actions/core → 2.0.3 and @actions/github → 8.0.1 clear the last production advisories — npm audit --omit=dev: 0 vulnerabilities. The ESM-only 3.x/9.x lines remain tracked in #89.

Verification

1,143 tests (47 suites); live smoke of both halves against QuantEcon/test-translation-sync.fa#78 — resync PR carried state + heading map + metadata, and review mode returned PASS via the fallback with the new runtime bundle.

Upgrading: workflows pinned to @v0 get this automatically; explicit pins should move to v0.18.0. Note the estate is currently pinned at v0.16.1.