Skip to content

v0.6.8

Choose a tag to compare

@github-actions github-actions released this 24 Aug 03:40
· 668 commits to main since this release
d4c1d04

[0.6.8] - 2026-08-24

Added

  • Nesso-1 protein-ligand binding affinity, via tt-bio affinity. It has no structure module,
    so it returns an affinity value and a binder probability instead of coordinates, and it is
    much cheaper than folding for that question: 33 s end to end for one 512 aa complex on a
    single Blackhole card against 386 s for the Boltz-2 affinity path on the same input. Point it
    at a directory to screen a ligand series with the model resident across inputs. On DAVIS it
    reaches 0.662 mean within-target Pearson against measured Kd, close to the 0.636 the upstream
    implementation gets on an H200. The trunk runs bf16 by default; --trunk fp32 is the more
    faithful arm below ~150 tokens and runs out of DRAM around 1000. Proteins and ligands only,
    one ligand per input. See docs/nesso1.md.

Performance

  • RoseTTAFold3 folds 1.63x faster at 512 aa (80.28 -> 49.29 s) and 2.05x at 768 aa
    (207.28 -> 100.95 s), with no flag to set. Triangle attention now runs on the fused
    attention kernel instead of the materialised fp32-softmax chain. That route used to be the
    less accurate one, which is why it was off; masking the ragged key tail fixed its accuracy,
    so it is now both the faster and the more accurate route and there is nothing left to trade.
    Predictions move slightly and they move toward the reference: CA-RMSD 0.2030 -> 0.1780 A on
    7ROA (117 aa) and 0.0955 -> 0.0920 A on ubiquitin (76 aa), same seeds, both further inside
    their reference noise floors than before. Sequence lengths that are already a multiple of 32
    are bit-identical to 0.6.7. See docs/implementation-parity.md.

Gates and documentation

  • RoseTTAFold3 is now covered by the release gate's fold leg and by the size ladder. It shipped
    as a predict --model rf3 choice in 0.6.6 with no correctness coverage in either gate, while
    carrying RF3-scoped performance levers. That combination is how a lever gets tuned at one
    sequence length and left dark at every other one.

  • RFD3 now has a correctness leg in scripts/release_gate.py (--model rfd3, and in the default arm set).
    It had three legs already and none of them could see a broken design: the featurizer leg in
    full_parity_gate.py scores an input (43/43 feature keys bit-exact), the perf leg scores a
    wall-clock, and the UX leg scores the CLI. All three stay green when the structure leaving the
    far end is garbage, which is where both of RFD3's escaped defects lived. The new arm scores the
    delivered mmCIF: strict parse, backbone geometry, heavy-atom clashes, a real sequence at the
    designed positions, and byte-identical coordinates from a repeated seed in a fresh process.
    Geometry is gated as a clean rate over four designs rather than per design, because an
    occasional broken backbone is real RFdiffusion-family behaviour and the field's answer is to
    generate several and filter.

    Every number is computed over the designed residues only, recovered by re-featurizing the spec
    on the host. For a binder RFD3 merges the designed residues into the target's own chain and
    nothing in the output marks which is which, so a chain-level number averages the generated
    residues against the copied target and passes by dilution. New fixture
    examples/rfd3_binder.json, the target examples/binder.yaml already uses.

    Not designability: upstream RFdiffusion3 evaluates with ProteinMPNN/LigandMPNN sequences plus
    AF3 rather than its own sequence head, tt-bio ships no MPNN, and docs/rfd3-design.md already
    tells users to redesign the built-in sequence before ordering.