From bcc90fcbce82ed1c603bb5e1b67d65814dc805ce Mon Sep 17 00:00:00 2001 From: Ehsan ESTAJI <71376358+ehsanestaji@users.noreply.github.com> Date: Mon, 18 May 2026 20:46:44 +0200 Subject: [PATCH] chore: prepare v0.1.1 packaging release --- Cargo.lock | 2 +- Cargo.toml | 2 +- README.md | 1 + docs/packaging.md | 6 +-- docs/releases/v0.1.1.md | 45 +++++++++++++++++++ .../reports/assembly_fail/fastaguard.json | 2 +- .../assembly_fail/fastaguard_report.html | 2 +- .../reports/assembly_pass/fastaguard.json | 2 +- .../assembly_pass/fastaguard_report.html | 2 +- packaging/bioconda/meta.yaml | 2 +- tests/golden/invalid_empty_record.json | 2 +- tests/golden/problem_assembly.json | 2 +- tests/golden/valid_assembly.json | 2 +- tests/python/test_release_metadata.py | 27 +++++++++++ 14 files changed, 86 insertions(+), 13 deletions(-) create mode 100644 docs/releases/v0.1.1.md create mode 100644 tests/python/test_release_metadata.py diff --git a/Cargo.lock b/Cargo.lock index 278d545..3ce8505 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -324,7 +324,7 @@ dependencies = [ [[package]] name = "fastaguard" -version = "0.1.0" +version = "0.1.1" dependencies = [ "anyhow", "assert_cmd", diff --git a/Cargo.toml b/Cargo.toml index 5d1741f..041695e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fastaguard" -version = "0.1.0" +version = "0.1.1" edition = "2021" license = "MIT" description = "FASTA preflight QC for assembly pipelines" diff --git a/README.md b/README.md index 15234fd..c2afa3c 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,7 @@ FastaGuard catches FASTA-level assembly problems before expensive assembly QC. - [LLM and tooling vision](docs/llm-tooling-vision.md) - [Benchmarking](docs/benchmarking.md) - [Packaging](docs/packaging.md) +- [v0.1.1 release notes](docs/releases/v0.1.1.md) - [v0.1.0 release notes](docs/releases/v0.1.0.md) - [Roadmap](docs/roadmap.md) - [First-release design](docs/superpowers/specs/2026-05-18-fastaguard-first-release-design.md) diff --git a/docs/packaging.md b/docs/packaging.md index efec7ab..51959dd 100644 --- a/docs/packaging.md +++ b/docs/packaging.md @@ -58,8 +58,8 @@ For the first public release: 1. Tag the release: ```bash - git tag v0.1.0 - git push origin v0.1.0 + git tag v0.1.1 + git push origin v0.1.1 ``` 2. Push the tag to trigger `.github/workflows/release.yml`. @@ -120,7 +120,7 @@ Once the Bioconda recipe is merged upstream, BioContainers can build the corresp ## MultiQC -FastaGuard v0.1.0 emits MultiQC custom content as `fastaguard_mqc.json`. +FastaGuard emits MultiQC custom content as `fastaguard_mqc.json`. A native MultiQC plugin starter now lives in: diff --git a/docs/releases/v0.1.1.md b/docs/releases/v0.1.1.md new file mode 100644 index 0000000..a4b5ae8 --- /dev/null +++ b/docs/releases/v0.1.1.md @@ -0,0 +1,45 @@ +# FastaGuard v0.1.1 + +FastaGuard v0.1.1 is a packaging metadata release for downstream adoption. + +The CLI behavior remains assembly-focused and compatible with v0.1.0. The +important change is that the source tree now includes the metadata needed for a +clean Bioconda submission. + +## Highlights + +- Adds an MIT `LICENSE` file to the source archive. +- Adds Bioconda recipe scaffolding under `packaging/bioconda/`. +- Adds a native MultiQC plugin starter under `integrations/multiqc/`. +- Adds adoption, tool landscape, and benchmark evidence planning docs. +- Updates CI and release workflows to Node 24-compatible GitHub action versions. + +## Install From Release Assets + +Download the archive for your platform, unpack it, and place `fastaguard` on +`PATH`: + +```bash +tar -xzf fastaguard-v0.1.1-x86_64-unknown-linux-gnu.tar.gz +./fastaguard-v0.1.1-x86_64-unknown-linux-gnu/fastaguard --help +``` + +## Bioconda Note + +This release is intended to be the first source archive suitable for Bioconda: +it contains the project license file and the stable v0.1 FASTA preflight +contract commands: + +```bash +fastaguard --help +fastaguard --schema +fastaguard --finding-catalog +``` + +## Known Limits + +- v0.1.1 still supports the `assembly` profile only. +- FastaGuard does not estimate biological completeness, taxonomic + contamination, or assembly correctness. +- Bioconda submission still requires the public source archive SHA256 to be + recorded in the recipe. diff --git a/examples/reports/assembly_fail/fastaguard.json b/examples/reports/assembly_fail/fastaguard.json index 7b7551e..64bb0c5 100644 --- a/examples/reports/assembly_fail/fastaguard.json +++ b/examples/reports/assembly_fail/fastaguard.json @@ -2,7 +2,7 @@ "schema_version": "0.1.0", "tool": { "name": "FastaGuard", - "version": "0.1.0" + "version": "0.1.1" }, "input": { "path": "testdata/problem_assembly.fa", diff --git a/examples/reports/assembly_fail/fastaguard_report.html b/examples/reports/assembly_fail/fastaguard_report.html index cf7c87a..74e0441 100644 --- a/examples/reports/assembly_fail/fastaguard_report.html +++ b/examples/reports/assembly_fail/fastaguard_report.html @@ -363,7 +363,7 @@

JSON

"schema_version": "0.1.0", "tool": { "name": "FastaGuard", - "version": "0.1.0" + "version": "0.1.1" }, "input": { "path": "testdata/problem_assembly.fa", diff --git a/examples/reports/assembly_pass/fastaguard.json b/examples/reports/assembly_pass/fastaguard.json index 3415304..7d63625 100644 --- a/examples/reports/assembly_pass/fastaguard.json +++ b/examples/reports/assembly_pass/fastaguard.json @@ -2,7 +2,7 @@ "schema_version": "0.1.0", "tool": { "name": "FastaGuard", - "version": "0.1.0" + "version": "0.1.1" }, "input": { "path": "testdata/valid_assembly.fa", diff --git a/examples/reports/assembly_pass/fastaguard_report.html b/examples/reports/assembly_pass/fastaguard_report.html index 99cc203..1eecefd 100644 --- a/examples/reports/assembly_pass/fastaguard_report.html +++ b/examples/reports/assembly_pass/fastaguard_report.html @@ -123,7 +123,7 @@

JSON

"schema_version": "0.1.0", "tool": { "name": "FastaGuard", - "version": "0.1.0" + "version": "0.1.1" }, "input": { "path": "testdata/valid_assembly.fa", diff --git a/packaging/bioconda/meta.yaml b/packaging/bioconda/meta.yaml index f505ff0..cea5ce0 100644 --- a/packaging/bioconda/meta.yaml +++ b/packaging/bioconda/meta.yaml @@ -1,5 +1,5 @@ {% set name = "fastaguard" %} -{% set version = "0.1.0" %} +{% set version = "0.1.1" %} package: name: {{ name|lower }} diff --git a/tests/golden/invalid_empty_record.json b/tests/golden/invalid_empty_record.json index bf39fa7..fa84995 100644 --- a/tests/golden/invalid_empty_record.json +++ b/tests/golden/invalid_empty_record.json @@ -2,7 +2,7 @@ "schema_version": "0.1.0", "tool": { "name": "FastaGuard", - "version": "0.1.0" + "version": "0.1.1" }, "input": { "path": "testdata/invalid_empty_record.fa", diff --git a/tests/golden/problem_assembly.json b/tests/golden/problem_assembly.json index f18ff46..f225122 100644 --- a/tests/golden/problem_assembly.json +++ b/tests/golden/problem_assembly.json @@ -2,7 +2,7 @@ "schema_version": "0.1.0", "tool": { "name": "FastaGuard", - "version": "0.1.0" + "version": "0.1.1" }, "input": { "path": "testdata/problem_assembly.fa", diff --git a/tests/golden/valid_assembly.json b/tests/golden/valid_assembly.json index 81d5c5e..da1ede7 100644 --- a/tests/golden/valid_assembly.json +++ b/tests/golden/valid_assembly.json @@ -2,7 +2,7 @@ "schema_version": "0.1.0", "tool": { "name": "FastaGuard", - "version": "0.1.0" + "version": "0.1.1" }, "input": { "path": "testdata/valid_assembly.fa", diff --git a/tests/python/test_release_metadata.py b/tests/python/test_release_metadata.py new file mode 100644 index 0000000..605318e --- /dev/null +++ b/tests/python/test_release_metadata.py @@ -0,0 +1,27 @@ +import tomllib +import unittest +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[2] + + +class ReleaseMetadataTest(unittest.TestCase): + def test_package_and_bioconda_recipe_target_v0_1_1(self): + cargo = tomllib.loads((ROOT / "Cargo.toml").read_text()) + recipe = (ROOT / "packaging" / "bioconda" / "meta.yaml").read_text() + + self.assertEqual(cargo["package"]["version"], "0.1.1") + self.assertIn('{% set version = "0.1.1" %}', recipe) + + def test_v0_1_1_release_notes_exist(self): + notes = ROOT / "docs" / "releases" / "v0.1.1.md" + + self.assertTrue(notes.exists()) + text = notes.read_text() + self.assertIn("FastaGuard v0.1.1", text) + self.assertIn("packaging metadata", text) + + +if __name__ == "__main__": + unittest.main()