Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
156 changes: 155 additions & 1 deletion docs/branching.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,15 @@
* [Branches naming](#branches-naming)
* [Branching visualization](#branching-visualization)
* [Feature and fix branches that are merged into the main branch](#feature-and-fix-branches-that-are-merged-into-the-main-branch)
* [Cherry picking changes into release (stable) branch from the main branch](#cherry-picking-changes-into-release-stable-branch-from-the-main-branch)
* [Cherry-picking changes into release (stable) branch from the main branch](#cherry-picking-changes-into-release-stable-branch-from-the-main-branch)

@coderabbitai coderabbitai Bot Jun 17, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Standardize hyphenation of "cherry-picking" across TOC and headings.

Line 15 uses "Cherry-picking" (hyphenated) in the TOC, but lines 20 and 250 use "Cherry picking" (non-hyphenated). The grammar analysis tool also flags line 250 as needing a hyphen for compound-word consistency.

Recommend standardizing on "Cherry-picking" throughout for grammatical correctness and visual consistency.

✏️ Proposed fix
-    * [Cherry picking](`#cherry-picking`)
+    * [Cherry-picking](`#cherry-picking`)
 
-### Cherry picking
+### Cherry-picking

Also applies to: 20-20, 250-250

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/branching.md` at line 15, Standardize the hyphenation of
"cherry-picking" throughout the document. Replace all instances of "Cherry
picking" (non-hyphenated) with "Cherry-picking" (hyphenated) on lines 20 and 250
to match the correct usage on line 15 in the table of contents. This ensures
grammatical correctness and visual consistency across all headings and
references in the branching.md file.

Source: Linters/SAST tools

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai create issue

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

gh issue create \
  --repo "lightspeed-core/lightspeed-stack" \
  --title "docs/branching.md: Standardize hyphenation of \"cherry-picking\" across TOC and headings" \
  --body "## Summary

In \`docs/branching.md\`, the term \"cherry-picking\" is hyphenated inconsistently:

- **Line 15** (TOC): \"Cherry-picking\" ✅ (hyphenated — correct)
- **Line 20** (TOC): \"Cherry picking\" ❌ (non-hyphenated)
- **Line 250** (section heading): \"Cherry picking\" ❌ (non-hyphenated)

All occurrences should use the hyphenated form \"Cherry-picking\" for grammatical correctness and visual consistency.

## Suggested fix

\`\`\`diff
-    * [Cherry picking](`#cherry-picking`)
+    * [Cherry-picking](`#cherry-picking`)

-### Cherry picking
+### Cherry-picking
\`\`\`

## References

- PR: https://github.com/lightspeed-core/lightspeed-stack/pull/1937
- Review comment: https://github.com/lightspeed-core/lightspeed-stack/pull/1937#discussion_r3426183918

/cc `@tisnik`" \
  --assignee "tisnik"

Length of output: 1113



@tisnik, the issue has been created and assigned to you: #1939

* [Multiple release branches, fixes made in fix branches](#multiple-release-branches-fixes-made-in-fix-branches)
* [Branching strategy](#branching-strategy)
* [Steps (ordered)](#steps-ordered)
* [Visualized flow](#visualized-flow)
* [Cherry picking](#cherry-picking)
* [Git workflow](#git-workflow)
* [New release branch](#new-release-branch)
* [Update/fix existing release branch](#updatefix-existing-release-branch)

<!-- vim-markdown-toc -->

Expand Down Expand Up @@ -160,3 +167,150 @@ branch naming conventions are not covered here.

[branching_3](https://lightspeed-core.github.io/lightspeed-stack/branching_3.svg)


## Branching strategy

### Steps (ordered)

1. Create release branch

2. Update metadata, such us version etc.

3. Run CI: full test suite, linters, build (this is to check that branching is
ok)

4. Stabilize: apply bug fixes, adjust configurations, small polish commits on
release branch

5. QA / UAT: Deploy release branch to staging environment (Konflux)

6. Fix issues: commit fixes directly on release branch; re-run CI

7. Prepare release: Finalize changelog, update docs, set release notes

8. Deploy: trigger production deployment (Konflux)

9. Hotfixes (if needed): create hotfix/x.y.z+1 from main, then follow same flow



### Visualized flow

```

@coderabbitai coderabbitai Bot Jun 17, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add language identifier to code block.

The fenced code block lacks a language identifier. Markdown linter (MD040) recommends specifying the language to improve syntax highlighting and accessibility.

🔧 Proposed fix
-```
+```text
                  +-----------------+
                  |   main branch   |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 199-199: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/branching.md` at line 199, The fenced code block containing the ASCII
diagram with the "main branch" label is missing a language identifier after the
opening backticks. Add the language identifier "text" to the opening fence by
changing ``` to ```text to comply with the MD040 markdown linter rule and enable
proper syntax highlighting.

Source: Linters/SAST tools

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai create issue

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

gh issue create \
  --repo "lightspeed-core/lightspeed-stack" \
  --title "docs/branching.md: fenced code block missing language identifier (MD040)" \
  --assignee "tisnik" \
  --body "## Summary

The fenced code block containing the ASCII flow diagram in \`docs/branching.md\` at line 199 is missing a language identifier, which violates the MD040 markdownlint rule (\`fenced-code-language\`).

## Details

- **File:** \`docs/branching.md\`
- **Line:** 199
- **Rule:** MD040 – Fenced code blocks should have a language specified

## Suggested Fix

Add the \`text\` language identifier to the opening fence of the ASCII diagram block:

\`\`\`diff
-\`\`\`
+\`\`\`text
                  +-----------------+
                  |   main branch   |
\`\`\`

## References

- PR: https://github.com/lightspeed-core/lightspeed-stack/pull/1937
- Review comment: https://github.com/lightspeed-core/lightspeed-stack/pull/1937#discussion_r3426183928

Reported by `@tisnik`"

Length of output: 1098



@tisnik, I've created the follow-up issue: #1940 — assigned to you. It tracks adding the text language identifier to the fenced code block at line 199 of docs/branching.md.

+-----------------+
| main branch |
| |
+--------+--------+
|
| create release/x.y.z
v
+-----------------+
| release/x.y.z |
| (stabilize) |
+----+---+---+----+
| | |
update changelog | | | bug fixes & CI
| | |
v v v
+-----------------+
| Run CI / Tests |
+--------+--------+
|
v
+-----------------+
| Run e2e tests |
| in Konflux |
| |
+--------+--------+
|
issues found | validated
+--------+-----------+
| |
v v
+----------------+ +----------------+
| Fix on release | | Ready for ship |
+-------+--------+ +-------+--------+
| |
v v
(re-run CI) tag the release
| |
v v
+----------------+ +----------------+
| return to QA | | (tag vX) |------------+
+----------------+ +----------------+ |
| |
v v
+----------------+ +-----------------+
| Build images | | Publish on PyPi |
+----------------+ +-----------------+
```



### Cherry picking

Cherry-picking is a Git operation that applies the changes introduced by a
specific commit from one branch onto another branch without merging the entire
branch history. Key points:

* Purpose: move a single fix, feature, or change (identified by its commit SHA)
from one line of development (e.g., from main branch) into another (in our
case into a release branch) when you don’t want to merge all other commits.

* How it works: Git copies the patch (diff) from the selected commit, attempts
to apply it to the current branch, and creates a new commit with a new SHA on
that branch.

* Typical workflow:
- Checkout the target branch (e.g., release/0.6.0).
- Run `git cherry-pick` (or multiple SHAs).
- Resolve any merge conflicts, then `git add` and `git cherry-pick --continue`.
Test, review, and push the resulting commit into the release branch.

NOTE: the cherry picking can be made in main -> release branch direction or
vice versa. We prefer the first method when possible.



## Git workflow

### New release branch

```bash
# 1. Create release branch from the main branch
git checkout -b release/1.2.0 main

# 2. Update version number in build files

# 3. Commit and push
git commit -am "Prepare for 1.2.0 release"
git push origin release/1.2.0

# 4. Tag the release
git tag -a v1.2.0 -m "Release 1.2.0"
git push origin v1.2.0

# 5. Merge into main (optional step)
git checkout main && git merge release/1.2.0
```



### Update/fix existing release branch

```bash
# 1. Create branch from the release branch
git checkout -b release/1.2.1 release/1.2.0

# 2. Update version number in build files

# 3. Commit and push
git commit -am "Prepare for 1.2.1 fix"
git push origin release/1.2.1

# 4. Tag the release
git tag -a v1.2.1 -m "Release 1.2.1"
git push origin v1.2.1
```

NOTE: 1.2.0 and 1.2.1 are just examples, of course.
Loading