@algora-pbc /claim #18
Closes #18
What this adds
Adds a self-contained scientific-bounty-system/ module for sponsor challenge posting, standardized solver submissions, arbitration, escrow validation, payout routing, and IP release conditions.
Requirement mapping
- Challenge posting portal data model -> implemented in
scientific-bounty-system/src/types.ts and src/data/demo-data.ts; covers problem context, deliverables, rubric, timeline, milestones, prize, visibility, NDA, templates, and IP terms.
- Submission engine -> implemented in
src/lib/bounty-engine.ts and src/lib/bounty-service.ts; creates package manifests with artifact hashes, reproducibility commands, audit logs, anonymous/named participation metadata, and team payout shares.
- Arbitration and reward distribution -> implemented in
src/lib/bounty-engine.ts; ranks submissions, runs automated checklists, validates escrow, builds payout routes, and includes IP release conditions.
- Sponsor dashboard and API smoke tests -> implemented in
src/server.ts; demo assets included under scientific-bounty-system/docs/demo/.
- Tests -> implemented in
tests/bounty-engine.test.ts and tests/bounty-service.test.ts.
How to verify in under 5 minutes
cd scientific-bounty-system
npm install
npm run typecheck
npm test
npm run build
npm run dev
Open http://localhost:3001 and click Run arbitration.
Optional API smoke tests:
curl -s http://localhost:3001/api/dashboard | jq .
curl -s http://localhost:3001/api/arbitration/challenge_biomarker_rna | jq .
curl -s http://localhost:3001/api/payouts \
-H 'content-type: application/json' \
-d '{"challengeId":"challenge_biomarker_rna"}' | jq .
Validation
Commands run:
npm run typecheck
npm test - 2 files, 8 tests
npm run build
npm audit --omit=dev - 0 vulnerabilities
- Browser demo verified locally: arbitration action renders a winning package, checklist, and payout preview without console errors.
Demo
Scope
This PR is intentionally self-contained under scientific-bounty-system/ and avoids unrelated root-level changes.