Development record
releaseOf now compares whole handles found by the package handle pattern rather than testing a substring, which stops a digit continuation such as itd-1990 from being read as a credit for itd-199. That pattern ends in a word boundary, and a hyphen is not a word character, so a hyphen-suffixed compound still yields the short handle as a match: run over the line renamed branch fix/itd-199-cleanup the pattern returns itd-199, and because the walk takes the newest dated section first, such a mention in a newer section out-stamps the real credit in an older one. Verified by running the shipped pattern over that line and over itd-1990, which correctly returns only the long handle. Dormant today, since the committed changelog carries no such compound token and nothing is mis-stamped now, and recorded because branch names, file stems and run ids of exactly that shape are ordinary changelog prose and the failure would be silent on the day one lands. Fix direction: require the character after the handle to be neither a word character nor a hyphen, or compare against the record ids the export already knows rather than against any handle-shaped token. Detector: a newer changelog section mentioning a hyphen-suffixed compound built on a handle must not stamp that handle, while a line naming the handle as itself still does. Residual of iss-2609081941074556. <!-- record-lint: illustrative -->
releaseOf now compares whole handles found by the package handle pattern rather than testing a substring, which stops a digit continuation such as itd-1990 from being read as a credit for itd-199. That pattern ends in a word boundary, and a hyphen is not a word character, so a hyphen-suffixed compound still yields the short handle as a match: run over the line renamed branch fix/itd-199-cleanup the pattern returns itd-199, and because the walk takes the newest dated section first, such a mention in a newer section out-stamps the real credit in an older one. Verified by running the shipped pattern over that line and over itd-1990, which correctly returns only the long handle. Dormant today, since the committed changelog carries no such compound token and nothing is mis-stamped now, and recorded because branch names, file stems and run ids of exactly that shape are ordinary changelog prose and the failure would be silent on the day one lands. Fix direction: require the character after the handle to be neither a word character nor a hyphen, or compare against the record ids the export already knows rather than against any handle-shaped token. Detector: a newer changelog section mentioning a hyphen-suffixed compound built on a handle must not stamp that handle, while a line naming the handle as itself still does. Residual of iss-2609081941074556.
Grounds
- pursued: a handle adjacent to a hyphen is part of a longer token, so refusing it closes the boundary the word-boundary rule left open without needing the export's id list; it would be shown wrong by a changelog that credits a record by a handle deliberately written adjacent to a hyphen, which would surface as a missing version stamp rather than as a wrong one
Frontmatter
| id | iss-2609090951280114 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | nitpick |
.abcd/work/issues/resolved/iss-2609090951280114-releaseof-boundary-still-admits-a-hyphen.md
open on GitHub ↗ · commit history ↗
mentions2
- iss-2609081941074556releaseOf stamps the homepage feature block by strings.Contains of the record id against each CHANGELOG line, with no word boundary, walking newest dated section first. A short id therefore inherits a longer one: on ec7f40d6 releaseOf(itd-9) returns 0.4.1 off the itd-93 credit and releaseOf(itd-1) returns 0.7.1 off itd-130, and a future superstring landing in a newer section restamps the featured id. site check does not validate the stamp. The same package already carries bodyHandleRe. Fix: match the record id at a word boundary (reuse bodyHandleRe, or split the line into tokens); newest-section-first can stay. Detector: a changelog whose newer dated section mentions itd-1990 must not stamp featured itd-199, while a line naming itd-199 as its own id still matches. Independent of the Audit Notes rollup scanner. Reported as GitHub issue 624 against ec7f40d6. <!-- record-lint: illustrative -->
- itd-199A reading is about something narrower than everything, and its scope is a committed, adjustable choice