diff --git a/README.md b/README.md index 658a023..488938e 100644 --- a/README.md +++ b/README.md @@ -49,10 +49,10 @@ downstream tool. | Channel | Status | | --- | --- | -| Source/package metadata | this branch/package metadata targets `v0.5.0`; `v0.4.0` is the latest tagged source release | -| GitHub release | v0.4 GitHub release binaries are built from the `v0.4.0` tag | -| Bioconda | `v0.3.0` is live for Linux and macOS x86_64/ARM64; v0.5 is not yet published there | -| BioContainers | `v0.3.0` is live as a pinned workflow image; v0.5 is not yet published there | +| Source/package metadata | `v0.5.0` is the latest tagged source release | +| GitHub release | v0.5 GitHub release binaries are built from the `v0.5.0` tag | +| Bioconda | `v0.5.0` is live for Linux and macOS x86_64/ARM64 | +| BioContainers | `v0.5.0` is live as a pinned workflow image | | Source build | local checkout builds report the package version from `Cargo.toml` | ## Install @@ -60,41 +60,41 @@ downstream tool. Published bioinformatics install: ```bash -mamba install -c conda-forge -c bioconda fastaguard=0.3.0 +mamba install -c conda-forge -c bioconda fastaguard=0.5.0 ``` Published containerized workflow install: ```bash -docker pull quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0 +docker pull quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0 ``` Run through BioContainers: ```bash -docker run --rm quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0 fastaguard --version +docker run --rm quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0 fastaguard --version ``` GitHub release binary for Linux x86_64: ```bash -curl -L -O https://github.com/ehsanestaji/FastaGuard/releases/download/v0.4.0/fastaguard-v0.4.0-x86_64-unknown-linux-gnu.tar.gz -tar -xzf fastaguard-v0.4.0-x86_64-unknown-linux-gnu.tar.gz -./fastaguard-v0.4.0-x86_64-unknown-linux-gnu/fastaguard --version +curl -L -O https://github.com/ehsanestaji/FastaGuard/releases/download/v0.5.0/fastaguard-v0.5.0-x86_64-unknown-linux-gnu.tar.gz +tar -xzf fastaguard-v0.5.0-x86_64-unknown-linux-gnu.tar.gz +./fastaguard-v0.5.0-x86_64-unknown-linux-gnu/fastaguard --version ``` GitHub release binary for macOS Apple Silicon: ```bash -curl -L -O https://github.com/ehsanestaji/FastaGuard/releases/download/v0.4.0/fastaguard-v0.4.0-aarch64-apple-darwin.tar.gz -tar -xzf fastaguard-v0.4.0-aarch64-apple-darwin.tar.gz -./fastaguard-v0.4.0-aarch64-apple-darwin/fastaguard --version +curl -L -O https://github.com/ehsanestaji/FastaGuard/releases/download/v0.5.0/fastaguard-v0.5.0-aarch64-apple-darwin.tar.gz +tar -xzf fastaguard-v0.5.0-aarch64-apple-darwin.tar.gz +./fastaguard-v0.5.0-aarch64-apple-darwin/fastaguard --version ``` Build from the latest published Git tag: ```bash -cargo install --git https://github.com/ehsanestaji/FastaGuard --tag v0.4.0 +cargo install --git https://github.com/ehsanestaji/FastaGuard --tag v0.5.0 fastaguard --version ``` @@ -122,7 +122,7 @@ fastaguard --version The `--gate pipeline` examples below require FastaGuard `v0.3.0` or newer. The `fastaguard compare` example requires FastaGuard `v0.4.0` or newer. -The `--gate submission` example requires the v0.5 source/package contract. +The `--gate submission` example requires FastaGuard `v0.5.0` or newer. Run the assembly preflight check: @@ -153,8 +153,8 @@ v0.4 compare starter example: fastaguard compare assemblies/*.fa --profile assembly --gate pipeline ``` -This command is part of the v0.4 GitHub release. Bioconda and BioContainers may -still be `v0.3.0` until packaging publication follow-up is complete. +This command first shipped in the v0.4 GitHub release and is included in the +published v0.5.0 Bioconda package and BioContainers image. Submission-readiness preflight: @@ -191,10 +191,10 @@ docker run --rm -v "$PWD:/data" fastaguard:local /data/sample.fa \ --multiqc /data/fastaguard_mqc.json ``` -Published BioContainers provides the v0.3 image for workflow engines: +Published BioContainers provides the v0.5 image for workflow engines: ```bash -docker pull quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0 +docker pull quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0 ``` Exit codes: @@ -333,13 +333,10 @@ FastaGuard catches FASTA-level assembly problems before expensive assembly QC. ## Status -This branch/package metadata targets FastaGuard v0.5.0. The latest tagged -GitHub release remains v0.4.0, which adds preflight readiness, compare mode, -and cohort-level FASTA triage outputs. +FastaGuard v0.5.0 is the latest tagged GitHub release and the current published +Bioconda/BioContainers release. It adds the submission-readiness gate on top of +the v0.4 preflight readiness and compare-mode contract. -v0.3.0 remains the current Bioconda and BioContainers release until packaging -follow-up is complete. - -Bioconda serves v0.3.0 for `linux-64`, `linux-aarch64`, `osx-64`, and -`osx-arm64`. BioContainers publishes the pinned v0.3 workflow image -`quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0`. +Bioconda serves v0.5.0 for `linux-64`, `linux-aarch64`, `osx-64`, and +`osx-arm64`. BioContainers publishes the pinned v0.5 workflow image +`quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0`. diff --git a/docs/adoption-plan.md b/docs/adoption-plan.md index 1c83ba6..d03342d 100644 --- a/docs/adoption-plan.md +++ b/docs/adoption-plan.md @@ -15,9 +15,9 @@ Bioconda published -> BioContainers available -> MultiQC plugin -> public benchm Goal: make installation natural for bioinformatics users. -Status: Bioconda is live for FastaGuard v0.3.0 on Linux and macOS x86_64/ARM64 +Status: Bioconda is live for FastaGuard v0.5.0 on Linux and macOS x86_64/ARM64 platforms. BioContainers publishes the pinned workflow image -`quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0`. +`quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0`. - Keep GitHub release binaries working. - Keep Docker smoke tests passing. @@ -27,12 +27,13 @@ platforms. BioContainers publishes the pinned workflow image Done when: ```bash -mamba install -c conda-forge -c bioconda fastaguard=0.3.0 +mamba install -c conda-forge -c bioconda fastaguard=0.5.0 fastaguard --schema ``` works in a clean environment, and workflow engines can pull the pinned -BioContainers image. +BioContainers image. This is now true for v0.5.0; keep repeating the same +check for future releases. ## Phase 2: Aggregate diff --git a/docs/packaging.md b/docs/packaging.md index 54d2c45..9d2c9aa 100644 --- a/docs/packaging.md +++ b/docs/packaging.md @@ -8,28 +8,27 @@ Treat packaging as part of the product, not as a later chore. For bioinformatics Bioconda -> BioContainers -> GitHub release binaries -> Docker image -> Homebrew later ``` -FastaGuard v0.3.0 is published on GitHub with Linux and macOS release binaries. -Bioconda serves v0.3.0 on Linux and macOS x86_64/ARM64 platforms. -BioContainers provides the pinned v0.3 workflow image generated from the +FastaGuard v0.5.0 is published on GitHub with Linux and macOS release binaries. +Bioconda serves v0.5.0 on Linux and macOS x86_64/ARM64 platforms. +BioContainers provides the pinned v0.5 workflow image generated from the Bioconda package. Docker remains useful for local smoke tests. -This branch/package metadata targets v0.5.0, including the -`--gate submission` and `--submission-target generic|ncbi` contract. Do not -document v0.5 as published on Bioconda or BioContainers until those packages -exist; the verified published package and workflow image remain v0.3.0. +The current published package includes the `--gate submission` and +`--submission-target generic|ncbi` contract. Keep future docs pinned to +confirmed Bioconda and BioContainers versions before advertising them as live. ## Bioconda Recommended install: ```bash -mamba install -c conda-forge -c bioconda fastaguard=0.3.0 +mamba install -c conda-forge -c bioconda fastaguard=0.5.0 ``` Conda equivalent: ```bash -conda install -c conda-forge -c bioconda fastaguard=0.3.0 +conda install -c conda-forge -c bioconda fastaguard=0.5.0 ``` Verify the installed package: @@ -42,7 +41,7 @@ fastaguard --finding-catalog Current published package: -- Version: `0.3.0` +- Version: `0.5.0` - Platforms: `linux-64`, `linux-aarch64`, `osx-64`, `osx-arm64` - Package page: [anaconda.org/bioconda/fastaguard](https://anaconda.org/bioconda/fastaguard) @@ -105,8 +104,8 @@ For a public release: 1. Tag the release: ```bash - git tag v0.3.0 - git push origin v0.3.0 + git tag v0.5.0 + git push origin v0.5.0 ``` 2. Push the tag to trigger `.github/workflows/release.yml`. @@ -160,7 +159,7 @@ The Bioconda recipe has merged upstream and generated a BioContainers image. Use the pinned tag in workflow examples: ```bash -docker pull quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0 +docker pull quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0 ``` That path is preferable to maintaining a separate BioContainers Dockerfile. diff --git a/docs/tool-landscape.md b/docs/tool-landscape.md index 19ec948..c44c476 100644 --- a/docs/tool-landscape.md +++ b/docs/tool-landscape.md @@ -81,12 +81,12 @@ Current product evidence: - Rust CLI builds and runs as a single binary. - Docker build and smoke test pass. - GitHub release workflow builds Linux and macOS binaries. -- FastaGuard v0.3.0 is published on GitHub with Linux and macOS binaries. -- FastaGuard v0.3.0 is published on Bioconda for `linux-64`, +- FastaGuard v0.5.0 is published on GitHub with Linux and macOS binaries. +- FastaGuard v0.5.0 is published on Bioconda for `linux-64`, `linux-aarch64`, `osx-64`, and `osx-arm64`. - Clean Bioconda install has been smoke-tested with `fastaguard --schema`. - BioContainers publishes - `quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0`. + `quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0`. - JSON Schema validates committed golden reports. - Reports include bounded evidence records and suggested actions. - The v0.3 gate contract exposes `gate.blocking_findings`, diff --git a/examples/nf-core/README.md b/examples/nf-core/README.md index 920af9c..c9d79d4 100644 --- a/examples/nf-core/README.md +++ b/examples/nf-core/README.md @@ -20,13 +20,13 @@ The module assumes `fastaguard` is available on `PATH` when run without a container. The recommended install is: ```bash -mamba install -c conda-forge -c bioconda fastaguard=0.3.0 +mamba install -c conda-forge -c bioconda fastaguard=0.5.0 ``` -Published BioContainers provides the pinned v0.3 image: +Published BioContainers provides the pinned v0.5 image: ```text -quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0 +quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0 ``` The command block is written for the v0.3 assembly gate and runs: @@ -50,7 +50,7 @@ fastaguard compare assemblies/*.fa --profile assembly --gate pipeline ``` For v0.5 submission-readiness preflight before official validators, use the -source/package contract rather than the currently published v0.3 container: +published v0.5 package or container: ```bash fastaguard {input.fasta} --gate submission --submission-target ncbi diff --git a/examples/nf-core/modules/local/fastaguard/main.nf b/examples/nf-core/modules/local/fastaguard/main.nf index 9b4f86e..0b50cbf 100644 --- a/examples/nf-core/modules/local/fastaguard/main.nf +++ b/examples/nf-core/modules/local/fastaguard/main.nf @@ -1,7 +1,7 @@ process FASTAGUARD { tag "$meta.id" label 'process_low' - container 'quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0' + container 'quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0' input: tuple val(meta), path(fasta) diff --git a/examples/snakemake/wrapper/README.md b/examples/snakemake/wrapper/README.md index 77c73aa..e8231e0 100644 --- a/examples/snakemake/wrapper/README.md +++ b/examples/snakemake/wrapper/README.md @@ -2,10 +2,10 @@ This is a local wrapper-style starter for FastaGuard. It assumes `fastaguard` is available on `PATH`. -Published Bioconda provides v0.3.0: +Published Bioconda provides v0.5.0: ```bash -mamba install -c conda-forge -c bioconda fastaguard=0.3.0 +mamba install -c conda-forge -c bioconda fastaguard=0.5.0 ``` Run from this directory with a `sample.fa` input: @@ -24,15 +24,14 @@ That gate blocks downstream workflow steps on duplicate IDs, invalid characters, invalid FASTA structure, and high-N content. GC and length outliers remain advisory unless explicitly added with `--fail-on`. Gate failures intentionally exit with code `2` after writing reports, so downstream workflow steps stop while the JSON/HTML evidence remains available. -The wrapper also includes a v0.3 Conda environment: +The wrapper also includes a v0.5 Conda environment: ```bash snakemake -s Snakefile --cores 1 --use-conda ``` For v0.5 submission-readiness preflight before official validators, use the -source/package contract rather than the currently published v0.3 package or -container: +published v0.5 package or container: ```bash fastaguard {input.fasta} --gate submission --submission-target ncbi @@ -48,7 +47,7 @@ Pipeline authors should route on: For containerized workflow runs, the latest pinned BioContainers image is: ```text -quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0 +quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0 ``` The wrapper emits: diff --git a/examples/snakemake/wrapper/environment.yaml b/examples/snakemake/wrapper/environment.yaml index a77544a..220c3b3 100644 --- a/examples/snakemake/wrapper/environment.yaml +++ b/examples/snakemake/wrapper/environment.yaml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - fastaguard=0.3.0 + - fastaguard=0.5.0 diff --git a/packaging/bioconda/README.md b/packaging/bioconda/README.md index 3613b11..f362807 100644 --- a/packaging/bioconda/README.md +++ b/packaging/bioconda/README.md @@ -1,23 +1,23 @@ # Bioconda Recipe -Upstream Bioconda currently publishes FastaGuard v0.3.0. +Upstream Bioconda currently publishes FastaGuard v0.5.0. The recipe has been merged into `bioconda/bioconda-recipes` as `recipes/fastaguard/`, and the current published package is available from Bioconda: ```bash -mamba install -c conda-forge -c bioconda fastaguard=0.3.0 +mamba install -c conda-forge -c bioconda fastaguard=0.5.0 ``` BioContainers publishes the pinned workflow image: ```bash -docker pull quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0 +docker pull quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0 ``` -This local recipe directory mirrors the FastaGuard v0.3.0 Bioconda recipe. The -v0.3.0 GitHub source archive is published and `meta.yaml` includes the real +This local recipe directory mirrors the FastaGuard v0.5.0 Bioconda recipe. The +v0.5.0 GitHub source archive is published and `meta.yaml` includes the real archive SHA256. ## Local Checks diff --git a/packaging/bioconda/meta.yaml b/packaging/bioconda/meta.yaml index 28f0f07..c91b0fa 100644 --- a/packaging/bioconda/meta.yaml +++ b/packaging/bioconda/meta.yaml @@ -1,5 +1,5 @@ {% set name = "fastaguard" %} -{% set version = "0.3.0" %} +{% set version = "0.5.0" %} package: name: {{ name|lower }} @@ -7,7 +7,7 @@ package: source: url: https://github.com/ehsanestaji/FastaGuard/archive/refs/tags/v{{ version }}.tar.gz - sha256: 643d5d0107b6dc237f3be782a8463414880b95c45964397b773dac7e794e4fde + sha256: b3de60c83cb570bb90e894c262effe4092101b1655e5c64023445078ee2c5971 build: number: 0 diff --git a/tests/python/test_adoption_assets.py b/tests/python/test_adoption_assets.py index 7ffcf65..d543cd4 100644 --- a/tests/python/test_adoption_assets.py +++ b/tests/python/test_adoption_assets.py @@ -79,7 +79,7 @@ def test_v0_3_gate_examples_do_not_pin_v0_2_runtimes(self): self.assertNotIn("0.2.0--", nf_core_module) self.assertIn( - "quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0", + "quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0", nf_core_module, ) self.assertNotIn("fastaguard=0.2.0", wrapper_env) @@ -488,12 +488,12 @@ def test_workflow_docs_reference_bioconda_and_container_status(self): self.assertIn(install, nfcore_readme) self.assertIn(install, snakemake_readme) self.assertIn( - "quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0", + "quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0", nfcore_readme, ) self.assertNotIn("0.2.0--", nfcore_module) self.assertIn( - "quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0", + "quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0", snakemake_readme, ) @@ -825,7 +825,7 @@ def test_snakemake_wrapper_declares_bioconda_environment(self): " - conda-forge", " - bioconda", "dependencies:", - " - fastaguard=0.3.0", + " - fastaguard=0.5.0", ], ) self.assertIn('conda: "environment.yaml"', snakefile.read_text()) diff --git a/tests/python/test_release_metadata.py b/tests/python/test_release_metadata.py index d54cfb6..c31d793 100644 --- a/tests/python/test_release_metadata.py +++ b/tests/python/test_release_metadata.py @@ -15,10 +15,10 @@ def test_package_targets_v0_5_0(self): self.assertEqual(cargo["package"]["version"], "0.5.0") - def test_bioconda_recipe_tracks_published_v0_3_0_archive(self): + def test_bioconda_recipe_tracks_published_v0_5_0_archive(self): recipe = (ROOT / "packaging" / "bioconda" / "meta.yaml").read_text() - self.assertIn('{% set version = "0.3.0" %}', recipe) + self.assertIn('{% set version = "0.5.0" %}', recipe) self.assertIn("fastaguard --version | grep {{ version }}", recipe) def test_v0_2_0_release_notes_exist(self): @@ -43,19 +43,29 @@ def test_v0_3_0_release_notes_exist(self): self.assertIn("--gate pipeline", text) self.assertIn("input_sha256", text) - def test_bioconda_recipe_has_publishable_v0_3_0_source_sha(self): + def test_v0_5_0_release_notes_exist(self): + notes = ROOT / "docs" / "releases" / "v0.5.0.md" + + self.assertTrue(notes.exists()) + text = notes.read_text() + self.assertIn("FastaGuard v0.5.0", text) + self.assertIn("Submission Readiness Gate", text) + self.assertIn("--gate submission", text) + self.assertIn("--submission-target generic|ncbi", text) + + def test_bioconda_recipe_has_publishable_v0_5_0_source_sha(self): recipe = (ROOT / "packaging" / "bioconda" / "meta.yaml").read_text() marker = "REPLACE" + "_WITH_" - self.assertTrue((ROOT / "docs" / "releases" / "v0.3.0.md").exists()) - self.assertIn('{% set version = "0.3.0" %}', recipe) + self.assertTrue((ROOT / "docs" / "releases" / "v0.5.0.md").exists()) + self.assertIn('{% set version = "0.5.0" %}', recipe) self.assertNotIn(marker, recipe) match = re.search(r"sha256: ([a-f0-9]{64})", recipe) self.assertIsNotNone(match, recipe) self.assertEqual( match.group(1), - "643d5d0107b6dc237f3be782a8463414880b95c45964397b773dac7e794e4fde", + "b3de60c83cb570bb90e894c262effe4092101b1655e5c64023445078ee2c5971", ) def test_release_ready_bioconda_recipe_requires_real_sha(self): @@ -77,7 +87,7 @@ def test_release_ready_bioconda_recipe_requires_real_sha(self): self.assertIsNotNone(match, recipe) self.assertEqual( match.group(1), - "643d5d0107b6dc237f3be782a8463414880b95c45964397b773dac7e794e4fde", + "b3de60c83cb570bb90e894c262effe4092101b1655e5c64023445078ee2c5971", ) self.assertNotIn(marker + "PUBLIC_SOURCE_ARCHIVE_SHA256", recipe) @@ -114,8 +124,8 @@ def test_bioconda_build_script_uses_portable_install(self): def test_docs_reference_published_bioconda_install(self): install_command = "mamba install -c conda-forge -c bioconda fastaguard" - pinned_install = install_command + "=0.3.0" - container = "quay.io/biocontainers/fastaguard:0.3.0--hfa8f182_0" + pinned_install = install_command + "=0.5.0" + container = "quay.io/biocontainers/fastaguard:0.5.0--hfa8f182_0" docs = [ ROOT / "README.md", ROOT / "docs" / "packaging.md",