From f1fe853bd7c1a16068549347a4e78407fed112ba Mon Sep 17 00:00:00 2001 From: yunrongy424-oss Date: Thu, 28 May 2026 20:51:16 +0800 Subject: [PATCH] feat(bounty): Add challenge data-use agreement guard Add a standalone Scientific Bounty System guard that checks controlled datasets, active data-use agreements, permitted-use alignment, export clearance, retention duties, derived-artifact release scope, and sponsor packet redaction before sponsor review, payout, or IP handoff. Refs #18 Co-Authored-By: Codex --- challenge-data-use-agreement-guard/README.md | 21 ++ challenge-data-use-agreement-guard/demo.js | 144 +++++++++++++ challenge-data-use-agreement-guard/index.js | 199 ++++++++++++++++++ .../make-demo-video.py | 70 ++++++ .../reports/demo.mp4 | Bin 0 -> 88290 bytes .../reports/readiness-report.json | 130 ++++++++++++ .../reports/readiness-report.md | 29 +++ .../reports/readiness-summary.svg | 15 ++ challenge-data-use-agreement-guard/test.js | 150 +++++++++++++ 9 files changed, 758 insertions(+) create mode 100644 challenge-data-use-agreement-guard/README.md create mode 100644 challenge-data-use-agreement-guard/demo.js create mode 100644 challenge-data-use-agreement-guard/index.js create mode 100644 challenge-data-use-agreement-guard/make-demo-video.py create mode 100644 challenge-data-use-agreement-guard/reports/demo.mp4 create mode 100644 challenge-data-use-agreement-guard/reports/readiness-report.json create mode 100644 challenge-data-use-agreement-guard/reports/readiness-report.md create mode 100644 challenge-data-use-agreement-guard/reports/readiness-summary.svg create mode 100644 challenge-data-use-agreement-guard/test.js diff --git a/challenge-data-use-agreement-guard/README.md b/challenge-data-use-agreement-guard/README.md new file mode 100644 index 00000000..c3eff169 --- /dev/null +++ b/challenge-data-use-agreement-guard/README.md @@ -0,0 +1,21 @@ +# Challenge Data-Use Agreement Guard + +Standalone reviewer artifact for SCIBASE issue #18. + +This slice validates controlled scientific bounty materials before sponsor +review, payout release, or IP handoff. It checks active data-use agreements, +permitted-use alignment, export-control clearance, retention duties, derived +artifact release scope, and sponsor packet redaction. + +## Validation + +```bash +node challenge-data-use-agreement-guard/test.js +node --check challenge-data-use-agreement-guard/index.js +node --check challenge-data-use-agreement-guard/demo.js +node challenge-data-use-agreement-guard/demo.js +python challenge-data-use-agreement-guard/make-demo-video.py +``` + +All data is synthetic. The module does not call external services and does not +contain credentials, private research data, real participants, or payment data. diff --git a/challenge-data-use-agreement-guard/demo.js b/challenge-data-use-agreement-guard/demo.js new file mode 100644 index 00000000..fa7c170f --- /dev/null +++ b/challenge-data-use-agreement-guard/demo.js @@ -0,0 +1,144 @@ +const fs = require('fs'); +const path = require('path'); + +const { + buildSponsorPacket, + reviewChallengeDataUseReadiness +} = require('./index'); + +const challenge = { + id: 'scibase-challenge-18-dua-demo', + title: 'Controlled Omics Benchmark Challenge', + controlledDatasets: [ + { + id: 'public-baseline', + tier: 'open', + permittedUses: ['whitepaper', 'model-training'], + retentionDays: 365 + }, + { + id: 'controlled-omics', + tier: 'controlled', + duaId: 'DUA-OMICS-2026', + permittedUses: ['model-training', 'whitepaper'], + retentionDays: 30, + exportControlled: false + }, + { + id: 'restricted-assay-panel', + tier: 'restricted', + duaId: 'DUA-ASSAY-2026', + permittedUses: ['whitepaper'], + retentionDays: 14, + exportControlled: true + } + ], + submissions: [ + { + id: 'submission-green', + team: { id: 'lab-green', contactEmail: 'green.lab@example.edu' }, + datasetUses: [{ datasetId: 'controlled-omics', use: 'model-training', daysHeld: 12 }], + agreements: [{ datasetId: 'controlled-omics', duaId: 'DUA-OMICS-2026', active: true }], + exportClearances: [], + artifacts: [{ name: 'model-card.md', containsControlledRows: false }], + sponsorReviewRequested: true, + payoutRequested: true, + ipTransferRequested: true + }, + { + id: 'submission-hold', + team: { id: 'lab-hold', contactEmail: 'hold.lab@example.edu' }, + datasetUses: [{ datasetId: 'controlled-omics', use: 'public-release', daysHeld: 41 }], + agreements: [], + exportClearances: [], + artifacts: [{ name: 'derived-table.csv', containsControlledRows: true }], + sponsorReviewRequested: true, + payoutRequested: true, + ipTransferRequested: true + }, + { + id: 'submission-compliance', + team: { id: 'lab-export', contactEmail: 'export.lab@example.edu' }, + datasetUses: [{ datasetId: 'restricted-assay-panel', use: 'whitepaper', daysHeld: 5 }], + agreements: [{ datasetId: 'restricted-assay-panel', duaId: 'DUA-ASSAY-2026', active: true }], + exportClearances: [], + artifacts: [{ name: 'whitepaper.pdf', containsControlledRows: false }], + sponsorReviewRequested: true, + payoutRequested: true, + ipTransferRequested: false + } + ] +}; + +function markdownFor(result, packet) { + const rows = result.submissionReviews + .map( + (review) => + `| ${review.submissionId} | ${review.decision} | ${review.releaseGates.sponsorReview} | ${review.releaseGates.payout} | ${review.holds.join(', ') || 'none'} |` + ) + .join('\n'); + + return [ + '# Challenge Data-Use Agreement Guard Demo', + '', + `Challenge: ${result.title}`, + `Audit digest: ${result.auditDigest}`, + '', + '| Submission | Decision | Sponsor review | Payout | Holds |', + '| --- | --- | --- | --- | --- |', + rows, + '', + 'Sponsor packet redacts direct team contacts:', + '', + '```json', + JSON.stringify(packet.submissions.map(({ submissionId, teamContact }) => ({ submissionId, teamContact })), null, 2), + '```' + ].join('\n'); +} + +function svgFor(result) { + const width = 960; + const height = 520; + const bars = [ + ['ready', '#36d399'], + ['hold', '#fb7185'], + ['manual-review', '#fbbf24'] + ]; + + const barSvg = bars + .map(([key, color], index) => { + const count = result.summary[key]; + const x = 120 + index * 260; + const barHeight = 70 + count * 70; + const y = 390 - barHeight; + return [ + ``, + `${count}`, + `${key}` + ].join('\n '); + }) + .join('\n'); + + return ` + + Challenge Data-Use Agreement Guard + Sponsor review and payout gates for controlled scientific bounty materials + ${barSvg} + Synthetic data only. Contacts redacted before sponsor packet release. +`; +} + +function main() { + const result = reviewChallengeDataUseReadiness(challenge); + const packet = buildSponsorPacket(challenge, result); + const reportsDir = path.join(__dirname, 'reports'); + fs.mkdirSync(reportsDir, { recursive: true }); + fs.writeFileSync(path.join(reportsDir, 'readiness-report.json'), JSON.stringify({ result, packet }, null, 2)); + fs.writeFileSync(path.join(reportsDir, 'readiness-report.md'), markdownFor(result, packet)); + fs.writeFileSync(path.join(reportsDir, 'readiness-summary.svg'), svgFor(result)); + console.log(JSON.stringify(result.summary)); +} + +if (require.main === module) { + main(); +} diff --git a/challenge-data-use-agreement-guard/index.js b/challenge-data-use-agreement-guard/index.js new file mode 100644 index 00000000..2ab952da --- /dev/null +++ b/challenge-data-use-agreement-guard/index.js @@ -0,0 +1,199 @@ +const crypto = require('crypto'); + +const CONTROLLED_TIERS = new Set(['controlled', 'restricted']); + +function stableStringify(value) { + if (Array.isArray(value)) { + return `[${value.map(stableStringify).join(',')}]`; + } + + if (value && typeof value === 'object') { + return `{${Object.keys(value) + .sort() + .map((key) => `${JSON.stringify(key)}:${stableStringify(value[key])}`) + .join(',')}}`; + } + + return JSON.stringify(value); +} + +function digest(value) { + return `sha256:${crypto.createHash('sha256').update(stableStringify(value)).digest('hex')}`; +} + +function normalize(value) { + return String(value || '').trim().toLowerCase(); +} + +function indexedDatasets(challenge) { + return new Map((challenge.controlledDatasets || []).map((dataset) => [dataset.id, dataset])); +} + +function hasActiveAgreement(submission, dataset) { + if (!CONTROLLED_TIERS.has(normalize(dataset.tier))) { + return true; + } + + return (submission.agreements || []).some( + (agreement) => + agreement.datasetId === dataset.id && + agreement.duaId === dataset.duaId && + agreement.active === true + ); +} + +function hasExportClearance(submission, dataset) { + if (!dataset.exportControlled) { + return true; + } + + return (submission.exportClearances || []).some( + (clearance) => clearance.datasetId === dataset.id && clearance.active === true + ); +} + +function checkDatasetUse(submission, dataset, use) { + const holds = []; + + if (!dataset) { + return ['unknown-dataset']; + } + + if (!hasActiveAgreement(submission, dataset)) { + holds.push(`missing-active-dua:${dataset.id}`); + } + + if (dataset.permittedUses && !dataset.permittedUses.includes(use.use)) { + holds.push(`use-not-permitted:${dataset.id}:${use.use}`); + } + + if (!hasExportClearance(submission, dataset)) { + holds.push(`missing-export-clearance:${dataset.id}`); + } + + if (Number(use.daysHeld || 0) > Number(dataset.retentionDays || Infinity)) { + holds.push(`retention-window-expired:${dataset.id}`); + } + + return holds; +} + +function checkArtifacts(submission) { + return (submission.artifacts || []) + .filter((artifact) => artifact.containsControlledRows) + .map((artifact) => `controlled-rows-in-artifact:${artifact.name}`); +} + +function releaseGatesFor(submission, holds) { + const hasBlockingHold = holds.some((hold) => !hold.startsWith('missing-export-clearance')); + const hasManualReviewHold = holds.some((hold) => hold.startsWith('missing-export-clearance')); + const gate = hasBlockingHold || hasManualReviewHold ? 'hold' : 'allow'; + + return { + sponsorReview: submission.sponsorReviewRequested ? gate : 'not-requested', + payout: submission.payoutRequested ? gate : 'not-requested', + ipTransfer: submission.ipTransferRequested ? gate : 'not-requested' + }; +} + +function decisionFor(holds) { + if (holds.length === 0) { + return 'ready'; + } + + if (holds.every((hold) => hold.startsWith('missing-export-clearance'))) { + return 'manual-review'; + } + + return 'hold'; +} + +function remediationFor(holds) { + const actions = []; + + for (const hold of holds) { + if (hold.startsWith('missing-active-dua')) { + actions.push('collect active DUA coverage before sponsor review or payout release'); + } else if (hold.startsWith('use-not-permitted')) { + actions.push('revise the solver use plan to match permitted DUA purposes'); + } else if (hold.startsWith('missing-export-clearance')) { + actions.push('route export-controlled materials to compliance review before award release'); + } else if (hold.startsWith('retention-window-expired')) { + actions.push('return or destroy controlled data and attach retention evidence'); + } else if (hold.startsWith('controlled-rows-in-artifact')) { + actions.push('redact or replace controlled rows before sponsor packet release'); + } else { + actions.push('resolve dataset mapping before release'); + } + } + + return [...new Set(actions)]; +} + +function reviewSubmission(challenge, submission) { + const datasets = indexedDatasets(challenge); + const datasetHolds = (submission.datasetUses || []).flatMap((use) => + checkDatasetUse(submission, datasets.get(use.datasetId), use) + ); + const holds = [...new Set([...datasetHolds, ...checkArtifacts(submission)])]; + const decision = decisionFor(holds); + + return { + submissionId: submission.id, + teamId: submission.team.id, + decision, + holds, + releaseGates: releaseGatesFor(submission, holds), + remediation: remediationFor(holds), + reviewerPacketDigest: digest({ + submissionId: submission.id, + decision, + holds, + gates: releaseGatesFor(submission, holds) + }) + }; +} + +function reviewChallengeDataUseReadiness(challenge) { + const submissionReviews = (challenge.submissions || []).map((submission) => + reviewSubmission(challenge, submission) + ); + const summary = submissionReviews.reduce( + (counts, review) => { + counts[review.decision] += 1; + return counts; + }, + { ready: 0, hold: 0, 'manual-review': 0 } + ); + + return { + challengeId: challenge.id, + title: challenge.title, + summary, + submissionReviews, + auditDigest: digest({ challengeId: challenge.id, summary, submissionReviews }) + }; +} + +function buildSponsorPacket(challenge, result) { + return { + challengeId: challenge.id, + generatedFor: 'sponsor-review', + auditDigest: result.auditDigest, + submissions: result.submissionReviews.map((review) => ({ + submissionId: review.submissionId, + teamId: review.teamId, + teamContact: '[redacted]', + decision: review.decision, + holds: review.holds, + releaseGates: review.releaseGates, + remediation: review.remediation, + reviewerPacketDigest: review.reviewerPacketDigest + })) + }; +} + +module.exports = { + buildSponsorPacket, + reviewChallengeDataUseReadiness +}; diff --git a/challenge-data-use-agreement-guard/make-demo-video.py b/challenge-data-use-agreement-guard/make-demo-video.py new file mode 100644 index 00000000..1e3721a8 --- /dev/null +++ b/challenge-data-use-agreement-guard/make-demo-video.py @@ -0,0 +1,70 @@ +from pathlib import Path + +from PIL import Image, ImageDraw, ImageFont + + +ROOT = Path(__file__).resolve().parent +REPORTS = ROOT / "reports" +REPORTS.mkdir(exist_ok=True) +OUTPUT = REPORTS / "demo.mp4" + + +def load_font(size): + for candidate in [ + "C:/Windows/Fonts/arial.ttf", + "C:/Windows/Fonts/segoeui.ttf", + "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", + ]: + path = Path(candidate) + if path.exists(): + return ImageFont.truetype(str(path), size) + return ImageFont.load_default() + + +def frame(progress): + image = Image.new("RGB", (1280, 720), "#111827") + draw = ImageDraw.Draw(image) + draw.rounded_rectangle((58, 70, 1222, 650), radius=18, fill="#1f2937", outline="#67e8f9", width=4) + + title = load_font(44) + heading = load_font(30) + body = load_font(24) + small = load_font(18) + + draw.text((100, 125), "Challenge Data-Use Agreement Guard", fill="white", font=title) + lines = [ + "Validates active DUA coverage for controlled datasets", + "Checks permitted-use and retention duties before review", + "Holds sponsor packets when artifacts expose controlled rows", + "Routes export-controlled submissions to compliance review", + "Blocks payout and IP handoff until data duties are resolved", + "Redacts team contacts in sponsor-facing packets" + ] + + visible = min(len(lines), 1 + int(progress * len(lines))) + for index, line in enumerate(lines[:visible]): + y = 205 + index * 54 + draw.text((100, y), line, fill="#e0f2fe", font=heading if index < 3 else body) + + draw.rounded_rectangle((100, 590, 1080, 615), radius=10, fill="#334155") + draw.rounded_rectangle((100, 590, 100 + int(980 * progress), 615), radius=10, fill="#67e8f9") + draw.text((100, 635), "SCIBASE issue #18 Scientific Bounty System - synthetic demo", fill="#bae6fd", font=small) + return image + + +def main(): + try: + import imageio.v3 as iio + except Exception as exc: # pragma: no cover - helper path for local artifact generation + raise SystemExit( + "imageio and imageio-ffmpeg are required to regenerate reports/demo.mp4. " + "The committed demo.mp4 is already generated for review." + ) from exc + + frames = [frame(index / 59) for index in range(60)] + iio.imwrite(OUTPUT, frames, fps=15, codec="libx264", quality=8, macro_block_size=16) + print(f"Wrote {OUTPUT.relative_to(ROOT)}") + + +if __name__ == "__main__": + main() diff --git a/challenge-data-use-agreement-guard/reports/demo.mp4 b/challenge-data-use-agreement-guard/reports/demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..047fc0ba3043324c5209e41385d3ccdce0aac63c GIT binary patch literal 88290 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 QhJs8)##X1w*pyCx^X6*mL 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 s2y9v*nBZV|kN6kK_(`06Go{NB{r; literal 0 HcmV?d00001 diff --git a/challenge-data-use-agreement-guard/reports/readiness-report.json b/challenge-data-use-agreement-guard/reports/readiness-report.json new file mode 100644 index 00000000..6e269cd2 --- /dev/null +++ b/challenge-data-use-agreement-guard/reports/readiness-report.json @@ -0,0 +1,130 @@ +{ + "result": { + "challengeId": "scibase-challenge-18-dua-demo", + "title": "Controlled Omics Benchmark Challenge", + "summary": { + "ready": 1, + "hold": 1, + "manual-review": 1 + }, + "submissionReviews": [ + { + "submissionId": "submission-green", + "teamId": "lab-green", + "decision": "ready", + "holds": [], + "releaseGates": { + "sponsorReview": "allow", + "payout": "allow", + "ipTransfer": "allow" + }, + "remediation": [], + "reviewerPacketDigest": "sha256:1456a7cd03f263bd420cd0a7c3c4ee71a6db5a2428d4f23d1a954cf738d13a9a" + }, + { + "submissionId": "submission-hold", + "teamId": "lab-hold", + "decision": "hold", + "holds": [ + "missing-active-dua:controlled-omics", + "use-not-permitted:controlled-omics:public-release", + "retention-window-expired:controlled-omics", + "controlled-rows-in-artifact:derived-table.csv" + ], + "releaseGates": { + "sponsorReview": "hold", + "payout": "hold", + "ipTransfer": "hold" + }, + "remediation": [ + "collect active DUA coverage before sponsor review or payout release", + "revise the solver use plan to match permitted DUA purposes", + "return or destroy controlled data and attach retention evidence", + "redact or replace controlled rows before sponsor packet release" + ], + "reviewerPacketDigest": "sha256:be0f4913439d4c07dfd4e071e7df6d6c7ad9bbd3a5a98f93afd873a8c450e8e6" + }, + { + "submissionId": "submission-compliance", + "teamId": "lab-export", + "decision": "manual-review", + "holds": [ + "missing-export-clearance:restricted-assay-panel" + ], + "releaseGates": { + "sponsorReview": "hold", + "payout": "hold", + "ipTransfer": "not-requested" + }, + "remediation": [ + "route export-controlled materials to compliance review before award release" + ], + "reviewerPacketDigest": "sha256:7f8e8c40b8ab3704315ccd5076360e5eecc5713fc32b21d3248c6959a15d435d" + } + ], + "auditDigest": "sha256:1aa82ff153b3ed771e53440fabeb676b81e37546989abe8c49e9cf319ffdf107" + }, + "packet": { + "challengeId": "scibase-challenge-18-dua-demo", + "generatedFor": "sponsor-review", + "auditDigest": "sha256:1aa82ff153b3ed771e53440fabeb676b81e37546989abe8c49e9cf319ffdf107", + "submissions": [ + { + "submissionId": "submission-green", + "teamId": "lab-green", + "teamContact": "[redacted]", + "decision": "ready", + "holds": [], + "releaseGates": { + "sponsorReview": "allow", + "payout": "allow", + "ipTransfer": "allow" + }, + "remediation": [], + "reviewerPacketDigest": "sha256:1456a7cd03f263bd420cd0a7c3c4ee71a6db5a2428d4f23d1a954cf738d13a9a" + }, + { + "submissionId": "submission-hold", + "teamId": "lab-hold", + "teamContact": "[redacted]", + "decision": "hold", + "holds": [ + "missing-active-dua:controlled-omics", + "use-not-permitted:controlled-omics:public-release", + "retention-window-expired:controlled-omics", + "controlled-rows-in-artifact:derived-table.csv" + ], + "releaseGates": { + "sponsorReview": "hold", + "payout": "hold", + "ipTransfer": "hold" + }, + "remediation": [ + "collect active DUA coverage before sponsor review or payout release", + "revise the solver use plan to match permitted DUA purposes", + "return or destroy controlled data and attach retention evidence", + "redact or replace controlled rows before sponsor packet release" + ], + "reviewerPacketDigest": "sha256:be0f4913439d4c07dfd4e071e7df6d6c7ad9bbd3a5a98f93afd873a8c450e8e6" + }, + { + "submissionId": "submission-compliance", + "teamId": "lab-export", + "teamContact": "[redacted]", + "decision": "manual-review", + "holds": [ + "missing-export-clearance:restricted-assay-panel" + ], + "releaseGates": { + "sponsorReview": "hold", + "payout": "hold", + "ipTransfer": "not-requested" + }, + "remediation": [ + "route export-controlled materials to compliance review before award release" + ], + "reviewerPacketDigest": "sha256:7f8e8c40b8ab3704315ccd5076360e5eecc5713fc32b21d3248c6959a15d435d" + } + ] + } +} \ No newline at end of file diff --git a/challenge-data-use-agreement-guard/reports/readiness-report.md b/challenge-data-use-agreement-guard/reports/readiness-report.md new file mode 100644 index 00000000..a8c3451f --- /dev/null +++ b/challenge-data-use-agreement-guard/reports/readiness-report.md @@ -0,0 +1,29 @@ +# Challenge Data-Use Agreement Guard Demo + +Challenge: Controlled Omics Benchmark Challenge +Audit digest: sha256:1aa82ff153b3ed771e53440fabeb676b81e37546989abe8c49e9cf319ffdf107 + +| Submission | Decision | Sponsor review | Payout | Holds | +| --- | --- | --- | --- | --- | +| submission-green | ready | allow | allow | none | +| submission-hold | hold | hold | hold | missing-active-dua:controlled-omics, use-not-permitted:controlled-omics:public-release, retention-window-expired:controlled-omics, controlled-rows-in-artifact:derived-table.csv | +| submission-compliance | manual-review | hold | hold | missing-export-clearance:restricted-assay-panel | + +Sponsor packet redacts direct team contacts: + +```json +[ + { + "submissionId": "submission-green", + "teamContact": "[redacted]" + }, + { + "submissionId": "submission-hold", + "teamContact": "[redacted]" + }, + { + "submissionId": "submission-compliance", + "teamContact": "[redacted]" + } +] +``` \ No newline at end of file diff --git a/challenge-data-use-agreement-guard/reports/readiness-summary.svg b/challenge-data-use-agreement-guard/reports/readiness-summary.svg new file mode 100644 index 00000000..68e82463 --- /dev/null +++ b/challenge-data-use-agreement-guard/reports/readiness-summary.svg @@ -0,0 +1,15 @@ + + + Challenge Data-Use Agreement Guard + Sponsor review and payout gates for controlled scientific bounty materials + + 1 + ready + + 1 + hold + + 1 + manual-review + Synthetic data only. Contacts redacted before sponsor packet release. + \ No newline at end of file diff --git a/challenge-data-use-agreement-guard/test.js b/challenge-data-use-agreement-guard/test.js new file mode 100644 index 00000000..0320a251 --- /dev/null +++ b/challenge-data-use-agreement-guard/test.js @@ -0,0 +1,150 @@ +const assert = require('assert'); + +const { + buildSponsorPacket, + reviewChallengeDataUseReadiness +} = require('./index'); + +function findReview(result, submissionId) { + return result.submissionReviews.find((review) => review.submissionId === submissionId); +} + +const challenge = { + id: 'scibase-challenge-18', + title: 'Single-cell Biomarker Challenge', + controlledDatasets: [ + { + id: 'ds-open-marker-table', + tier: 'open', + permittedUses: ['model-training', 'whitepaper'], + retentionDays: 365 + }, + { + id: 'ds-controlled-rna', + tier: 'controlled', + duaId: 'DUA-SCB-2026-44', + permittedUses: ['model-training', 'whitepaper'], + retentionDays: 30, + exportControlled: false + }, + { + id: 'ds-export-assay', + tier: 'restricted', + duaId: 'DUA-SCB-2026-99', + permittedUses: ['whitepaper'], + retentionDays: 14, + exportControlled: true + } + ], + submissions: [ + { + id: 'sub-ready', + team: { id: 'team-alpha', contactEmail: 'alpha.lab@example.edu' }, + datasetUses: [ + { datasetId: 'ds-controlled-rna', use: 'model-training', daysHeld: 10 } + ], + agreements: [{ datasetId: 'ds-controlled-rna', duaId: 'DUA-SCB-2026-44', active: true }], + exportClearances: [], + artifacts: [{ name: 'model-card.md', containsControlledRows: false }], + sponsorReviewRequested: true, + payoutRequested: true, + ipTransferRequested: true + }, + { + id: 'sub-missing-dua', + team: { id: 'team-beta', contactEmail: 'beta.lab@example.edu' }, + datasetUses: [ + { datasetId: 'ds-controlled-rna', use: 'model-training', daysHeld: 4 } + ], + agreements: [], + exportClearances: [], + artifacts: [{ name: 'submission.zip', containsControlledRows: false }], + sponsorReviewRequested: true, + payoutRequested: true, + ipTransferRequested: true + }, + { + id: 'sub-broad-release', + team: { id: 'team-gamma', contactEmail: 'gamma.lab@example.edu' }, + datasetUses: [ + { datasetId: 'ds-controlled-rna', use: 'public-release', daysHeld: 6 } + ], + agreements: [{ datasetId: 'ds-controlled-rna', duaId: 'DUA-SCB-2026-44', active: true }], + exportClearances: [], + artifacts: [{ name: 'supplement.csv', containsControlledRows: true }], + sponsorReviewRequested: true, + payoutRequested: false, + ipTransferRequested: false + }, + { + id: 'sub-export-gap', + team: { id: 'team-delta', contactEmail: 'delta.lab@example.edu' }, + datasetUses: [ + { datasetId: 'ds-export-assay', use: 'whitepaper', daysHeld: 3 } + ], + agreements: [{ datasetId: 'ds-export-assay', duaId: 'DUA-SCB-2026-99', active: true }], + exportClearances: [], + artifacts: [{ name: 'whitepaper.pdf', containsControlledRows: false }], + sponsorReviewRequested: true, + payoutRequested: true, + ipTransferRequested: false + }, + { + id: 'sub-retention-expired', + team: { id: 'team-epsilon', contactEmail: 'epsilon.lab@example.edu' }, + datasetUses: [ + { datasetId: 'ds-controlled-rna', use: 'model-training', daysHeld: 46 } + ], + agreements: [{ datasetId: 'ds-controlled-rna', duaId: 'DUA-SCB-2026-44', active: true }], + exportClearances: [], + artifacts: [{ name: 'weights.bin', containsControlledRows: false }], + sponsorReviewRequested: false, + payoutRequested: true, + ipTransferRequested: true + } + ] +}; + +const result = reviewChallengeDataUseReadiness(challenge); + +assert.strictEqual(result.challengeId, challenge.id); +assert.strictEqual(result.submissionReviews.length, 5); +assert.match(result.auditDigest, /^sha256:[a-f0-9]{64}$/); + +const ready = findReview(result, 'sub-ready'); +assert.strictEqual(ready.decision, 'ready'); +assert.deepStrictEqual(ready.holds, []); +assert.strictEqual(ready.releaseGates.sponsorReview, 'allow'); +assert.strictEqual(ready.releaseGates.payout, 'allow'); +assert.strictEqual(ready.releaseGates.ipTransfer, 'allow'); + +const missingDua = findReview(result, 'sub-missing-dua'); +assert.strictEqual(missingDua.decision, 'hold'); +assert.ok(missingDua.holds.includes('missing-active-dua:ds-controlled-rna')); +assert.strictEqual(missingDua.releaseGates.sponsorReview, 'hold'); +assert.strictEqual(missingDua.releaseGates.payout, 'hold'); +assert.strictEqual(missingDua.releaseGates.ipTransfer, 'hold'); + +const broadRelease = findReview(result, 'sub-broad-release'); +assert.strictEqual(broadRelease.decision, 'hold'); +assert.ok(broadRelease.holds.includes('use-not-permitted:ds-controlled-rna:public-release')); +assert.ok(broadRelease.holds.includes('controlled-rows-in-artifact:supplement.csv')); + +const exportGap = findReview(result, 'sub-export-gap'); +assert.strictEqual(exportGap.decision, 'manual-review'); +assert.ok(exportGap.holds.includes('missing-export-clearance:ds-export-assay')); +assert.strictEqual(exportGap.releaseGates.payout, 'hold'); + +const retentionExpired = findReview(result, 'sub-retention-expired'); +assert.strictEqual(retentionExpired.decision, 'hold'); +assert.ok(retentionExpired.holds.includes('retention-window-expired:ds-controlled-rna')); +assert.ok(retentionExpired.remediation.some((item) => item.includes('return or destroy controlled data'))); + +const sponsorPacket = buildSponsorPacket(challenge, result); +const serialized = JSON.stringify(sponsorPacket); +assert.ok(!serialized.includes('alpha.lab@example.edu')); +assert.ok(!serialized.includes('beta.lab@example.edu')); +assert.ok(sponsorPacket.submissions.every((item) => item.teamContact === '[redacted]')); +assert.ok(sponsorPacket.submissions.some((item) => item.decision === 'manual-review')); + +console.log('challenge-data-use-agreement-guard tests passed');