Architecture · ops.tradeit.gg
Define how work moves from task pickup to production using our Git Flow process.
master Production branch. Releases and hotfixes are merged here and tagged.
develop Main integration branch for ongoing work. Features and releases start from here, and completed work merges back here.
feature/<name> Used for new functionality. Created from develop and merged back into develop.
bugfix/<name> Used for non-production bug fixes that should go into the next release. In our flow, bugfix branches follow the same lifecycle as features: branch from develop, PR into develop, QA, then release with the next version.
release/<version> Used to prepare a production release. Created from develop. When finished, it is merged into master, tagged, and back-merged into develop.
hotfix/<version> Used only for urgent production fixes. Created from master, then merged back into both master and develop, with a tag on master.
Task is defined and ready to be picked up.
Create a branch from develop.
For a feature:
git flow feature start <name>
For a bugfix in the next normal release:
git checkout develop
git checkout -b bugfix/<name>
Work done in this stage:
Optional publish for collaboration:
git flow feature publish <name>
Open a pull request into develop.
feature/<name> → developbugfix/<name> → developIf review requests changes, move back to In Development on the same branch.
Code review passed. The branch is ready for QA validation.
Deploy the branch to feature staging and validate it.
If QA fails:
feature/* or bugfix/* branchIf QA passes:
developAfter QA approval, merge the PR into develop.
This is the point where the work becomes part of the next release candidate.
Once the required set of features and bugfixes is in develop, create a release branch.
git flow release start <version>
Optional publish:
git flow release publish <version>
QA validates the release/<version> branch.
Only release-safe changes go here, such as:
When release QA passes, finish the release:
git flow release finish <version>
git push origin --tags
This does the following:
release/<version> into masterdevelopIf production is broken, do not open a normal bugfix branch from develop.
Use a hotfix from master:
git flow hotfix start <version>
After the fix and QA:
git flow hotfix finish <version>
git push origin --tags
This does the following:
masterdevelopfeature/* whenbugfix/* whendevelop → release flowhotfix/* whenWe use Conventional Commits for semantic commit messages.
Format:
<type>[optional scope]: <description>
feat: new featurefix: bug fixrefactor: internal code change without behavior changetest: tests added or updateddocs: documentation onlychore: maintenance, tooling, or dependency workperf: performance improvementci: CI/CD changesbuild: build or packaging changesUse ! after the type or scope, or add a BREAKING CHANGE: footer.
Examples:
feat(inventory): add delayed refresh after trade completion
fix(auth): handle expired steam session correctly
refactor(opensearch): simplify item query builder
test(trade): add coverage for escrow timeout flow
chore(deps): bump datadog library
feat(api)!: remove deprecated inventory response fields
fix stuff or changesfix: for bugs and feat: for behavior additionsgit checkout develop
git pull origin develop
git flow feature start inventory-resync
git commit -m "feat(inventory): add resync endpoint"
# open PR to develop
# QA on feature staging
# merge PR to develop
git flow release start 1.24.0
# release QA
git flow release finish 1.24.0
git push origin --tags
git checkout develop
git pull origin develop
git checkout -b bugfix/staging-login-loop
git commit -m "fix(auth): stop redirect loop on staging"
# open PR to develop
# QA on feature staging
# merge PR to develop
git flow release start 1.24.1
# release QA
git flow release finish 1.24.1
git push origin --tags
git checkout master
git pull origin master
git flow hotfix start 1.24.2
git commit -m "fix(payment): handle provider timeout fallback"
# QA the hotfix
git flow hotfix finish 1.24.2
git push origin --tags
feature/* and bugfix/* are normal develop-based work branchesdeveloprelease/* is created from develop when a version is readyhotfix/* is only for urgent production issues and starts from masterops.tradeit.gg — Internal Engineering Docs