diff --git a/BIN-INSTALL.md b/BIN-INSTALL.md
index f9dee85bc..869e821e7 100644
--- a/BIN-INSTALL.md
+++ b/BIN-INSTALL.md
@@ -6,17 +6,17 @@ pre-compile binary, static linked distribution.
 ## Extracting
 If you have not already extract the distribution and cd into the cactus directory:
 ```
-tar -xzf cactus-bin-v2.8.3.tar.gz
-cd cactus-bin-v2.8.3
+tar -xzf cactus-bin-v2.8.4.tar.gz
+cd cactus-bin-v2.8.4
 ```
 
 ## Setup
 
 To build a python virtualenv and activate, do the following steps. This requires Python version >= 3.7 (so Ubuntu 18.04 users should use `-p python3.8` below):
 ```
-virtualenv -p python3 venv-cactus-v2.8.3
-printf "export PATH=$(pwd)/bin:\$PATH\nexport PYTHONPATH=$(pwd)/lib:\$PYTHONPATH\n" >> venv-cactus-v2.8.3/bin/activate
-source venv-cactus-v2.8.3/bin/activate
+virtualenv -p python3 venv-cactus-v2.8.4
+printf "export PATH=$(pwd)/bin:\$PATH\nexport PYTHONPATH=$(pwd)/lib:\$PYTHONPATH\n" >> venv-cactus-v2.8.4/bin/activate
+source venv-cactus-v2.8.4/bin/activate
 python3 -m pip install -U setuptools pip wheel
 python3 -m pip install -U .
 python3 -m pip install -U -r ./toil-requirement.txt
diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index c4a2ec43d..1907db7c2 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -1,3 +1,10 @@
+# Release-2.8.4 2024-06-21
+
+This release updates `vcfbub` in order to fix a longstanding issue where this tool can produce invalid VCFs. 
+
+- `vcfbub` updated to `v0.1.1` which resolves a bub where records could be missing columns in the presence of `.` genotypes
+- run `bcftools view` as sanity check on generated VCFs to prevent various normalization steps from ever silently producing invalid output.
+
 # Release-2.8.3 2024-06-12
 
 This release fixes some bugs and updates to the latest Toil.
diff --git a/doc/progressive.md b/doc/progressive.md
index bc7949373..4d32cd49f 100644
--- a/doc/progressive.md
+++ b/doc/progressive.md
@@ -278,12 +278,12 @@ The Cactus Docker image contains everything you need to run Cactus (python envir
 
 ```
 wget -q https://raw.githubusercontent.com/ComparativeGenomicsToolkit/cactus/master/examples/evolverMammals.txt -O evolverMammals.txt
-docker run -v $(pwd):/data --rm -it quay.io/comparative-genomics-toolkit/cactus:v2.8.3 cactus /data/jobStore /data/evolverMammals.txt /data/evolverMammals.hal
+docker run -v $(pwd):/data --rm -it quay.io/comparative-genomics-toolkit/cactus:v2.8.4 cactus /data/jobStore /data/evolverMammals.txt /data/evolverMammals.hal
 ```
 
 Or you can proceed interactively by running
 ```
-docker run -v $(pwd):/data --rm -it quay.io/comparative-genomics-toolkit/cactus:v2.8.3 bash
+docker run -v $(pwd):/data --rm -it quay.io/comparative-genomics-toolkit/cactus:v2.8.4 bash
 cactus /data/jobStore /data/evolverMammals.txt /data/evolverMammals.hal
 
 ```
diff --git a/setup.py b/setup.py
index 1b5a01769..e35da5645 100644
--- a/setup.py
+++ b/setup.py
@@ -24,7 +24,7 @@ def run(self):
 
 setup(
     name = "Cactus",
-    version = "2.8.3",
+    version = "2.8.4",
     author = "Benedict Paten",
     package_dir = {'': 'src'},
     packages = find_packages(where='src'),
diff --git a/src/cactus/shared/common.py b/src/cactus/shared/common.py
index 92b6d790d..54d77c041 100644
--- a/src/cactus/shared/common.py
+++ b/src/cactus/shared/common.py
@@ -318,7 +318,7 @@ def getDockerTag(gpu=False):
         return "latest"    
     else:
         # must be manually kept current with each release        
-        return 'v2.8.3' + ('-gpu' if gpu else '')
+        return 'v2.8.4' + ('-gpu' if gpu else '')
 
 def getDockerImage(gpu=False):
     """Get fully specified Docker image name."""