Purpose
Implement the original Week 12 — Continuous integration and release phase and complete Phase 7 — Portfolio-quality release.
This issue should turn the stabilized, documented toolkit into a reproducible release candidate with automated quality checks and a coherent public version.
Goal
A realistic v1.0.0 should not mean “perfect” or “feature-complete forever.” It should mean:
the public API, scientific assumptions, principal benchmarks, and main sensing demonstration are coherent, tested, documented, and reproducible.
If the project is not yet ready for that semantic commitment, choose the next appropriate pre-1.0 version instead; version choice should reflect API maturity, not ambition alone.
Continuous integration
Add GitHub Actions (or equivalent repository CI) to run the core quality gates automatically on pushes and pull requests.
At minimum:
Keep CI deterministic and reasonably fast. Very expensive scientific benchmarks should not block every pull request unless a lightweight representative version is available.
Tooling
Preferred first-release tooling:
Document the chosen commands so local and CI validation use the same checks.
Repository configuration
Test/coverage review
Release-readiness checks
Versioning and release
Choose the release version deliberately.
Potential outcomes:
v1.0.0
public API is considered coherent/stable enough for the first mature release
or
next v0.x release
substantial functionality is complete but API stability is not yet ready for 1.0
Release notes should summarize
- synthetic TCSPC simulation;
- classical reconvolution;
- ML benchmarking;
- robustness/generalization evaluation;
- uncertainty calibration/failure-awareness;
- experimental-data support;
- generalized/measured IRF handling;
- Bayesian inference if included;
- SQLite persistence/querying;
- Week 10 sensing demonstration;
- documentation/reproducibility improvements.
Optional packaging checks
If packaging/distribution is part of the release target:
PyPI publication is not required merely to call the repository release-ready; correctness and reproducibility come first.
Security / hygiene checks
Definition of first-release success
The original roadmap defined the minimal credible toolkit as being able to do six things well:
- Simulate a mono-exponential TCSPC histogram with IRF convolution, background, and Poisson statistics.
- Recover lifetime through classical reconvolution fitting.
- Generate a controlled synthetic dataset.
- Train at least one ML estimator and compare it against meaningful baselines.
- Report errors across photon-count and noise conditions.
- Demonstrate lifetime-based sensing in one reproducible notebook.
By Week 12, verify those six core capabilities still work cleanly despite the additional post-Week-9 features.
Explicitly out of scope for the first release
Do not delay release in order to add:
- a graphical desktop application;
- cloud deployment;
- deep neural networks;
- every possible decay model;
- GPU acceleration;
- arbitrary proprietary TCSPC file formats;
- real-time acquisition hardware;
- automatic publication-quality reporting;
- a general-purpose remote experiment-tracking platform.
Bayesian inference is included only because it is explicitly tracked and intentionally implemented before release; it should not trigger an open-ended expansion into every Bayesian model variant.
Acceptance criteria
Timing
Implement after Week 11 documentation/UX is complete.
#14 Week 11 documentation / UX
↓
#15 Week 12 CI / release
↓
portfolio-quality release
Purpose
Implement the original Week 12 — Continuous integration and release phase and complete Phase 7 — Portfolio-quality release.
This issue should turn the stabilized, documented toolkit into a reproducible release candidate with automated quality checks and a coherent public version.
Goal
A realistic
v1.0.0should not mean “perfect” or “feature-complete forever.” It should mean:If the project is not yet ready for that semantic commitment, choose the next appropriate pre-1.0 version instead; version choice should reflect API maturity, not ambition alone.
Continuous integration
Add GitHub Actions (or equivalent repository CI) to run the core quality gates automatically on pushes and pull requests.
At minimum:
pytest.Keep CI deterministic and reasonably fast. Very expensive scientific benchmarks should not block every pull request unless a lightweight representative version is available.
Tooling
Preferred first-release tooling:
Document the chosen commands so local and CI validation use the same checks.
Repository configuration
pyproject.tomlfor linting/formatting/testing where appropriate.Test/coverage review
Release-readiness checks
Versioning and release
Choose the release version deliberately.
Potential outcomes:
CITATION.cffversion/date metadata if applicable.Release notes should summarize
Optional packaging checks
If packaging/distribution is part of the release target:
PyPI publication is not required merely to call the repository release-ready; correctness and reproducibility come first.
Security / hygiene checks
Definition of first-release success
The original roadmap defined the minimal credible toolkit as being able to do six things well:
By Week 12, verify those six core capabilities still work cleanly despite the additional post-Week-9 features.
Explicitly out of scope for the first release
Do not delay release in order to add:
Bayesian inference is included only because it is explicitly tracked and intentionally implemented before release; it should not trigger an open-ended expansion into every Bayesian model variant.
Acceptance criteria
Timing
Implement after Week 11 documentation/UX is complete.