Skip to content

Commit 4de7053

Browse files
committed
docs: self-document agent-submission schema and add reviewer guide
Add description fields to every property in agent-submission.schema.json, making it self-documenting for AI agents that parse schemas: what each field requires, what counts as a valid value, what common mistakes look like, and why the field exists. Addresses the most critical path for AI agent contributors. Add docs/REVIEW-GUIDE.md — a step-by-step guide for domain reviewers covering: evidence quality check, method review, failure mode review, done condition check, review record format (accepted/needs-changes/needs-replication/reject), replication protocol, common review mistakes, and how reviewer reputation is earned. This is the primary resource for recruiting and onboarding domain experts.
1 parent 11cf672 commit 4de7053

2 files changed

Lines changed: 163 additions & 5 deletions

File tree

‎docs/REVIEW-GUIDE.md‎

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
# Review Guide
2+
3+
Domain reviewers are the most valuable contributors to Open Problem Lab. This guide explains how to conduct a review, what to look for, and how to write a review record.
4+
5+
## What Reviewing Means Here
6+
7+
A review is not a judgment of the contributor. It is a judgment of whether the evidence and method are sufficient to justify the claim at the stated confidence level, in the context of the problem pack's safety requirements.
8+
9+
You may reject for:
10+
- Weak or undated evidence
11+
- Unclear method
12+
- Hidden assumptions
13+
- Missing failure modes
14+
- Unsafe downstream use
15+
- Unverifiable claims
16+
17+
You do not need to prove the claim false. The submitter must prove it reliable enough to merge.
18+
19+
## Review Types
20+
21+
| Type | When you are needed |
22+
|------|---------------------|
23+
| `domain-reviewer` | You have expertise in the problem area (epidemiology, climate science, water engineering, etc.) |
24+
| `replicator` | You independently rerun a quantitative artifact and confirm reproducibility |
25+
| `red-team-reviewer` | You adversarially stress-test claims and failure modes |
26+
| `field-reality-reviewer` | You have direct field experience with the decision context |
27+
28+
A single PR may need multiple review types. The task's `reviewer_needed` field specifies which.
29+
30+
## Step-by-Step Review Process
31+
32+
### 1. Understand the Task
33+
34+
Read the task in `tasks.json` to understand:
35+
- What outcome was expected
36+
- What inputs were specified
37+
- What the done condition is
38+
- What safety risk level applies
39+
40+
### 2. Check Evidence Quality
41+
42+
For each evidence record in `evidence.json`:
43+
- Can you access the URL?
44+
- Does the source_date look accurate?
45+
- Does the claim accurately represent what the source says?
46+
- Are the limitations honest? (Too few limitations is usually a red flag, not a sign of quality)
47+
- Is the evidence type correctly classified?
48+
49+
**Red flags in evidence:**
50+
- Claims that exceed what the source can prove at the stated grain
51+
- Source dates that are missing or implausible
52+
- URLs that return errors or require unapproved access
53+
- Limitations that are vague ("results may vary")
54+
- Citing a secondary source (a report about a study) instead of the primary
55+
56+
### 3. Check the Method
57+
58+
For the submission's method field:
59+
- Could you replicate the reasoning from the evidence to the claim?
60+
- Is there a step where the submitter makes an inference the evidence does not support?
61+
- Are the assumptions listed complete?
62+
63+
A method that says "reviewed the literature" without specifying which sections, what criteria, and what conclusions were drawn is not a reviewable method.
64+
65+
### 4. Check the Failure Modes
66+
67+
For each failure mode listed:
68+
- Is it specific enough to be useful?
69+
- Does it cover the most plausible misuse scenario?
70+
- For high-risk submissions: has a red-team-reviewer signed off?
71+
72+
**Things to look for:**
73+
- Grain mismatch: is the claim being made at a grain the evidence cannot support?
74+
- Causal overreach: does the claim imply causation where the evidence shows only association?
75+
- Operational overreach: does the output imply actionability it has not earned?
76+
77+
### 5. Check the Done Condition
78+
79+
Compare the submission to the task's done condition. Ask:
80+
- Is the done condition met? (Binary: yes or no)
81+
- If not, what specifically is missing?
82+
83+
### 6. Write the Review
84+
85+
Use the review issue template or the `review.schema.json` format:
86+
87+
```json
88+
{
89+
"review_id": "task-id-review-N",
90+
"target_id": "task-id",
91+
"reviewer_role": "domain-reviewer",
92+
"verdict": "accepted | needs-changes | needs-replication | reject",
93+
"strengths": ["..."],
94+
"concerns": ["..."],
95+
"required_changes": ["..."],
96+
"replication_needed": true | false,
97+
"confidence": "high | medium | low"
98+
}
99+
```
100+
101+
**Verdict guide:**
102+
- `accepted`: Evidence is sufficient, method is sound, failure modes are honest, done condition is met.
103+
- `needs-changes`: Specific changes would make this acceptable. List them in `required_changes`.
104+
- `needs-replication`: The claim is plausible but needs independent reproduction before acceptance.
105+
- `reject`: The claim is unsupported, the method is invalid, or the output is unsafe to publish.
106+
107+
### 7. Post the Review
108+
109+
Post the review as a structured comment on the pull request. Use the `review.schema.json` format or the Review issue template.
110+
111+
If you are requesting replication, tag a replicator in your review comment.
112+
113+
## Common Review Mistakes
114+
115+
| Mistake | Why it matters |
116+
|---------|---------------|
117+
| Approving because the prose is well-written | Quality prose can hide weak evidence |
118+
| Requesting cosmetic changes instead of flagging the real issue | Cosmetic reviews waste everyone's time |
119+
| Being vague in required_changes | "Improve the analysis" is not a reviewable change request |
120+
| Not reading the task done condition | The review is against the done condition, not your personal standard |
121+
| Applying high-safety-risk standards to low-risk framing | Mismatch in standards delays useful work |
122+
123+
## Replication Protocol
124+
125+
If your review verdict is `needs-replication`:
126+
127+
1. State specifically what artifact must be replicated and what the expected outcome is.
128+
2. The replicator should follow the `reproducibility_steps` in the submission exactly.
129+
3. The replicator should post a replication record: what they ran, what they got, and whether it matched.
130+
4. If replication fails, the replicator should state exactly where the divergence occurred.
131+
132+
A replication that says "I tried it and it worked" without stating what exactly was run and what was confirmed is not a valid replication.
133+
134+
## Reviewer Reputation
135+
136+
Reputation is earned by:
137+
- Accurate rejections that prevent false claims from becoming canonical
138+
- Clear, specific, actionable reviews that submitters can act on
139+
- Identifying failure modes the submitter missed
140+
141+
Reputation is not earned by:
142+
- Volume of reviews
143+
- Approving submissions quickly
144+
- Never rejecting
145+
146+
The contribution ledger is git log and the merged PR history. There is no separate scoreboard.

‎schemas/agent-submission.schema.json‎

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"$schema": "https://json-schema.org/draft/2020-12/schema",
33
"$id": "https://open-problem-lab.local/schemas/agent-submission.schema.json",
44
"title": "Agent Submission",
5+
"description": "A structured submission from an AI agent or human contributor. One submission covers one task, one role, one claim. Submissions that mix roles or make multiple independent claims will be returned for splitting.",
56
"type": "object",
67
"additionalProperties": false,
78
"required": [
@@ -19,10 +20,12 @@
1920
"properties": {
2021
"task_id": {
2122
"type": "string",
22-
"minLength": 3
23+
"minLength": 3,
24+
"description": "The exact id field from tasks.json for the task this submission addresses. Example: source-inventory"
2325
},
2426
"agent_role": {
2527
"type": "string",
28+
"description": "The role guide used for this submission. Pick one and stay in it. See agents/ directory for each role's requirements and failure modes.",
2629
"enum": [
2730
"literature-scout",
2831
"data-cleaner",
@@ -33,22 +36,27 @@
3336
},
3437
"claim": {
3538
"type": "string",
36-
"minLength": 20
39+
"minLength": 20,
40+
"description": "One specific, falsifiable statement. State what can be proven, at what grain, with what evidence. A claim that cannot be shown false is not a claim. Do not include what the source cannot prove — put that in failure_modes or limitations."
3741
},
3842
"evidence": {
3943
"type": "array",
44+
"description": "List of evidence record IDs from evidence.json that support this claim. Every evidence ID here must exist in the relevant pack's evidence.json before this submission is merged.",
4045
"items": {
4146
"type": "string",
42-
"minLength": 3
47+
"minLength": 3,
48+
"description": "An evidence record ID from evidence.json. Example: who-malaria-fact-sheet-2024"
4349
},
4450
"minItems": 1
4551
},
4652
"method": {
4753
"type": "string",
48-
"minLength": 10
54+
"minLength": 10,
55+
"description": "How you derived the claim from the evidence. A reviewer should be able to repeat your reasoning and arrive at the same conclusion — or name the step where they disagree."
4956
},
5057
"reproducibility_steps": {
5158
"type": "array",
59+
"description": "Ordered steps a reviewer or replicator can follow to verify this submission independently. Each step should be specific enough to execute without asking the submitter for clarification.",
5260
"items": {
5361
"type": "string",
5462
"minLength": 5
@@ -57,6 +65,7 @@
5765
},
5866
"assumptions": {
5967
"type": "array",
68+
"description": "Conditions that must be true for the claim to hold. State them explicitly. A hidden assumption is a failure mode waiting to be found by a reviewer.",
6069
"items": {
6170
"type": "string",
6271
"minLength": 5
@@ -65,6 +74,7 @@
6574
},
6675
"failure_modes": {
6776
"type": "array",
77+
"description": "Specific ways this claim could be wrong, misleading, or harmful if applied. Include grain mismatches, causal claims that exceed the evidence, and plausible misuse scenarios. 'Results may vary' is not a failure mode.",
6878
"items": {
6979
"type": "string",
7080
"minLength": 5
@@ -73,11 +83,13 @@
7383
},
7484
"confidence": {
7585
"type": "string",
86+
"description": "Your confidence that the claim accurately represents what the evidence proves at the stated grain. Not confidence that the claim is true in the world. high = strong evidence, clear method, low risk of error. medium = adequate evidence with stated limitations. low = preliminary, needs more evidence or verification. unknown = cannot assess.",
7687
"enum": ["high", "medium", "low", "unknown"]
7788
},
7889
"suggested_next_issue": {
7990
"type": "string",
80-
"minLength": 5
91+
"minLength": 5,
92+
"description": "The logical next step after this submission. Required field — state what should happen next even if no issue will be opened. Do not open a new GitHub issue unless the task explicitly asks for it. Example: 'Obtain district-level dengue surveillance data from NCDC to begin baseline construction.'"
8193
}
8294
}
8395
}

0 commit comments

Comments
 (0)