@@ -62,15 +62,49 @@ non-negotiable:
6262- Keep the public surface minimal; add internal code under ` lib/src/ ` and export
6363 deliberately from ` lib/cobs_codec.dart ` .
6464
65- ## Commits and pull requests
66-
67- - Write clear, imperative commit messages (e.g. "Fix decoder backpressure on
68- delimiter-less runs").
69- - Commits and tags in this repository are ** SSH-signed** ; please sign your
70- commits (` git config gpg.format ssh ` and set ` user.signingkey ` ) and include a
71- sign-off (` git commit -s ` ) certifying the [ DCO] ( https://developercertificate.org/ ) .
72- - Keep pull requests focused; update ` CHANGELOG.md ` under an ` ## Unreleased `
73- heading for user-visible changes.
65+ ## Git workflow: Trunk-Based Development with tbdflow
66+
67+ This project uses [ Trunk-Based Development] ( https://trunkbaseddevelopment.com/ ) :
68+ small, frequent changes integrated into ` main ` (the trunk) rather than
69+ long-lived branches. We use the [ ` tbdflow ` ] ( https://github.com/cladam/tbdflow )
70+ CLI (` cargo install tbdflow ` ) so the safe path is the easy path.
71+
72+ ` tbdflow commit ` pulls ` main ` , creates a Conventional Commit, and pushes:
73+
74+ ``` console
75+ tbdflow commit --type fix --scope decoder -m "handle backpressure on idle links"
76+ ```
77+
78+ For a change that needs review, use a short-lived branch and merge it back
79+ quickly: ` tbdflow branch --type feat --name my-change ` , then ` tbdflow complete ` .
80+ Other helpers: ` tbdflow sync ` , ` tbdflow radar ` , ` tbdflow changelog ` ,
81+ ` tbdflow undo ` .
82+
83+ Two committed files drive this workflow:
84+
85+ - ** ` .tbdflow.yml ` ** -- workflow + commit-message lint rules (trunk branch,
86+ allowed Conventional Commit types, lowercase scope/subject, 72-char subject).
87+ - ** ` .dod.yml ` ** -- the Definition of Done checklist shown before each commit
88+ (format, analyze, test, changelog, conformance). Bypass for a trivial change
89+ with ` --no-verify ` .
90+
91+ Commits and tags are ** SSH-signed** (` tbdflow commit ` respects the repo's
92+ signing config); include a sign-off (` -s ` ) certifying the
93+ [ DCO] ( https://developercertificate.org/ ) . Keep pull requests focused and update
94+ ` CHANGELOG.md ` under an ` ## Unreleased ` heading for user-visible changes.
95+
96+ ## Conventional Commits
97+
98+ Every commit message follows
99+ [ Conventional Commits] ( https://www.conventionalcommits.org ) :
100+ ` type(scope): short imperative subject ` . Allowed ** types** : ` build ` , ` chore ` ,
101+ ` ci ` , ` docs ` , ` feat ` , ` fix ` , ` perf ` , ` refactor ` , ` revert ` , ` style ` , ` test ` . The
102+ subject is lowercase, imperative, and has no trailing period; breaking changes
103+ use ` ! ` (` feat!: ` ) or a ` BREAKING CHANGE: ` footer.
104+
105+ This is enforced locally by ` tbdflow commit ` and in CI by the ** Commit lint**
106+ workflow (` .github/workflows/commit-lint.yml ` ), which checks every commit in a
107+ pull request.
74108
75109## Reporting bugs
76110
0 commit comments