add pre-push changelog concision gate (40 soft / 60 hard)

`ci/changelog_gate.sh` walks the `## [Unreleased]` section, measures
each bullet's word count (including indented continuations), and
fails at 60 words. Soft warnings between 40 and 60 don't block.
Wired into `make push-check` so the pre-push hook enforces it.

Trims six pre-existing over-cap bullets in the same commit so the
gate lands green. Released sections are frozen and untouched.

The rule itself lives in .claude/skills/git-commit/SKILL.md
"Be concise"; this gate is the executable companion.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-17 20:26:45 +02:00
co-authored by Claude Opus 4.7
parent b1713f71cf
commit 2cbabea000
3 changed files with 116 additions and 47 deletions
+5 -1
View File
@@ -106,6 +106,10 @@ test-all: test-core test test-a11y test-integration test-e2e ## Everything, sequ
coverage-gate: ## Coverage gate — fails if total line % < pubspec.yaml `coverage_floor:` (D-66). Assumes `make test` ran first.
ci/coverage_gate.sh
.PHONY: changelog-gate
changelog-gate: ## Changelog concision gate — fails on `## [Unreleased]` bullets over 60 words.
ci/changelog_gate.sh
.PHONY: smoke-bundle
smoke-bundle: ## Build Linux release bundle and run it under xvfb for 5s.
ci/smoke_bundle.sh
@@ -247,7 +251,7 @@ decisions-validate: ## Parser dry-run over governance/{decisions,questions,rejec
pql decisions validate
.PHONY: push-check
push-check: decisions-validate test-core test test-a11y coverage-gate ## Pre-push gate.
push-check: decisions-validate test-core test test-a11y coverage-gate changelog-gate ## Pre-push gate.
.PHONY: hooks
hooks: ## Install the repo's git hooks.