You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Add versioning (SemVer), pre-release labels, and release process to CI docs
- Rewrite docs to use impersonal language throughout
- Add writing style rule to CLAUDE.md: no "you/your/we/our" in docs/comments
Copy file name to clipboardExpand all lines: CLAUDE.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -136,4 +136,5 @@ See `docs/` for the full documentation index.
136
136
## Rules for Generated Code
137
137
138
138
- Comments must be appropriate for an open source project with multiple contributors — they must NOT be aimed at any individual and must be timeless.
139
+
-**Documentation and comments must use impersonal language.** No "you", "your", "we", or "our" — write for a general audience, not a specific person. Use passive voice or third person where needed (e.g., "Not all stages are required" instead of "You don't need to use all stages").
|**MAJOR**| Breaking changes — config format changes, protocol rewrites, removed features |`1.0.0` → `2.0.0`|
83
+
|**MINOR**| New features, backwards compatible — new commands, new packet support, new config options |`1.0.0` → `1.1.0`|
84
+
|**PATCH**| Bug fixes only — no new features, no breaking changes |`1.0.0` → `1.0.1`|
85
+
86
+
### Pre-release Versions
87
+
88
+
A `0.x.x` major version means the project is not yet stable — any release can contain breaking changes.
89
+
90
+
Pre-release labels are appended with a hyphen to indicate the release isn't final:
91
+
92
+
| Label | Meaning | Example |
93
+
|---|---|---|
94
+
|`alpha`| Early preview. Features incomplete, expect breakage. |`v0.2.0-alpha.1`|
95
+
|`beta`| Feature complete but not fully tested. |`v0.2.0-beta.1`|
96
+
|`rc`| Release Candidate. "We think this is ready, testing before making it official." |`v0.2.0-rc1`|
97
+
|*(none)*| Final release. Stable, tested, ready for use. |`v0.2.0`|
98
+
99
+
The typical progression is: **alpha → beta → rc → release**. Not all stages are required — most releases go straight from development to `rc` → final, or skip `rc` entirely for small patches.
100
+
101
+
If a bug is found in `rc1`, the fix gets tagged as `rc2`. Once the RC is validated, the final version is tagged (same commit or a new one).
102
+
103
+
### Versioning in Practice
104
+
105
+
FerrumC is currently at `0.1.0` (pre-stable). A realistic release flow looks like:
106
+
107
+
1. Development happens on `master`, PRs get merged.
108
+
2. A set of changes is deemed worth releasing.
109
+
3. Tag `v0.1.0-rc1` to test the release pipeline and binaries.
110
+
4. If everything works, tag `v0.1.0` as the final release.
111
+
5. Bug fix needed? Fix on master, tag `v0.1.1`.
112
+
6. New feature? Tag `v0.2.0`.
113
+
7. Massive breaking change (stable protocol, config rewrite)? Tag `v1.0.0`.
114
+
72
115
## Creating a Release
73
116
74
117
1. Ensure `master` is in a releasable state (CI green).
75
-
2. Tag the commit: `git tag v1.0.0`
76
-
3. Push the tag: `git push origin v1.0.0`
118
+
2. Tag the commit:
119
+
```bash
120
+
git tag v0.1.0 # final release
121
+
git tag v0.1.0-rc1 # release candidate (for testing)
0 commit comments