diff --git a/.changie.yaml b/.changie.yaml index a4dc700e..8a200c2c 100644 --- a/.changie.yaml +++ b/.changie.yaml @@ -16,6 +16,11 @@ kinds: - label: Fixed - label: Security - label: Documentation +body: + # A ceiling, not a target: one sentence is the rule (see RELEASE.md), and a + # body this long is a paragraph that belongs in the linked issue. Enforced by + # `changie new` only — a hand-written fragment is not checked. + maxLength: 400 custom: - key: Issue label: Issue Number diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 9ba673ee..1d518044 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -26,4 +26,4 @@ Fixes # - [ ] Added/updated tests - [ ] Lint/format passes (`golangci-lint run`) - [ ] Updated documentation (if applicable) -- [ ] Added a Changie changelog fragment for user-facing changes (`changie new`, see [RELEASE.md](../RELEASE.md)) — or N/A (docs/tests/chore only) +- [ ] Added a Changie changelog fragment for user-facing changes (`changie new`, one sentence and two at most, see [RELEASE.md](../RELEASE.md#one-sentence-two-at-most)) — or N/A (docs/tests/chore only) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 934a16e4..9b681718 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -28,7 +28,7 @@ Thanks for your interest in contributing! This file is a short pointer — the f Conventional prefixes are preferred: `feat:`, `fix:`, `chore:`, `docs:`, `test:`, `refactor:`. -Release notes are **not** generated from commits — they come from [Changie](https://changie.dev) fragments. Add one for any user-facing change with `changie new` (see [RELEASE.md](RELEASE.md)). +Release notes are **not** generated from commits — they come from [Changie](https://changie.dev) fragments. Add one for any user-facing change with `changie new` — one sentence, two at most (see [RELEASE.md](RELEASE.md#one-sentence-two-at-most)). ## License of Contributions diff --git a/RELEASE.md b/RELEASE.md index f9b74f17..2adb7052 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -29,7 +29,8 @@ You are prompted for a **kind** (`Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, `Security`, `Documentation`), a **body**, and the **issue number**. It writes a small YAML file under `changes/unreleased/` — commit it alongside your code. Prefer `changie new` over hand-writing the YAML: it enforces the issue -number, and a fragment without one renders as a dead link. +number — a fragment without one renders as a dead link — and refuses a body over +400 characters. ### One sentence. Two at most. @@ -44,6 +45,10 @@ already points at. - **Never a third.** If it needs one, it is either two changes (write two fragments) or a story that belongs in the issue. +`changie new` refuses a body over 400 characters (`body.maxLength` in +[`.changie.yaml`](.changie.yaml)). That is a ceiling for the two-sentence case, +not a target, and it does not see a fragment you hand-write. + ```yaml # too long — the root cause, the mechanism and the evidence all belong in #142 body: 'S3 Control requests were served by S3. `s3control` signs with S3''s own diff --git a/changes/unreleased/Documentation-20260906-185423.yaml b/changes/unreleased/Documentation-20260906-185423.yaml index ddec072e..3e85e79f 100644 --- a/changes/unreleased/Documentation-20260906-185423.yaml +++ b/changes/unreleased/Documentation-20260906-185423.yaml @@ -1,5 +1,5 @@ kind: Documentation -body: Changelog fragments are capped at one sentence, two at most, with the rule and a worked example in RELEASE.md and a line for it in the pre-flight checklist. Every entry already in the changelog is rewritten to that limit, and the v1.1.0 and v1.0.0 release notes are republished from their fragment files +body: Changelog fragments are capped at one sentence, two at most — stated with a worked example in RELEASE.md, in the pre-flight checklist, in CONTRIBUTING.md and the PR checklist, and enforced by a 400-character body limit `changie new` refuses to exceed. Every entry already in the changelog is rewritten to that limit, and the v1.1.0 and v1.0.0 release notes are republished from their fragment files time: 2026-09-06T18:54:23.073014+09:00 custom: Issue: "152" diff --git a/changes/unreleased/Documentation-20260906-234500.yaml b/changes/unreleased/Documentation-20260906-234500.yaml index f5e20656..112962dc 100644 --- a/changes/unreleased/Documentation-20260906-234500.yaml +++ b/changes/unreleased/Documentation-20260906-234500.yaml @@ -1,5 +1,5 @@ kind: Documentation -body: 'The documentation no longer publishes the same figure at five different values: six numbers were restated across pages with no two agreeing, so docs/coverage.md now owns them and every other page links to it. Three statements that did not match the code are corrected — a GET /devcloud/api/health route that is not registered, a failed Lambda invoke blamed on Docker when the runtime is a stub, and codegen output files no template emits — and eighteen files are 1,063 lines shorter' +body: 'The documentation no longer publishes the same figure at five different values: six numbers restated across pages now live in docs/coverage.md, which every other page links to. Three claims the code does not back are corrected — an unregistered `GET /devcloud/api/health`, a Lambda invoke failure blamed on Docker, and codegen outputs no template emits — and eighteen files are 1,063 lines shorter' time: 2026-09-06T23:45:00.000000+09:00 custom: Issue: "151"