@@ -29,7 +29,8 @@ project. It ensures every file that references the version gets updated consiste
2929- ** Version source** : ` pyproject.toml ` ` [project] version `
3030- ** Changelog format** : Keep a Changelog
3131- ** Commit style** : Conventional Commits (` feat: ` , ` fix: ` , ` chore: ` , etc.)
32- - ** GitHub repo** : ` luarss/openroad-mcp `
32+ - ** GitHub repo** : ` The-OpenROAD-Project/openroad-mcp `
33+ - ** Release gatekeeper** : @vvbandeira (org member) — must approve and merge all releases
3334
3435## Workflow
3536
@@ -83,7 +84,7 @@ Read each commit message and sort into Keep a Changelog categories:
8384
8485For each commit, format the changelog entry as:
8586```
86- - Description ([#PR](https://github.com/luarss /openroad-mcp/pull/PR))
87+ - Description ([#PR](https://github.com/The-OpenROAD-Project /openroad-mcp/pull/PR))
8788```
8889
8990Use the PR number from the commit message if present. For commits without a PR
@@ -99,19 +100,19 @@ one breaks the release consistency.
99100** server.json** — Update all three version references:
100101- Top-level ` "version": "X.Y.Z" `
101102- PyPI package ` "version": "X.Y.Z" `
102- - OCI identifier ` "identifier": "ghcr.io/luarss /openroad-mcp:X.Y.Z" `
103+ - OCI identifier ` "identifier": "ghcr.io/The-OpenROAD-Project /openroad-mcp:X.Y.Z" `
103104
104- ** MCP manifest files and README** — These files use ` git+https://github.com/luarss /openroad-mcp `
105+ ** MCP manifest files and README** — These files use ` git+https://github.com/The-OpenROAD-Project /openroad-mcp `
105106without a version pin. Update every occurrence to pin to the release tag, which
106107prevents supply chain attacks by ensuring users install a known, reviewed commit:
107108
108109Change:
109110```
110- "git+https://github.com/luarss /openroad-mcp"
111+ "git+https://github.com/The-OpenROAD-Project /openroad-mcp"
111112```
112113To:
113114```
114- "git+https://github.com/luarss /openroad-mcp@vX.Y.Z"
115+ "git+https://github.com/The-OpenROAD-Project /openroad-mcp@vX.Y.Z"
115116```
116117
117118Use a single perl pass that handles all three URL patterns in the README:
@@ -120,7 +121,7 @@ Use a single perl pass that handles all three URL patterns in the README:
120121- Bare (first-time pin): ` "git+https://...openroad-mcp" `
121122
122123``` bash
123- perl -i -pe ' s!git\+https://github\.com/luarss /openroad-mcp(?:\@v[\d.]+)?(?="|$)!git+https://github.com/luarss /openroad-mcp\@vX.Y.Z!g' README.md
124+ perl -i -pe ' s!git\+https://github\.com/The-OpenROAD-Project /openroad-mcp(?:\@v[\d.]+)?(?="|$)!git+https://github.com/The-OpenROAD-Project /openroad-mcp\@vX.Y.Z!g' README.md
124125```
125126
126127The ` ! ` delimiter avoids clashing with the ` | ` inside the lookahead ` (?="|$) ` .
@@ -129,17 +130,17 @@ so all config formats are covered.
129130
130131After updating, verify all pinned URLs show the new tag:
131132``` bash
132- grep " luarss /openroad-mcp@" README.md
133+ grep " The-OpenROAD-Project /openroad-mcp@" README.md
133134```
134135Every line should show ` @vX.Y.Z ` . Also confirm no bare URLs remain:
135136``` bash
136- grep ' luarss /openroad-mcp"' README.md
137+ grep ' The-OpenROAD-Project /openroad-mcp"' README.md
137138```
138139That should return no output.
139140
140141> ** Side note for users:** If you always want the latest version and prefer not
141142> to pin, omit the ` @vX.Y.Z ` suffix and use the bare URL:
142- > ` git+https://github.com/luarss /openroad-mcp ` . This trades supply chain
143+ > ` git+https://github.com/The-OpenROAD-Project /openroad-mcp ` . This trades supply chain
143144> safety for convenience — acceptable for local/dev setups, not recommended
144145> for shared or production environments.
145146
@@ -149,7 +150,7 @@ That should return no output.
149150Today's date goes in the header. Add the link at the bottom:
150151
151152```
152- [X.Y.Z]: https://github.com/luarss /openroad-mcp/releases/tag/vX.Y.Z
153+ [X.Y.Z]: https://github.com/The-OpenROAD-Project /openroad-mcp/releases/tag/vX.Y.Z
153154```
154155
155156** ROADMAP.md** — Find the "Version Milestones" table and add a new row for
@@ -167,7 +168,7 @@ python -m pytest --tb=short -q
167168If tests fail, report the failures to the user before proceeding. Do not commit
168169a broken release.
169170
170- ### Step 6: Create the release commit
171+ ### Step 6: Create the release commit and open a PR
171172
172173Stage only the release-related files:
173174
@@ -181,10 +182,32 @@ Commit with the message:
181182chore: release vX.Y.Z
182183```
183184
184- Do NOT push unless the user explicitly asks. The commit stays local for review.
185+ Then push to a dedicated release branch and open a PR:
186+
187+ ``` bash
188+ git checkout -b release/vX.Y.Z
189+ git push -u origin release/vX.Y.Z
190+ gh pr create \
191+ --title " chore: release vX.Y.Z" \
192+ --body " $( cat << 'EOF '
193+ ## Release vX.Y.Z
194+
195+ See [CHANGELOG.md](CHANGELOG.md) for full details.
196+
197+ /cc @vvbandeira — please review and merge when ready.
198+ EOF
199+ ) " \
200+ --reviewer vvbandeira
201+ ```
202+
203+ ** NEVER push directly to ` main ` .** The decision to merge and tag belongs exclusively
204+ to @vvbandeira . Once the PR is open, report the PR URL to the user and stop — do not
205+ merge, squash, or tag.
185206
186207## Important details
187208
209+ - ** Never push to ` main ` directly.** Always use a ` release/vX.Y.Z ` branch and open a PR.
210+ - ** @vvbandeira must review and merge** — request them as a reviewer on every release PR.
188211- Always use ` uv lock ` to regenerate the lockfile rather than editing it manually
189212- The CHANGELOG date format is ISO: ` YYYY-MM-DD `
190213- Version tags use a ` v ` prefix: ` v0.4.0 ` (but the version in files has no prefix)
0 commit comments