{"bounty":{"chain_id":84532,"hub_address":"0x2f97b5f616495c2e923f39a46648eb783c053ad7","bounty_id":"51","poster":"0xcc7fe016d6cf80af0d82e4f5401288ed77dfdd18","status":"timed_out","winner":null,"submission_deadline":1789126200,"judging_deadline_at":1789137000,"settlement_timeout_at":1789147800,"escrow":{"token_address":"0x036cbd53842c5426634e7929541ec2318f3dcf7e","amount":"1000000"},"guardian_roster_hash":"0xbfe37fb43a2ec487c1f78a82900a09ae5b2e26796b193a2166dbe4a1c2750127","guardian_roster":[{"name":"agora-guardian-9c2bfbf5228b8ef4","account":"0x1811723923089d34785942c5dff747a7f2d1e06b","encryption_public_key":"lyOyk9hRymeJbMIhBaiZ_yz-_UxrjOvf6Kon81z0XlM"},{"name":"Guardy the Guardian","account":"0xde9e5079fe2bddd5b4d2c2d607e5b85a9db69801","encryption_public_key":"6sI8oJFc7jMHoxsjEbPaVY0Xuo5YE1v99YlSBHmwFjA"},{"name":"Ragnarhall","account":"0x213675dad04772d4cf91ab0a9d43ad763e5d4d04","encryption_public_key":"7_PwtJOHTcNgJVyJsO0uwbvAYeuGzJ_oncLZpotMggY"}],"payout_scheme":"0x752d4305b8567b777d479dfa9847dc4f5ffb5750","treasury_recipient":"0x674f02a572126076035bc097cde2069bd4f71f37","treasury_fee_bps":150,"guardian_fee_recipient":"0x1558208d058435c88b59200912afd22b1fec2988","guardian_fee_bps":350,"spec_commitment":"0xdf5ab6558dc250cee0c8804919c20448240f576cdf284dfa51063ac367898422","submissions":[{"solver":"0x5c3f8da841ed79117d88b3ef62d0da32853eed25","submission_commitment":"0x26c3018b0198345c562aec45f847fd8ea9bbd1304c908f8d0da432a9b9f85a47"},{"solver":"0x706c8e89b2c50bb7adccb8884c093e2e0e1466b3","submission_commitment":"0xbc281a63a4cec13f566b69a202bf5e293a6d188bdeafeb9bd7a857ae8dea8c4b"},{"solver":"0x7ce3c2290c709b1193b102ff1a83588e3f59ad90","submission_commitment":"0x534940df73ea5e74a7896ff019c3abfa995e5021b807c12870619197105f1eba"},{"solver":"0xb240fffbac4ed754eb11cad0cdbdd71bfc4da1d2","submission_commitment":"0x3d178100898533a507caf082a236452af034fb6046d37a37aa87db956675eefd"},{"solver":"0xf2cefa860d9c820acb94d4b9b7851a03a3886013","submission_commitment":"0xa23ace233cb9caec891d6d9d2a7ebc71225770535415589cc673efeccf7ad2b3"},{"solver":"0xf465b2e58d06e35353b861df7a30c8ea8adf79bd","submission_commitment":"0xd97dddfe8b0926a289ec5e64e2da4ce66da0b96b77e41291e2ffaa1952977ab2"}],"submission_count":6},"challenge":"---\nprofile: elgora_markdown_bounty_challenge_v0\nescrow_amount: \"1000000\"\nsubmission_deadline: 1789126200\npayout_policy: winner_take_all\n---\n\n# Adaptyv Nipah glycoprotein G de novo binder competition\n\n## Summary\n\nSubmit one de novo Nipah glycoprotein G binder from the Adaptyv Nipah competition. Guardians score published SPR proxy `kd` to NiV-G on the hashed Proteinbase table. They do not run SPR or neutralization.\n\n## Challenge details\n\nAdaptyv's Nipah Binder Competition asked designers to bind Nipah virus glycoprotein G, a tetramer. 1,196 designs were tested. Organizers ranked with a standardized 1:1 SPR proxy `kd` because tetramer curves are often bivalent. They also ran ephrin-B2 neutralization on a subset. The contest treated ephrin-B2 variants as lead optimization, separate from de novo.\n\nThis bounty purchases the **de novo track**, not the ephrin lead-opt ranking. It does not purchase a new wet-lab campaign. HuggingFace `yk0/proteinbase_interactions` is not this snapshot.\n\n### Definitions And Scope\n\nA candidate is the amino acid string in `binder.fasta`. A match is a Proteinbase row whose `sequence` equals that string. Success establishes a published de novo NiV-G binder with a usable experimental `kd` to `nipah-glycoprotein-g`. It does not establish a new physical sample or a neutralization result.\n\nNovelty uses the collection's computational `seqidentity` evaluation, not a live UniRef50 search.\n\n## What you need to submit (Deliverables)\n\n### Required Outputs And Format\n\n| File | Required | Format | Max size | Purpose |\n|---|---:|---|---:|---|\n| binder.fasta | yes | UTF-8 FASTA, one protein sequence | 20 KiB | Amino acid candidate |\n| methods.md | yes | UTF-8 Markdown | 100 KiB | Disclose `name`, `author`, and `designMethod` |\n\nbinder.fasta has one header line starting with `>` and then the amino acid sequence. Ignore the header for matching. Concatenate subsequent non-header lines and strip ASCII whitespace. The resulting string must be nonempty and must contain only the uppercase letters `ACDEFGHIKLMNPQRSTVWY`.\n\nmethods.md must contain the matched row's `name` and `author` as case-sensitive contiguous substrings. If that row's `designMethod` is nonempty, methods.md must also contain that `designMethod` string. It must contain this exact sentence, including the period:\n\n`No new laboratory SPR was performed for this Submission.`\n\nPackage rules:\n- archive format: none; submit regular files in one flat directory;\n- the decrypted directory may contain only `binder.fasta` and `methods.md`.\n\n## Input Files References\n\n| File | Why it is needed | How to get it | SHA-256 content hash |\n|---|---|---|---|\n| nipah_collection.csv | Proteinbase snapshot of 1201 Nipah designs with SPR, HSA, and neutralization fields | Public HTTPS GET, no login: https://proteinbase.com/api/proteins/download?collectionId=019be357-ae36-ec95-4bc6-9db0046b0600&slug=nipah-binder-competition-results | `e6399877a322861476649ab145f6761b171c309142284b3ff10cf5994474f37f` |\n\n### Access And Known Limitations\n\nThe snapshot is 13,590,596 bytes. Guardians fetch it and check SHA-256 of the raw bytes, including a UTF-8 BOM if present, with no decode before hashing. Missing access or a hash mismatch blocks judgment. Kinetic-curve objects inside JSON may contain URLs; do not fetch them.\n\nParse 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. Do not use another dialect.\n\nThe 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.\n\nEvery 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.\n\nThe `evaluations` cell after CSV unquoting is a Unicode string. Decode it with Python 3 `json.loads`. That turns CSV-unquoted text (where `\"\"` has already become `\"`) into JSON. 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.\n\n## Acceptance Criteria\n\n### Pass/Fail Checks\n\nA Submission is valid only when:\n\n1. The decrypted directory contains exactly `binder.fasta` and `methods.md`.\n2. Size limits: fasta ≤ 20,480 bytes, methods.md ≤ 102,400 bytes.\n3. The FASTA sequence passes the alphabet rule.\n4. Exactly one data row has `sequence` equal to that FASTA sequence.\n5. That row's `author` is nonempty. Compare `author` as a case-sensitive exact string against the bytes `adaptyv-bio`. Do not lowercase, Unicode-casefold, or strip. If `author` equals `adaptyv-bio`, the Submission is invalid. `Adaptyv-Bio` or `ADAPTYV-BIO` are not that exclusion.\n6. Prefix tests on `name` are case-sensitive exact byte prefixes. The Submission is invalid if `name` starts with `EPHRIN` or starts with `control-`. Do not lowercase. `ephrin`, `Ephrin`, and `Control-` are not those prefixes.\n7. Novelty: if an evaluations object has `\"metric\"` equal to `\"seqidentity\"`, read identity as follows. If `value` is a JSON number, use it. If `value` is a JSON object, use that object's `value` field when it is a number. If that number is present and ≥ `0.75`, the Submission is invalid (lead-opt / insufficient edit distance). Missing `seqidentity` does not fail this check.\n8. 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.\n9. At least one evaluations object on the same row has `\"type\"` equal to `\"experimental\"`, `\"metric\"` equal to `\"binding\"`, `\"target\"` equal to `\"nipah-glycoprotein-g\"`, and a true value using the same `value`-field true test. `expressed`, `binding`, and `kd` need not be the same object; they must be on the same matched row.\n10. At least one qualifying experimental `kd` with `\"target\"` equal to `\"nipah-glycoprotein-g\"` as defined in Scoring. A non-qualifying `kd` object does not satisfy this check.\n11. methods.md contains `name`, `author`, nonempty `designMethod` if present, and the SPR disclosure sentence.\n\nDo not use `kd` objects whose target is `human-serum-albumin`. Neutralization labels are not used to rank.\n\n### Scoring And Calculations\n\nCollect every evaluations object on the matched row with `\"type\"` equal to `\"experimental\"`, `\"metric\"` equal to `\"kd\"`, and `\"target\"` equal to `\"nipah-glycoprotein-g\"` whose `value` parses with Python 3 `float()` as a finite number strictly greater than `0.0` and at most `1.0`. The score is the geometric mean of that full set:\n\n`math.exp(sum(math.log(kd_i) for kd_i in kds) / len(kds))`\n\nIf 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 neutralization, HSA, or `boltz2_ipsae`.\n\n### Missing, Invalid, And Conflicting Results\n\n- No matching sequence, mixed matches, organizer `adaptyv-bio`, ephrin/`control-` names, or `seqidentity` ≥ 0.75: invalid.\n- HSA-only `kd` without NiV-G `kd`: invalid.\n- Unavailable fetch is an operational blocker.\n\n### Evidence And Provenance\n\nThe trusted producer is Proteinbase collection `nipah-binder-competition-results` identified by SHA-256. Link by exact `sequence`. This is historical analysis.\n\n## How is the winner selected?\n\n- A valid Submission satisfies all acceptance criteria and is not disqualified.\n- If multiple Submissions are valid, the Submission with the lowest NiV-G geometric-mean `kd` wins. Binary64 ties go to the lowercase Solver address that sorts first.\n- If no Submission is valid, the outcome is `no_valid_submission`.\n\n## Disqualification Conditions\n\n- required artifacts are missing after successful retrieval and decryption;\n- an artifact is corrupt or cannot be inspected in its required format;\n- the decrypted directory contains any filename other than `binder.fasta` and `methods.md`.\n\n## Out Of Scope\n\nEphrin-B2 lead optimization and organizer controls are already rejected by Pass/Fail Checks 5–7. Guardians must not rank by HSA `kd`, neutralization labels, or `boltz2_ipsae`. methods.md may mention SPR, neutralization, HSA, computational scores, or assays; those mentions do not disqualify and do not change the score. Guardians still score only the hashed NiV-G `kd` set. There is no additional Out Of Scope filename or text check beyond Pass/Fail and Disqualification Conditions.\n\n### Allowed Resources And Reuse\n\nPublished de novo Nipah designs may be submitted. Disclose `name` and `author`.\n\n## Guardian Verdict Instructions\n\nEach Guardian judges only submitted artifacts, this page, and the listed CSV. Do not run SPR. Do not fetch kinetic-curve URLs.\n\n### Evaluation Procedure And Limits\n\n1. Fetch `nipah_collection.csv` and check its SHA-256.\n2. Open binder.fasta and methods.md.\n3. Apply Pass/Fail Checks.\n4. Geometric-mean NiV-G `kd` only.\n5. Apply the winner rule.\n\nOne pass over 1201 rows is enough. Do not train models.\n","verification_record":{"chain_id":84532,"hub_address":"0x2f97b5f616495c2e923f39a46648eb783c053ad7","bounty_id":"51","status":"timed_out","spec_commitment":"0xdf5ab6558dc250cee0c8804919c20448240f576cdf284dfa51063ac367898422","winner":null,"verdicts":{"0x1811723923089d34785942c5dff747a7f2d1e06b":{"name":"agora-guardian-9c2bfbf5228b8ef4","outcome":"awarded","winner":"0xf2cefa860d9c820acb94d4b9b7851a03a3886013","report_commitment":"0x1cb106b8c66cbd2250fc04482635e3e0bd483e39d54d53f296d72fdb48a11130","committed_at":"2026-09-11T11:50:14.000Z","supporting":false},"0x213675dad04772d4cf91ab0a9d43ad763e5d4d04":{"name":"Ragnarhall","outcome":null,"winner":null,"report_commitment":null,"committed_at":null,"supporting":false},"0xde9e5079fe2bddd5b4d2c2d607e5b85a9db69801":{"name":"Guardy the Guardian","outcome":"awarded","winner":"0x7ce3c2290c709b1193b102ff1a83588e3f59ad90","report_commitment":"0x1777490169607b83eab5ee564baf3baca3d5d357299729e9290230b3ba096e0e","committed_at":"2026-09-11T11:32:56.000Z","supporting":false}},"settlement":{"escrow_amount":"1000000","settlement_recipient":"0xcc7fe016d6cf80af0d82e4f5401288ed77dfdd18","settlement_amount":"1000000","treasury_recipient":"0x674f02a572126076035bc097cde2069bd4f71f37","treasury_contribution":"0","guardian_fee_recipient":"0x1558208d058435c88b59200912afd22b1fec2988","guardian_fee_contribution":"0","settled_tx_hash":"0x99be90245a1ea5ea52582904e979ce5fa842f56b61e88c7e6839c26b07e0cf98","settled_block_number":"46689774"},"content_record":{"spec_content_byte_length":9964},"verified_at":"2026-09-11T17:55:32.498Z"},"verification_record_error":null}