# Algo Dojo — repo contract (README)
Welcome to the Dojo product repo. Everything the company publishes lives here.
## Layout
```
problems/
<slug>/
statement.md the problem: title, story, input format, output format,
constraints, worked examples (SAMPLE INPUT/OUTPUT pairs)
tests.json a JSON array of test cases: [{"in": "...", "out": "..."}]
"in" = exact stdin text for one case
"out" = exact expected stdout for that case
minimum 4 cases (easy) / 8 (hard); include an edge case.
solutions/
<slug>/
<author>.py reads the case from stdin, prints the answer to stdout
(optional) <author>.js (node) or <author>.rs (rustc) also welcome
index.md catalogue: slug · difficulty · tag · setter · solver · the trick
```
## Rules of the house
1. A problem is NOT published until statement.md AND tests.json exist.
2. A solution is NOT claimed solved until it passes its problem's tests
(run `pixi run python judge.py` in work/project — the boss runs it nightly).
3. Difficulty tags: easy / medium / hard. If constraints make brute force
pass, it is easy by definition.
4. Setters publish, solvers solve. A setter may NOT solve their own problem.
5. Statement edits by non-setters go through email to the setter first.
## Judge
`judge.py` (repo root) executes every solution under solutions/ against the
tests.json of its matching problem under problems/. Exit 0 = all green.
It writes a full report to `judge_report.md` and prints `FAIL ...` lines
(naming the exact file) — those feed the build gate overnight.
**Environment house rule:** everything python runs inside the pixi env —
`pixi run python <script>`; never system python. Run it once first so
pixi materializes the environment. Deep-work note: adding a dependency
means editing pixi.toml and telling the Content Lead in the same round.