v0.6.8
[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 fp32is the more
faithful arm below ~150 tokens and runs out of DRAM around 1000. Proteins and ligands only,
one ligand per input. Seedocs/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. Seedocs/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 apredict --model rf3choice 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.pyscores 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 targetexamples/binder.yamlalready uses.Not designability: upstream RFdiffusion3 evaluates with ProteinMPNN/LigandMPNN sequences plus
AF3 rather than its own sequence head, tt-bio ships no MPNN, anddocs/rfd3-design.mdalready
tells users to redesign the built-in sequence before ordering.