Maintaining backwards compatibility (the ability to read old manifests) has become untenable. This is the last version of QBT that can read manifest versions V0 - V3 (but the tagged version itself points to the rewritten history that has the new unversioned manifest throughout history).
The "current" QBT binaries can thus build this version of QBT, which can read old (un-filtered) histories.
You can use this version to update an entire history to V3 by running this command:
git filter-branch -f --tree-filter "qbt updateManifest --upgrade"
Because there won't be a qbt-config file, you might need to add that flag. If you have overrides checked out, you should ignore them via that config file, using NO_OVERRIDES=1 if you have that. For me, the command I ended up running looks like this:
git filter-branch -f --tree-filter "NO_OVERRIDES=1 qbt updateManifest --config /path/to/my/qbt-config --upgrade"
Where "qbt" is this version of QBT. Future manifest upgrades will work similarly with a version of QBT which can read the old format and write the new one.
Migrating from V3 to "the unversioned manifest" is a special case, and can be accomplished by simply removing the version tag (V3 and V4 are identical except for the version):
git filter-branch -f --tree-filter "sed -i -e '1d' qbt-manifest"