Skip to content

Commit 113decc

Browse files
kRHYME7rubiin
authored andcommitted
chore: Try to extend testing time for our beloved testers. (#937)
1 parent faaceb7 commit 113decc

File tree

5 files changed

+186
-50
lines changed

5 files changed

+186
-50
lines changed

β€Ž.github/scripts/promote_to_master.shβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ if [ -z "$COMMIT_LIST" ]; then
1313
COMMIT_LIST="No new commits - branches may be identical"
1414
fi
1515
16-
MERGE_DATE="Friday"
16+
MERGE_DATE="1st or 3rd Friday of the month"
1717
1818
echo "$COMMIT_LIST" >commit_list.txt
1919

β€Ž.github/workflows/ci.ymlβ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88

99
jobs:
1010
dev-to-master-pr:
11-
name: Create or Update PR from Dev to Master
11+
name: Create Quarterly Release PR from Dev to Master
1212
if: github.ref == 'refs/heads/dev' && github.repository == 'HyDE-Project/HyDE'
1313
runs-on: ubuntu-latest
1414
steps:
@@ -64,7 +64,7 @@ jobs:
6464
script: |
6565
const { repo, owner } = context.repo;
6666
const prBranch = "dev";
67-
const prTitle = "chore: release automated changes from dev to master";
67+
const prTitle = "chore: quarterly release - dev β†’ master";
6868
const prBody = process.env.PR_BODY;
6969
7070
// Retry helper function
@@ -140,7 +140,7 @@ jobs:
140140
echo "The branches master and dev are already in sync."
141141
142142
release:
143-
name: release
143+
name: Quarterly Snapshot Release
144144
if: github.ref == 'refs/heads/master' && github.repository == 'HyDE-Project/HyDE'
145145
runs-on: ubuntu-latest
146146
steps:

β€Ž.github/workflows/refresh-release.ymlβ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Refresh Release
1+
name: Quarterly Release Refresh
22

33
on:
44
workflow_dispatch:
@@ -49,4 +49,4 @@ jobs:
4949
git push origin HEAD:master
5050
5151
- name: Provide feedback
52-
run: echo "Release refresh triggered successfully with a ${{ github.event.inputs.version_bump }} version bump!"
52+
run: echo "Quarterly release refresh triggered successfully with a ${{ github.event.inputs.version_bump }} version bump!"

β€Ž.github/workflows/warn-master-pr.ymlβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ jobs:
6161
owner,
6262
repo,
6363
issue_number,
64-
body: "⚠️ **Warning: PR targeting master branch detected!**\n\n**This PR is targeting `master` but should target `dev` instead.**\n\nAccording to our [CONTRIBUTING.md](https://github.com/HyDE-Project/HyDE/blob/master/CONTRIBUTING.md) and [RELEASE_POLICY.md](https://github.com/HyDE-Project/HyDE/blob/master/RELEASE_POLICY.md):\n\n- **All pull requests must be submitted to the `dev` branch**\n- Changes go through `dev` first for testing before being merged to `master` during release windows\n- **PRs to `master` are only allowed for emergencies**\n\n**Required Action:**\n1. **Change the base branch from `master` to `dev`**\n2. Follow the [pull request template](https://github.com/HyDE-Project/HyDE/blob/master/.github/PULL_REQUEST_TEMPLATE.md)\n\n**If this is an emergency fix, please add a comment explaining why it needs to target `master` directly.**\n\n---\n*This is an automated message enforcing our contribution workflow.*"
64+
body: "⚠️ **Warning: PR targeting master branch detected!**\n\n**This PR is targeting `master` but should target `dev` instead.**\n\nAccording to our [Quarterly Release Policy](https://github.com/HyDE-Project/HyDE/blob/master/RELEASE_POLICY.md):\n\n- **All pull requests must be submitted to the `dev` branch**\n- Changes go through `dev` first for testing before being merged to `master` during quarterly release windows (1st & 3rd Fridays)\n- **PRs to `master` are only allowed for emergencies**\n\n**Required Action:**\n1. **Change the base branch from `master` to `dev`**\n2. Follow the [pull request template](https://github.com/HyDE-Project/HyDE/blob/master/.github/PULL_REQUEST_TEMPLATE.md)\n\n**If this is an emergency fix, please add a comment explaining why it needs to target `master` directly.**\n\n---\n*This is an automated message enforcing our quarterly release workflow.*"
6565
});
6666
console.log('Warning comment added to PR #' + issue_number);
6767
} else {

β€ŽRELEASE_POLICY.mdβ€Ž

Lines changed: 179 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,200 @@
1-
## Release & Branching Policy (Flexible Freeze & Release Window)
1+
## Release & Branching Policy - Quarterly Releases
22

3-
### Branches
3+
#### Three Key Points
44

5-
- **`dev` branch**
6-
Active development branch where all new features and fixes are merged and tested continuously.
5+
1. **Development** - All development and PRs target`dev`
6+
2. **Release** - Merge`dev` β†’`master` twice per month (1st Quarter & 3rd Quarter)
7+
3. **Snapshot** - Create official releases from stable`master` branch---
78

8-
- **`master` branch**
9-
Stable production branch updated only with thoroughly tested code from `dev`.
9+
---
10+
11+
## Quarterly Release Schedule Flow
12+
13+
- **1st Quarter (1st Friday):** Merge`dev` β†’`master` β†’ Snapshot release (2nd Friday)
14+
- **3rd Quarter (3rd Friday):** Merge`dev` β†’`master` β†’ Snapshot release (4th Friday)
15+
16+
17+
#### 1st Quarter Cycle
18+
19+
**Week before 1st Friday:**
20+
21+
- 🚫**Dev freeze** - No new PRs merged to`dev` (fixes only)
22+
- πŸ§ͺ**Testing phase** - Focus on validation and bug fixes
23+
24+
**1st Friday:**
25+
26+
- πŸ”„**Merge `dev` β†’ `master`**
27+
- βœ…**Dev reopens** - New features and PRs accepted
28+
29+
**2nd Friday:**
30+
31+
- πŸ“¦**Snapshot release** (when`master` is stable)
32+
33+
#### 3rd Quarter Cycle
34+
35+
**Week before 3rd Friday:**
1036

11-
- **`release` branch**
12-
Freezed production `master` branch for release. This branch is not updated with new features or fixes. This just serves as a snapshot of the production code.
37+
- 🚫**Dev freeze** - No new PRs merged to`dev` (fixes only)
38+
- πŸ§ͺ**Testing phase** - Focus on validation and bug fixes
1339

14-
### Weekly Release Cycle (Flexible Timing)
40+
**3rd Friday:**
1541

16-
- **Dev Branch Freeze Window:**
17-
The `dev` branch freeze typically occurs **during the latter part of the week (Wednesday/Thursday)**, allowing no new feature merges after that point. Only critical bug fixes and final testing are allowed during this freeze period.
42+
- πŸ”„**Merge `dev` β†’ `master`**
43+
- βœ…**Dev reopens** - New features and PRs accepted
1844

19-
- **Merge & Release Window:**
20-
The merge from `dev` to `master` and deployment to production happens **on Friday**.
45+
**4th Friday:**
2146

22-
- **Freeze & Release Window:**
23-
The freeze and release window is we can freeze and tag the `master` branch. Cycles should be first and third week per month.
47+
- πŸ“¦**Snapshot release** (when`master` is stable)
48+
- πŸ”„**Preparation for next cycle/month**
2449

25-
### Development and Testing
50+
#### Summary
2651

27-
- **Monday to Wednesday (before freeze):**
28-
Developers merge features and fixes into `dev`. Testers validate continuously.
52+
| Quarter | Freeze Week | Merge Friday | Snapshot Friday | Dev Status |
53+
| --------------------- | ------------------- | ------------ | --------------- | ---------- |
54+
| **1st Quarter** | Week before 1st Fri | 1st Friday | 2nd Friday | πŸš«β†’βœ… |
55+
| **3rd Quarter** | Week before 3rd Fri | 3rd Friday | 4th Friday | πŸš«β†’βœ… |
2956

30-
- **Thursday (freeze window):**
31-
Development freezes on `dev` at some point during the day. Testers focus on final validation and regression testing.
3257

33-
- **Friday (release window):**
34-
Once `dev` is stable and approved, it is merged into `master` and deployed. This happens sometime during Friday, with flexibility to ensure quality.
58+
**Key Rules:**
3559

36-
- **Friday to Sunday:**
37-
Production monitoring and hotfix as needed.
60+
- 🚫**Freeze weeks:** No new features to`dev` (fixes only)
61+
- βœ…**Open weeks:** All development welcomed
62+
- πŸ“¦**Snapshots:** Only when`master` is stable
63+
- πŸ”„**4th Friday:** Preparation for next cycle/month
3864

39-
### Pull Requests
65+
---
66+
67+
## Weekly Summary
4068

41-
- All pull requests should be made against `dev` branch.
42-
- Pull requests should be reviewed and approved by at least one other developer before merging.
43-
- Pull requests should be merged and deployed within the release window for `master` branch.
44-
- Pull requests should not be merged directly into `master` branch.
45-
- Pull request can be created anytime, but should be reviewed and and should be merged to `dev` branch before releasing on `master` branch.
69+
| Phase | Dev Branch Status | Allowed Changes | Description |
70+
| ----------------------------------------------- | ------------------- | ------------------------------------------------------------------- | ------------------------- |
71+
| **Freeze Week** (before 1st & 3rd Friday) | 🚫**FROZEN** | ❌ No new features `<br>`βœ… Bug fixes `<br>`βœ… Non-breaking QoL | Testing and validation |
72+
| **Merge Friday** (1st & 3rd of month) | πŸ”„**MERGING** | πŸ”„ Merge to master | Deploy stable code |
73+
| **Stabilization Week** (after merge) | βœ…**OPEN** | βœ… All development `<br>`πŸ”§ Critical hotfixes | Monitor master & develop |
74+
| **Snapshot Release** | πŸ“¦**RELEASE** | πŸ“¦ Create release | When `master` is stable |
75+
76+
---
4677

47-
### Summary Timeline (Flexible)
78+
## Monthly Timeline
4879

49-
| Day | Activity |
50-
| -------------------------------- | ------------------------------------------------------ |
51-
| Monday–Wednesday (before freeze) | Active development and testing on `dev` branch |
52-
| Thursday (freeze window) | Freeze `dev` branch at flexible time; finalize testing |
53-
| Friday (release window) | Merge `dev` into `master` and deploy at flexible time |
54-
| Friday–Sunday | Monitor production and prepare hotfixes if needed |
80+
| Period | Dev Status | Master Status | Activity | Focus |
81+
| ---------------------------------------- | ------------------------- | ---------------------- | --------------------------- | ---------------------- |
82+
| **Week before 1st Friday** | 🚫**FROZEN** | πŸ”§ Previous fixes | Testing & validation | πŸ§ͺ Prepare for merge |
83+
| **1st Friday** | πŸ”„**MERGING** | πŸ“₯ Receives new code | Merge `dev` β†’ `master` | πŸ”„ Deploy |
84+
| **Week after 1st Friday** | βœ…**OPEN** | πŸ”§ Hotfixes only | Active development | οΏ½ New features to dev |
85+
| **2nd Friday** | οΏ½**FREEZE begins** | οΏ½πŸ“¦**SNAPSHOT** | Release when stable | πŸ“¦ Release |
86+
| **Week before 2nd-to-last Friday** | 🚫**FROZEN** | πŸ”§ Minor fixes only | Testing & validation | πŸ§ͺ Prepare for merge |
87+
| **2nd-to-last Friday** | πŸ”„**MERGING** | πŸ“₯ Receives new code | Merge `dev` β†’ `master` | πŸ”„ Deploy |
88+
| **Week after 2nd-to-last Friday** | βœ…**OPEN** | πŸ”§ Hotfixes only | Active development | οΏ½ New features to dev |
89+
| **Last Friday** | οΏ½**FREEZE begins** | πŸ“¦**SNAPSHOT** | Release when stable | πŸ“¦ Release |
90+
91+
**Freeze periods: ~2 weeks per month (handles variable month lengths)**
5592

5693
---
5794

58-
### Notes
95+
## Versioning
96+
97+
We use **year.month.quarter** format (`vYY.M.Q`) instead of traditional semantic versioning for several reasons:
98+
99+
- **Release-cycle aligned:** Matches our quarterly release schedule perfectly
100+
- **Time-based clarity:** Instantly shows when a release was made
101+
- **Predictable progression:** Always`.1` then`.3` each month
102+
- **No arbitrary numbers:** No confusion about what constitutes "major" vs "minor"
103+
- **User-friendly:** Easy to understand -`v25.7.1` = "July 2025, 1st Quarter"
104+
105+
---
106+
107+
## Pull Requests
108+
109+
- All pull requests should be made against`dev` branch
110+
- Pull requests should be reviewed and approved by at least one other developer before merging
111+
- Pull requests can be created anytime, but should be merged to`dev` branch before releasing on`master` branch
112+
- Pull requests should not be merged directly into`master` branch
113+
- Pull requests should be merged within the release window for`master` branch
114+
115+
---
59116

60-
- The freeze and release times are **flexible within late Wednesday and Friday** to accommodate testing needs and ensure release quality.
61-
- Aim to freeze `dev` as early as possible on Wednesday and release early on Friday, but timing may adjust based on readiness.
62-
- Clear communication will be provided each week about the expected freeze and release times. Expect that it may be in the commit messages or in a dedicated discord channel.
63-
- This is yet experimental and may be adjusted or modified based on feedback and testing results.
64-
- We don't have exact time frames as it depends on the collaborators availability.
117+
# FLOWCHART
118+
119+
Here are some visuals to help you understand the flowchart better.
120+
121+
## Development Flow
122+
123+
```mermaid
124+
graph TD
125+
A[Normal Development<br/>βœ… All PRs to dev] --> B{Week Before<br/>1st/3rd Friday?}
126+
B -->|Yes| C[🚫 DEV FREEZE<br/>Bug fixes only<br/>πŸ§ͺ Testing Phase]
127+
B -->|No| A
128+
129+
C --> D[πŸ”„ MERGE DAY<br/>1st/3rd Friday<br/>dev β†’ master]
130+
D --> E[βœ… DEV REOPENS<br/>New features accepted]
131+
E --> F[πŸ“¦ SNAPSHOT RELEASE<br/>2nd/4th Friday<br/>When master stable]
132+
F --> G[πŸ”„ Prep Next Cycle]
133+
G --> A
134+
135+
style A fill:#a9b1d6,stroke:#252737,stroke-width:2px,color:#252737
136+
style C fill:#ebbcba,stroke:#252737,stroke-width:2px,color:#252737
137+
style D fill:#a9b1dc,stroke:#252737,stroke-width:2px,color:#252737
138+
style E fill:#a9b1d6,stroke:#252737,stroke-width:2px,color:#252737
139+
style F fill:#c79bf0,stroke:#252737,stroke-width:2px,color:#252737
140+
style G fill:#ebbcba,stroke:#252737,stroke-width:2px,color:#252737
141+
```
142+
143+
144+
## Branch Flow
145+
146+
147+
```mermaid
148+
graph LR
149+
subgraph "Dev Branch"
150+
DEV[dev branch] --> FREEZE[🚫 FROZEN<br/>fixes only]
151+
FREEZE --> MERGE[πŸ”„ MERGING<br/>to master]
152+
MERGE --> OPEN[βœ… OPEN<br/>all dev]
153+
OPEN --> FREEZE
154+
end
155+
156+
subgraph "Master Branch"
157+
MASTER[master branch] --> PREV[πŸ”§ Previous fixes]
158+
PREV --> RECEIVE[πŸ“₯ RECEIVES<br/>new code]
159+
RECEIVE --> RELEASE[πŸ“¦ RELEASE<br/>when stable]
160+
RELEASE --> PREV
161+
end
162+
163+
MERGE -.-> RECEIVE
164+
165+
style DEV fill:#252737,stroke:#a9b1d6,stroke-width:2px,color:#a9b1d6
166+
style FREEZE fill:#ebbcba,stroke:#252737,stroke-width:2px,color:#252737
167+
style MERGE fill:#a9b1dc,stroke:#252737,stroke-width:2px,color:#252737
168+
style OPEN fill:#a9b1d6,stroke:#252737,stroke-width:2px,color:#252737
169+
style MASTER fill:#252737,stroke:#a9b1d6,stroke-width:2px,color:#a9b1d6
170+
style PREV fill:#c79bf0,stroke:#252737,stroke-width:2px,color:#252737
171+
style RECEIVE fill:#a9b1dc,stroke:#252737,stroke-width:2px,color:#252737
172+
style RELEASE fill:#a9b1d6,stroke:#252737,stroke-width:2px,color:#252737
173+
```
174+
175+
## Quarterly Release Schedule
176+
177+
```mermaid
178+
gantt
179+
title Quarterly Release Schedule
180+
dateFormat X
181+
axisFormat %d
182+
183+
section Week 1
184+
🚫 Dev Freeze :freeze1, 1, 7d
185+
πŸ§ͺ Testing :test1, 1, 7d
186+
187+
section Week 2
188+
πŸ”„ Merge Friday :merge1, 8, 1d
189+
πŸ“¦ Snapshot :release1, 12, 1d
190+
βœ… Dev Open :open1, 8, 7d
191+
192+
section Week 3
193+
🚫 Dev Freeze :freeze2, 15, 7d
194+
πŸ§ͺ Testing :test2, 15, 7d
195+
196+
section Week 4
197+
πŸ”„ Merge Friday :merge2, 22, 1d
198+
πŸ“¦ Snapshot :release2, 26, 1d
199+
βœ… Dev Open :open2, 22, 7d
200+
```

0 commit comments

Comments
Β (0)