Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Challenge Closeout Retention Guard

This module adds a focused post-challenge closeout guard for issue #18, Scientific Bounty System.

It validates what happens after a scientific bounty has been awarded, cancelled, or closed without award:

- Sponsor data-room access must be revoked after the closeout deadline.
- Restricted sponsor datasets must be returned, destroyed, or retained under an explicit legal hold.
- Solver IP transfer must stay blocked until settlement is funded and recorded.
- Reviewer/arbitration records must remain retained for the appeal window.
- Private challenge outputs must be redacted before any public winner announcement.
- Cancelled or no-award challenges must preserve solver work and compensation evidence.

The guard is dependency-free and uses synthetic records only. It emits deterministic JSON, Markdown, SVG, and MP4 artifacts for reviewer inspection.

## Files

- `guard.js` - closeout policy engine and report renderers.
- `data/closeout-records.json` - synthetic post-challenge closeout records.
- `demo.js` - generates JSON, Markdown, and SVG artifacts in `artifacts/`.
- `make-demo-video.js` - builds a short local MP4 demo with `ffmpeg`.
- `test.js` - dependency-free regression checks using Node's built-in `assert`.

## Verification

```sh
node scientific-bounty-system/challenge-closeout-retention-guard/test.js
node scientific-bounty-system/challenge-closeout-retention-guard/demo.js
node scientific-bounty-system/challenge-closeout-retention-guard/make-demo-video.js
```

## Scope Boundary

This is not another intake, rubric-readiness, scoring, arbitration, payout eligibility, sponsor scorecard, IP-redaction preview, data-room access grant, cancellation/no-award, or solver-withdrawal module. It focuses on the final closeout boundary after solver work has ended: revocation, destruction/return evidence, appeal-record retention, settlement-gated IP transfer, and public disclosure readiness.
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
{
"generatedBy": "challenge-closeout-retention-guard",
"packetId": "challenge-closeout-demo-001",
"generatedAt": "2026-05-28T00:00:00Z",
"decision": "hold-closeout",
"riskScore": 32,
"severityCounts": {
"critical": 2,
"high": 6,
"medium": 2,
"low": 0
},
"challenges": [
{
"challengeId": "climate-model-prize",
"challengeTitle": "Regional climate downscaling model prize",
"outcome": "awarded",
"daysSinceClose": 8
},
{
"challengeId": "oncology-biomarker-private",
"challengeTitle": "Private oncology biomarker discovery challenge",
"outcome": "awarded",
"daysSinceClose": 14
},
{
"challengeId": "quantum-noise-cancelled",
"challengeTitle": "Quantum noise mitigation prototype",
"outcome": "cancelled",
"daysSinceClose": 3
}
],
"findings": [
{
"challengeId": "oncology-biomarker-private",
"challengeTitle": "Private oncology biomarker discovery challenge",
"code": "active-data-room-access-after-closeout",
"severity": "critical",
"domain": "access revocation",
"evidence": "solver-team-beta still has solver access to sponsor-rnaseq-training-cohort 14 days after closeout; policy requires revocation within 2 days.",
"action": "Revoke access, rotate shared credentials, and record the revocation event before closeout is accepted.",
"closeoutHold": true
},
{
"challengeId": "oncology-biomarker-private",
"challengeTitle": "Private oncology biomarker discovery challenge",
"code": "restricted-data-disposition-missing",
"severity": "high",
"domain": "data retention",
"evidence": "sponsor-rnaseq-training-cohort is restricted and has no destruction, return, or legal-hold disposition.",
"action": "Collect a destruction certificate, return receipt, or legal-hold order for the restricted dataset.",
"closeoutHold": true
},
{
"challengeId": "oncology-biomarker-private",
"challengeTitle": "Private oncology biomarker discovery challenge",
"code": "destruction-evidence-missing",
"severity": "high",
"domain": "data retention",
"evidence": "sponsor-clinical-labels is marked destroyed without a certificate or audit evidence identifier.",
"action": "Attach the destruction certificate hash or reviewer-verifiable evidence identifier.",
"closeoutHold": true
},
{
"challengeId": "oncology-biomarker-private",
"challengeTitle": "Private oncology biomarker discovery challenge",
"code": "ip-transferred-before-funded-settlement",
"severity": "critical",
"domain": "IP transfer",
"evidence": "IP status is transferred while settlement status is pending.",
"action": "Reverse the transfer state or block sponsor use until funded settlement is recorded.",
"closeoutHold": true
},
{
"challengeId": "oncology-biomarker-private",
"challengeTitle": "Private oncology biomarker discovery challenge",
"code": "appeal-record-retention-too-short",
"severity": "high",
"domain": "appeal records",
"evidence": "Appeal records are retained for 32 days, below the 60-day policy.",
"action": "Extend arbitration and appeal record retention before deleting review evidence.",
"closeoutHold": true
},
{
"challengeId": "oncology-biomarker-private",
"challengeTitle": "Private oncology biomarker discovery challenge",
"code": "private-challenge-disclosure-unredacted",
"severity": "high",
"domain": "public disclosure",
"evidence": "Public disclosure is enabled for a private challenge without approved redactions.",
"action": "Block announcement until sponsor data, solver trade secrets, and reviewer identities are redacted.",
"closeoutHold": true
},
{
"challengeId": "oncology-biomarker-private",
"challengeTitle": "Private oncology biomarker discovery challenge",
"code": "closeout-audit-digest-unsigned",
"severity": "medium",
"domain": "audit evidence",
"evidence": "Closeout audit digest status is draft.",
"action": "Sign the closeout digest after revocation, retention, and settlement checks complete.",
"closeoutHold": false
},
{
"challengeId": "quantum-noise-cancelled",
"challengeTitle": "Quantum noise mitigation prototype",
"code": "cancelled-challenge-compensation-missing",
"severity": "high",
"domain": "solver protection",
"evidence": "The challenge was cancelled after work started, but no partial-compensation decision is recorded.",
"action": "Record partial compensation, refund, or no-compensation rationale before final closeout.",
"closeoutHold": true
},
{
"challengeId": "quantum-noise-cancelled",
"challengeTitle": "Quantum noise mitigation prototype",
"code": "appeal-record-retention-too-short",
"severity": "high",
"domain": "appeal records",
"evidence": "Appeal records are retained for 11 days, below the 30-day policy.",
"action": "Extend arbitration and appeal record retention before deleting review evidence.",
"closeoutHold": true
},
{
"challengeId": "quantum-noise-cancelled",
"challengeTitle": "Quantum noise mitigation prototype",
"code": "closeout-audit-digest-unsigned",
"severity": "medium",
"domain": "audit evidence",
"evidence": "Closeout audit digest status is unsigned.",
"action": "Sign the closeout digest after revocation, retention, and settlement checks complete.",
"closeoutHold": false
}
],
"closeoutActions": [
"Approve redactions before publishing private-challenge outcomes.",
"Collect destruction, return, or legal-hold evidence for restricted sponsor datasets.",
"Gate IP transfer and sponsor use until funded settlement is recorded.",
"Publish solver-facing closeout rationale and compensation decisions.",
"Retain arbitration records through the policy appeal window.",
"Revoke stale data-room and reviewer access, then rotate shared challenge credentials."
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Challenge Closeout Retention Guard

Decision: hold-closeout
Risk score: 32

## Severity Counts

| Severity | Count |
| --- | ---: |
| critical | 2 |
| high | 6 |
| medium | 2 |
| low | 0 |

## Challenge Summary

| Challenge | Outcome | Days Since Close |
| --- | --- | ---: |
| Regional climate downscaling model prize | awarded | 8 |
| Private oncology biomarker discovery challenge | awarded | 14 |
| Quantum noise mitigation prototype | cancelled | 3 |

## Findings

### CRITICAL: active-data-room-access-after-closeout
Challenge: Private oncology biomarker discovery challenge
Evidence: solver-team-beta still has solver access to sponsor-rnaseq-training-cohort 14 days after closeout; policy requires revocation within 2 days.
Action: Revoke access, rotate shared credentials, and record the revocation event before closeout is accepted.

### HIGH: restricted-data-disposition-missing
Challenge: Private oncology biomarker discovery challenge
Evidence: sponsor-rnaseq-training-cohort is restricted and has no destruction, return, or legal-hold disposition.
Action: Collect a destruction certificate, return receipt, or legal-hold order for the restricted dataset.

### HIGH: destruction-evidence-missing
Challenge: Private oncology biomarker discovery challenge
Evidence: sponsor-clinical-labels is marked destroyed without a certificate or audit evidence identifier.
Action: Attach the destruction certificate hash or reviewer-verifiable evidence identifier.

### CRITICAL: ip-transferred-before-funded-settlement
Challenge: Private oncology biomarker discovery challenge
Evidence: IP status is transferred while settlement status is pending.
Action: Reverse the transfer state or block sponsor use until funded settlement is recorded.

### HIGH: appeal-record-retention-too-short
Challenge: Private oncology biomarker discovery challenge
Evidence: Appeal records are retained for 32 days, below the 60-day policy.
Action: Extend arbitration and appeal record retention before deleting review evidence.

### HIGH: private-challenge-disclosure-unredacted
Challenge: Private oncology biomarker discovery challenge
Evidence: Public disclosure is enabled for a private challenge without approved redactions.
Action: Block announcement until sponsor data, solver trade secrets, and reviewer identities are redacted.

### MEDIUM: closeout-audit-digest-unsigned
Challenge: Private oncology biomarker discovery challenge
Evidence: Closeout audit digest status is draft.
Action: Sign the closeout digest after revocation, retention, and settlement checks complete.

### HIGH: cancelled-challenge-compensation-missing
Challenge: Quantum noise mitigation prototype
Evidence: The challenge was cancelled after work started, but no partial-compensation decision is recorded.
Action: Record partial compensation, refund, or no-compensation rationale before final closeout.

### HIGH: appeal-record-retention-too-short
Challenge: Quantum noise mitigation prototype
Evidence: Appeal records are retained for 11 days, below the 30-day policy.
Action: Extend arbitration and appeal record retention before deleting review evidence.

### MEDIUM: closeout-audit-digest-unsigned
Challenge: Quantum noise mitigation prototype
Evidence: Closeout audit digest status is unsigned.
Action: Sign the closeout digest after revocation, retention, and settlement checks complete.

## Closeout Actions

- Approve redactions before publishing private-challenge outcomes.
- Collect destruction, return, or legal-hold evidence for restricted sponsor datasets.
- Gate IP transfer and sponsor use until funded settlement is recorded.
- Publish solver-facing closeout rationale and compensation decisions.
- Retain arbitration records through the policy appeal window.
- Revoke stale data-room and reviewer access, then rotate shared challenge credentials.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading