Design: v1.0.0 Rebirth — Clean Open Source Launch¶
Date: 2026-06-22 Status: Approved Author: Alexandr Narbaev
Goal¶
Squash entire git history into a single initial commit (v1.0.0), restructure the project directories for cleaner open source presentation, add all standard open source documentation files, force-push to GitHub as a fresh project.
Motivation¶
The project evolved through 36 internal iterations (v17 → v36.0.1) with accumulated history, plans, and research that should not be part of the public initial commit. A clean v1.0.0 launch presents the project professionally, with proper open source documentation from day one.
Design Decisions¶
1. Versioning: v1.0.0¶
Semantic versioning from scratch. The 36 iterations of internal development are acknowledged in README/CHANGELOG but not in git history.
2. Full History Erasure¶
- All old tags (v33.9, v33.10, v35.0) deleted from GitHub remote
- Single orphan commit as the new root
- Force push to
main
3. Directory Restructuring¶
Before → After:
| Old Path | New Path | Reason |
|---|---|---|
lib/ | src/lib/ | Core code under src/ |
modes/ | src/modes/ | Core code under src/ |
plans/ | docs/plans/ | Plans are documentation |
research/ | docs/research/ | Research is documentation |
ai-router.sh | scripts/ai-router.sh | Utility, not core |
ai-router.json | scripts/ai-router.json | Utility, not core |
setup.sh | setup.sh (root) | Entry point, must stay |
dev.sh | dev.sh (root) | Entry point |
opencode.json | opencode.json (root) | OpenCode requirement |
.opencode/ | .opencode/ (root) | OpenCode requirement |
4. New Files¶
| File | Content |
|---|---|
CHANGELOG.md | Keep a Changelog format, starts at v1.0.0 |
.editorconfig | UTF-8, LF, 2-space shell, 4-space md/json |
.gitattributes | LF enforcement, linguist-vendored, export-ignore |
.github/ISSUE_TEMPLATE/bug_report.md | GitHub issue form |
.github/ISSUE_TEMPLATE/feature_request.md | GitHub issue form |
.github/PULL_REQUEST_TEMPLATE.md | Checklist from CONTRIBUTING.md |
FUNDING.yml | GitHub Sponsors link |
CITATION.cff | BibTeX-compatible citation |
5. Updated Files¶
| File | Changes |
|---|---|
setup.sh | lib/ → src/lib/, modes/ → src/modes/ |
dev.sh | lib/ → src/lib/ |
All lib/*.sh | Relative source paths updated |
tests/ | Paths updated |
README.md | Version v1.0.0, updated structure, fresh tone |
CONTRIBUTING.md | Updated paths, v1.0.0 references |
.gitignore | Remove plans/, research/, add ai-router.* exclusion |
AGENTS.md | Updated structure and version |
6. Files NOT Changed¶
LICENSE(MIT) — stays as isCODE_OF_CONDUCT.md— stays as isSECURITY.md— stays as isopencode.json— stays as is.opencode/— stays as is- All 24 lib modules content (only paths updated)
- All 4 mode scripts content (only paths updated)
- All 15 test files content (only paths updated)
- All 18 docs files content (only relocated)
- CI workflows
Git Operations (Sequence)¶
1. LOCAL BACKUP: git tag archive/pre-v1.0.0 HEAD
2. DELETE REMOTE TAGS: git push github --delete v33.9 v33.10 v35.0
3. RESTRUCTURE: mv lib/ src/lib/, mv modes/ src/modes/, etc.
4. UPDATE PATHS: sed in all .sh files
5. CREATE DOCS: CHANGELOG, .editorconfig, templates, etc.
6. ORPHAN COMMIT: git checkout --orphan temp && git add -A
7. COMMIT: git commit -m "v1.0.0: Initial public release"
8. TAG: git tag v1.0.0
9. FORCE PUSH: git push --force github main --tags
10. CLEANUP: git branch -D main && git branch -m temp main
Acceptance Criteria¶
- All source paths updated (
lib/→src/lib/,modes/→src/modes/) -
bash -n setup.shpasses -
bash -n dev.shpasses - All
lib/*.shpassbash -n - All
modes/*.shpassbash -n - All tests pass (
tests/run_tests.sh) - ShellCheck passes on all .sh files
- Single commit in git history
- Tag
v1.0.0exists - All 8 new files created with correct content
- GitHub remote has only v1.0.0 tag, no old tags
- GitHub remote has single commit on main
- README.md reflects v1.0.0
- CHANGELOG.md starts with v1.0.0 entry
- .editorconfig valid
- .gitattributes valid
- .gitignore updated (no plans/ or research/ exclusion)