GitHub workflow
Spatialnode uses GitHub as the source of truth for code, decisions, issues, and delivery status. main is always releasable. Do not commit directly to it.
Branches
Create branches from updated main using this format:
type/issue-number-short-description
feature/482-vector-tile-cache
fix/517-null-geometry-import
docs/533-deployment-runbook
chore/540-update-gdal-image
Delete the branch after merge. Use a short-lived branch; if a change cannot be reviewed in one sitting, split it behind a feature flag or into enabling PRs.
Commits
Use Conventional Commits. Write imperative subjects under 72 characters.
feat(map): add terrain exaggeration control
fix(import): reject invalid EPSG codes
docs: clarify preview deployment verification
chore(deps): update fastapi to 0.115.0
Use ! or a BREAKING CHANGE: footer for breaking changes. Never use vague messages such as updates or fix.
Pull request workflow
flowchart LR
A[Create issue] --> B[Branch + commits]
B --> C[Open draft PR early]
C --> D[Automated checks]
D --> E[Author self-review]
E --> F[Required reviewer approval]
F --> G[Squash merge]
G --> H[Delete branch + verify]
Every PR links an issue, explains the behavior change, notes risk, and includes validation evidence. Use a draft PR when the approach needs feedback or work is incomplete.
Never bypass protection
Required checks, CODEOWNERS review, and branch protection exist to protect client systems. Fix the process or escalate to the tech lead; do not force-push around controls.
Merge rules
- Require one approving reviewer; code-owner approval is required for owned paths.
- Resolve every conversation before merge.
- Rebase or update only when necessary; preserve reviewable history.
- Use squash merge by default. The squash commit must follow Conventional Commits.
- Verify the deployed change and close the linked issue only after confirmation.
[SCREENSHOT: GitHub Pull Request Page]
[SCREENSHOT: Branch Protection Settings]