Notes that ADR-0017's float exclusion is lifted - #217
Merged
Conversation
ADR-0017 recorded the float exclusion as contingent on px-ggb and described it as live. Both halves resolved on 2026-09-05: the string writer gained its float clause (#209) and the subset dropped the exclusion (#211), shipping in 9.3.0. A dated Note records that the contingency is spent. The paragraph it supersedes is left as written - the record of why the exclusion existed stays visible, per the amend-by-addition rule in docs/adr/README.md. Refs: px-dvz
Codecov Report✅ All modified and coverable lines are covered by tests. 🚀 New features to boost your workflow:
|
This was referenced Sep 5, 2026
Merged
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.
Closes px-dvz.
ADR-0017 recorded the float exclusion under "Two exclusions that are not
decisions" as contingent - live only until
Predicator.decompile/2stoppedraising on a float literal, with px-ggb named as the tracked defect. Both
halves of that contingency resolved on 2026-09-05, so the record described a
state of the world that no longer exists.
This PR appends a dated Note saying so. It changes nothing else.
What the Note cites, and how it was checked
f3960b4;lib/predicator/visitors/string_visitor.ex:126carries theis_float(value)literal clause today9e75ea8;lib/predicator/simple.ex:178declares{:float, float()}int:scalar/0,:410maps it to:number, andtest/predicator/simple_test.exs:238now pins a float source as insideCHANGELOG.md's## [9.3.0] - 2026-09-05section carries both changes; #211 merged before the 9.3.0 prep (#212), not after itBoth URLs return 200.
Shape
git diff origin/main -- docs/adr/is 23 insertionsand 0 deletions. The superseded paragraph is left exactly as written: under
docs/adr/README.md's amend-by-addition rule the record of why theexclusion existed and on what it was contingent stays visible, and the Note
says only that the contingency is spent.
it shipped in; the modelling reasoning (why a float is a new scalar shape but
not a new value kind) lives in Admits float literals to the Simple subset #211's body and in the 9.3.0 changelog entry,
and is not copied here.
arriving at the Note needs to know which of the two exclusions moved.
Not in this PR
The status line is not touched. ADR-0017 is still
proposed. Flipping itto
acceptedis px-ikd, a separate gated PR on this same file, and the flip isblocked on this Note precisely because accepting a record whose prose asserts a
live exclusion that has been lifted would bless a false statement.
Findings handed to px-ikd's pre-flip verification
The flip must verify every claim in the record against today's
main, notagainst the code the record was written over. Two places worth a second look
that are outside this PR's scope:
needs "is added to
Vocabularyitself, not toSimpleand not to theconsumer." Since px-e1l (Adds a value-to-kind function to the structured subset #215, in 9.4.0),
Predicator.Simple.value_kind/1exists at
lib/predicator/simple.ex:408-416and maps aSimplescalar tagto a
Vocabulary.value_kind/0. I read that as consistent - it is atranslation from
Simple's own scalar shapes intoVocabulary's kinds, nota second table of kinds or operators, and
Vocabularyis still the onlysource - but it is a public-surface addition to
Simplemade after therecord was written, and the flip should rule on it rather than inherit my
reading.
proposed" in the Consequences list is a self-describingsentence that stops being true the moment px-ikd flips the header. It is
part of what the flip has to move, and it is not addressed here.
Neither is a defect in this Note.
Gate
Docs-only:
gate.rbreportsapplicable: false(no changes under lib/, test/, mix.exs, mix.lock, conformance/ - nothing for the gate to measure), sono quality gate applies to this diff. Full
mix qualitywas run on this HEADanyway and is green - Format, Compile, Dependencies, Credo, Dialyzer clean,
2,901 of 2,901 tests at 95.6% coverage, including
test/docs_adr_links_test.exswhich binds the ADR link forms. Doctor, Gettext and Sobelow are the repo's
three standing skips.
No changelog fragment: an ADR Note changes nothing a caller of
Predicator.evaluate/3can observe.