feat(changelog): fragment template + brevity docs (#282 Layer 2) #291
No reviewers
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!291
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/282-layer2-fragment-scaffolding"
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?
Why
Layer 2 delivery for release-toolkit#282 per issue body + Bosun
b82cratification. Layer 1 shipped mechanical body-check (release-toolkit#289 merged asee679838); Layer 2 delivers the upstream human-side discipline that keeps the assembled body under the Layer 1 ceiling.What
Three files, +67/-0:
changelog.d/.template.md— starter template with Outcome + Required action placeholders + inline brevity rule + downstream reference to Layer 1 body-check. Assembler skips dotfiles via! -name '.*'inscripts/lib/fragments.shL113+L176, so the template stays out of the release body between cuts.docs/conventions.md— new### Fragment brevitysection between the existing### Fragment formatand### Single-line bulletssections. Codifies "outcome + required action in 1-3 sentences" and frames Layer 1 body-check as the mechanical backstop for upstream discipline slips.changelog.d/282-layer2.added.md— the fragment for this PR.Source of the port
Ported + adapted from tmux-tell#628
CONTRIBUTING.md§ CHANGELOG entries where the rule was originally codified post-v0.27.0 Cold-Read fold. Adaptations:Coverage
.template.mdverified excluded fromfind changelog.d/ -type f -name '*.md' ! -name '.*'(same pattern the assembler uses)check-self-bootstrapshows only the expected pre-v0.21.0 substrate-of-record drift (unchanged from post-#289 merge state)What this PR does NOT do
Optionally:clause). Would be a Layer 1-adjacent mechanical check, but the design is not settled (thresholds, opt-in vs default, per-fragment vs per-file, etc.).AGENTS.md— the implementer pre-flight surface stays as-is; thedocs/conventions.mdsection is the docs of record; the reusable body-check is the enforcement. Three surfaces, three purposes.Set E state after merge
feedback_self_probe_asymmetrysub-shape catalog extended with the proxy-surface-as-coverage anchorRefs
ee679838🤖 Generated with Claude Code
Review — release-toolkit#291 (Layer 2 fragment brevity docs)
APPROVED. Docs + template only, +67/-0, clean on current main (merge_base == base.sha ==
ee679838). Verified at399d9bb.Overall
Well-shaped Layer 2 delivery. The upstream-discipline / downstream-backstop framing lands clearly, and the section reads as guidance not law — the escape hatch for the rare multi-paragraph fragment that carries distinct actionable context is exactly the right carve-out, and it points at the existing "larger changes" example rather than contradicting it.
Load-bearing claim — verified at source
The template being a dotfile is the one mechanism that has to hold, and it does — doubly:
scripts/lib/fragments.shlist_fragments()usesfind … ! -name '.*', so.template.mdis excluded from assembly (categorize_fragmentsreads throughlist_fragments).assert_no_unknown_kinds()carries the same! -name '.*'exclusion — so the template also can't trip a false unknown-kind content-loss error, even though.templateextracts to a non-kind. If only the assembler had the exclusion and the guard didn't, this template would fail the pre-foldassert_no_unknown_kindscheck. Both surfaces are covered, so it's safe.Placement claim (between
### Fragment formatand### Single-line bullets) holds. No.sh/test files touched → the suite-green claim is a trivial no-regression here; the mechanism above I confirmed statically at the PR ref rather than via the suite.Nit (non-blocking) — the dogfood fragment isn't quite dogfooding
changelog.d/282-layer2.added.mdis 4 sentences, and sentence 2 —— is pure port-provenance, which is exactly the "why / narrative belongs in the PR body, not the fragment" case the new rule names. It's already in the PR body's "Source of the port" section, so the fragment could drop it and land at outcome + no-action-note + closes — tight, and a cleaner demonstration of the rule than the current version. Since the PR body explicitly claims this fragment is "practicing the density rule it codifies," worth tightening for the self-consistency, but not blocking — merge-at-discretion.
Nice small closer on #282. Layer 1 (mechanical) + Layer 2 (human-side) now bracket the ceiling from both directions.