- [ ] **Define how your project will be distributed or delivered.**
→ *Describe in `/docs/distribution.md` how others can obtain, install, and run your software (e.g. packaged release, container, script, or zip).*
- [ ] **Question:** What is your target format and audience?
→ *Decide whether the output will be:
- a **CLI tool** (zip, pip package, Gradle/Maven jar, npm package)
- a **web app or service** (deployed container or hosted URL)
- or a **library/module** (importable by others).
Record the choice and motivation in `/docs/distribution.md`.*
- [ ] **Automate build artifacts.**
→ *Set up a build process to produce distributable outputs (e.g. `poetry build`, `npm run build`, `./gradlew jar`). Add exact commands to the `README`.*
- [ ] **Version and tag your releases.**
→ *Use semantic (`vMAJOR.MINOR.PATCH`) or date (`YYYY.MM.PATCH`) versioning and tag commits in Git. Document tagging policy and changelog location (`/docs/changelog.md`).*
- [ ] **Question:** How will others install or run your release?
→ *Provide one-line install or run instructions in the `README` (e.g. `pip install .`, `java -jar app.jar`, `docker run ...`, `npm install -g ...`).*
- [ ] **Decide how to share release artifacts.**
→ *Options include: GitLab Releases, internal storage. Add URLs or folder references to README.*
- [ ] **Question:** How will you verify that a release works?
→ *Add a smoke-test checklist in `/docs/release_test.md` (install, run, expected output, exit code).*
- [ ] **Container or portable option (optional).**
→ *Add `Dockerfile` or similar for a reproducible runtime environment. Document build/run commands and environment variables.*
- [ ] **Continuous delivery pipeline (optional).**
→ *If possible, automate builds and tagged releases via CI/CD (e.g. GitLab pipelines). Mention what triggers deployment in `/docs/distribution.md`.*
- [ ] **Question:** How will you handle pre-release vs. stable versions?
→ *Define labels or branches for experimental builds (e.g. `alpha`, `beta`, `rc`) and explain when they’re merged into stable.*
- [ ] **Verify cross-platform distribution.**
→ *Test running the distributable on at least two OSes; record the results or known issues in an issue labeled `distribution-test`.*
- [ ] **Document update workflow.**
→ *Describe how new versions are published (manual tag, automated CI release) and how users should upgrade.*
- [ ] **Keep everything reproducible.**
→ *No manual file copying — all build artifacts must be reproducible from source via documented commands.*