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
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
# deepevents.ai
deepevents.ai main codebase

## Community tooling additions

- `reputation-transparency-receipts`: reviewer-safe reputation receipts for structured peer reviews, CRediT contribution attribution, blinded visibility, leaderboards, tiers, and moderation evidence.
26 changes: 26 additions & 0 deletions reputation-transparency-receipts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Reputation Transparency Receipts

This module is a self-contained milestone for SCIBASE issue #15, Community and User Reputation System. It focuses on transparent reputation evidence rather than a broad social feed implementation.

It models structured peer-review receipts, CRediT-style contribution records, anonymous and semi-private review visibility, endorsement quality, reproducibility badges, bounty completions, leaderboards, tiers, and moderator findings. The goal is to make every reputation point explainable from a reviewer-safe receipt.

## What It Covers

- Structured peer review scores for clarity, rigor, novelty, and reproducibility.
- Public, semi-private, anonymous, and double-blind review receipts.
- Inline comment anchors against manuscripts, datasets, code, or notebooks.
- CRediT-style contribution attribution with verified artifact receipts.
- Transparent reputation signal breakdowns and incentive tiers.
- Domain, institution, and global leaderboards.
- Abuse and privacy findings for self endorsement, thin high-score reviews, reciprocal endorsement rings, and anonymous identity leaks.
- Deterministic evidence digests for audit trails and project timelines.

## Run It

```bash
npm run check
npm test
npm run demo
```

All logic is dependency-free and uses only Node.js built-ins.
132 changes: 132 additions & 0 deletions reputation-transparency-receipts/data/sample-community-input.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
{
"generatedAt": "2026-05-16T15:20:00.000Z",
"community": "SCIBASE beta contributor community",
"users": [
{
"id": "usr-ada",
"handle": "Ada Chen",
"domain": "biology",
"institution": "North Lab",
"lastActiveAt": "2026-05-15T12:00:00.000Z"
},
{
"id": "usr-ben",
"handle": "Ben Ortiz",
"domain": "biology",
"institution": "North Lab",
"lastActiveAt": "2026-05-01T09:00:00.000Z"
},
{
"id": "usr-cora",
"handle": "Cora Singh",
"domain": "physics",
"institution": "River Institute",
"lastActiveAt": "2026-04-28T18:00:00.000Z"
}
],
"reviews": [
{
"id": "rev-manuscript-1",
"reviewerId": "usr-ada",
"projectId": "proj-organoid-map",
"mode": "public",
"scores": {
"clarity": 4.4,
"rigor": 4.7,
"novelty": 4.1,
"reproducibility": 4.6
},
"evidenceLinks": ["claim-2", "dataset-v3", "notebook-run-17"],
"commentAnchors": ["methods:line-42", "results:figure-2"],
"createdAt": "2026-05-12T08:00:00.000Z"
},
{
"id": "rev-doubleblind-7",
"reviewerId": "usr-ben",
"projectId": "proj-neurochip",
"mode": "double_blind",
"visibleTo": ["editor-board"],
"scores": {
"clarity": 4.9,
"rigor": 4.8,
"novelty": 4.8,
"reproducibility": 4.7
},
"evidenceLinks": ["protocol-9"],
"commentAnchors": ["discussion:limitation-1"],
"createdAt": "2026-05-11T17:30:00.000Z"
}
],
"contributions": [
{
"id": "cred-001",
"userId": "usr-ada",
"projectId": "proj-organoid-map",
"creditRole": "data_curation",
"artifactIds": ["dataset-v3", "schema-v2"],
"verifiedBy": "editor-board",
"createdAt": "2026-05-08T10:00:00.000Z"
},
{
"id": "cred-002",
"userId": "usr-cora",
"projectId": "proj-neurochip",
"creditRole": "software",
"artifactIds": ["analysis-cli", "notebook-run-17"],
"verifiedBy": "editor-board",
"createdAt": "2026-05-09T10:00:00.000Z"
},
{
"id": "cred-003",
"userId": "usr-ben",
"projectId": "proj-neurochip",
"creditRole": "peer_review",
"artifactIds": ["rev-doubleblind-7"],
"createdAt": "2026-05-11T17:45:00.000Z"
}
],
"endorsements": [
{
"id": "end-001",
"fromUserId": "usr-ben",
"toUserId": "usr-ada",
"projectId": "proj-organoid-map",
"reason": "High quality methods review",
"createdAt": "2026-05-13T10:00:00.000Z"
},
{
"id": "end-002",
"fromUserId": "usr-cora",
"toUserId": "usr-ada",
"projectId": "proj-organoid-map",
"reason": "Reusable dataset curation",
"createdAt": "2026-05-13T11:00:00.000Z"
},
{
"id": "end-003",
"fromUserId": "usr-ben",
"toUserId": "usr-ben",
"projectId": "proj-neurochip",
"reason": "Self boost",
"createdAt": "2026-05-13T12:00:00.000Z"
}
],
"reproducibilityBadges": [
{
"id": "badge-organoid-replay",
"userId": "usr-cora",
"projectId": "proj-organoid-map",
"verified": true,
"verifiedAt": "2026-05-14T15:00:00.000Z"
}
],
"bountyCompletions": [
{
"id": "bounty-peer-review-template",
"userId": "usr-ada",
"projectId": "proj-organoid-map",
"amount": 150,
"verified": true
}
]
}
Binary file added reputation-transparency-receipts/docs/demo.mp4
Binary file not shown.
24 changes: 24 additions & 0 deletions reputation-transparency-receipts/docs/demo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions reputation-transparency-receipts/docs/requirement-map.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Requirement Map

SCIBASE issue #15 asks for peer reviews and comments, contributor credits, reputation scoring, leaderboards, badges, and incentive tiers.

| Requirement | Implementation |
| --- | --- |
| Structured peer reviews | `reviewReceipts` preserve per-review scores, evidence links, mode, and comment anchors. |
| Public, semi-private, anonymous, double-blind modes | `visibilityReceipt` redacts anonymous identities and restricts semi-private visibility. |
| Inline commenting | `commentAnchors` link review feedback to manuscript, dataset, code, or notebook locations. |
| Contributor credits | `contributionCredits` groups CRediT-style roles, verified artifacts, projects, and receipts per user. |
| Project timelines | `timeline` combines review, credit, and reputation tier events. |
| Reputation scoring | `reputationReports` expose contribution, review, endorsement, reproducibility, bounty, recency, and penalty signals. |
| Leaderboards | `leaderboards` emits global, domain, and institution rankings. |
| Badges and incentive tiers | `reputationTier` assigns community member, verified contributor, trusted reviewer, and open science champion tiers. |
| Abuse resistance | `moderationFindings` flags self endorsements, thin high-score reviews, endorsement rings, and anonymous identity leaks. |
| Auditability | `evidenceDigest` is deterministic for reviewer-ready receipts and score evidence. |
11 changes: 11 additions & 0 deletions reputation-transparency-receipts/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name": "reputation-transparency-receipts",
"version": "1.0.0",
"private": true,
"type": "module",
"scripts": {
"check": "node --check src/reputation-transparency-receipts.js && node --check scripts/demo.js && node --check test/reputation-transparency-receipts.test.js",
"test": "node --test test/reputation-transparency-receipts.test.js",
"demo": "node scripts/demo.js"
}
}
18 changes: 18 additions & 0 deletions reputation-transparency-receipts/scripts/demo.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { readFileSync } from "node:fs";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import { analyzeReputationTransparencyReceipts } from "../src/reputation-transparency-receipts.js";

const root = dirname(dirname(fileURLToPath(import.meta.url)));
const input = JSON.parse(readFileSync(join(root, "data", "sample-community-input.json"), "utf8"));
const report = analyzeReputationTransparencyReceipts(input);

console.log(`${report.community} reputation transparency receipts`);
console.log(`Evidence digest: ${report.evidenceDigest}`);
console.log(`Review receipts: ${report.summary.reviewReceipts}`);
console.log(`Contribution receipts: ${report.summary.contributionReceipts}`);
console.log(`Moderation findings: ${report.summary.findings}`);
console.log("Global leaderboard:");
for (const entry of report.leaderboards.global) {
console.log(`- ${entry.handle}: ${entry.score} (${entry.tier})`);
}
Loading