From b90838f10c318a9ef485978cf15df89723fed5c3 Mon Sep 17 00:00:00 2001 From: Jorel97 Date: Mon, 1 Jun 2026 12:49:47 -0600 Subject: [PATCH] Add researcher affiliation attestation guard --- .../README.md | 17 ++ .../demo.js | 61 ++++ .../demo_video.py | 46 +++ .../index.js | 264 ++++++++++++++++++ .../package.json | 13 + .../reports/demo.gif | Bin 0 -> 51631 bytes .../reports/demo.mp4 | Bin 0 -> 39384 bytes .../reports/risky-profile.json | 109 ++++++++ .../reports/risky-profile.md | 32 +++ .../reports/risky-profile.svg | 12 + .../reports/trusted-profile.json | 24 ++ .../reports/trusted-profile.md | 21 ++ .../reports/trusted-profile.svg | 12 + .../requirements-map.md | 14 + .../sample-data.js | 98 +++++++ .../test.js | 41 +++ 16 files changed, 764 insertions(+) create mode 100644 researcher-affiliation-attestation-guard/README.md create mode 100644 researcher-affiliation-attestation-guard/demo.js create mode 100644 researcher-affiliation-attestation-guard/demo_video.py create mode 100644 researcher-affiliation-attestation-guard/index.js create mode 100644 researcher-affiliation-attestation-guard/package.json create mode 100644 researcher-affiliation-attestation-guard/reports/demo.gif create mode 100644 researcher-affiliation-attestation-guard/reports/demo.mp4 create mode 100644 researcher-affiliation-attestation-guard/reports/risky-profile.json create mode 100644 researcher-affiliation-attestation-guard/reports/risky-profile.md create mode 100644 researcher-affiliation-attestation-guard/reports/risky-profile.svg create mode 100644 researcher-affiliation-attestation-guard/reports/trusted-profile.json create mode 100644 researcher-affiliation-attestation-guard/reports/trusted-profile.md create mode 100644 researcher-affiliation-attestation-guard/reports/trusted-profile.svg create mode 100644 researcher-affiliation-attestation-guard/requirements-map.md create mode 100644 researcher-affiliation-attestation-guard/sample-data.js create mode 100644 researcher-affiliation-attestation-guard/test.js diff --git a/researcher-affiliation-attestation-guard/README.md b/researcher-affiliation-attestation-guard/README.md new file mode 100644 index 00000000..33718c85 --- /dev/null +++ b/researcher-affiliation-attestation-guard/README.md @@ -0,0 +1,17 @@ +# Researcher Affiliation Attestation Guard + +Self-contained SCIBASE User & Project Management slice for issue #11. The guard checks whether public researcher profile affiliation and grant claims are sufficiently evidenced before they influence project trust, invitations, grants, or reputation signals. + +## Why this slice is distinct + +Existing #11 submissions cover RBAC/workspace ledgers, privacy access review, member lifecycle/offboarding, institutional recertification, anonymous-review escrow, data-room consent, researcher profile sync, archive handoff, access-audit anomaly, role delegation, invitation-domain/MFA, funding attribution, service-token governance, deletion/erasure, break-glass access, visibility transition, provisioning baseline, object-permission inheritance, session step-up, collaborator COI, data residency, authoring artifact integrity, ORCID publication disambiguation, and access denial appeals. This module focuses only on public profile affiliation and grant attestation: ORCID/SSO/admin evidence, expired appointments, institutional email-domain matching, grant consent, evidence receipts, and blocking unverified profile claims from trust/reputation decisions. + +## Run + +```bash +npm test +npm run demo +npm run demo:video +``` + +Demo artifacts are written to `reports/`, including JSON, Markdown, SVG, GIF, and MP4 files. diff --git a/researcher-affiliation-attestation-guard/demo.js b/researcher-affiliation-attestation-guard/demo.js new file mode 100644 index 00000000..94bac2fe --- /dev/null +++ b/researcher-affiliation-attestation-guard/demo.js @@ -0,0 +1,61 @@ +const fs = require("fs"); +const path = require("path"); + +const { assessAffiliationAttestation } = require("./index"); +const { trustedProfile, riskyProfile } = require("./sample-data"); + +const reportsDir = path.join(__dirname, "reports"); +fs.mkdirSync(reportsDir, { recursive: true }); + +function markdownReport(name, report) { + const findings = report.findings.length + ? report.findings + .map((item) => `- ${item.severity.toUpperCase()} ${item.code}: ${item.message}`) + .join("\n") + : "- No affiliation or grant attestation findings."; + return `# Researcher Affiliation Attestation Guard + +Scenario: ${name} + +Researcher: ${report.displayName} +Profile mode: ${report.profileMode} +Decision: ${report.decision.toUpperCase()} + +Reviewed ${report.summary.affiliationsReviewed} affiliations and ${report.summary.grantsReviewed} grants. + +## Findings + +${findings} + +## Release Criteria + +${report.releaseCriteria.map((item) => `- ${item}`).join("\n")} +`; +} + +function svgReport(report) { + const color = report.decision === "hold" ? "#b91c1c" : report.decision === "revise" ? "#c2410c" : "#15803d"; + return ` + + Researcher Affiliation Attestation Guard + ${report.displayName} / ${report.profileMode} + + ${report.decision.toUpperCase()} + Public affiliations: ${report.summary.publicAffiliations} + High: ${report.summary.high} + Medium: ${report.summary.medium} + Low: ${report.summary.low} + Synthetic profile packets only. No real ORCID, SSO, grant, or email calls. +`; +} + +for (const [name, profile] of [ + ["trusted-profile", trustedProfile], + ["risky-profile", riskyProfile], +]) { + const report = assessAffiliationAttestation(profile, { asOf: "2026-06-01" }); + fs.writeFileSync(path.join(reportsDir, `${name}.json`), JSON.stringify(report, null, 2)); + fs.writeFileSync(path.join(reportsDir, `${name}.md`), markdownReport(name, report)); + fs.writeFileSync(path.join(reportsDir, `${name}.svg`), svgReport(report)); + console.log(`${name}: ${report.decision} (${report.summary.findings} findings)`); +} diff --git a/researcher-affiliation-attestation-guard/demo_video.py b/researcher-affiliation-attestation-guard/demo_video.py new file mode 100644 index 00000000..5babd526 --- /dev/null +++ b/researcher-affiliation-attestation-guard/demo_video.py @@ -0,0 +1,46 @@ +from pathlib import Path + +import imageio.v3 as iio +import numpy as np +from PIL import Image, ImageDraw, ImageFont + + +ROOT = Path(__file__).resolve().parent +REPORTS = ROOT / "reports" +REPORTS.mkdir(exist_ok=True) + + +def font(size): + for name in ("arial.ttf", "segoeui.ttf"): + try: + return ImageFont.truetype(name, size) + except OSError: + pass + return ImageFont.load_default() + + +slides = [ + ("Affiliation Attestation Guard", "User & Project Management #11"), + ("Checks", "ORCID, institutional SSO, admin attestations"), + ("Checks", "expired appointments, grant consent, email domains"), + ("Decision", "hold trust features until public claims are evidenced"), +] + +frames = [] +for index, (title, subtitle) in enumerate(slides, start=1): + image = Image.new("RGB", (960, 544), "#111827") + draw = ImageDraw.Draw(image) + draw.rectangle((44, 52, 916, 492), outline="#60a5fa", width=3) + draw.text((80, 124), title, fill="#f8fafc", font=font(40)) + draw.text((80, 206), subtitle, fill="#dbeafe", font=font(25)) + draw.rectangle((80, 326, 818, 382), fill="#1d4ed8") + draw.text((104, 342), "profile claims must be verified before reputation or invitations", fill="#eff6ff", font=font(21)) + draw.text((80, 438), f"Slide {index}/4 - synthetic reviewer artifact", fill="#cbd5e1", font=font(20)) + frames.extend([image] * 14) + +gif_path = REPORTS / "demo.gif" +mp4_path = REPORTS / "demo.mp4" +frames[0].save(gif_path, save_all=True, append_images=frames[1:], duration=120, loop=0) +iio.imwrite(mp4_path, [np.asarray(frame) for frame in frames], fps=8, codec="libx264") +print(f"wrote {gif_path}") +print(f"wrote {mp4_path}") diff --git a/researcher-affiliation-attestation-guard/index.js b/researcher-affiliation-attestation-guard/index.js new file mode 100644 index 00000000..1b9b2eed --- /dev/null +++ b/researcher-affiliation-attestation-guard/index.js @@ -0,0 +1,264 @@ +const HIGH = "high"; +const MEDIUM = "medium"; +const LOW = "low"; + +function requiredString(value, field) { + if (typeof value !== "string" || value.trim() === "") { + throw new TypeError(`${field} must be a non-empty string`); + } + return value.trim(); +} + +function array(value, field) { + if (!Array.isArray(value)) { + throw new TypeError(`${field} must be an array`); + } + return value; +} + +function unique(values) { + return [...new Set(values.map(String))]; +} + +function normalizeDate(value, field) { + const text = requiredString(value, field); + const time = Date.parse(text); + if (Number.isNaN(time)) { + throw new TypeError(`${field} must be an ISO date`); + } + return text; +} + +function normalizeAffiliation(raw, index) { + return { + id: requiredString(raw.id, `affiliations[${index}].id`), + institution: requiredString(raw.institution, `affiliations[${index}].institution`), + role: requiredString(raw.role, `affiliations[${index}].role`), + source: raw.source ? String(raw.source) : "", + verifiedDomain: raw.verifiedDomain ? String(raw.verifiedDomain).toLowerCase() : "", + validFrom: normalizeDate(raw.validFrom || "1970-01-01", `affiliations[${index}].validFrom`), + validUntil: raw.validUntil ? normalizeDate(raw.validUntil, `affiliations[${index}].validUntil`) : "", + publicClaim: Boolean(raw.publicClaim), + evidenceRefs: unique(raw.evidenceRefs || []), + }; +} + +function normalizeGrant(raw, index) { + return { + id: requiredString(raw.id, `grants[${index}].id`), + funder: requiredString(raw.funder, `grants[${index}].funder`), + projectId: requiredString(raw.projectId, `grants[${index}].projectId`), + publicClaim: Boolean(raw.publicClaim), + consent: raw.consent ? String(raw.consent) : "", + evidenceRefs: unique(raw.evidenceRefs || []), + }; +} + +function normalizeProfile(raw) { + return { + researcherId: requiredString(raw.researcherId, "researcherId"), + displayName: requiredString(raw.displayName, "displayName"), + profileMode: requiredString(raw.profileMode || "private", "profileMode"), + orcid: raw.orcid ? String(raw.orcid) : "", + verifiedEmails: unique(raw.verifiedEmails || []).map((item) => item.toLowerCase()), + affiliations: array(raw.affiliations || [], "affiliations").map(normalizeAffiliation), + grants: array(raw.grants || [], "grants").map(normalizeGrant), + trustInputs: { + useAffiliationsForInvites: Boolean(raw.trustInputs && raw.trustInputs.useAffiliationsForInvites), + useGrantsForReputation: Boolean(raw.trustInputs && raw.trustInputs.useGrantsForReputation), + publicReputationBadge: Boolean(raw.trustInputs && raw.trustInputs.publicReputationBadge), + }, + }; +} + +function finding(code, severity, sourceId, message, remediation) { + return { code, severity, sourceId, message, remediation }; +} + +function emailDomains(emails) { + return unique(emails.map((email) => email.split("@")[1]).filter(Boolean)); +} + +function isExpired(dateText, asOf) { + return dateText && Date.parse(dateText) < Date.parse(asOf); +} + +function assessAffiliationAttestation(rawProfile, options = {}) { + const profile = normalizeProfile(rawProfile); + const asOf = normalizeDate(options.asOf || "2026-06-01", "asOf"); + const findings = []; + const domains = emailDomains(profile.verifiedEmails); + const publicAffiliations = profile.affiliations.filter((item) => item.publicClaim); + const publicGrants = profile.grants.filter((item) => item.publicClaim); + + if (profile.profileMode === "public" && !profile.orcid) { + findings.push( + finding( + "PUBLIC_PROFILE_WITHOUT_ORCID", + MEDIUM, + profile.researcherId, + `${profile.displayName} has a public profile without an ORCID identifier.`, + "Link ORCID or keep profile credentials private until identity evidence is complete." + ) + ); + } + + for (const affiliation of publicAffiliations) { + if (!["orcid", "institutional-sso", "admin-attestation"].includes(affiliation.source)) { + findings.push( + finding( + "UNTRUSTED_AFFILIATION_SOURCE", + HIGH, + affiliation.id, + `${affiliation.institution} affiliation uses untrusted source ${affiliation.source || "none"}.`, + "Require ORCID, institutional SSO, or admin attestation before publishing affiliation claims." + ) + ); + } + + if (isExpired(affiliation.validUntil, asOf)) { + findings.push( + finding( + "EXPIRED_PUBLIC_AFFILIATION", + HIGH, + affiliation.id, + `${affiliation.institution} affiliation expired on ${affiliation.validUntil}.`, + "Hide or refresh expired appointments before they influence invitations, grants, or reputation." + ) + ); + } + + if (affiliation.verifiedDomain && !domains.includes(affiliation.verifiedDomain)) { + findings.push( + finding( + "AFFILIATION_DOMAIN_MISMATCH", + HIGH, + affiliation.id, + `${affiliation.institution} requires ${affiliation.verifiedDomain}, but no verified email matches that domain.`, + "Verify an institutional email domain or remove the public affiliation claim." + ) + ); + } + + if (affiliation.evidenceRefs.length === 0) { + findings.push( + finding( + "AFFILIATION_WITHOUT_EVIDENCE", + MEDIUM, + affiliation.id, + `${affiliation.institution} public affiliation lacks evidence references.`, + "Attach ORCID records, SSO assertions, appointment receipts, or admin attestations." + ) + ); + } + } + + const activeInstitutions = publicAffiliations + .filter((item) => !isExpired(item.validUntil, asOf)) + .map((item) => item.institution); + if (unique(activeInstitutions).length > 1) { + findings.push( + finding( + "MULTIPLE_ACTIVE_PUBLIC_INSTITUTIONS", + MEDIUM, + "affiliations", + `Profile has multiple active public institutions: ${unique(activeInstitutions).join(", ")}.`, + "Require primary affiliation selection and conflict disclosure before institutional trust is applied." + ) + ); + } + + for (const grant of publicGrants) { + if (grant.consent !== "public") { + findings.push( + finding( + "GRANT_WITHOUT_PUBLIC_CONSENT", + HIGH, + grant.id, + `${grant.funder} grant is public but consent is ${grant.consent || "missing"}.`, + "Collect funder/PI consent before exposing grant claims or using them in reputation scoring." + ) + ); + } + + if (grant.evidenceRefs.length === 0) { + findings.push( + finding( + "GRANT_WITHOUT_EVIDENCE", + MEDIUM, + grant.id, + `${grant.funder} grant lacks evidence references.`, + "Attach award IDs, public grant pages, or institutional award receipts." + ) + ); + } + } + + if (profile.trustInputs.useAffiliationsForInvites && findings.some((item) => item.code.includes("AFFILIATION"))) { + findings.push( + finding( + "UNVERIFIED_AFFILIATION_USED_FOR_INVITES", + HIGH, + "trustInputs.useAffiliationsForInvites", + "Affiliation claims have blockers but are enabled for project invitation trust.", + "Disable affiliation-derived invitations until all public affiliation findings are resolved." + ) + ); + } + + if (profile.trustInputs.useGrantsForReputation && findings.some((item) => item.code.includes("GRANT"))) { + findings.push( + finding( + "UNVERIFIED_GRANT_USED_FOR_REPUTATION", + HIGH, + "trustInputs.useGrantsForReputation", + "Grant claims have blockers but are enabled for reputation scoring.", + "Disable grant-derived reputation inputs until grant consent and evidence are verified." + ) + ); + } + + if (profile.trustInputs.publicReputationBadge && profile.profileMode !== "public") { + findings.push( + finding( + "REPUTATION_BADGE_ON_PRIVATE_PROFILE", + LOW, + "trustInputs.publicReputationBadge", + "A public reputation badge is enabled while the profile is private.", + "Align badge visibility with the profile mode or provide explicit public-badge consent." + ) + ); + } + + const high = findings.filter((item) => item.severity === HIGH).length; + const medium = findings.filter((item) => item.severity === MEDIUM).length; + return { + researcherId: profile.researcherId, + displayName: profile.displayName, + profileMode: profile.profileMode, + decision: high > 0 ? "hold" : medium > 0 ? "revise" : "release", + summary: { + affiliationsReviewed: profile.affiliations.length, + publicAffiliations: publicAffiliations.length, + grantsReviewed: profile.grants.length, + publicGrants: publicGrants.length, + findings: findings.length, + high, + medium, + low: findings.filter((item) => item.severity === LOW).length, + }, + findings, + releaseCriteria: [ + "Public affiliations come from ORCID, institutional SSO, or admin attestation.", + "Expired appointments are hidden or refreshed before trust decisions.", + "Verified email domains match claimed institutional affiliations.", + "Public grant claims have consent and evidence references.", + "Unverified affiliations and grants do not feed invitations, trust, or reputation scoring.", + ], + }; +} + +module.exports = { + assessAffiliationAttestation, + normalizeProfile, +}; diff --git a/researcher-affiliation-attestation-guard/package.json b/researcher-affiliation-attestation-guard/package.json new file mode 100644 index 00000000..1acd89b9 --- /dev/null +++ b/researcher-affiliation-attestation-guard/package.json @@ -0,0 +1,13 @@ +{ + "name": "researcher-affiliation-attestation-guard", + "version": "1.0.0", + "description": "Researcher affiliation and grant attestation guard for SCIBASE user/project management", + "main": "index.js", + "type": "commonjs", + "scripts": { + "test": "node test.js", + "demo": "node demo.js", + "demo:video": "python demo_video.py" + }, + "license": "MIT" +} diff --git a/researcher-affiliation-attestation-guard/reports/demo.gif b/researcher-affiliation-attestation-guard/reports/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c04ed69dba1bc0031c8a3ce117239c822f339a9 GIT binary patch literal 51631 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 literal 0 HcmV?d00001 diff --git a/researcher-affiliation-attestation-guard/reports/risky-profile.json b/researcher-affiliation-attestation-guard/reports/risky-profile.json new file mode 100644 index 00000000..bcdfa82b --- /dev/null +++ b/researcher-affiliation-attestation-guard/reports/risky-profile.json @@ -0,0 +1,109 @@ +{ + "researcherId": "researcher-claim-risk-002", + "displayName": "R. Example", + "profileMode": "public", + "decision": "hold", + "summary": { + "affiliationsReviewed": 3, + "publicAffiliations": 3, + "grantsReviewed": 1, + "publicGrants": 1, + "findings": 12, + "high": 8, + "medium": 4, + "low": 0 + }, + "findings": [ + { + "code": "PUBLIC_PROFILE_WITHOUT_ORCID", + "severity": "medium", + "sourceId": "researcher-claim-risk-002", + "message": "R. Example has a public profile without an ORCID identifier.", + "remediation": "Link ORCID or keep profile credentials private until identity evidence is complete." + }, + { + "code": "UNTRUSTED_AFFILIATION_SOURCE", + "severity": "high", + "sourceId": "aff-expired", + "message": "Northbridge Institute affiliation uses untrusted source manual.", + "remediation": "Require ORCID, institutional SSO, or admin attestation before publishing affiliation claims." + }, + { + "code": "EXPIRED_PUBLIC_AFFILIATION", + "severity": "high", + "sourceId": "aff-expired", + "message": "Northbridge Institute affiliation expired on 2024-12-31.", + "remediation": "Hide or refresh expired appointments before they influence invitations, grants, or reputation." + }, + { + "code": "AFFILIATION_DOMAIN_MISMATCH", + "severity": "high", + "sourceId": "aff-expired", + "message": "Northbridge Institute requires northbridge.edu, but no verified email matches that domain.", + "remediation": "Verify an institutional email domain or remove the public affiliation claim." + }, + { + "code": "AFFILIATION_WITHOUT_EVIDENCE", + "severity": "medium", + "sourceId": "aff-expired", + "message": "Northbridge Institute public affiliation lacks evidence references.", + "remediation": "Attach ORCID records, SSO assertions, appointment receipts, or admin attestations." + }, + { + "code": "AFFILIATION_DOMAIN_MISMATCH", + "severity": "high", + "sourceId": "aff-active-conflict", + "message": "West River Labs requires westriver.example, but no verified email matches that domain.", + "remediation": "Verify an institutional email domain or remove the public affiliation claim." + }, + { + "code": "AFFILIATION_DOMAIN_MISMATCH", + "severity": "high", + "sourceId": "aff-second-active", + "message": "East Valley University requires evu.example, but no verified email matches that domain.", + "remediation": "Verify an institutional email domain or remove the public affiliation claim." + }, + { + "code": "MULTIPLE_ACTIVE_PUBLIC_INSTITUTIONS", + "severity": "medium", + "sourceId": "affiliations", + "message": "Profile has multiple active public institutions: West River Labs, East Valley University.", + "remediation": "Require primary affiliation selection and conflict disclosure before institutional trust is applied." + }, + { + "code": "GRANT_WITHOUT_PUBLIC_CONSENT", + "severity": "high", + "sourceId": "grant-private-77", + "message": "Private Foundation grant is public but consent is private.", + "remediation": "Collect funder/PI consent before exposing grant claims or using them in reputation scoring." + }, + { + "code": "GRANT_WITHOUT_EVIDENCE", + "severity": "medium", + "sourceId": "grant-private-77", + "message": "Private Foundation grant lacks evidence references.", + "remediation": "Attach award IDs, public grant pages, or institutional award receipts." + }, + { + "code": "UNVERIFIED_AFFILIATION_USED_FOR_INVITES", + "severity": "high", + "sourceId": "trustInputs.useAffiliationsForInvites", + "message": "Affiliation claims have blockers but are enabled for project invitation trust.", + "remediation": "Disable affiliation-derived invitations until all public affiliation findings are resolved." + }, + { + "code": "UNVERIFIED_GRANT_USED_FOR_REPUTATION", + "severity": "high", + "sourceId": "trustInputs.useGrantsForReputation", + "message": "Grant claims have blockers but are enabled for reputation scoring.", + "remediation": "Disable grant-derived reputation inputs until grant consent and evidence are verified." + } + ], + "releaseCriteria": [ + "Public affiliations come from ORCID, institutional SSO, or admin attestation.", + "Expired appointments are hidden or refreshed before trust decisions.", + "Verified email domains match claimed institutional affiliations.", + "Public grant claims have consent and evidence references.", + "Unverified affiliations and grants do not feed invitations, trust, or reputation scoring." + ] +} \ No newline at end of file diff --git a/researcher-affiliation-attestation-guard/reports/risky-profile.md b/researcher-affiliation-attestation-guard/reports/risky-profile.md new file mode 100644 index 00000000..66ac86e9 --- /dev/null +++ b/researcher-affiliation-attestation-guard/reports/risky-profile.md @@ -0,0 +1,32 @@ +# Researcher Affiliation Attestation Guard + +Scenario: risky-profile + +Researcher: R. Example +Profile mode: public +Decision: HOLD + +Reviewed 3 affiliations and 1 grants. + +## Findings + +- MEDIUM PUBLIC_PROFILE_WITHOUT_ORCID: R. Example has a public profile without an ORCID identifier. +- HIGH UNTRUSTED_AFFILIATION_SOURCE: Northbridge Institute affiliation uses untrusted source manual. +- HIGH EXPIRED_PUBLIC_AFFILIATION: Northbridge Institute affiliation expired on 2024-12-31. +- HIGH AFFILIATION_DOMAIN_MISMATCH: Northbridge Institute requires northbridge.edu, but no verified email matches that domain. +- MEDIUM AFFILIATION_WITHOUT_EVIDENCE: Northbridge Institute public affiliation lacks evidence references. +- HIGH AFFILIATION_DOMAIN_MISMATCH: West River Labs requires westriver.example, but no verified email matches that domain. +- HIGH AFFILIATION_DOMAIN_MISMATCH: East Valley University requires evu.example, but no verified email matches that domain. +- MEDIUM MULTIPLE_ACTIVE_PUBLIC_INSTITUTIONS: Profile has multiple active public institutions: West River Labs, East Valley University. +- HIGH GRANT_WITHOUT_PUBLIC_CONSENT: Private Foundation grant is public but consent is private. +- MEDIUM GRANT_WITHOUT_EVIDENCE: Private Foundation grant lacks evidence references. +- HIGH UNVERIFIED_AFFILIATION_USED_FOR_INVITES: Affiliation claims have blockers but are enabled for project invitation trust. +- HIGH UNVERIFIED_GRANT_USED_FOR_REPUTATION: Grant claims have blockers but are enabled for reputation scoring. + +## Release Criteria + +- Public affiliations come from ORCID, institutional SSO, or admin attestation. +- Expired appointments are hidden or refreshed before trust decisions. +- Verified email domains match claimed institutional affiliations. +- Public grant claims have consent and evidence references. +- Unverified affiliations and grants do not feed invitations, trust, or reputation scoring. diff --git a/researcher-affiliation-attestation-guard/reports/risky-profile.svg b/researcher-affiliation-attestation-guard/reports/risky-profile.svg new file mode 100644 index 00000000..eac4e97a --- /dev/null +++ b/researcher-affiliation-attestation-guard/reports/risky-profile.svg @@ -0,0 +1,12 @@ + + + Researcher Affiliation Attestation Guard + R. Example / public + + HOLD + Public affiliations: 3 + High: 8 + Medium: 4 + Low: 0 + Synthetic profile packets only. No real ORCID, SSO, grant, or email calls. + \ No newline at end of file diff --git a/researcher-affiliation-attestation-guard/reports/trusted-profile.json b/researcher-affiliation-attestation-guard/reports/trusted-profile.json new file mode 100644 index 00000000..1985a038 --- /dev/null +++ b/researcher-affiliation-attestation-guard/reports/trusted-profile.json @@ -0,0 +1,24 @@ +{ + "researcherId": "researcher-ada-001", + "displayName": "Ada Rivera", + "profileMode": "public", + "decision": "release", + "summary": { + "affiliationsReviewed": 1, + "publicAffiliations": 1, + "grantsReviewed": 1, + "publicGrants": 1, + "findings": 0, + "high": 0, + "medium": 0, + "low": 0 + }, + "findings": [], + "releaseCriteria": [ + "Public affiliations come from ORCID, institutional SSO, or admin attestation.", + "Expired appointments are hidden or refreshed before trust decisions.", + "Verified email domains match claimed institutional affiliations.", + "Public grant claims have consent and evidence references.", + "Unverified affiliations and grants do not feed invitations, trust, or reputation scoring." + ] +} \ No newline at end of file diff --git a/researcher-affiliation-attestation-guard/reports/trusted-profile.md b/researcher-affiliation-attestation-guard/reports/trusted-profile.md new file mode 100644 index 00000000..2937f6f3 --- /dev/null +++ b/researcher-affiliation-attestation-guard/reports/trusted-profile.md @@ -0,0 +1,21 @@ +# Researcher Affiliation Attestation Guard + +Scenario: trusted-profile + +Researcher: Ada Rivera +Profile mode: public +Decision: RELEASE + +Reviewed 1 affiliations and 1 grants. + +## Findings + +- No affiliation or grant attestation findings. + +## Release Criteria + +- Public affiliations come from ORCID, institutional SSO, or admin attestation. +- Expired appointments are hidden or refreshed before trust decisions. +- Verified email domains match claimed institutional affiliations. +- Public grant claims have consent and evidence references. +- Unverified affiliations and grants do not feed invitations, trust, or reputation scoring. diff --git a/researcher-affiliation-attestation-guard/reports/trusted-profile.svg b/researcher-affiliation-attestation-guard/reports/trusted-profile.svg new file mode 100644 index 00000000..96393710 --- /dev/null +++ b/researcher-affiliation-attestation-guard/reports/trusted-profile.svg @@ -0,0 +1,12 @@ + + + Researcher Affiliation Attestation Guard + Ada Rivera / public + + RELEASE + Public affiliations: 1 + High: 0 + Medium: 0 + Low: 0 + Synthetic profile packets only. No real ORCID, SSO, grant, or email calls. + \ No newline at end of file diff --git a/researcher-affiliation-attestation-guard/requirements-map.md b/researcher-affiliation-attestation-guard/requirements-map.md new file mode 100644 index 00000000..aeec9a73 --- /dev/null +++ b/researcher-affiliation-attestation-guard/requirements-map.md @@ -0,0 +1,14 @@ +# Requirements Map + +Issue #11 asks for user and project management: authentication and identity, researcher profiles, project spaces, permissions, activity/reputation metrics, public/private profile modes, institutional login, ORCID sync, funding sources, and collaboration governance. + +This slice covers a focused profile-trust gate: + +- Authentication and identity: validates that public affiliation claims come from ORCID, institutional SSO, or admin attestation. +- Researcher profiles: checks public affiliation and grant claims before they appear on a public profile. +- Institutional login: verifies institutional email domains match claimed public affiliations. +- Funding sources: requires public grant claims to carry consent and evidence references. +- Reputation metrics: blocks unverified affiliations or grants from feeding invitation trust or reputation scoring. +- Public/private modes: flags visibility mismatches between private profiles and public reputation badges. + +Out of scope by design: broad RBAC, project visibility transitions, object-level permissions, invitation MFA, lifecycle offboarding, data residency, profile publication disambiguation, and access denial appeals, because those are already covered by separate same-issue slices. diff --git a/researcher-affiliation-attestation-guard/sample-data.js b/researcher-affiliation-attestation-guard/sample-data.js new file mode 100644 index 00000000..83b2941c --- /dev/null +++ b/researcher-affiliation-attestation-guard/sample-data.js @@ -0,0 +1,98 @@ +const trustedProfile = { + researcherId: "researcher-ada-001", + displayName: "Ada Rivera", + profileMode: "public", + orcid: "0000-0002-1825-0097", + verifiedEmails: ["ada.rivera@unam.mx"], + affiliations: [ + { + id: "aff-unam", + institution: "UNAM Climate Lab", + role: "Principal Investigator", + source: "institutional-sso", + verifiedDomain: "unam.mx", + validFrom: "2024-01-01", + validUntil: "2027-12-31", + publicClaim: true, + evidenceRefs: ["sso:unam:ada.rivera", "orcid:employment:001"], + }, + ], + grants: [ + { + id: "grant-conacyt-42", + funder: "CONACYT", + projectId: "project-climate-yield", + publicClaim: true, + consent: "public", + evidenceRefs: ["award:conacyt-42"], + }, + ], + trustInputs: { + useAffiliationsForInvites: true, + useGrantsForReputation: true, + publicReputationBadge: true, + }, +}; + +const riskyProfile = { + researcherId: "researcher-claim-risk-002", + displayName: "R. Example", + profileMode: "public", + orcid: "", + verifiedEmails: ["researcher@gmail.com"], + affiliations: [ + { + id: "aff-expired", + institution: "Northbridge Institute", + role: "Visiting Fellow", + source: "manual", + verifiedDomain: "northbridge.edu", + validFrom: "2021-01-01", + validUntil: "2024-12-31", + publicClaim: true, + evidenceRefs: [], + }, + { + id: "aff-active-conflict", + institution: "West River Labs", + role: "Advisor", + source: "admin-attestation", + verifiedDomain: "westriver.example", + validFrom: "2025-01-01", + validUntil: "2027-12-31", + publicClaim: true, + evidenceRefs: ["attestation:wr-2026"], + }, + { + id: "aff-second-active", + institution: "East Valley University", + role: "Faculty", + source: "orcid", + verifiedDomain: "evu.example", + validFrom: "2025-01-01", + validUntil: "2027-12-31", + publicClaim: true, + evidenceRefs: ["orcid:employment:evu"], + }, + ], + grants: [ + { + id: "grant-private-77", + funder: "Private Foundation", + projectId: "project-sensitive-review", + publicClaim: true, + consent: "private", + evidenceRefs: [], + }, + ], + trustInputs: { + useAffiliationsForInvites: true, + useGrantsForReputation: true, + publicReputationBadge: true, + }, +}; + +module.exports = { + trustedProfile, + riskyProfile, +}; diff --git a/researcher-affiliation-attestation-guard/test.js b/researcher-affiliation-attestation-guard/test.js new file mode 100644 index 00000000..5ccacb56 --- /dev/null +++ b/researcher-affiliation-attestation-guard/test.js @@ -0,0 +1,41 @@ +const assert = require("assert"); + +const { assessAffiliationAttestation, normalizeProfile } = require("./index"); +const { trustedProfile, riskyProfile } = require("./sample-data"); + +const clean = assessAffiliationAttestation(trustedProfile, { asOf: "2026-06-01" }); +assert.strictEqual(clean.decision, "release"); +assert.strictEqual(clean.summary.findings, 0); +assert.strictEqual(clean.summary.publicAffiliations, 1); + +const risky = assessAffiliationAttestation(riskyProfile, { asOf: "2026-06-01" }); +assert.strictEqual(risky.decision, "hold"); +for (const code of [ + "PUBLIC_PROFILE_WITHOUT_ORCID", + "UNTRUSTED_AFFILIATION_SOURCE", + "EXPIRED_PUBLIC_AFFILIATION", + "AFFILIATION_DOMAIN_MISMATCH", + "AFFILIATION_WITHOUT_EVIDENCE", + "MULTIPLE_ACTIVE_PUBLIC_INSTITUTIONS", + "GRANT_WITHOUT_PUBLIC_CONSENT", + "GRANT_WITHOUT_EVIDENCE", + "UNVERIFIED_AFFILIATION_USED_FOR_INVITES", + "UNVERIFIED_GRANT_USED_FOR_REPUTATION", +]) { + assert(risky.findings.some((finding) => finding.code === code), `missing ${code}`); +} + +const reviseOnly = assessAffiliationAttestation({ + ...trustedProfile, + affiliations: trustedProfile.affiliations.map((affiliation) => ({ ...affiliation, evidenceRefs: [] })), + trustInputs: { ...trustedProfile.trustInputs, useAffiliationsForInvites: false }, +}); +assert.strictEqual(reviseOnly.decision, "revise"); +assert(reviseOnly.findings.some((finding) => finding.code === "AFFILIATION_WITHOUT_EVIDENCE")); + +assert.throws( + () => normalizeProfile({ ...trustedProfile, researcherId: "" }), + /researcherId must be a non-empty string/ +); + +console.log("researcher affiliation attestation guard tests passed");