diff --git a/flow-diagram-fullview.png b/flow-diagram-fullview.png deleted file mode 100644 index 6b608df..0000000 Binary files a/flow-diagram-fullview.png and /dev/null differ diff --git a/flow-review-full.png b/flow-review-full.png deleted file mode 100644 index 70c2623..0000000 Binary files a/flow-review-full.png and /dev/null differ diff --git a/initial-release.md b/initial-release.md deleted file mode 100644 index abd3756..0000000 --- a/initial-release.md +++ /dev/null @@ -1,167 +0,0 @@ -# Initial Release Git History Cleanup Plan - -## Recommendation - -Given the current `main` history shape (325 commits, heavy refactor churn, and many internal maintenance commits), the best pre-release cleanup path is: - -1. Preserve the old `main` history in remote backup refs. -2. Build a **new orphan history** from the current project snapshot. -3. Recreate history as **7 curated commits** grouped by release-facing domains. -4. Verify tree equality with old `main` and replace `origin/main` once. - -This avoids fragile `rebase -i --root` over 300+ commits while still keeping meaningful archaeology for future maintenance. - -## Why this is best for this repo - -- Current history is dominated by refactor/noise commits (`refactor`: 138, `other`: 91). -- Commit velocity is very high and bursty (multiple 30-45 commit days), so interactive cleanup is risky/time-expensive. -- Codebase is already mature and release-shaped (Electron app + launcher + plugin + docs + CI), so snapshot regrouping is cleaner. -- You are pre-release and private; a one-time force update is low risk if coordinated. - ---- - -## Pre-cutover checklist - -Run from repository root. - -```bash -git checkout main -git pull --ff-only origin main -``` - -Coordinate freeze: - -- Pause merges/pushes to `main`. -- Ask teammates to stop rebasing onto `main` during cutover. - ---- - -## Copy/paste command sequence - -### 1) Safety backups (local + remote) - -```bash -set -euo pipefail - -git checkout main -git pull --ff-only origin main - -OLD_MAIN_COMMIT="$(git rev-parse main)" -STAMP="$(date -u +%Y%m%dT%H%M%SZ)" - -echo "Old main commit: ${OLD_MAIN_COMMIT}" -echo "Cutover stamp: ${STAMP}" - -git tag "pre-release-history-backup-${STAMP}" "${OLD_MAIN_COMMIT}" -git branch "archive/pre-release-history-${STAMP}" "${OLD_MAIN_COMMIT}" - -git push origin "pre-release-history-backup-${STAMP}" -git push origin "archive/pre-release-history-${STAMP}" -``` - -### 2) Handle dirty workspace safely - -If `git status --short` is not empty: - -```bash -git stash push -u -m "initial-release-history-cleanup-${STAMP}" -``` - -### 3) Build new clean history on orphan branch - -```bash -git checkout --orphan release/main-clean -git reset -``` - -Now create curated commits. - -```bash -# Commit 1: repository scaffolding and build toolchain -git add .gitignore .gitmodules .npmrc .prettierignore .prettierrc.json AGENTS.md LICENSE Makefile package.json bun.lock tsconfig.json tsconfig.renderer.json build scripts .github -git commit -m "chore: bootstrap repository tooling and release automation" - -# Commit 2: core desktop app runtime -git add src -git commit -m "feat(core): add Electron runtime, services, and app composition" - -# Commit 3: launcher and mpv plugin integration -git add launcher plugin subminer -git commit -m "feat(integration): add launcher and mpv plugin workflows" - -# Commit 4: bundled assets and vendor payloads -git add assets vendor -git commit -m "feat(assets): bundle runtime assets and vendor dependencies" - -# Commit 5: test suites and verification harnesses -git add tests -git commit -m "test: add regression suites and harness coverage" - -# Commit 6: documentation and examples -git add README.md docs config.example.jsonc -git commit -m "docs: add setup guides, architecture docs, and config examples" - -# Commit 7: project/backlog metadata and remaining files (if any) -git add -A -if ! git diff --cached --quiet; then - git commit -m "chore: add project management metadata and remaining repository files" -fi -``` - -### 4) Validate tree equivalence to old main snapshot - -```bash -git diff --stat "${OLD_MAIN_COMMIT}^{tree}" HEAD^{tree} -git diff --name-status "${OLD_MAIN_COMMIT}^{tree}" HEAD^{tree} -``` - -Expected: no output. If output exists, stop and inspect before pushing. - -### 5) Replace `origin/main` - -```bash -git push --force-with-lease origin release/main-clean:main -``` - -### 6) Tag cleaned initial-release baseline - -```bash -git fetch origin -git checkout main -git reset --hard origin/main -git tag "v0.1.0-initial-clean-history" -git push origin "v0.1.0-initial-clean-history" -``` - -### 7) Restore local stashed work (if stashed earlier) - -```bash -git stash list -git stash pop -``` - ---- - -## Team resync message (send after cutover) - -```text -main history was rewritten for initial release cleanup. - -If you have no local work: - git fetch origin - git checkout main - git reset --hard origin/main - -If you have local work: - git fetch origin - git checkout -b backup/-before-main-rewrite - # then rebase/cherry-pick your feature commits onto new origin/main -``` - ---- - -## Notes - -- This plan intentionally avoids `git rebase -i --root` to reduce conflict risk. -- `--force-with-lease` is mandatory safety rail. -- Keep the backup tag/branch until after public release stabilization. diff --git a/lifecycle-diagram-fullview.png b/lifecycle-diagram-fullview.png deleted file mode 100644 index 55c21a9..0000000 Binary files a/lifecycle-diagram-fullview.png and /dev/null differ