Skip to content

chore: release v0.29.4 - #354

Merged
mmcky merged 2 commits into
mainfrom
chore/release-v0.29.4
Oct 9, 2026
Merged

mmcky merged 2 commits into
mainfrom
chore/release-v0.29.4

Conversation

@mmcky

@mmcky mmcky commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

v0.29.4 — patch. Promotes [Unreleased] for three merged PRs that change what the engine does:

PR What it ships Affects
#291 Sync and the rebase replay carry the target's translated _toc.yml part captions forward, matching parts by the lectures they share, and change only the caption lines (#254) Every edition with translated captions; one lecture-adding sync reverted 14 of them on lecture-python.zh-cn
#289 A new lecture the run failed to deliver is removed from the sync PR's _toc.yml, by splicing out its lines, and the PR body lists it under Files Failed to Translate (#156) Lecture-adding syncs where a new lecture is refused or fails to fetch: the target build no longer breaks on a dangling toctree entry
#335 ml rule 19: "have already seen / met" takes the completive -കഴിഞ്ഞു Malayalam drafts and syncs

Also on main since v0.29.3, with no change to the engine: Malayalam experiment arms and tooling (#331, #333) and the .dev/ → .qe/dev/ move (#314).

Version bumped in package.json / package-lock.json, CHANGELOG promoted under a fresh [Unreleased] header, and a .qe/dev/STATE.md entry. The rest of .qe/dev/STATE.md is brought up to date with the #289/#291 merges. No source change; dist-action/ rebuilds byte-identical (engineVersion is a runtime read of package.json). npm test 1635/1635; lint, format:check and check-dev-refs pass.

What the gate can and cannot see. The harness's _toc.yml fixtures are flat (no parts:, no captions). Scenarios 17, 18 and 20 therefore exercise #291's new target-TOC fetch, which now fails on any status but 404, and its no-parts no-op. They do not exercise the caption carry-forward, which unit tests cover, including byte-identity on a QuantEcon-style TOC and a test of #291 and #289 together. #289's filter fires only if a new lecture actually fails, as scenario 17 did on the .ml lane at v0.29.1.

Not in this release: #346's French and Malayalam items (#344, #347, #327, #324, #325) stay with v0.30.0; Japanese (#69) waits on #337 and #338, then ships with #340.

After merge: tag v0.29.4 → §4a E2E gate on the tag and the 4b rate check → move v0.29 and v0 → @v0 smoke → GitHub release. Tallies will be posted here.

🤖 Generated with Claude Code

Patch: #291 carries the target's translated _toc.yml part captions
forward on sync and on the rebase replay (the #254 interim), #289
removes a failed new lecture's entry from the sync PR's _toc.yml
(#156), and #335 is the ml rule-19 completive. No source change in
this commit; dist-action/ rebuilds byte-identical. STATE.md brought up
to date with the two merges.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 9, 2026 04:23

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Cutting this release gates floating-tag moves (@v0/@v0.29) and billed downstream runs and is explicitly a maintainer decision, and the STATE.md verified: freshness marker should be bumped before it ships.

1 open finding
What changed in this PR

This is a mechanical patch release PR (chore: release v0.29.4) that promotes three already-merged, engine-affecting PRs plus accumulated non-engine changes into a published version. It fits the repository's documented Release Checklist (AGENTS.md): bump the version, promote [Unreleased] in the changelog under a fresh empty header, and update the internal project-state notes.

Changes:

  • Bump version 0.29.3 → 0.29.4 in package.json and package-lock.json.
  • Promote the [Unreleased] changelog section to ## [0.29.4] - 2026-10-09 (carrying #291/#254 TOC caption preservation, #289/#156 failed-file TOC entry removal, #335 ml rule-19 completive, and ml experiment arms), leaving a fresh empty [Unreleased] header.
  • Update .qe/dev/STATE.md: add a v0.29.4 In-flight entry, move #289/#291 to "Recently landed", and adjust the resume checklist.
File Description
package.json Version bump to 0.29.4
package-lock.json Matching self-version bump to 0.29.4 (both occurrences)
CHANGELOG.md Promotes [Unreleased] to [0.29.4] - 2026-10-09 under a fresh empty header
.qe/​dev/​STATE.md Records the v0.29.4 cut and moves #289/#291 to "Recently landed"

Notes from verification: version bumps are consistent across both manifests; the changelog promotion keeps an empty [Unreleased] header and the three engine-changing PRs are all represented; the 2026-10-09 date equals the current date (not a future date). The one finding is that STATE.md's verified: freshness marker (first line) and the "Resume here (2026-09-23 …)" heading were not bumped to reflect this refresh, which is a documented convention in .qe/dev/README.md.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .qe/dev/STATE.md
The resume checklist's heading stays "2026-09-23, after v0.29.3",
since only item 1 is new; the item now carries its own date
(2026-10-09), as later additions on the page do. The verified: stamp
is unchanged: this PR did not re-verify every bullet. Item 1 re-wrapped
to the file's width. From Copilot's review of #354.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mmcky
mmcky merged commit fcee846 into main Oct 9, 2026
1 check passed
@mmcky
mmcky deleted the chore/release-v0.29.4 branch October 9, 2026 04:34
@mmcky

mmcky commented Oct 9, 2026

Copy link
Copy Markdown
Contributor Author

§4a gate on the v0.29.4 tag (fcee846): passed. 4b rate check: over threshold on zh-cn, judged pre-existing. Released.

zh-cn fa ml
sync runs succeeded 28 / 28 28 / 28 28 / 28
translation PRs delivered 28 28 28
verdicts at engineVersion: 0.29.4 28 / 28 28 / 28 28 / 28

Census 9/9 workflows at @v0.29.4; 28 source PRs; 84/84 sync runs, none failed. Two runs per lane read as skipped, not failed: the reset closing the previous gate's test-translation-sync#976 fires a pull_request and an issue_comment event that the workflows skip. Scenario 17 (new-document-toc) delivered game-theory.md on all three lanes (test-translation-sync.zh-cn#1009, .fa#394, .ml#300). As the PR body says, the harness TOC fixtures are flat, so this gate exercised #291's target-TOC fetch and its no-parts no-op, not the caption carry-forward.

§4b rate check (rate-check.sh --ref v0.29.4): game-theory.md refused 0/12 on fa and ml, 2/12 on zh-cn, over the threshold of one. Both zh-cn refusals carry the same structural-parity signature: directives 3 → 2, with {code-cell} and {math} transposed. That is #203's signature exactly. Whether this was a regression:

  • The zh-cn request is byte-identical at both tags. translator.ts and glossary/ are unchanged, the zh-cn LANGUAGE_CONFIGS entry is unchanged, and the init path imports none of the modules that changed (index.ts, pr-creator.ts, sync-orchestrator.ts, toc-captions.ts).
  • Control draws, zh-cn, game-theory.md:
Engine Draws today 2026-09-23 Total
v0.29.3 0 / 24 0 / 12 0 / 36
v0.29.4 2 / 12, then 1 / 24 3 / 36

The difference is not significant (Fisher two-sided p ≈ 0.24), and with identical request bytes it is sampling variance. Pooled, the latent rate is about 4% (3 / 72). At that rate, the "more than one refusal in 12" rule fails about 8% of the time by chance. So @v0 was already carrying this defect at v0.29.3, and holding the tags back would not have protected zh-cn from it. In the action path, #289 now makes a refusal like this cost one lecture rather than the target build. Measurement posted on #203.

Checklist 5: v0.29 and v0 moved 16e50f6 → fcee846. @v0 smoke (scenario 01): 3/3 sync runs succeeded; verdicts report engineVersion: 0.29.4, engineRef: v0 on all three lanes (test-translation-sync.zh-cn#1020, .fa#404, .ml#309). Checklist 6: GitHub release published, title = the tag.

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