Commit Messages
===============
FUSION follows the `Conventional Commits `_
specification for clear, consistent commit messages.
Format
------
.. code-block:: text
(scope):
[optional body]
[optional footer]
**Example:**
.. code-block:: text
feat(routing): add congestion-aware path selection
Implement a new routing strategy that considers link utilization
when selecting paths. This reduces blocking probability under
high load conditions.
Resolves #123
Commit Types
------------
Use these types based on what you changed:
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style (formatting, no logic change)
- **refactor**: Code restructuring (no new features or fixes)
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **chore**: Maintenance tasks
- **build**: Build system changes
- **ci**: CI/CD changes
Scopes
------
Use scopes that match FUSION's modules:
- **cli**: Command-line interface
- **config**: Configuration system
- **core**: Simulation core
- **routing**: Routing algorithms
- **spectrum**: Spectrum assignment
- **snr**: SNR calculations
- **rl**: Reinforcement learning
- **ml**: Machine learning
- **viz**: Visualization
- **test**: Testing framework
Rules
-----
**Do:**
- Start with a lowercase letter after the colon
- Use imperative mood: "add" not "added" or "adds"
- Keep the subject line under 100 characters
- Be descriptive about what and why
**Don't:**
- End with a period
- Use vague messages like "fix bug" or "update code"
- Exceed 100 characters in the subject line
Good Examples
-------------
.. code-block:: text
feat(cli): add support for custom configuration templates
fix(spectrum): resolve allocation conflict in multi-core scenarios
perf(core): reduce simulation startup time by 40%
refactor(cli): extract argument validation into separate module
docs: add troubleshooting guide for common installation issues
test(routing): add unit tests for k-shortest path algorithm
Bad Examples
------------
.. code-block:: text
Fixed bug # Too vague
Update README.md # What was updated?
feat: fix # Contradictory
Added some changes # Not descriptive
WIP: working on feature # Not a complete change
Complex Changes
---------------
For significant changes, add a body:
.. code-block:: text
feat(config): add schema-based validation system
Implement comprehensive configuration validation using JSON Schema
to catch errors early and provide helpful error messages.
Changes include:
- Add schema definitions for all config sections
- Implement validation in ConfigManager class
- Add detailed error messages with suggestions
Resolves #123, #145
Referencing Issues
------------------
Link related issues in the footer:
.. code-block:: text
fix(routing): resolve null pointer exception
Fixes #234
Keywords that close issues:
- ``Fixes #123``
- ``Closes #123``
- ``Resolves #123``
Why This Matters
----------------
Consistent commit messages:
- Make history easy to read
- Enable automated changelog generation
- Help reviewers understand changes
- Make debugging easier with ``git bisect``