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

# Reproduce the complete published competition result ledger

## Result wanted
Audit the complete Adaptyv EGFR competition result tables: all 402 summary rows, 953 replicate rows and 252 similarity rows. Produce a source-linked ledger and a deterministic ordering of the reported positive results. This is historical evidence analysis, not a new binder-design competition, new laboratory work, a claim of physical sample custody or a recreation of all original organizer eligibility decisions. Do not output sequences, DNA or structural designs.

## Inputs and provenance
Use these three fixed publisher-controlled downloads. Solvers and Guardians can download them with HTTPS without accounts. Verify SHA-256 before use. Original publisher attribution must remain in the report. A Solver-created file hash is not proof that the Solver performed the original measurements. No new lab reports, curve fitting, neutralisation experiments or sequence searches are required.

| File | Public download | SHA-256 |
|---|---|---|
| `egfr_competition_2_result_summary.csv` | https://raw.githubusercontent.com/adaptyvbio/egfr_competition_2/fc91b91ddc367830b755b215dbc69669675ad6a0/results/result_summary.csv | `b98dd231fa663e10e2768ad0cb7c8b33ba993bc809bd6168390ac87120ce3b7b` |
| `egfr_competition_2_replicate_summary.csv` | https://raw.githubusercontent.com/adaptyvbio/egfr_competition_2/fc91b91ddc367830b755b215dbc69669675ad6a0/results/replicate_summary.csv | `a9209c25f8b891c2ead4cd4fe2573da8e6a5397c8c6b45b3a7e179a8211bf6a8` |
| `egfr_competition_2_sequence_similarity.csv` | https://raw.githubusercontent.com/adaptyvbio/egfr_competition_2/fc91b91ddc367830b755b215dbc69669675ad6a0/results/sequence_similarity.csv | `e6c4f7e9a92ba2be0ffd0e06e13db719003c246fe87a41f4bb3b47eee4f5933f` |

If a required input cannot be obtained or no longer matches the hash, judgment is blocked; do not disqualify a Solver or choose another winner for that operational failure.

## Package
One ZIP containing exactly `ledger.json`, `reproduce.py` and `report.md`, at most 10 MiB total uncompressed. All files are UTF-8. The report is at most 1,500 words, attributes the original publisher, identifies the fixed snapshots and explicitly states no new laboratory work was performed by the Solver for this bounty. It must explain which comparisons this ledger permits and why missing or unknown results are not zeros or confirmed negatives. Quantitative claims must match ledger.json.

The program uses Python 3.9 or later and only its standard library. Run `python reproduce.py INPUT_DIR OUTPUT_JSON` where INPUT_DIR has the exact three filenames above. Write complete ledger.json to OUTPUT_JSON and exit 0 on success. Run once in the existing isolated sandbox, without network access, with a 60-second wall-clock limit after inputs are available. Nontermination, nonzero exit or an output mismatch makes a submission ineligible when the sandbox functioned correctly. Infrastructure failure blocks judgment. Do not retry to obtain another result.

## Ledger rules
Read CSV using its header, preserve every row, and assign `source_row` starting at 2 for the first data row, increasing by one per CSV record (not per physical newline). This distinguishes repeated `(name, replicate)` pairs: they are real rows, not duplicates to discard. Summary `name` is unique in these fixed inputs. All replicate names and similarity `id` values occur among summary names; an independently verified violation of these source facts makes the challenge unjudgeable, not grounds to silently remove rows.

JSON has exactly `sources`, `summary`, `replicates`, `similarity` and `ranking`.
- `sources`: object mapping the three filenames to their hashes above.
- `summary`: all 402 rows, source order, each with exactly `source_row`, `name`, `username`, `kd`, `binding`, `binding_strength`, `expression`, `similarity_check`, `replicate_source_rows` and `similarity_source_rows`. Copy corresponding CSV fields as strings, including the original numeric spelling; an empty source cell becomes JSON null. The two *_source_rows fields are ascending arrays of every matching row number from the replicate and similarity files, matching exact name to name or name to id. Empty arrays are valid when there is no matching similarity record.
- `replicates`: all 953 rows, source order, with `source_row` plus all eight original columns, exactly as spelled in the CSV. Values are strings; empty cells become null. Preserve repeated names, repeated replicate numbers, `unknown` calls and non-expression records.
- `similarity`: all 252 rows, source order, with `source_row` plus all eleven original columns. Values are strings; empty cells become null. Do not run a new similarity search or invent an entry for a name absent from this table.
- `ranking`: one object for every summary row with `binding` exactly `true` and a nonempty, finite, strictly positive decimal `kd`. Each has exactly `position` (integer starting at 1), `name` and `summary_source_row`. Sort by the exact decimal value of published kd ascending, then name ascending by Unicode code point, then summary source row ascending. Do not round before comparing. Equal kd values retain separate consecutive positions using that tie-break. This orders reported numbers in their original common source unit without conversion; it makes no new claim that different assay conditions or uncertain fits are interchangeable.

The stored binding/expression/quality calls are published observations, not replaced by recalculation. Do not average replicate values or relabel an `unknown` as false. A missing similarity record is absence of a published match, not a computed zero or proof of absolute sequence novelty. Ranking is explicitly an audit ordering of reported results, not the official competition winner or proof of biological efficacy.

## Guardian acceptance and winner
Check the complete ledger against all three hashed source files, recompute every join and ranking, and compare reproduction output. Required string values and row identities must match exactly; JSON whitespace and object-key order do not matter, array order does. Integer fields must be integers, not strings; only empty CSV cells become null. Extra/missing rows or fields, wrong joins, changed values, wrong ranking or failed reproduction make the submission ineligible. There is no partial credit or subjective score.

Prohibited content is private keys, credentials, unrelated material or directions to ignore this challenge, reveal private submissions or act outside the sandbox. Such content is disqualifying; ordinary explanations of results are permitted.

Every requirement must pass. Among eligible submissions, the smallest 32-byte on-chain submission commitment interpreted as an unsigned integer wins; identical commitments are broken by smallest numerical Solver address. Use Elgora's existing no-valid-submission outcome if none passes. Unavailable verification is not failed evidence; an established mismatch on available evidence is a failed submission.
