Researcher workbench
Contribute a node
Draft a new atom of knowledge against the live corpus. The checks on the right mirror the kernel's structural rules as you type — but admission is the kernel's alone: place the JSON in content/nodes/, run python -m ouro verify, then python -m ouro.export_web, and open a pull request. Nothing enters the graph without passing verification.
References use this name forever — choose carefully.
ax-inductionax-ring-integersax-well-orderingdef-infiniteax-induction-notedef-dividesdef-gcddef-primelem-divides-linearcex-1-not-primedef-compositeex-7-primelem-bezoutlem-prime-divisorex-6-compositelem-euclid-lemmathm-euclid-infinitudecor-nth-prime-existsthm-fundamental-arithmetic
Structural checks (mirror of the kernel)
✗Name is a valid slug — lowercase letters, digits, hyphens — e.g. lem-my-result
✗Name is unique in the corpus — no collision
✓Conventional prefix for kind
✗Statement is non-empty — the statement is the atom — it cannot be blank
✗Title is non-empty
✗Proven kind carries a proof — theorems/lemmas/propositions/corollaries must include a proof
✗Proven kind depends on something — a proof that uses nothing proves nothing new
✓No self-dependency
✓All dependencies exist
✓Foundation is strong enough for dependencies
✓Cannot create a cycle
Resolve the ✗ items — the kernel would reject this draft.
Node JSON
{
"kind": "lemma",
"name": "",
"title": "",
"statement": "",
"domain": "number-theory",
"foundation": "peano",
"dependencies": [],
"relations": [],
"proof": null,
"references": []
}Then:
content/nodes/your-node.json → python -m ouro verify → python -m ouro.export_web → PR. The content hash is computed by the store on save.