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
Name is a valid sluglowercase letters, digits, hyphens — e.g. lem-my-result
Name is unique in the corpusno collision
Conventional prefix for kind
Statement is non-emptythe statement is the atom — it cannot be blank
Title is non-empty
Proven kind carries a prooftheorems/lemmas/propositions/corollaries must include a proof
Proven kind depends on somethinga 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.
{
  "kind": "lemma",
  "name": "",
  "title": "",
  "statement": "",
  "domain": "number-theory",
  "foundation": "peano",
  "dependencies": [],
  "relations": [],
  "proof": null,
  "references": []
}
Then: content/nodes/your-node.json python -m ouro verifypython -m ouro.export_web → PR. The content hash is computed by the store on save.