-
Notifications
You must be signed in to change notification settings - Fork 0
guidelines git_specification commits
Fork of Conventional Commits for Research. Made for WorldBuilding version control repositories - 2026-07-28
[!WARNING] STILL WIP
After starting a worldbuilding project on git, i think the commits also need to be neat and tidy like other software projects. I could not find any worldbuilding project GitHub repository to take example from [If there one, please let me know]. Because the existing Conventional Commits specification was designed specifically for software projects, its popular types often fail to capture the unique nuances of worldbuilding activities. Even tho there is no need for a commit system of a worldbuilding activities, it is still fun to play with our available thoughts (Sorry for blabbering, this is my thoughts)
- Enabling to skim thru commit history
- Helping neurodivergent people's decision fatigue to name their worldbuilding commits
- Help Automatically-generating CHANGELOGs.
- Communicating the nature of changes to teammates and other stakeholders.
If you already familiar with Conventional Commits, you can navigate directly to Summary. If you want to review document, you might need to also see the Base Logic of this specification.
The Conventional Commits for worldbuilding specification is a strict convention on top of commit messages, specialized for worldbuilding project stored in version control repositories. It provides a detailed set of rules for creating an explicit commit history; which makes it easier to write automated tools on top of. This convention adapted from already existing Conventional Commits, This convention currently dovetail with WorldVer which located in the same repo. This summary section is assuming the reader already familiar with Conventional Commits.
The commit message should be structured as follows:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
The commit contains the same structural elements as Conventional Commits, with addition and changes in types, scopes, and breaking change listed below. This was made to record changes in research process:
-
Universal commit types
-
style: same as formerly Angular Convention's. used in worldbuilding for tagging, formatting documents -
docs: same as Angular Convention's; used in worldbuilding commits only for non-in-universe documentation. -
chore: same as formerly Angular Convention's. -
ci: same as Angular Convention's. -
revert: same as Conventional Commits.
-
- Commit types only for changes in worldbuilding
-
draft: . equivalent mostly to chore but leastly to feat -
canon: . equivalent to feat -
refine: . equivalent to refactor and fix -
asset: -
world: to group conworlding-only type if the project is code-focused.
-
- Commit types only for changes in code [used in research]
-
feat: same as Conventional Commits; also used in research commits for newly acquired raw data. -
fix: same as Conventional Commits; data can also have bugs and fixes. -
code: to group typefeat,fix,refactor,perf, andstyle. These grouped types can have their own commit. -
devtool: to group typebuildandtest. These grouped types can have their own commit.
-
-
Scope. Even though scope field is optional, there are few recommended predefined scope that can be used
- for commit type
featandfix, scopedatais to represent the new or fixed data. - for commit type
process, its scope should represent the stage/list of data processing - for commit type
dissem, its scope should represent the types of dissemination, or part/chapter of the manuscript - for commit type
method, its scope should represent the stage/list of method being used
- for commit type
- Breaking changes are retcon
- The verb of imperative mood should describe the importance of a commit
-
Commit message with scope and
!to draw attention to breaking changedissem(intro)!: restructure introduction section for clarity -
Commit message with both
!and BREAKING CHANGE footerexpt(validation)!: replace validation dataset with external benchmark BREAKING CHANGE: Prior validation results are no longer comparable with the new dataset. -
Commit message with no body
docs: correct spelling of CHANGELOG -
Commit messages with scope
feat(data): add new survey responses code(refactor): simplify data parser logic devtool(test): add unit tests for preprocessing pipeline research(process): add provenance metadata for dataset -
Commit message with multi-paragraph body and multiple footers
process(cleaning): correct mislabeled sample IDs Corrected sample identifiers in dataset to match metadata records. This ensures consistency across analysis pipelines. Reviewed-by: Alice Acked-by: Bob Refs: #456
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.
- Commits MUST be prefixed with a type, followed by the OPTIONAL scope, OPTIONAL
!, and REQUIRED terminal colon and space. - Type consists of a noun. The types in the next three items is used for their own condition.
- These below are universal commit types, which MAY be used for both research and code commits.
- The type
featMUST be used when a commit adds a new feature to your code; or adds a new raw data in your research. - The type
fixMUST be used when a commit represents a bug fix for your codes or data. - The type
styleMAY be used when a commit makes cosmetic changes to code/research that do not affect its behavior/meaning. - The type
docsMAY be used when a commit makes changes to documentation, comments, or API descriptions; and MUST be used in research commits only for project management (non-scientific) documents. - The type
ciMUST be used when a commit changes CI (and CD) configuration files and scripts. - The type
choreMAY be used when a commit contains miscellanous tasks that do not impact production code nor research progress. - The type
revertMUST be used when rolling back a previous commit.
- The type
- These below are commit types only for changes in research, which MUST only be used for research commits.
- The type
processMUST be used when a commit represents data processing. - The type
analsyntMUST be used when a commit represents the data is being discussed/analyzed/synthesized. - The type
dissemMUST be used when a commit makes changes on dissemination documents. - The type
methodMUST be used when a commit makes changes on protocols/procedure/documents of materials and methods. - ?The type
exptMUST be used when a commit experiments, tests, or validates data/methods. This type confirms correctness, reliability, or reproducibility, and MUST NOT be confused with “experimental research.”. - The type
researchSHOULD NOT be used to group research-only commit types, unless the project is code-focused rather than research-focused.
- The type
- These below are commit types only for changes in code, which MUST only be used for code commits.
- The type
refactorMAY be used when a commit makes structural improvements to the code without changing its behavior. - The type
perfMAY be used when a commit changes code that improves performance. - The type
buildMAY be used when a commit affects the build system or external dependencies. - The type
testMAY be used when a commit adds, modifies, fixes, or improves tests on code. - The type
codeSHOULD be used to group typefeat,fix,refactor,perf, andstyle. - The type
devtoolSHOULD be used to group typebuildandtest.
- The type
- A scope MAY be provided after a type. A scope MUST consist of a noun describing a
section of the codebase/research surrounded by parenthesis, e.g.,
fix(parser):. Some predefined scopes are listed below.- For commit type
featandfix, scopedatais RECOMMENDED to represent the new or fixed data. - For commit type
process, its scopes SHOULD represent the stage/list of data processing. - For commit type
dissem, its scopes SHOULD represent the types of dissemination, or part/chapter of the manuscript. - For commit type
method, its scopes SHOULD represent the stage/list of method being used. - For commit type
research,code, anddevtool, its scopes MUST be their grouped type and MAY be other scopes.
- For commit type
- A description MUST immediately follow the colon and space after the type/scope prefix. It is RECOMMENDED to use imperative mood. The description is a short summary of the code changes, e.g., fix: array parsing issue when multiple spaces were contained in string.
- A longer commit body MAY be provided after the short description, providing additional contextual information about the code changes. The body MUST begin one blank line after the description.
- A commit body is free-form and MAY consist of any number of newline separated paragraphs.
- One or more footers MAY be provided one blank line after the body. Each footer MUST consist of
a word token, followed by either a
:<space>or<space>#separator, followed by a string value (this is inspired by the git trailer convention).- A footer's token MUST use
-in place of whitespace characters, e.g.,Acked-by(this helps differentiate the footer section from a multi-paragraph body). An exception is made forBREAKING CHANGE, which MAY also be used as a token. - A footer's value MAY contain spaces and newlines, and parsing MUST terminate when the next valid footer token/separator pair is observed.
- A footer's token MUST use
- Breaking changes MUST be indicated in the type/scope prefix of a commit, or as an entry in the footer.
- If included as a footer, a breaking change MUST consist of the uppercase text BREAKING CHANGE, followed by a colon, space, and description, e.g., BREAKING CHANGE: environment variables now take precedence over config files.
- If included in the type/scope prefix, breaking changes MUST be indicated by a
!immediately before the:. If!is used,BREAKING CHANGE:MAY be omitted from the footer section, and the commit description SHALL be used to describe the breaking change.
- Types other than those already mentioned above MAY be used in your commit messages.
- The units of information that make up Conventional Commits MUST NOT be treated as case-sensitive by implementors, with the exception of BREAKING CHANGE which MUST be uppercase.
- BREAKING-CHANGE MUST be synonymous with BREAKING CHANGE, when used as a token in a footer.
This document is licensed with Creative Commons - CC BY 4.0
Conventional Commits are licensed with Creative Commons - CC BY 3.0
You want to submit or contribute to the project? follow these steps
- Read our statements and agreements in Contributing
- Start authoring your articles!
- Tidy up your typings
And be sure to check out other document as well!
WIP
WIP