|
| 1 | +# HashPrep Official Release TODO |
| 2 | + |
| 3 | +## Release Scope |
| 4 | + |
| 5 | +- [x] Decide the official version target, likely `0.1.0` unless the release should signal `1.0.0`. |
| 6 | +- [ ] Freeze public API expectations for `DatasetAnalyzer`. |
| 7 | +- [ ] Freeze public API expectations for `HashPrepConfig`. |
| 8 | +- [ ] Freeze public API expectations for `load_config`. |
| 9 | +- [ ] Freeze public API expectations for `generate_report`. |
| 10 | +- [x] Freeze CLI behavior for `scan`, `details`, `report`, and `version`. |
| 11 | +- [ ] Define what is stable versus experimental, especially auto-fixes, generated pipelines, report themes, and statistical checks. |
| 12 | + |
| 13 | +## Code Readiness |
| 14 | + |
| 15 | +- [ ] Run the full test suite across Python `3.10`, `3.11`, and `3.12`. |
| 16 | +- [ ] Run lint checks. |
| 17 | +- [ ] Run format checks. |
| 18 | +- [x] Add or verify tests for CLI error handling. |
| 19 | +- [ ] Add or verify tests for invalid check names. |
| 20 | +- [x] Add or verify tests for report generation in `md`, `json`, `html`, and `pdf`. |
| 21 | +- [x] Add or verify tests for generated `fixes.py` code. |
| 22 | +- [x] Add or verify tests for generated sklearn pipeline code. |
| 23 | +- [x] Add or verify tests for config loading from YAML, TOML, and JSON. |
| 24 | +- [ ] Add or verify tests for large dataset sampling behavior. |
| 25 | +- [ ] Verify empty CSV behavior. |
| 26 | +- [ ] Verify duplicate column behavior. |
| 27 | +- [ ] Verify missing target column behavior. |
| 28 | +- [ ] Verify non-numeric target behavior for mutual information and statistical checks. |
| 29 | +- [ ] Verify datasets with infinities, all-null columns, and mixed types. |
| 30 | +- [ ] Verify reports do not crash when plots are disabled. |
| 31 | +- [ ] Verify reports do not crash when optional summary data is missing. |
| 32 | + |
| 33 | +## Functionality Readiness |
| 34 | + |
| 35 | +### Must Improve Before Stable |
| 36 | + |
| 37 | +- [x] Improve CLI error handling for invalid files. |
| 38 | +- [x] Improve CLI error handling for empty CSVs. |
| 39 | +- [x] Improve CLI error handling for bad target columns. |
| 40 | +- [x] Improve CLI error handling for bad config files. |
| 41 | +- [x] Improve CLI error handling for unsupported report formats. |
| 42 | +- [x] Improve CLI error handling for failed PDF generation. |
| 43 | +- [x] Ensure CLI failures produce clear user-facing messages. |
| 44 | +- [ ] Ensure HTML reports work when no issues are found. |
| 45 | +- [ ] Ensure PDF reports work when no issues are found. |
| 46 | +- [ ] Ensure Markdown reports work when no issues are found. |
| 47 | +- [ ] Ensure JSON reports work when no issues are found. |
| 48 | +- [ ] Ensure all report formats work when plots are disabled. |
| 49 | +- [ ] Ensure all report formats work for tiny datasets. |
| 50 | +- [ ] Ensure all report formats work for mostly missing datasets. |
| 51 | +- [ ] Ensure all report formats work when optional summaries are absent. |
| 52 | +- [x] Verify generated fix scripts are deterministic. |
| 53 | +- [x] Verify generated fix scripts are valid Python. |
| 54 | +- [x] Verify generated sklearn pipeline code is deterministic. |
| 55 | +- [x] Verify generated sklearn pipeline code is valid Python. |
| 56 | +- [x] Add tests that execute generated fix scripts where practical. |
| 57 | +- [x] Add tests that execute generated sklearn pipeline code where practical. |
| 58 | +- [ ] Clearly label generated fixes as suggestions if they are heuristic or incomplete. |
| 59 | +- [x] Add config validation for unknown keys. |
| 60 | +- [x] Add config validation for wrong value types. |
| 61 | +- [x] Add clear errors for malformed YAML, TOML, and JSON config files. |
| 62 | +- [ ] Confirm threshold behavior is predictable and documented. |
| 63 | +- [ ] Decide whether summary dictionary shapes are part of the stable public API. |
| 64 | +- [ ] Document stable summary keys if summary dictionaries are part of the public API. |
| 65 | + |
| 66 | +### Strongly Recommended |
| 67 | + |
| 68 | +- [x] Add an `--output` option to `hashprep report`. |
| 69 | +- [x] Allow `hashprep report data.csv --format html --output reports/data.html`. |
| 70 | +- [ ] Add machine-readable JSON output for `hashprep details`. |
| 71 | +- [x] Add check discovery through a command such as `hashprep checks`. |
| 72 | +- [x] Alternatively add check discovery through an option such as `hashprep scan --list-checks`. |
| 73 | +- [ ] Document why issues are classified as `critical` versus `warning`. |
| 74 | +- [ ] Review whether PDF/reporting dependencies should move to optional extras in a future release. |
| 75 | +- [ ] Document any dependency-extra plan if it is deferred. |
| 76 | + |
| 77 | +### Not For This Stable Release |
| 78 | + |
| 79 | +- [ ] Avoid adding major new check families before the first stable release unless they fix a release blocker. |
| 80 | +- [ ] Avoid adding model integrations before the first stable release. |
| 81 | +- [ ] Avoid adding dashboard features before the first stable release. |
| 82 | +- [ ] Avoid expanding automatic dataset repair workflows before the first stable release. |
| 83 | +- [ ] Keep the first stable release focused on hardening existing behavior. |
| 84 | + |
| 85 | +## Packaging |
| 86 | + |
| 87 | +- [x] Update `hashprep/__init__.py` from `0.1.0b3` to the official release version. |
| 88 | +- [x] Update the beta note in `README.md`. |
| 89 | +- [x] Update the beta support table in `SECURITY.md`. |
| 90 | +- [x] Add or verify PyPI classifiers in `pyproject.toml`. |
| 91 | +- [x] Add or verify package keywords in `pyproject.toml`. |
| 92 | +- [x] Add or verify project URLs in `pyproject.toml`. |
| 93 | +- [x] Add or verify Python version classifiers in `pyproject.toml`. |
| 94 | +- [x] Add or verify license metadata in `pyproject.toml`. |
| 95 | +- [ ] Build source distribution. |
| 96 | +- [ ] Build wheel distribution. |
| 97 | +- [ ] Inspect built package artifacts. |
| 98 | +- [ ] Install the built wheel in a clean environment. |
| 99 | +- [ ] Smoke test `import hashprep` from the built wheel. |
| 100 | +- [ ] Smoke test `hashprep version` from the built wheel. |
| 101 | +- [ ] Smoke test `hashprep scan datasets/train.csv` from the built wheel. |
| 102 | +- [ ] Smoke test `hashprep report datasets/train.csv --format html` from the built wheel. |
| 103 | +- [ ] Confirm `MANIFEST.in` excludes dev/demo files intentionally. |
| 104 | +- [ ] Confirm `MANIFEST.in` includes all runtime files needed by reports and templates. |
| 105 | + |
| 106 | +## Documentation |
| 107 | + |
| 108 | +- [x] Replace beta references in `README.md`. |
| 109 | +- [x] Replace beta references in `SECURITY.md`. |
| 110 | +- [x] Replace beta references in `web/src/lib/components/Hero.svelte`. |
| 111 | +- [x] Add `CHANGELOG.md`. |
| 112 | +- [ ] Add first official release notes. |
| 113 | +- [ ] Document available checks in release notes. |
| 114 | +- [ ] Document CLI commands in release notes. |
| 115 | +- [ ] Document report formats in release notes. |
| 116 | +- [ ] Document known limitations in release notes. |
| 117 | +- [ ] Document upgrade notes from beta. |
| 118 | +- [ ] Verify README examples run exactly as written. |
| 119 | +- [ ] Update the documentation URL in `pyproject.toml` if a dedicated docs page is available. |
| 120 | +- [ ] Refresh generated example reports under `examples/reports/` if needed. |
| 121 | + |
| 122 | +## CI/CD |
| 123 | + |
| 124 | +- [x] Add package build validation to CI. |
| 125 | +- [x] Add `twine check` or equivalent artifact validation to CI. |
| 126 | +- [ ] Add built-wheel install smoke test to CI. |
| 127 | +- [ ] Add CLI smoke test against the built wheel to CI. |
| 128 | +- [x] Add website build check for `web/`. |
| 129 | +- [x] Add or verify release workflow triggered by version tags. |
| 130 | +- [ ] Configure PyPI publishing, preferably with trusted publishing. |
| 131 | +- [x] Configure GitHub release creation. |
| 132 | +- [ ] Consider adding dependency and security scanning for Python dependencies. |
| 133 | +- [ ] Consider adding dependency and security scanning for web dependencies. |
| 134 | + |
| 135 | +## Security And Dependencies |
| 136 | + |
| 137 | +- [ ] Review pinned and minimum Python dependency versions. |
| 138 | +- [ ] Review pinned and minimum web dependency versions. |
| 139 | +- [ ] Confirm heavy dependencies are intentional, especially `weasyprint`, `matplotlib`, `seaborn`, and `scikit-learn`. |
| 140 | +- [ ] Decide whether PDF/report dependencies should remain core dependencies or move to optional extras in a future release. |
| 141 | +- [ ] Run vulnerability checks for Python dependencies. |
| 142 | +- [ ] Run vulnerability checks for web dependencies. |
| 143 | +- [x] Update `SECURITY.md` to describe stable release support. |
| 144 | + |
| 145 | +## Website |
| 146 | + |
| 147 | +- [x] Update website beta badges. |
| 148 | +- [ ] Update website install examples. |
| 149 | +- [ ] Confirm the docs page matches the current README and API. |
| 150 | +- [x] Build the static site successfully. |
| 151 | +- [ ] Verify PyPI link. |
| 152 | +- [ ] Verify GitHub link. |
| 153 | +- [ ] Verify docs link. |
| 154 | +- [ ] Verify license link. |
| 155 | +- [ ] Verify issue tracker link. |
| 156 | +- [ ] Decide deployment target for the docs site. |
| 157 | +- [ ] Decide release timing for the docs site. |
| 158 | + |
| 159 | +## Release Process |
| 160 | + |
| 161 | +- [ ] Create a release branch. |
| 162 | +- [ ] Make version, docs, and changelog updates. |
| 163 | +- [ ] Run full validation locally. |
| 164 | +- [ ] Merge after CI passes. |
| 165 | +- [ ] Tag the release, for example `v0.1.0`. |
| 166 | +- [ ] Publish to PyPI. |
| 167 | +- [ ] Create GitHub release with release notes. |
| 168 | +- [ ] Verify public install with `pip install hashprep`. |
| 169 | +- [ ] Verify public CLI with `hashprep version`. |
| 170 | +- [ ] Announce the release as the first stable release after alpha and beta. |
| 171 | + |
| 172 | +## Known Immediate Gaps |
| 173 | + |
| 174 | +- [x] Version is still `0.1.0b3`. |
| 175 | +- [x] `README.md` still says beta. |
| 176 | +- [x] Website hero still says beta and shows `hashprep-0.1.0b3`. |
| 177 | +- [x] `SECURITY.md` only describes beta support. |
| 178 | +- [x] `CHANGELOG.md` is not present. |
| 179 | +- [x] CI does not currently build or check publish artifacts. |
| 180 | +- [x] CI does not currently build the Svelte website. |
| 181 | +- [x] No release or publish workflow is present. |
0 commit comments