From c990236ed9cfa03b95d4cf4890d3100e049e1e27 Mon Sep 17 00:00:00 2001 From: Arthur Date: Sun, 20 Sep 2026 14:42:53 +0200 Subject: [PATCH 01/11] docs: document the commit message convention Add a commit message section to docs/agent/dev.md, based on Conventional Commits and the Git and Linux kernel guidelines: - the allowed types and scopes, and how each one renders in the release notes - imperative subjects of at most 72 characters - a body that explains what changed and why, with guidance per type - the `Upgrade:` and `BREAKING CHANGE:` footers Release notes are generated from commit subjects, so every subject must parse. AGENTS.md links to the section. --- AGENTS.md | 2 +- CONTRIBUTING.md | 2 +- docs/agent/dev.md | 132 +++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 128 insertions(+), 8 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 7d840af6..04803e72 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -83,7 +83,7 @@ Apply to every role, every session. 3. **Never `git push` without explicit human approval.** Every push, every branch, every time. 4. **Never commit to `main`.** Feature branches only. 5. **No `Co-Authored-By:` trailers** in commit messages. -6. **Semantic commit prefixes:** `feat:`, `fix:`, `docs:`, `refactor:`, `chore:`, `test:`, `ci:`, `style:`. +6. **Commit subjects are the changelog.** `(): `, then a body that says what and why, in plain technical English. Types, scopes and the `Upgrade:` footer are in [docs/agent/dev.md](docs/agent/dev.md#commits-the-subject-is-the-changelog). 7. **Never read or copy a user's production family vault.** Reference paths only; fabricate test data. 8. **Destructive ops need confirmation.** `stack destroy`, `stack uninstall`, `rm -rf`, `git reset --hard`, force-push. 9. **Announce actions before running them.** No silent long running or integration test runs, scripts, or background commands. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 535394d7..4c94c178 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -69,4 +69,4 @@ A bare `make typecheck` reports on `lib`, `stacklets`, `tools` and `hooks`. `tes ## Tests, style, commits -All three live in [docs/agent/dev.md](docs/agent/dev.md), which is the canonical reference and stays shorter than a duplicate here would. The short version: `make test-unit` before every commit, module tests over unit tests, semantic commit prefixes, feature branches only, never push without asking. +All three live in [docs/agent/dev.md](docs/agent/dev.md), which is the canonical reference and stays shorter than a duplicate here would. The short version: `make test-unit` before every commit, module tests over unit tests, feature branches only, never push without asking. Commit subjects are the changelog famstack.dev renders, so they follow `(): ` and every one has to parse. diff --git a/docs/agent/dev.md b/docs/agent/dev.md index 330447b1..09fb7340 100644 --- a/docs/agent/dev.md +++ b/docs/agent/dev.md @@ -247,21 +247,140 @@ Testing rules: - **Re-read the full error line before calling a failure a duplicate.** Check sender, target, specific IDs. Two errors that look similar at a glance often differ in the load-bearing field. - **No backwards-compatibility shims** in pre-1.0 code. Change the code, update callers, ship. -## Commit & branch rules +## Commits: the subject is the changelog + +The release log is the changelog. `stack update` prints it, the GitHub release +quotes it, famstack.dev renders it. A subject that does not parse is missing +from the release notes. + +Messages follow Conventional Commits and the Git and Linux kernel +guidelines, in plain technical English. + +``` +()!: + + + +