QuantLab works best with small, self-contained slices.
The preferred workflow is:
- open or reuse one clear issue
- choose one clear slice
- work locally first
- commit in a small battery of logical commits
- push once the slice is coherent
- open one focused PR linked to the issue
- merge
- let the branch be deleted after merge
Prefer one narrow intention per branch, for example:
- one broker lifecycle step
- one CLI consolidation step
- one UI slice
- one documentation alignment step
Rule of thumb:
- one branch = one technical story
- one PR = one dominant scope
- if a PR mixes core, desktop, docs, CI, or cleanup, that mix must be explicitly justified; otherwise it should be split
Avoid mixing:
- feature work
- large refactors
- unrelated docs cleanup
- roadmap changes not required by the slice
For normal QuantLab work, prefer developing locally before the first push to origin.
Why:
- it reduces stale stacked remote branches
- it avoids noisy GitHub compare screens
- it keeps PRs cleaner
- it reduces repeated context reconstruction during the work
Recommended default:
- do not push after the first incomplete change
- push when the slice already has:
- coherent code
- focused validation
- a usable PR body
- an issue reference if the work is not an urgent exception
The preferred commit pattern is a small battery of logical commits such as:
feat(...)orrefactor(...)test(...)docs(...)
This is not mandatory for every tiny change, but it is the default target because it keeps the local history easy to review before merge.
If local index state or conflict pressure makes that split too expensive, prefer one clean coherent commit over a messy history.
Push earlier than usual only when there is a good reason, such as:
- the work will span multiple sessions
- the branch is risky and needs remote backup
- the work is being reviewed collaboratively before it is complete
- the slice is intentionally stacked on top of another unmerged branch
If you push early, prefer opening a draft PR only when the remote branch is actually useful for review or coordination.
Use the repository PR template.
Keep PRs short and slice-oriented:
SummaryWhyScopeValidationNotes
Prefer:
- short validation lists
- one issue closure per PR when possible
- integration PRs that summarize included slices instead of acting like changelogs
- PRs that clearly name the issue they close or continue
- PRs whose scope can be described without “and also”
Avoid:
- giant PR descriptions
- long lists of unrelated
Closes #... - raw shell-escaped text
- opening PRs from stale stacked branches after the real integration PR already exists
- multi-scope PRs without an explicit reason for why the work could not be kept slice-sized
QuantLab generally benefits from Squash and merge for slice-sized PRs.
Why:
mainstays readable- each merged PR remains one coherent unit
- the PR body carries the higher-level context
Use a different merge style only when preserving commit-by-commit history in main is clearly more valuable than a clean slice-level history.
After merge:
- let GitHub delete the remote branch automatically
- clean local branches that are already absorbed
- avoid leaving old stacked branches alive unless they are still active integration branches
QuantLab prefers:
- issue-led, local-first slices
- explicit validation
- clean PR narratives
- minimal branch noise
The goal is not process overhead. The goal is to keep the repo easy to reason about while the product surface grows.