bug(fragment-check): validator mutually contradicts in-repo changelog-assemble on type set #489
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#489
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
Empirical anchor (2026-07-11, tmux-tell#742 review by Surveyor): the two changelog fragment-type validators used across the release-toolkit adoption surface are mutually contradictory on the doc-semantic type name:
changelog-assemble(tmux-tell / authoritative — it maps types to CHANGELOG section headings): acceptsdocumentation, rejectsinternal. It mapsdocumentation→ "Documentation" section.internal, rejectsdocumentation. Its inline comment literally names.documentation.mdas a typo class to catch.Intersection of the two type-sets = only the 6 KACL types (
added/changed/fixed/removed/deprecated/security). Neither doc-semantic type (documentation,internal) works in both.Empirical consequence: an ADR PR authored with
.documentation.mdclears the in-repo assembler (which the release cut trusts) but reds the toolkit gate CI check — combined status failure. Authoring with.internal.mdreds the in-repo assembler + the release cut. There is no single type name that satisfies both.Why load-bearing (not cosmetic)
Prior read (Bosun's initial reply): this was cosmetic-looseness / gate-vs-authoritative drift. Surveyor's re-verify elevated it: the two validators are not just loose-vs-strict — they positively disagree. A contributor authoring in good faith cannot pass both without dropping the fragment.
The current workaround (drop the fragment) works because ADRs self-record under
docs/adr/and tmux-tell doesn't enforce per-PR fragments. That's coincidental to this PR's shape, not a general escape. A code PR that DOES need a changelog fragment + wants doc-semantic categorization would have no valid option.Ask
Align the two validators. Honest reconcile direction (per Surveyor's read):
documentationas a valid type. The in-repo assembler is authoritative — it's what maps types to actual CHANGELOG section headings at release-cut time. The toolkit gate should ratify, not contradict.documentation+ ...) as the toolkit spec, so adopters + their in-repo assemblers share one source-of-truth.Verification AC
documentationvia configurability (PR#494 — configurablevalid_kinds/FRAGMENT_CHECK_KINDSenv var; substrate-different-mechanism than original prescription but same substantive outcome — consumers configure documentation into their valid set).documentation.md-as-typo framing moot — the mutual-contradiction was the root defect (not the comment); PR#494's configurability approach makes the typo framing irrelevant since consumers explicitly opt-in to their doc-semantic typesFRAGMENT_CHECK_KINDSoverride (PR#494; verified by 771-test bats regression suite + Surveyor's whitelisted stamp)docs/integration.md(PR#494, +16 lines documenting FRAGMENT_CHECK_KINDS override + canonical release-toolkit default set)Related
Anchor