diff --git a/.dev/STATE.md b/.dev/STATE.md index a45a8b0..a6bc288 100644 --- a/.dev/STATE.md +++ b/.dev/STATE.md @@ -7,6 +7,13 @@ Roadmap detail lives in the work-plan tracker **#257**, not here (PLAN.md predat ## In flight +- **v0.28.0 release cut 2026-09-03** (#303 merged as `07e7c64`; release PR #304) — headline: the + Malayalam editor's ml#12 answers encoded and the verbatim exercise-family policy + (`verbatim-directives.ts` on all three write paths + the `verbatimDirectives` review + diff-check; decision record `D-2026-09-03-ml-all-exercise-content-stays-english` + supersedes the 09-01 record), glossary v0.5.0, rules 24 → 23, harness scenario 28. + Validated pre-merge with the local bundle on a scenario-28 harness PR (positive and + negative). **W1 (#259) retargets to v0.29.0.** §4a gate status is recorded on #304. - **v0.27.0 release cut 2026-09-01** — headline: the second inline native-review round encoded (ml glossary v0.4.0 + rules 18 → 24 + the first deterministic ml lints, #297; regeneration-checked in the same PR, decision record diff --git a/AGENTS.md b/AGENTS.md index 4a3d7cb..612579e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -226,7 +226,7 @@ Docs live in `docs/` — see `docs/index.md` for the full structure. Before creating a release, verify the following: -1. **CHANGELOG is up to date** — all merged PRs and features are listed under `[Unreleased]`; promote `[Unreleased]` → `[X.Y.Z] - YYYY-MM-DD` +1. **CHANGELOG is up to date** — all merged PRs and features are listed under `[Unreleased]`; promote `[Unreleased]` → `[X.Y.Z] - YYYY-MM-DD` and leave a fresh empty `## [Unreleased]` header above it, so the next PR's entry has somewhere to go that is not the released section (adopted v0.28.0, #304) 2. **Version bumped** — update `package.json`, this file (`AGENTS.md`), and `.dev/PLAN.md` 3. **Tests pass** — run `npm test` and confirm all tests pass 4. **Build succeeds** — run `npm run build` to compile TypeScript and update `dist-action/` diff --git a/CHANGELOG.md b/CHANGELOG.md index d0f2029..8206ab6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.28.0] - 2026-09-03 + ### Added - **Verbatim directive policy, enforced in code** (`src/verbatim-directives.ts`). For editions that keep a directive family byte-identical to the English source — the first is `ml`, whose editor of record ruled on lecture-python-programming.ml#12 that every `{exercise}`, `{exercise-start}…{exercise-end}`, `{hint}`, `{solution}` and `{solution-start}…{solution-end}` block stays in English until he rules on each exercise individually — the blocks are restored from the source after translation on all three write paths (sync, `translate init`, `translate forward`), immediately before the structural-parity guard so parity checks the bytes that are written. Block extents come from a nesting-aware fence walk (backtick, tilde and colon fences; literal bodies such as code cells are opaque), blocks pair by position, and a differing block sequence is left untouched and logged rather than guessed. A rule with no judgement boundary does not belong to the model. Decision record `D-2026-09-03-ml-all-exercise-content-stays-english` supersedes `D-2026-09-01-ml-exercise-statements-stay-english`. @@ -15,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **ml round-2 second draw archived** (#299): a second regeneration of `functions` at the released v0.27.0 engine with a closeness measure against the editor's reviewed text (exact-line match 11% seed → 21%/19% arms; whole-prose ratio 0.576 → 0.650/0.638), under `experiments/ml-benchmark/arms/`. Experiment data only; no runtime change. - **`ml` rules 24 → 23, glossary v0.4.0 → v0.5.0** from the editor's ml#12 answers (2026-09-01): the two exercise-scope rules (09-01 statements, 08-17 math-heavy Hint/Solution) are replaced by one statement of the verbatim policy; sentence-initial *For example,* joins the English-retained discourse connectives (not ഉദാഹരണത്തിന്); the light-verb rule names the `refer` calque (never സൂചിപ്പിക്കുന്നു, seen on both v0.27.0 regeneration draws); the heading rule now says byte-identical including possessives (the `Matplotlib's Split Personality` → `Matplotlib-യുടെ` miss on ml#13). Glossary pins: *already*, *example* / *examples*, *name* (the noun; the act of naming stays പേര്), *work* (light-verb form). The ex5 "over-read" logged on #296 for the v0.27.0 arm was correct behaviour under the new ruling and is withdrawn. ## [0.27.0] - 2026-09-01 diff --git a/package-lock.json b/package-lock.json index c13b665..e255ea2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "action-translation", - "version": "0.27.0", + "version": "0.28.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "action-translation", - "version": "0.27.0", + "version": "0.28.0", "license": "MIT", "dependencies": { "@actions/core": "^2.0.3", diff --git a/package.json b/package.json index 9237a4d..9ba2fe9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "action-translation", - "version": "0.27.0", + "version": "0.28.0", "private": true, "type": "module", "description": "GitHub Action to sync and review translations across repositories",