Repository navigation
Bind the translation figure to its obligations (D272) - #123
Merged
Merged
Conversation
Load coverage/translation/obligations/<family>.toml fail-closed, with held and unmeasured obligations and retired-obligations.toml. A form matches only when every required obligation is met by all its cited cases; held and unmeasured obligations are never met and are reported in their own buckets, with the recorded cases no obligation cites.
kvlonge
added a commit
that referenced
this pull request
Nov 6, 2026
A cited case file whose construct is another form, or that is missing, is a load error, and so is a missing obligations directory. A form declaring no required obligation is no_obligations, never matching. The baseline records retired ids, and dropping any other obligation from the head regresses.
kvlonge
added a commit
that referenced
this pull request
Nov 6, 2026
…72c) The 30 auditor-confirmed forms move from matching to unmet_obligations; the figure is 57 of 1,187 translatable forms. No statement outcome changes.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Decision D272 (with D272a/D272b): the translation figure is now bound to the translation obligations. Before this, nothing read
coverage/translation/obligations/*.toml.What changes
syntax-coverage resultsloads every obligation file fail-closed. These are load errors that fail the command:<form>.t<NNN>, or that is declared twiceboundarywithout a knownsubkind, or asubkindon another kindcases/translation/<family>/…toml#, a case cited twice, or a case no recorded statement isheldheldorreason;heldwith cases or onrequired = false;reasonon a required obligationretired-obligations.toml: a retired id that is reused or retired twice, an entry without a form and reason, or areplaced_byentry that isn't a live obligationmatchingormatching_error. A cited case file must exist and itsconstructmust be the obligation's form.matchingonly if, in addition, it declares at least one required obligation and every one is met. Otherwise it gets one of the new states:unmet_obligations, orno_obligationswhen it declares no required obligation.required = true, cases = [], held = "…") is never met and keeps its form out of matching. Unmeasured (required = false, cases = [], reason = "…") is never met and doesn't block its form.obligations(declared, met, unmet, held, unmeasured)obligation_statesheldandunmeasured(id → reason), as their own bucketsuncited_cases: recorded translation cases no obligation cites. These aren't an error, because converter PRs add cases before their obligations exist, and they can't make a form match.--againstflags met → anything else as a regression, and so is dropping any obligation thatretired-obligations.tomldoesn't list. A missingobligations/directory is a load error.required = falsewithout a reason, and an obligation half-met by two cases. That last test fails if "every cited case" is weakened to "any".Figure (D272b: accepted as honest)
Measured on the landing head: main 9ecf9fe merged in (4c021f8), then the baseline re-recorded (bfecd63). Obligations: 3,407 declared, 1,034 met, 2,354 unmet, 19 held, 0 unmeasured, 0 load errors, 0 uncited cases.
unmet_obligations; none are left atno_obligations.The
--againstexception list (D272c: auditor-confirmed 30, record 2bd0e02)translation-results --againstmain 9ecf9fe reports exactly these 30 form regressions, allMatching → UnmetObligations, and nothing else regresses. The other 3,407 changes are the obligation states the baseline didn't hold before (None → Met/Unmet/Held), plus 24 retired ids. The re-recorded baseline then checks clean: 0 regressions, 0 other changes.CAST('…' AS BINARY), "a cast target type has no name" (12)json_fidelityat PARSE_JSON (7)DECFLOAT(2)json_fidelityat ARRAY_CONSTRUCT (4)What would bring them back, ranked (candidate items)
json_fidelityat PARSE_JSON / ARRAY_CONSTRUCT for the shapes these cases use: 11 forms (7 also need item 1).Landing notes
fix/translation-absent-formsis on main (df143dd), so the loader reports 0 load errors.make check-merge: exit 0, with the static checks and all 23 test binaries passing.sqlquack verify --require-verified --strict-errors: 11,870 cases, 7,829 passed, 1,032 diverged as expected, 2,972 refused, 37 typed, 0 pending, 0 unproven, 0 failed; 220 of 220 equivalences and rules verified.translation-results --againstmain: the 30 forms above and nothing else.coverage/translation/results-baseline.json. No test reads it, andresults --againstit gives 0 regressions and 0 other changes.retired-obligations.tomlneeds the same review as deleting the obligation.