Add a repository-local tool to lint, format, and safely reword commit
messages. Preserve markdown lists, quotes, code blocks, and trailers
while enforcing subject and body width limits.
Expose linting, formatting, and rewording through Make targets and
document the supported workflows. Run the linter in CI for pull request
and push commit ranges so malformed messages are caught before merging.
Add a `release-tag` target to the Makefile, mirroring the approach used
in taproot-assets. This target creates a signed Git tag derived from
`version.go`, and validates that it conforms to Semantic Versioning.
This prevents tagging with an invalid or non-compliant version.
This commit adds a module for a finite state machine. The goal of the
module is to provide a simple, easy to use, and easy to understand
finite state machine. The module is designed to be used in future
loop subsystems. Additionally a state visualizer is provided to
help with understanding the state machine.