Skip to content

Matrix: S04 multi-chain StabiliNNator case; folding_260901.1 verified 64/64 in production - #120

Open
wilke wants to merge 7 commits into
mainfrom
feat/matrix-multichain-stabilinnator
Open

wilke wants to merge 7 commits into
mainfrom
feat/matrix-multichain-stabilinnator

Conversation

@wilke

@wilke wilke commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Summary

One matrix addition and the production verification record for folding_260901.1.sif. No service code changes — test_data/, docs/, STATUS/TODO only.

  • S04 — StabiliNNator on the raw multi-chain inputs/3ft7.pdb. Exists so the Test: full multi-tool CWL workflow execution (gap #5) #23 residue-label regression can actually fire: on a cleaned, contiguously-renumbered structure offset-lookup and identity-lookup coincide and the counterfactual collapses to 0/N. S01–S03's crambin cannot exercise it either (one chain numbered from 1).
  • docs/test-report-260903-api.md — the verification writeup, with the three results JSONs.

What was verified (2026-09-03)

Gate Result
Both app rows on folding_260901.1 confirmed from the user's own morning jobs (23519220 StabiliNNator, 23519232 PredictStructure), no probe needed
Matrix, 52 positive cases 52/52
Matrix --include-negative 64/64, all 12 rejection cases refused with their own message
stabiliNNatorApp #22 TSV typing p3-ls -lT on S01 and S04 result folders reads tsv (was unspecified)
stabiliNNatorApp #23 residue labels rendering: ok, discriminating input: yes, counterfactual 86/88 on S04

StabiliNNator cases landed on four distinct compute hosts across the two runs (fir, pear, bio-compute-04, alder), so that partition's image staging is no longer a single-host observation.

Two tests that were passing for the wrong reason — recorded, not hidden

  1. N03 referenced inputs/not_fasta.txt, which did not exist in the workspace, so it failed on "file is empty or unreadable" rather than the FASTA check it exists for. Fixture uploaded; it now quotes the fixture's first line.
  2. The Test: full multi-tool CWL workflow execution (gap #5) #23 label verifier as first used (caa7dcd) recomputes resLabel from the report's embedded data and never inspects the rendered template — it exits 0 on a pre-fix report. The "confirmed" line in the first draft of the report rested on that. Re-verified with stabiliNNatorApp 690ffce (CI: validate container builds on every PR (gap #10) #24, scans the report's inline script for sequence[pos-1]). Both the weak evidence and the correction are in the report so the weak line does not get re-quoted.

Deferred, deliberately

--require-discriminating on S04 and tests/verify_mmcif_rejections.sh in the acceptance suite both reproduce against folding_260901.1 but are not wired in — they live on stabiliNNatorApp #24, which is unmerged. Tracked in TODO.

Incidental

Task 23519232 (a real UI submission) sent dna_file as a directory: the workspace fixtures are typed reads, the DNA selector's type filter excludes that, the browse dialog looks empty, and WorkspaceObjectSelector.js:845 takes the folder. The service caught it correctly. Two BV-BRC-Web follow-ups recorded in TODO.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DEWo4xvL59PHC1QUvtTV9F

wilke and others added 7 commits September 1, 2026 13:21
S01-S03 all use 1crn_small.pdb -- a single chain numbered 1..N, which is
exactly the shape that hides stabiliNNatorApp#23: ranked residues were
labelled by indexing the concatenated sequence with a residue number, so
a single chain starting at 1 labels correctly by accident.

3ft7.pdb has chains A/B numbered 8-52 and mislabels 86 of 88 proline
rows against the old code. Adding it makes the multi-chain case
permanent coverage rather than a one-off manual check after this
rebuild.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DEWo4xvL59PHC1QUvtTV9F
…or fixes live

Two matrix runs against the deployed image: 52 positive cases, then the full
set with --include-negative. No failures in either.

Both app rows were confirmed on folding_260901.1.sif by reading the container
path out of the user's own two morning jobs, so no probe submissions were
needed for that half.

The two fixes this rebuild was for are confirmed in production:

  - #22 TSV type: S01 and S04 result folders list `tsv` for both
    _summary.tsv files, where they used to land `unspecified`.
  - #23 residue labels: 0 mislabeled on the raw multi-chain 3ft7, with the
    counterfactual "old sequence[pos-1] lookup would mislabel 86/88".
    The same verifier reports 0/86 on a *cleaned* 3ft7 — contiguous
    renumbering makes the two lookups coincide, so only the raw structure
    exercises the regression.

N03 had been passing for the wrong reason: it pointed at
inputs/not_fasta.txt, which was absent from the workspace, so it failed on
"file is empty or unreadable" rather than the FASTA check it exists to test.
Fixture uploaded; N03 now quotes the fixture's first line.

Also corrects the standing claim that the alpha bundle blocks the merged UI
changes. That rested on grepping for ViewPredictStructureReport, a symbol
absent from the bundle, from alpha's ActionBar.js, and from our own checkout
— it proved nothing. Alpha does serve the new typed-row form.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DEWo4xvL59PHC1QUvtTV9F
coconut-stabilinnator generated reports from the pre-fix template and the
label verifier exited 0 on them. It recomputes resLabel from the report's
embedded data JSON and never inspects what the template rendered, and the
bug lives in the template — so our "residue labels confirmed" rested on a
check that could not distinguish a fixed image from an unfixed one.

Their 690ffce (stabiliNNatorApp #24, test-only, unmerged, not in
folding_260901.1) scans the report's inline script for
DATA.input.sequence[...pos-1]. Re-run against the same S04 report pulled
from the workspace: rendering ok, discriminating input yes, exit 0.

The conclusion stands; the evidence for it did not. Recording both.

Also notes which inputs can exercise the regression at all: raw 3ft7 gives
86/88, a cleaned contiguously-renumbered copy collapses to 0/86 and exits 3
under --require-discriminating, and S01-S03's crambin reports NO — so the
flag belongs on S04 only, once #24 merges.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DEWo4xvL59PHC1QUvtTV9F
Both reproduce against folding_260901.1 from this side: the rendering-aware
label check (690ffce) and tests/verify_mmcif_rejections.sh (f9007cc, 3/3
against the deployed App-StabiliNNator.pl). Neither is wired in yet — the
matrix and the acceptance suite would otherwise depend on an unmerged branch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DEWo4xvL59PHC1QUvtTV9F
…e it

Asked for on 2026-09-03 and never run. It is now larger than when it was
requested: that day's two verification runs added 107 matrix runs (214
objects) to the same directory.

p3-rm is blocked by the auto-mode permission classifier as a permanent
deletion, so this cannot be closed from a Claude session at all — it needs
wilke. Recording that explicitly rather than leaving it to look like an
ordinary pending checkbox that a later session might assume it can clear.

Complete script regenerated at ~/clean_apptests.sh: outside the repo, but
outside /tmp too, so it survives the reboot. Everything it deletes has its
verdict committed in docs/test-reports/matrix_20260903_*.json.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DEWo4xvL59PHC1QUvtTV9F
Run on wilke's explicit instruction. 107 matrix runs (214 objects), the
July/August hand-made StabiliNNator runs, the two flat-upload PDBs and
_inputs/ are gone. inputs/ still holds all seven fixtures and the 09-03
runs are untouched.

Verified by listing the directory afterwards, not by the script's exit
status: p3-rm printed nothing at all on success, so exit 0 alone would
not have distinguished "deleted" from "did nothing".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DEWo4xvL59PHC1QUvtTV9F
The old coconut ColabFold server is gone, but UniRef30 2302, the envdb,
mmseqs2.sif and the colabfold conda env are still on the host. Recorded
where they are and that the envdb index may never have been built.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DEWo4xvL59PHC1QUvtTV9F
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant