MAXGEN schema · v1.13
MaxTask
A unit of research work for a human or an AI, with proof required.
Download MaxTask v1.13
All versions
https://opengenealogyai.org/schemas/maxgen/v1/task-queue.schema.json
The work is irreducibly distributed
The UK National Archives holds eleven million documents. The US National Archives holds thirteen billion pages. No organisation, model, or volunteer community can process all of it. Genealogical research will always be done by millions of people and machines in parallel, over decades. MaxTask is the standard way to describe one piece of that work.
What it is
A task is a request: "transcribe this image", "decide whether the Johann Müller in record X is the John Miller in record Y", "search the Württemberg emigration lists for Müllers who left between 1840 and 1860", "resolve these two contradictory birth years". A task can go to an AI agent, a volunteer, or a specialist organisation. It can carry a cost cap, a deadline, dependencies on other tasks, and a review step before its result is accepted.
What makes it different
- Acceptance criteria (
acceptance_criteria[]): objective, checkable conditions that define "done" before work starts. - Evidence required (
evidence_required[]): the anti-hallucination rule. A task that needs a birth record must return a link to the birth record. A search must return the exact query and what it found. An AI cannot pass by producing plausible text. - A structured result, not a text blob: what was tested, what was done, what was found, what changed, what to do next. Each step carries a verdict:
| Verdict | Colour | Meaning |
|---|---|---|
key_finding |
green | Confirmed. |
usable |
blue | A useful lead. |
inconclusive |
amber | Mixed. |
ruled_out |
red | Definitively disproved. A disproof is information, not a dead end. |
dead_end |
grey | Searched, found nothing. |
infra |
grey | Infrastructure work. |
- An independent review (
review{}): the reviewer must not be the contributor. Rejection reasons includefabricated_or_hallucinatedandprivacy_violation, which build a quality signal over time. - A privacy gate (
contributor_eligibility): defaults tofirst_party_only. Any task about a living person can never be sent to outside volunteers or third-party AI services. This rule is part of the standard.
What is deliberately not in it
Payment. An open standard must be neutral on business models. Who gets paid, how much, and how lives in extensions{}, so the standard describes the work and the quality gate while each implementation decides the economics.
Task types
extract_record validate_record merge_person judge_review resolve_conflict ingest_to_qdrant build_tree fetch_internet_archive cost_report other
Fields
| Field | Type | Meaning |
|---|---|---|
task_id required | string | Globally unique task identifier. |
schema_version | const "1.13" | |
task_type required | enum | Category of work to be performed. |
status required | enum | Current lifecycle state. |
priority | integer | 1=lowest, 10=highest. |
payload | object | Task-specific input data. |
result | object | MAXGEN v1.5 — structured, client-readable task output set by the consuming agent on completion. |
assigned_to | string | Agent ID currently processing this task. |
cost_usd | number | Actual API cost incurred by the processing agent. |
cost_cap_usd | number | Maximum allowed cost for this task. |
retry_count | integer | Number of times this task has been retried after failure. |
max_retries | integer | |
error_message | string | Error description if status is failed or escalated. |
escalation_reason | string | Why this task was escalated to the Opus conflict resolver. |
created_at required | string | |
created_by required | string | Agent ID that created this task. |
started_at | string | |
completed_at | string | |
queue_file_path | string | Filesystem path in the file-based queue (inbox/processing/done/failed). |
depends_on | array of string | Task IDs that must be in status=done before this task can start. |
parent_task_id | string | MAXGEN v1.5 — the directive/goal task this task was spawned from. |
acceptance_criteria | array of string | MAXGEN v1.5 — objective, checkable conditions defining a COMPLETE, payable result. |
min_confidence | number | MAXGEN v1.5 — minimum result.confidence required for acceptance. |
evidence_required | array of string | MAXGEN v1.5 — proof the worker MUST return (source URLs, exact queries, citations). |
contributor_eligibility | enum | MAXGEN v1.5 PRIVACY GATE — who may be assigned this task. |
contributor | object | MAXGEN v1.5 — who claimed/performed this task. |
deadline | string | |
review | object | MAXGEN v1.5 — independent quality review BEFORE payment; the gate against poor work. |
extensions | object | MAXGEN v1.5 — open namespace for implementer/product-specific fields that are intentionally NOT part of the neutral standard. |
Example
A conflict-resolution task escalated to a stronger model because two candidate mothers were within 0.05 of each other.
{
"task_id": "c1000000-0016-4000-8000-000000000016",
"schema_version": "1.13",
"task_type": "resolve_conflict",
"status": "done",
"priority": 9,
"payload": {
"person_id": "b1000000-0012-4000-8000-000000000012"
},
"result": {
"resolution": "adoptive_mother_confirmed",
"winning_parent_id": "b1000000-0030-4000-8000-000000000030",
"confidence": 0.72
},
"assigned_to": "opus-conflict-resolver",
"cost_usd": 4.2,
"cost_cap_usd": 5.0,
"retry_count": 0,
"max_retries": 1,
"escalation_reason": "Conflicting biological vs adoptive mother with confidence gap 0.05",
"created_at": "2026-05-04T15:00:00Z",
"created_by": "judge-agent-sonnet-001",
"started_at": "2026-05-04T15:10:00Z",
"completed_at": "2026-05-04T15:45:00Z"
}
Listen
MaxTask — Distributing the work
24:29Task types, the verdict vocabulary, acceptance criteria, and the anti-hallucination rule.