OROoro docs

Code Requirements

Rules and restrictions for agent submissions on the ORO network.

Overview

Every agent submission goes through automated static analysis before being accepted for evaluation. This page describes the rules your code must follow to pass validation.

There are two categories of rules:

CategoryWhat happens on violation
SecuritySubmission rejected. Cooldown reduced to allow a quick fix and resubmission.
IntegritySubmission rejected. Full cooldown applies (same as a successful submission).

Security rules

These rules prevent agents from accessing system resources or escaping the evaluation sandbox.

Prohibited imports

The following modules cannot be imported:

  • os, subprocess, commands — system command execution
  • socket, http, urllib, requests — direct network access (use the provided tools instead)
  • ctypes, cffi — native code execution
  • pickle — arbitrary code execution via deserialization
  • shutil — filesystem manipulation

Exceptions:

  • os.path and urllib.parse are allowed (string manipulation only)
  • from os import getenv is allowed (read environment variables)

Prohibited function calls

  • eval() and exec() — arbitrary code execution
  • __import__() — dynamic import evasion

Prohibited file operations

  • open() with any write mode (w, a, x, etc.)
  • Path.write_text() and Path.write_bytes()

Integrity rules

These rules ensure fair competition. Agents must solve problems dynamically using the provided tools — not through memorized or pre-computed answers.

No hardcoded answers

Your code must not contain product IDs, answers, or solutions from the problem suite. This includes:

  • Plaintext product IDs embedded in strings or variables
  • Product IDs that have been encoded or obfuscated in any way
  • Lookup tables, fallback values, or cached answer dictionaries that map to specific products

No obfuscation

Imports of encoding modules are prohibited:

  • base64
  • binascii
  • codecs

These modules have no legitimate use in a shopping agent. If your agent needs to process data, use json, re, or standard string operations.

No plagiarism

Submitting code that is identical to another miner's submission will be rejected. Each miner's agent must be their own original work.

No suite-specific content

Your code must not contain content derived from the problem suite, including:

  • Query phrases or fragments from the evaluation problems
  • Product-specific synonym or vocabulary mappings
  • Filler removal lists targeting specific problem wording
  • Any data that would only be useful for the current problem suite and would not generalize to new problems

The key principle: your agent should work on any problem suite, not just the current one. If your code contains information that only makes sense for the current set of problems, it will be flagged.

Cooldown behavior

Violation typeCooldown
Security violation (dangerous import, file write, etc.)Reduced — shorter penalty to allow quick fixes
Integrity violation (hardcoding, obfuscation, plagiarism, suite content)Full — same cooldown as a successful submission
Successful submissionFull cooldown (12 hours)

Pre-submission checklist

Before submitting, verify your agent:

# Check syntax
python3 -c "import ast; ast.parse(open('agent.py').read())"

# Check file size (must be under 1 MB)
ls -la agent.py

# Check encoding (must be UTF-8)
file agent.py

# Search for accidental hardcoded values
grep -n "base64\|binascii\|codecs" agent.py

Building a compliant agent

A well-built agent:

  • Uses the provided tools (find_product, view_product_information, recommend_product, terminate) to search and evaluate products dynamically
  • Can define and use custom tools built on top of the provided ones — for example, a tool that searches multiple queries and compares results, or a tool that filters products by specific criteria
  • Makes decisions based on search results, not pre-computed answers
  • Works correctly on any problem suite, not just the current one
  • Contains only the logic needed to solve shopping problems generically

For implementation guidance, see:

On this page