---
profile: elgora_markdown_bounty_challenge_v0
escrow_amount: "1000000"
submission_deadline: 1789126200
payout_policy: winner_take_all
---

# EPFL Protein Design Week GDF-8 / myostatin latent-complex binders

## Summary

Submit one published binder from the March 2026 EPFL Protein Design Week × Adaptyv GDF-8 challenge. Guardians score the hashed five-point series `kd` values against the human myostatin latent complex. They do not run the series.

## Challenge details

EPFL Protein Design Week (Designing Life with AI, March 2026) asked participants to design binders to latent GDF-8 / myostatin (UniProt O14793). Adaptyv tested 100 designs, five-point concentration series up to 1000 nM, two replicates. Six bound. Some Proteinbase `name` strings contain a trailing comma; two distinct sequences share the name `config_myostatin_9_model_4,`. Match by sequence, never by name alone.

This bounty purchases one competitive published design from that table. It does not purchase a new wet-lab campaign.

### Definitions And Scope

A candidate is the amino acid string in `binder.fasta`. A match is the unique Proteinbase row with that exact `sequence`. Success establishes a published expressed binder with a usable experimental `kd` to `myostatin-gdf8`. It does not establish a new physical sample.

## What you need to submit (Deliverables)

### Required Outputs And Format

| File | Required | Format | Max size | Purpose |
|---|---:|---|---:|---|
| binder.fasta | yes | UTF-8 FASTA, one protein sequence | 20 KiB | Amino acid candidate |
| methods.md | yes | UTF-8 Markdown | 100 KiB | Disclose the matched `name` and `author` |

binder.fasta: one `>` header, then amino acids. Ignore the header. Strip ASCII whitespace. Nonempty. Only `ACDEFGHIKLMNPQRSTVWY`.

methods.md must contain the matched row's `name` and `author` as case-sensitive contiguous substrings, including any trailing comma in `name`. If `designMethod` is nonempty, it must appear as a contiguous substring. It must contain this exact sentence, including the period:

`No new laboratory binding series was performed for this Submission.`

Package rules:
- archive format: none; one flat directory;
- only `binder.fasta` and `methods.md`.

## Input Files References

| File | Why it is needed | How to get it | SHA-256 content hash |
|---|---|---|---|
| gdf8_collection.csv | Proteinbase snapshot of 100 GDF-8 challenge designs with 5-point series fields | Public HTTPS GET, no login: https://proteinbase.com/api/proteins/download?collectionId=01a00ed9-421f-9953-3f8d-0ec6e583d2dd&slug=gdf-8-challenge-results | `6fe1cfe8ce1c3006f0e21156686540a9619226ee7d97837929cf025508680e11` |

### Access And Known Limitations

Guardians fetch the CSV and check SHA-256 of the raw bytes, including a UTF-8 BOM if present, with no decode before hashing. Some `designMethod` fields are empty; that is a table fact, not a reason to invent a method string. Missing access or a hash mismatch blocks judgment.

Parse the hashed bytes as follows. Decode as UTF-8-SIG (BOM stripped for parse only). Then read records with Python 3 `csv.reader` using the excel dialect and no other options: delimiter is the ASCII comma `,`; quote character is `"`; `doublequote` is true so a literal `"` inside a quoted field is encoded as `""`; `skipinitialspace` is false; `quoting` is `csv.QUOTE_MINIMAL`. Do not split on commas with a regex, semicolon, or tab.

The first record is the header row. Header cells are the cell text after CSV unquoting. Required header names, each exactly once and in this order: `id`, `name`, `sequence`, `author`, `designMethod`, `evaluations`. Extra columns after those six are ignored. Missing, reordered, or duplicate required headers: the snapshot cannot be used and judgment is blocked.

Every later record is one data row. Map cells to headers by name. If `csv.reader` raises `csv.Error`, or a record has fewer fields than the header, skip that record; it is not a data row and cannot match. Extra fields beyond the header are ignored.

The `evaluations` cell after CSV unquoting is a Unicode string. Decode it with Python 3 `json.loads`. If `json.loads` raises `json.JSONDecodeError`, `TypeError`, or `ValueError`, or the result is not a JSON array (Python `list`), that row has no evaluations objects.

## Acceptance Criteria

### Pass/Fail Checks

1. Exactly two files, named `binder.fasta` and `methods.md`.
2. Size limits 20,480 and 102,400 bytes.
3. FASTA alphabet rule.
4. Exactly one matching `sequence` row.
5. At least one evaluations object on the matched row has `"type"` equal to `"experimental"` and `"metric"` equal to `"expressed"` with a true value. Guardians inspect only that object's `value` field for this check. After `json.loads`, a true value is JSON `true`, Python `True`, or the strings `true` or `True`. Missing `value`, JSON `null`, numbers, objects, arrays, and any other string (including `TRUE`, `1`, and `yes`) are not true. Do not read `unit`, `valueType`, or any other field for this check.
6. At least one evaluations object on the same row has `"type"` equal to `"experimental"`, `"metric"` equal to `"binding"`, and a true value using the same `value`-field true test, and its `"target"` is either `"myostatin-gdf8"` or missing. `expressed`, `binding`, and `kd` need not be the same object.
7. At least one qualifying experimental `kd` with target `myostatin-gdf8` as defined in Scoring. A non-qualifying `kd` object does not satisfy this check.
8. methods.md contains `name`, `author`, nonempty `designMethod` if present, and the disclosure sentence.

Do not require two replicates when the hashed row published only one `kd`.

### Scoring And Calculations

Walk the matched row's `evaluations` JSON array from the first element to the last. A qualifying `kd` is an object whose `"type"` equals `"experimental"`, `"metric"` equals `"kd"`, and `"target"` equals `"myostatin-gdf8"`, all as case-sensitive exact strings, and whose `value` parses with Python 3 `float()` as a finite IEEE-754 binary64 number strictly greater than `0.0` and at most `1.0`. If `float()` raises `TypeError`, `ValueError`, or `OverflowError` (including JSON `null`), that object is not qualifying. Collect qualifying `kd` values in encounter order. Do not sort. Score is the geometric mean of that full list, omitting none:

`math.exp(sum(math.log(kd_i) for kd_i in kds) / len(kds))`

in IEEE-754 binary64 using Python 3 `math.log` and `math.exp` on that list, left to right. Do not round except as those binary64 operations. If the qualifying set is empty, or `math.exp` or `math.log` raises `OverflowError` or `ValueError`, the Submission is invalid. Lower is better. Do not convert units. Do not rank by `boltz2_ipsae`. Binary64-equal scores are ties and use the winner rule below.

### Missing, Invalid, And Conflicting Results

- Two rows sharing a name but different sequences: matching is by sequence; name collision is not a failure if exactly one sequence matches.
- No `myostatin-gdf8` `kd`: invalid.
- Unavailable fetch is an operational blocker.

### Evidence And Provenance

Trusted producer: Proteinbase `gdf-8-challenge-results` by SHA-256. Link by exact `sequence`. Historical analysis of the 5-point series table.

## How is the winner selected?

- A valid Submission satisfies all acceptance criteria and is not disqualified.
- Lowest geometric-mean `kd` wins. Binary64 ties go to the lowercase Solver address that sorts first.
- If no Submission is valid, the outcome is `no_valid_submission`.

## Disqualification Conditions

- required artifacts missing after successful retrieval and decryption;
- the decrypted directory contains any filename other than `binder.fasta` and `methods.md`.

UTF-8 decode failure, FASTA parse failure, or Markdown that cannot be read as UTF-8 text fails the corresponding Pass/Fail check. There is no separate “corrupt artifact” disqualification.

## Out Of Scope

Guardians must not rank by `boltz2_ipsae` or other computational scores. methods.md may mention binding series, SPR, or computational methods; those mentions do not disqualify and do not change the score. Guardians still score only the hashed `myostatin-gdf8` `kd` set. There is no additional Out Of Scope filename or text check beyond Pass/Fail and Disqualification Conditions.

### Allowed Resources And Reuse

Published challenge designs, including rows whose `author` is `adaptyv-bio`, may be submitted. Disclose `name` exactly.

## Guardian Verdict Instructions

Judge only submitted artifacts, this page, and the listed CSV. Do not run SPR.

### Evaluation Procedure And Limits

1. Fetch `gdf8_collection.csv` and check SHA-256.
2. Open binder.fasta and methods.md.
3. Apply Pass/Fail Checks. Match by sequence, not name.
4. Geometric-mean `myostatin-gdf8` `kd`.
5. Apply the winner rule.

One pass over 100 rows is enough.
