Skip to content

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 13:29
· 371 commits to main since this release

[0.7.0] - 2026-08-24

Added

  • tt-bio predict --model openbind folds 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 openfold3 and are not downloaded: set TT_BIO_OPENBIND or put
    of3-ob-2025-06-30-174k.pt in ~/.boltz. See docs/openfold3-port.md and docs/weights.md.

    --model openfold3 is 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-featurizer joins full_parity_gate.py: 25 bit-exact arms against a committed
    capture of the upstream featurizer, card-free. The two af2ig-trunk legs now read
    AF2IG_PARAMS instead 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 ran json.loads over the whole thing. af2ig-trunk-device hit 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:2 run 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 through ssh 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 on Could not resolve hostname qb2, leaving a GATE FAIL that was pure plumbing. The
    fleet short names qb1 and qb2 now resolve to their own boxes; genuinely cross-host
    --workers entries 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 is af2ig-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-exact pxdesign-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.7 pin 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 dropped BondList._bonds and no
    longer exports connect_via_residue_names from biotite.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-device FAILs 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 pxdesign is 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.