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

# Audit the complete published peptide competition spreadsheet

## Result wanted
Produce a reproducible audit of all 1,522 data rows in the published Tsinghua Round 2 workbook. Show reported scores, missing measurements and stored formulas without turning blanks into zero or inventing laboratory results. This is historical data analysis, not new peptide design, new experiments or a claim that the Solver performed the original laboratory work. Do not output sequences or experimental procedures. The task covers every data row, with the eight specified result columns; other columns are not required.

## Source and access
Download https://www.fbs.frcbs.tsinghua.edu.cn/2025-Peptide-Design-Round-2-Result4.xlsx and save it as `peptide_round2.xlsx`. SHA-256 must be `4f861629a8ed79038e181c76f70ad6a13fe539fcc05afe500db34f2ce842cb3f`. Both Solvers and Guardians can retrieve it over HTTPS without an account. The publisher URL and fixed bytes establish the provenance of the published source, not proof of Solver laboratory work. No other input, lab account or new report is required. If unavailable or changed, verification is blocked, not a failed Solver result or permission to select another winner.

Use sheet `Round 2` (with a space), rows 2 through 1523 inclusive. Row 1 contains headers. Ignore the empty `Sheet1`. Identify rows by their worksheet row number, never by ID uniqueness: ID has blanks and mixed types.

## Deliverables and reproduction
Submit one ZIP containing exactly `audit.json`, `reproduce.py`, `requirements.txt` and `report.md`. Maximum total uncompressed size is 10 MiB. Files are UTF-8. `requirements.txt` contains exactly `openpyxl==3.1.5` plus an optional final newline. Use Python 3.9 or later, that library and the standard library only.

Run `python reproduce.py INPUT_DIR OUTPUT_JSON` in the existing isolated sandbox with no network; INPUT_DIR contains the verified workbook. Install the stated dependency before this execution. Write the complete audit to OUTPUT_JSON, exit 0, and compare it to submitted audit.json. Allow one 60-second execution after input and dependencies are available. A nonzero exit, timeout or mismatch makes a submission ineligible if the sandbox worked correctly. Infrastructure or dependency retrieval failure blocks judgment; do not disqualify the Solver or rerun to seek another outcome.

Report at most 1,500 whitespace-separated words. Attribute Tsinghua's published Round 2 workbook, state its hash and state that no new lab work was performed for this bounty. Explain why a blank is not a negative or zero, why a cached formula result is not an independent measurement, and why ordering published scores does not establish biological efficacy or recreate the original competition winner. All quantitative claims must agree with audit.json.

## Exact audit format
Use openpyxl 3.1.5 to read the workbook twice, with `data_only=False` and `data_only=True`. Do not recalculate formulas. JSON has exactly `source_sha256`, `sheet`, `columns`, `rows`, `coverage` and `ranking`.

- `source_sha256`: the hash above; `sheet`: exactly `Round 2`.
- `columns`: object with exactly A, H, I, J, K, L, M, N as keys, each mapped to the exact header string in row 1. These are ID, Synthesize, Score, Z_activity, Z_selectivity, the two published EC50 columns, and the publisher's ratio column respectively. Column letters, not a reinterpreted ratio label, govern extraction.
- `rows`: exactly 1,522 objects in worksheet order. Each has exactly `source_row` (integer 2–1523) and `cells`. `cells` has the same eight column keys. Each cell is an object with exactly `type`, `value`, `cached_value`. For a formula cell, type is `formula`, value is its exact formula string including `=`, cached_value is the data_only=True value (or null if absent). For other cells: type is `blank` for None, `number` for a numeric value, or `text` for a string; value is the data_only=False value unchanged, cached_value is null. These fixed selected cells contain only those types, no booleans, errors or dates. Numbers remain JSON numbers; text remains text; missing values remain null. Do not trim strings, round numbers, evaluate formulas or convert ID types.
- `coverage`: object with the eight column keys. Each maps to exactly `blank`, `number`, `text`, `formula`, each an integer count of that column's cell types across the complete rows. Include zero counts.
- `ranking`: one object for each row whose I cell is a finite number. Each has exactly `position` (consecutive integer from 1), `source_row` and `score`. Sort the read numeric score descending, then worksheet row ascending for exact equal scores. Copy the numeric score unchanged. Missing scores are excluded from ranking but remain in rows and coverage. No imputation, recomputation of Z scores, new thresholds or rounding is allowed.

For number comparison, use the values returned by the pinned library, exactly, with no tolerance or rounding. JSON integer and floating spellings representing the same number compare equally; strings do not equal numbers. Row and position fields must be integer-valued numbers. JSON object-key order and whitespace do not matter; arrays must have the specified order. Formula strings must match exactly. In particular, preserve the ratio's formula and its cached value without claiming the cached value is a fresh measurement or resolving its scientific interpretation.

## Guardian decision
Verify source hash; independently extract all specified cells, coverage counts and ranking under these rules; check complete reproduction and report. Every requirement must pass. Missing or extra rows, fields or files, altered values or formula strings, wrong counts/order, unsupported claims of new lab work, or failed reproduction make the submission ineligible. There is no partial credit. A verified contradiction of the stated source structure blocks judging rather than permitting invented data or silent row removal.

Prohibited content is private keys, credentials, unrelated files or directions to ignore this challenge, reveal private submissions or act outside the sandbox. Such content is disqualifying. Ordinary explanations of the audit are permitted.

Among eligible submissions, the smallest on-chain 32-byte submission commitment as an unsigned integer wins; equal commitments are broken by the smallest numerical Solver address. If none is eligible, use Elgora's existing no-valid-submission outcome. An unavailable required verification is not failed evidence; an established mismatch on available evidence fails the submission.
