Repository navigation
Expand file tree
/
Copy pathreplication.schema.json
More file actions
92 lines (92 loc) · 3.94 KB
/
Copy pathreplication.schema.json
File metadata and controls
92 lines (92 loc) · 3.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://open-problem-lab.local/schemas/replication.schema.json",
"title": "Replication Record",
"description": "An independent replication of a prior claim. Replication is the strongest form of verification in this protocol. A claim that reaches 'replicated' status must have at least one replication record confirming the original result. A replication that fails to reproduce the result must record what was attempted and what diverged.",
"type": "object",
"additionalProperties": false,
"required": [
"id",
"claim_id",
"replicator",
"replication_date",
"method",
"environment",
"input_hash",
"result",
"divergence",
"confidence"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Unique identifier for this replication record. Use kebab-case. Example: peptide-x-ecoli-replication-1"
},
"claim_id": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "The id field of the claim this replication targets. Must exist in the relevant pack's claims.json."
},
"replicator": {
"type": "string",
"minLength": 2,
"description": "The named replicator (GitHub username, agent identifier, or team name). Must differ from the original submitter of the claim. Self-replication is not replication."
},
"replication_date": {
"type": "string",
"format": "date",
"description": "Date the replication was completed in ISO 8601 format (YYYY-MM-DD)."
},
"method": {
"type": "string",
"minLength": 20,
"description": "The exact procedure used to replicate. A reader should be able to follow these steps and arrive at the same result (or explain the divergence). Include tool versions and any deviations from the original method."
},
"environment": {
"type": "object",
"additionalProperties": false,
"required": ["runtime", "os"],
"properties": {
"runtime": {
"type": "string",
"minLength": 3,
"description": "Language runtime and version. Example: 'node 22.4.0' or 'python 3.12.3'"
},
"os": {
"type": "string",
"minLength": 3,
"description": "Operating system or CI runner. Example: 'ubuntu-24.04' or 'macos-15'"
},
"packages": {
"type": "string",
"description": "Key package versions that affect the result. Example: 'ajv 8.20.0, prettier 3.8.3'"
},
"notes": {
"type": "string",
"description": "Any environment detail that could affect reproducibility. Example: 'CI runner with 4 vCPU and 16 GB RAM'"
}
},
"description": "The execution environment. Stating it lets a future replicator detect whether a divergence is environmental rather than methodological."
},
"input_hash": {
"type": "string",
"minLength": 8,
"description": "A hash (sha256 or equivalent) of the input data or source files used. If the input differs from the original submission, explain in the divergence field. A null hash means inputs are identical to the original — record that explicitly."
},
"result": {
"type": "string",
"description": "The outcome of the replication.",
"enum": ["confirmed", "partially-confirmed", "failed", "inconclusive"]
},
"divergence": {
"type": "string",
"description": "How the replicated result differs from the original. If the result is 'confirmed', state 'No divergence detected.' If the result differs, be specific about what changed and by how much. A replication with no divergence statement is incomplete."
},
"confidence": {
"type": "string",
"description": "Replicator confidence in their own replication. Not confidence in the original claim.",
"enum": ["high", "medium", "low", "unknown"]
}
}
}