Skip to content

docs(adr): ADR-002 - Repository Separation Plan#104

Open
mwaldheim wants to merge 12 commits into
mainfrom
feat/split-repos
Open

docs(adr): ADR-002 - Repository Separation Plan#104
mwaldheim wants to merge 12 commits into
mainfrom
feat/split-repos

Conversation

@mwaldheim
Copy link
Copy Markdown
Contributor

Summary

Introduces ADR-002 documenting the strategic decision to split go-semrel from a monorepo into 4 independent, separately-versioned repositories.

Key Points

  • go-semrel (CLI) will import from 3 public modules
  • go-semrel-api (gRPC, Protocol Buffers)
  • go-semrel-plugins (Plugin SDK)
  • go-semrel-lib (Shared libraries)

Important: Monorepo Support ≠ Architecture

Monorepo support (as a feature for end-users) remains fully in scope — see GH#40-43. This is about go-semrel's own structure.

Coordination

Closes #103

@mwaldheim mwaldheim added area: core Core release engine priority: high High priority type: chore Maintenance / scaffolding labels May 22, 2026
@mwaldheim mwaldheim requested a review from tboerger as a code owner May 23, 2026 17:40
mwaldheim and others added 8 commits May 23, 2026 19:52
- Explain why go-semrel splits into 4 independent repos
- Clarify: monorepo SUPPORT remains a user-facing feature
- Define dependency flow and versioning strategy
- Detail migration path using git subtree split

See GH#103 for implementation tracking.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
Add imports for newly split repositories:
- github.com/GoSemantics/go-semrel-api v0.1.0
- github.com/GoSemantics/go-semrel-plugins v0.1.0
- github.com/GoSemantics/go-semrel-lib v0.1.0

These modules will replace:
- api/proto/v1 → go-semrel-api (gRPC API)
- plugins/ → go-semrel-plugins (Plugin SDK)
- pkg/ → go-semrel-lib (Shared libraries)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
CORRECTION: After review, we realized we created unnecessary repos:
- go-semrel-api and go-semrel-lib are now ARCHIVED (archived on GitHub)
- These should have been internal to go-semrel, not separate repos

Correct structure:
- go-semrel (MAIN): Contains cmd/, internal/, api/proto/v1/, pkg/
- go-semrel-plugins (SDK): For external plugin developers only

Updated:
- ADR-002: Documents 2-repo split instead of 4
- go.mod: Removed imports for archived repos
- Explains: api/proto and pkg/ stay internal

This is a BREAKING CHANGE to the previously documented 4-repo plan.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
- Changed module path from github.com/GoSemantics/go-semrel to github.com/GoSemantics/semrel
- Updated plugin dependency to use semrel-plugins

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
- Updated README.md with new module name and URLs
- Updated ADR-002 with new repository names
- Updated CONTRIBUTING, GOVERNANCE, ROADMAP, and other docs
- Updated buf.yaml and .golangci.yml with correct module paths
- Updated internal CLI references

All GitHub URLs now point to github.com/GoSemantics/semrel

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
Fixed:
- Rewrite go.mod with proper line endings (CRLF/LF issue)
- Removed dependency on non-existent semrel-plugins v0.1.0
- Updated import path: go-semrel → semrel in cmd/go-semrel/main.go
- Ran go mod tidy to ensure consistency

This fixes the CI failures caused by malformed go.mod and incorrect
module references.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
golangci-lint reported formatting issues in:
- internal/cli/root.go
- internal/cli/root_test.go
- cmd/go-semrel/main.go
- pkg/*/*.go

Ran go fmt to fix tab/space inconsistencies from file merges during rebase.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
Fixed:
- dco.yaml: Use actions/checkout@v4 (was using old SHA)
- reuse.yaml: Use fsfe/reuse-action@v5 (was using old SHA)

This ensures consistency with other workflow files and improves
GitHub Actions compatibility.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
@tboerger
Copy link
Copy Markdown

I would suggest to simply name it semrel instead of go-semrel for all the repos... And semrel-shared for shared libs :)

mwaldheim added 3 commits May 23, 2026 22:07
Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
…cision records

docs: Add ADR-002 and ADR-003 to ADR index
ci: Add actionlint workflow for GitHub Actions syntax validation
docs: Create ADR-003 for Apache License 2.0 as project license

Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
Signed-off-by: mwaldheim <mwaldheim@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: core Core release engine priority: high High priority type: chore Maintenance / scaffolding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Epic] Repository Split: go-semrel → 4 Independent Repos

2 participants