v0.7.0
[0.7.0] - 2026-08-24
Added
-
tt-bio predict --model openbindfolds with OpenBind-0, the same OpenFold3 stack on upstream's
v0.5.0 checkpoint, tuned for protein-ligand co-folding. It takes ligands by SMILES or CCD code
alongside protein, RNA and DNA chains, with an MSA on by default and optional per-chain
templates. Accuracy is measured against the upstream v0.5.0 CPU reference, five seeds a side:
ubiquitin (L76, MSA) all-atom RMSD 0.969 A inside a 1.033 A reference noise floor, and
FKBP12 + SB3 (1FKG, L107 protein + 33 ligand atoms by CCD) 0.602 A inside a 0.551 A floor, where
the residual is the ligand pose and not the fold. Binding affinity is not predicted, and covalent
bonds and cyclic chains raise rather than fold something else. The weights are a separate
checkpoint from--model openfold3and are not downloaded: setTT_BIO_OPENBINDor put
of3-ob-2025-06-30-174k.ptin~/.boltz. Seedocs/openfold3-port.mdanddocs/weights.md.--model openfold3is unchanged. It keeps the preview2 checkpoint and the featurizer preview2
was trained on: the four MSA fixes v0.5.0 shipped are keyed on the checkpoint, not applied to
both, and a preview2 fold is byte-identical before and after. -
PXDesign binder design:
tt-bio design --model pxdesign target.yaml. Give it a target
structure, the chains to condition on and a binder length, and it writes one CIF per design,
each placed in the target structure's own frame so it opens alongside your input. The binder
is written as GLY because PXDesign generates a backbone with no sequence. The generator
checkpoint (556 MB, Apache-2.0) downloads on first use. Selecting designs, which upstream
does with a Protenix and an AF2-IG filter, is not on the CLI yet. -
pxdesign-featurizerjoinsfull_parity_gate.py: 25 bit-exact arms against a committed
capture of the upstream featurizer, card-free. The twoaf2ig-trunklegs now read
AF2IG_PARAMSinstead of a hard-coded home directory, so a release host that keeps the
AlphaFold parameters elsewhere reports where it looked instead of a silent GAP.
Fixed
-
OpenFold3 and OpenBind: a CCD ligand kept its chirality. The reference-molecule builder never
told RDKit to read stereochemistry off the 3D coordinates before discarding them, so the
molecule handed to the conformer generator had no chiral tags and ETKDG drew a random handedness
per stereocentre, which then reached the model as an input feature. SB3, SAH and ATP were all
fully unassigned. Run-to-run ligand-pose spread on the FKBP12 leg fell from 0.630 A to 0.183 A.
Polymer folds are untouched: the guard fires only on an all-ligand atom array. -
full_parity_gate.py: a port leg whose scorer runs on a card reported ERROR instead of a
verdict. tt-metal writes its log lines to stdout, the scorers print their JSON report to the
same stream, and the gate ranjson.loadsover the whole thing.af2ig-trunk-devicehit this
on every run on an 11x10 Tensix grid, where the triangle-multiply L1 retry always fires at 208
tokens: the parse failed and the error the gate printed was tt-bio's own notice saying the clash
was handled and the result unchanged. The leg was unaffected on the 13x10 grid it was registered
on, so the blind spot was one board class wide and invisible from the other. The gate now takes
the report out of stdout and lets device log lines around it be log lines. A report truncated by
a scorer that died mid-print is still an ERROR. -
full_parity_gate.py --workers qb2:2run on qb2 itself now dispatches locally. It compared
the host token against the machine's own hostname (tt-quietbox2), classified the box it was
running on as remote, and ran every device fold throughssh qb2— an alias that exists only
in a workstation's~/.ssh/config. All 21 device legs of a full gate died in under a second
each onCould not resolve hostname qb2, leaving a GATE FAIL that was pure plumbing. The
fleet short namesqb1andqb2now resolve to their own boxes; genuinely cross-host
--workersentries still dispatch over ssh.
Gates
Gated on a Tenstorrent Blackhole p300c (tt-quietbox2, Python 3.10.12, TT-NN 0.68.0), in a venv
built from a wheel of this tree, with every gate run against the checkout it is tagging.
- Accuracy floors (
release_gate.py): all eight structure models clear their RMSD and TM floor.
OpenBind-0 folds 1.693 A at TM 0.894 against a 3.5 A / 0.70 floor. PXDesign's fit RMSD is
4.909 A against a 15.0 A floor, with its coordinate digest matching. Every model carried over
from 0.6.8 reproduces its 0.6.8 number to the digit: Boltz-2 1.700, ESMFold2 1.772,
ESMFold2-Fast 1.804, Protenix-v2 1.374, OpenDDE 1.418, OpenFold3 1.662, RoseTTAFold3 1.239 A.
BoltzGen 0.830 A scRMSD at a 100% pass rate, OpenDDE-AbAg DockQ 0.873, Nesso-1 worst scalar
3.771xR, ESM-C 300M/600M per-residue PCC 0.99961 / 0.99964. - Parity gate (
full_parity_gate.py, 40 legs): 32 PASS, 1 PASS-caveated, 4 GAP, 2
BLOCKED-REGEN, 1 FAIL, 0 DRIFT elsewhere. All four GAPs and both BLOCKED-REGEN legs are the
same ones 0.6.8 shipped, with the same verdicts; a GAP that reproduces its committed record is
a reproduced verdict, not a failure. The FAIL isaf2ig-trunk-device, described under Known
gaps. New this release and green for the first time: OpenBind's two structure legs
(ubiquitin all-atom 0.969 A, FKBP12+SB3 0.603 A) and the 25 bit-exactpxdesign-featurizer
arms. - Packaging (
packaging_smoke.py): 61/61 data files and 43/43 declared runtime dependencies ship
in both the wheel and the sdist, and land on disk after a clean install. - Host test suite: 1120 passed, 52 skipped, 1 xfailed.
- UX regression (
ux_regression.py): every surface cleared progress, argument parsing and the
results manifest. - The
biotite<1.7pin was checked on the interpreter its break appears on. A clean Python 3.12
install of this wheel resolves biotite 1.6.0, where both symbols the vendored AtomWorks tree
reaches are present; biotite 1.7.1 on the same interpreter has droppedBondList._bondsand no
longer exportsconnect_via_residue_namesfrombiotite.structure.bonds. So the pin is what
keeps a clean 3.12 install able to featurize RoseTTAFold3.
Known gaps
Named rather than dropped, because a release that does not say what it did not check is not
gated.
af2ig-trunk-deviceFAILs against its committed floor, and the cause is the committed floor
rather than the port. The leg read 13 of 94 taps missing at minimum PCC 0.9960112623 and
envelope 13.794076; the record it is scored against holds 9 taps. Both numbers are already
root-caused: the AF2-IG port established that an 11x10 Tensix grid gives 13 taps at PCC
0.9960112623 where a 13x10 grid gives 8, and pinned it by forcing a 13x10 board down to 11x10,
which returned the 11x10 figures to all ten printed digits. This run reproduces that same
11x10 value digit for digit. The committed record is a 13x10 measurement taken when the
template stack still ran on the host, and the leg now runs it on the card, which the port
measured as amplifying the gap from 2.6e-10 to 1.5e-3. So the record is stale in two respects,
board grid and template placement, and needs re-recording per grid and per arm — the port's
call, not a release action. AF2-IG has no CLI path in 0.7.0: it is the filter half of PXDesign's
design selection, which has not shipped, so no user path is affected.- Size-generality ladder: not run. Its baseline exists only for the p150a, and the p150a in the
fleet was unavailable for the whole release window. A ladder baseline recorded on the p300c
from this release's own runs could not detect drift in the code that recorded it. - Performance regression: not run. The only gate-capable host was carrying three other workers at
a load average of 9 to 21 for the whole window, and a Boltz-2 measurement taken there read
0.757 structures/s against a 1.498 baseline — twice the wall for identical code. The suite's
own method treats a slower reading under contention as unproven, so no verdict was recorded
rather than a red one. - OpenBind-0 and PXDesign still have no cell on the benchmark page. Measuring them was in flight
when this was cut. The page names both as unmeasured rather than projecting a number. tt-bio design --model pxdesignis not exercised end to end by any gate leg. Its accuracy is
covered by a fit-RMSD floor, a coordinate digest and 25 bit-exact featurizer arms; the CLI path
around it, from argument parsing through weight resolution to the results manifest, is not.