Closed
Implement canonical changelog area hierarchy (/) with filename encoding (~)#5227
/) with filename encoding (~)#5227Conversation
✅ Deploy Preview for nifty-bassi-e26446 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Co-authored-by: phlax <454682+phlax@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix changelog area validation for filenames
Implement canonical changelog area hierarchy (Sep 11, 2026
/) with filename encoding (~)
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.
Changelog tooling documented hierarchical areas (
dns/caresin config,dns~caresin filenames) but never implemented the mapping, causing valid nested areas to fail validation and emit incorrectarea:values in generated YAML. This change wires the convention through parsing, checking, and docs.Shared area encoding contract (
envoy.base.utils)AREA_SEPARATOR = "/"AREA_FILENAME_SEPARATOR = "~"area_from_filename(),area_to_filename()AChangelog.data_from_entry_map()to decode filename areas before emitting entry data, so generated YAML uses canonical IDs (e.g.dns/cares).Checker behavior (
envoy.code.check)check_entry_filename()now validates filename-area syntax with encoded charset ([a-z0-9_\-~]+), decodes~ -> /, then validates against configured areas.Invalid area 'dns/cares' (from filename 'dns~cares')Areas config/title validation
[a-z0-9_\-/]+;~remains invalid in keys).~/, explicit non-emptytitleis requiredDocumentation
py/envoy.code.check/README.rstdescribing canonical IDs, filename encoding, and title requirements.