DR-001: Use Mono-Repository Layout (Single-Repository Type)
Status
- [x] Accepted
- [ ] Proposed
- [ ] Rejected
- [ ] Deprecated
- [ ] Superseded
Date: 2025-11-03
Context
Platform has CLI, VSCode extension, MCP servers, docs, automation, and contracts. Needs coordinated development, atomic commits, code sharing, and independent module versioning.
Problem: How to organize codebase for maintainability and velocity?
Decision
Mono-repository with clear module boundaries.
Structure:
cli/
├── go/ # Go source (eac/, r2r/)
├── .vscode/ # VSCode extension
├── automation/ # Scripts
├── docs/ # Documentation
├── contracts/ # Deployable modules
└── specs/ # Specifications
Module Detection: go.mod, package.json, pyproject.toml, conventional directories (docs/, automation/, contracts/)
Versioning: Independent per module via semantic versioning in commit messages
Consequences
Positive: Atomic commits, simplified dependencies, easy code sharing, unified tooling, single clone
Negative: Larger repo, build complexity, no per-module access control, merge conflict potential
Alternatives Considered
- Multi-Repository: Rejected - tight coupling makes cross-repo coordination costly
- Git Submodules: Rejected - adds complexity without enough benefits
- Workspaces Only: Rejected - limited to one language, codebase is multi-language
Related Decisions
Tutorials | How-to Guides | Explanation | Reference
You are here: Reference — information-oriented technical descriptions of the system.