-
-
Notifications
You must be signed in to change notification settings - Fork 3
ml: stop the exercise rule priming invented directives — v0.29.1's gate failed scenario 17 (latent since v0.28.0) #317
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| # 2026-09-21 — v0.29.1's §4a gate fails on the `.ml` lane; a latent priming defect, fixed | ||
|
|
||
| **What happened**: v0.29.1 (release PR #316, `7fe78a5`) was tagged and gated on the tag. 83 of 84 sync runs succeeded; 28/28 PRs delivered per lane. The one failure was **scenario 17 (`new-document-toc`) on `.ml`**, and a re-run of the failed job against the same tagged bytes failed identically. The floating tags were **not** moved and no GitHub release was published: `v0` = `v0.29` = `a6fda54` (v0.29.0) throughout. | ||
|
|
||
| **The defect**: the fixture `game-theory.md` writes its exercises as a plain `## Exercises` heading and a numbered list — no directives. The model wrapped them in `{exercise-start}` … `{exercise-end}`; the structural-parity guard refused the file (directives 3 → 5; `verbatim-directive block sequence differs: source [none] vs output [exercise-start]`), so the sync PR carried a `_toc.yml` entry for a lecture it did not deliver (the #222 / #289 class, and what W1 #259 is for). The primer is the `ml` exercise-verbatim rule, which names every exercise directive at length and never says they must already be in the source. | ||
|
|
||
| **Measured, because two draws mislead** — CLI `init -f game-theory.md` on the fixture, twelve draws per arm, refusals by the parity guard: | ||
|
|
||
| | Rules | Glossary | Refused | | ||
| |---|---|---| | ||
| | v0.29.0 | v0.6.0 | 5 / 12 | | ||
| | v0.29.0 | v0.7.0 | 8 / 12 | | ||
| | v0.29.1 | v0.6.0 | 11 / 12 | | ||
| | v0.29.1 | v0.7.0 | 11 / 12 | | ||
| | v0.29.1 + scope sentence (first wording) | v0.7.0 | 0 / 12 | | ||
| | v0.29.1 + scope sentence (final wording) | v0.7.0 | 0 / 12 | | ||
|
|
||
| The first six draws per arm read 1/6 against 5/6 and looked like a clean regression; the next six moved the baseline to 5/12. **The defect is latent since the rule arrived in v0.28.0** — the gates of v0.28.0, v0.28.1 and v0.29.0 each passed scenario 17 on a single draw with a ~40% chance of failing — and the #315 rules aggravate it to ~90%. Why longer comma and plural rules should do that is not known; the crossing puts it in the rules rather than the glossary, and that is all the data says. | ||
|
|
||
| **The fix**: one sentence on the exercise rule — it concerns directives the source ALREADY contains; never add a directive, fence or label the source does not have; a plain `## Exercises` heading and list keeps its English text (the editor's ruling covers all exercise content) and its source structure. A first wording told the model to *translate* the list; it did not (0 of 19 written draws at either version put Malayalam there), so the instruction was changed to match the behaviour the ruling wants. Still 28 rules. Action path, local bundle, on the fixture PR that failed (test-translation-sync#907): delivered 2 of 2 (test-translation-sync.ml#221, #222). | ||
|
|
||
| **Lessons**: (1) a single-draw gate cannot see a 40% defect — it passed three releases; scenario-level retries or N draws on the new-document scenarios are worth a look under #260 / W1. (2) Six draws per arm was not enough either: it gave the right direction and the wrong story. (3) A rule that names directives primes the model to emit them; say "already in the source" wherever a rule lists markup. | ||
|
|
||
| **Next**: PR → merge → **v0.29.2** (v0.29.1 stays a tag that was never released; the CHANGELOG says so) → §4a gate on the new tag → floating tags → smoke → release → regenerate round 4 at `@v0`. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.