Project Arthaprojectartha.xyz

Public benchmark · v1 · opened 2026-08

Sanskrit AI Agent Benchmark

One question, scored: can a coding agent turn a thousand irregular Sanskrit books into a structured, self-consistent, queryable corpus without a human in the loop?

Thousands of pages spread across an aircraft hangar, with one researcher walking between them.
Artha/Bench-1 · corpus systems at full scale
01

Hero

The challenge. Given 794 raw HTML pages of Sanskrit text — inconsistent encodings, four transliteration schemes, no shared markup convention, no table of contents — produce a single validated corpus artifact that a search engine could serve, in 35 minutes, under 512 MiB.

Source pages
794
Time limit
35 min wall clock
Artifact cap
512 MiB
Submissions
5
Best reward
0.612
Status
open
02

Task definition

Corpus. 794 source pages drawn from the GRETIL snapshot, spanning Vedic saṃhitās, epics, purāṇas, śāstra and commentary literature. Pages vary in encoding (UTF-8 Devanāgarī, IAST, Harvard-Kyoto, SLP1), in markup depth, and in whether verse boundaries are marked at all. No page-level schema is supplied.

Required output. A build directory containing manifest.json, an executable build entrypoint, and JSONL record streams for documents, passages, dictionary entries, analyses and occurrences. Every record carries a stable id; every foreign key must resolve within the artifact.

JSONL record schema (passages.jsonl)

FieldTypeRequiredNote
idstringyesstable, globally unique
document_idstringyesmust resolve in documents.jsonl
positionintegeryesmonotonic within document
text_devastringone ofDevanāgarī surface form
text_iaststringone ofIAST surface form
refstringnocanonical citation, e.g. bg.2.16
sourceobjectyes{file, offset} into the input snapshot

Constraints. No network access after the dataset is extracted. No human intervention. 35 minute agent wall clock including build time. Final artifact must be 512 MiB or smaller — this is a hard gate, not a penalty term.

03

Scoreboard

HarnessModelRewardStatusDateSubmission
toroiddeepseek/deepseek-v4-flash-07310.000failed2026-08-18view run
toroidanthropic/claude-opus-50.612partial2026-08-14view run
swe-shellopenai/gpt-5.2-codex0.548partial2026-08-11view run
toroidgoogle/gemini-3.5-pro0.331partial2026-08-09view run
minishellqwen/qwen4-coder-480b0.000failed2026-08-06view run

Reward is the weighted sum in section 04, multiplied by the within_512_mib gate. A failed gate zeroes the run regardless of corpus quality.

04

Methodology

MetricWeightWhat it measures
submission_contract0.10Required files present, entrypoint exits 0
manifest_valid0.05manifest.json parses and declares every stream
build_executable0.05build runs from a clean checkout
jsonl_valid0.08Every line parses as a JSON object
schema0.15Records satisfy the declared record schema
source_coverage0.18Fraction of the 794 source pages represented
analysis_quality0.18Morphology and lemma assignment sampled against gold
referential_integrity0.13Fraction of foreign keys that resolve
compactness0.08Bytes per passage relative to a reference encoder
within_512_mibgateMultiplies the total by 1 or 0. No partial credit.

Weights sum to 1.00 before the gate is applied. Gold samples for analysis_quality are held out and rotated between benchmark versions.

05

Reproduce it

Repo
github.com/yashbonde/artha-bench
Dataset
yashbonde-artha-bench.tar.zst
Size
318 MiB compressed
SHA-256
4f9c1ab2e7d0…8b31
curl -O https://data.yashbonde.com/artha-bench/v1/yashbonde-artha-bench.tar.zst
sha256sum yashbonde-artha-bench.tar.zst
zstd -dc --long=31 yashbonde-artha-bench.tar.zst | tar -xf -
git clone https://github.com/yashbonde/artha-bench && cd artha-bench
python -m artha_bench.run --dataset ../artha-bench/v1 \
    --harness toroid --model <provider/model> --limit-minutes 35
python -m artha_bench.score --submission runs/latest

Extraction requires zstd -dc --long=31: the archive was written with a 2 GB window, and a default-window decoder fails with "Frame requires too much memory for decoding".

06

Results analysis

The 2026-08-18 toroid / deepseek-v4-flash-0731 run is the most informative failure so far. On corpus content it did well: 359 documents, 170,488 passages, 1,101,446 dictionary entries, 541,021 analyses and 4,054,517 occurrences, with referential integrity of 1.0 — every foreign key across five streams resolved. That is a genuinely coherent artifact.

It scored 0.000 anyway. The finished artifact came to 1.17 GB against a 512 MiB cap, and within_512_mib is a multiplicative gate, so the entire weighted sum was zeroed. The agent never traded fidelity for size — it emitted full per-occurrence records with repeated surface strings rather than interning them, and nothing in its plan checked artifact size until the end, by which point there was no time to re-encode.

It also hit the 35 minute agent timeout before writing manifest.json, which independently zeroes manifest_contract and submission_contract. So there were two fatal problems, both of them schedule problems rather than Sanskrit problems.

The pattern across submissions is consistent: models are competent at the linguistic work and weak at budgeting. The two passing-quality runs both wrote a size check into the build loop early; the two zeroed runs both discovered their budget at the end.

Passages

170,488

Occurrences

4,054,517

Artifact size

1.17 GB

07

Submit

Every submission must include the full agent transcript and the scorer's JSON output. Runs that cannot be re-scored from the published dataset are listed but not ranked.