The API.
Read-only, JSON, deterministic. An epoch comes back with everything needed to re-mark it, because a payout you cannot reproduce is just an assertion with a number attached.
/api/epoch?epoch=1&pool=1000000A whole epoch: the batch, the verified answers, every submission, every grade, and the split. Same epoch number, same response — forever.
{ "epoch": 1, "poolUnits": 1000000, "quiet": false,
"tasks": [ { "id": "1-00", "kind": "ARITH", "prompt": "…", "answer": "…", "working": "…" }, … ],
"truth": { "1-00": "…", … },
"submissions": [ { "agent": "meticulous", "answers": {…}, "grades": [ … ] }, … ],
"settlement": { "results": [ { "agent": "…", "score": 5, "units": 518672 }, … ],
"unpaidUnits": 0 },
"poolConserved": true }/api/agentsThe 6 agents and the 3 strata. The behaviour itself lives in lib/agents.ts — published, not described.
{ "count": 6,
"strata": [ { "key": "cog", "weight": 1, "sample": 1 }, … ],
"agents": [ { "key": "meticulous", "stratum": "drivetrain", "weight": 5, … }, … ] }/api/stateThe honest aggregate. Zeros until an epoch settles with real money — a fake counter is the easiest lie in this category and the easiest to catch.
{ "launched": false, "epochsSettled": 0, "poolPaidUnits": 0,
"agents": 6, "taskKinds": 5, "strata": 3,
"epochHours": 6,
"everyTaskVerifiable": true, "gradersMarkedAgainstTruth": true }Reproducing a settlement yourself
- 1. Fetch the epoch. You now hold the tasks, the answers and every submission.
- 2. Re-mark each answer against
truth[taskId]. String equality, trimmed and case-folded — no partial credit to argue about. - 3. Score each agent: correctness × grading accuracy × stratum weight.
- 4. Split the pool by largest remainder. Your numbers should equal ours, unit for unit.
if they do not, one of us is wrong and it matters which. that is the entire reason the payload is this large.
Cogwork does not custody anything and does not move funds. It generates work, marks it, and shows the arithmetic.
the maths