--- title: MoNaCo Dev Viewer emoji: ๐Ÿงฉ colorFrom: pink colorTo: indigo sdk: static pinned: false license: apache-2.0 --- # ๐Ÿงฉ MoNaCo Dev Viewer A per-qid web viewer for the **100-question dev subset** of the [MoNaCo benchmark](https://github.com/tomerwolgithub/monaco) ([paper](https://arxiv.org/abs/2506.12523)), mirroring the layout of the sibling [`open-wikitable-smoke-viewer`](https://huggingface.co/spaces/timchen0618/open-wikitable-smoke-viewer). Live: **https://timchen0618-monaco-dev-viewer.static.hf.space** ## 12 tabs | # | tab | contents | mean LLM judge score | |--:|---|---|--:| | 1 | ๐Ÿ“‘ **Dataset** | raw monaco question + gold answer + flat list of supporting docs | โ€” | | 2 | ๐Ÿ”ง **Unified eval** | cross-dataset bundle: question + gold answers + gold docs (markdown) | โ€” | | 3 | ๐Ÿ›  **Structure per q** (was Baseline A) | agentic run over per-qid scaffolds (cell 4) | 90.48 | | 4 | ๐Ÿ›  **Structure per ds** (was Baseline B) | agentic run over flat structure corpus (cell 5) | 87.94 | | 5 | ๐Ÿ›  **DCI** (was Baseline C) | agentic run over rawtext corpus (cell 6 v2 rerun) | 82.96 | | 6 | ๐Ÿค– **e2e v0** | e2e_pipeline run with on-the-fly per-shape extraction | 82.01 | | 7 | ๐Ÿค– **e2e v2** | e2e_pipeline run v2 | 80.94 | | 8 | ๐Ÿค– **e2e v3** | e2e_pipeline run v3 | 81.32 | | 9 | ๐Ÿ— **e2e structures v0** | for each supporting doc, the 5-shape structures produced by e2e v0 | โ€” | | 10 | ๐Ÿ— **e2e structures v2** | same for the v2 pipeline | โ€” | | 11 | ๐Ÿ— **e2e structures v3** | same for the v3 pipeline | โ€” | | 12 | ๐Ÿ“Š **Compare** | 9 cells side-by-side per qid (all 6 baselines + 3 e2e runs) | โ€” | Scoring column is the **LLM judge_score** (0.0-1.0) from the AML `submit_judge_responses_aml.py` protocol with `--deterministic-extract` auto-enabled for `--dataset monaco_dev` โ€” this is the canonical scoring protocol for MoNaCo. `correct = 1 iff judge_score โ‰ฅ 0.99`. Mean judge_scores are over **all 100 qids**: qids missing a judge row (judge dropouts) count as `judge_score = 0`. If you only want the mean over judged qids, use the numbers in `information-scaffolds/data_creation/monaco_dev/README.md`. ## Repo layout ``` monaco-dev-viewer/ โ”œโ”€โ”€ index.html # 12-tab topbar + sidebar + main pane โ”œโ”€โ”€ viewer.js # single-file frontend (~1250 lines) โ”œโ”€โ”€ style.css โ”œโ”€โ”€ README.md # this file โ”œโ”€โ”€ index.json # ๐Ÿ“‘ Dataset โ€” flat array of {qid, question, ...} โ”œโ”€โ”€ records/.json # ๐Ÿ“‘ Dataset per-qid raw docs โ”œโ”€โ”€ unified/ # ๐Ÿ”ง Unified eval โ”‚ โ”œโ”€โ”€ index.json โ”‚ โ””โ”€โ”€ records/.json โ”œโ”€โ”€ trajectories/ # ๐Ÿ›  Structure per q (cell 4) โ”‚ โ”œโ”€โ”€ index.json (wrapped: {meta, rows}) โ”‚ โ””โ”€โ”€ records/.json โ”œโ”€โ”€ trajectories_corpus/ # ๐Ÿ›  Structure per ds (cell 5) โ”œโ”€โ”€ trajectories_rawtext/ # ๐Ÿ›  DCI (cell 6 v2) โ”œโ”€โ”€ trajectories_e2e_v0/ # ๐Ÿค– e2e v0 โ”œโ”€โ”€ trajectories_e2e_v2/ # ๐Ÿค– e2e v2 โ”œโ”€โ”€ trajectories_e2e_v3/ # ๐Ÿค– e2e v3 โ”œโ”€โ”€ e2e_structures_v0/ # ๐Ÿ— e2e structures v0 โ”œโ”€โ”€ e2e_structures_v2/ # ๐Ÿ— e2e structures v2 โ”œโ”€โ”€ e2e_structures_v3/ # ๐Ÿ— e2e structures v3 โ”œโ”€โ”€ compare/ # ๐Ÿ“Š Compare โ”‚ โ”œโ”€โ”€ index.json (per-qid {cells:[โ€ฆ], question, gold_answers_length}) โ”‚ โ””โ”€โ”€ records/.json โ””โ”€โ”€ scripts/ # builders (see below) โ”œโ”€โ”€ build_dataset.py โ”œโ”€โ”€ build_unified.py โ”œโ”€โ”€ build_trajectories.py โ”œโ”€โ”€ build_e2e_structures.py โ””โ”€โ”€ build_compare.py ``` All shards are small (~5โ€“200 KB); the site is served as static files (no backend). Deep-linkable via URL hash, e.g. `#trajectories:42`, `#compare:1048`, `#e2e_structures_v0:12`. ## Reproduction Run from this directory. Adjust paths if you're mirroring the layout on a different machine. ```bash cd data_visualizer/monaco-dev-viewer # 1. Dataset โ€” reads $DATA_ROOT/eval/monaco_dev/raw/test_with_chunks.jsonl python scripts/build_dataset.py # 2. Unified eval โ€” reads $DATA_ROOT/eval/monaco_dev/unified/test_with_chunks.unified.jsonl python scripts/build_unified.py # 3-5. Baseline trajectories (needs pred + judged JSONLs under information-scaffolds/outputs/monaco_dev) python scripts/build_trajectories.py \ --predictions ~/projects/information-scaffolds/outputs/monaco_dev/baselines/cell4_agentic_a/named-outputs/response/response \ --judged ~/projects/information-scaffolds/outputs/monaco_dev/judges/c4_agentic_a/named-outputs/judged/judged \ --out trajectories \ --label "structure per q (monaco_dev ยท Baseline A ยท cell4_agentic_a)" python scripts/build_trajectories.py \ --predictions ~/projects/information-scaffolds/outputs/monaco_dev/baselines/cell5_agentic_b/named-outputs/response/response \ --judged ~/projects/information-scaffolds/outputs/monaco_dev/judges/c5_agentic_b/named-outputs/judged/judged \ --out trajectories_corpus \ --label "structure per ds (monaco_dev ยท Baseline B ยท cell5_agentic_b)" python scripts/build_trajectories.py \ --predictions ~/projects/information-scaffolds/outputs/cell6_v2_reruns/monaco_dev_cell6_v2/named-outputs/response/response \ --judged ~/projects/information-scaffolds/outputs/monaco_dev/judges/c6_agentic_c_v2/named-outputs/judged/judged \ --out trajectories_rawtext \ --label "DCI (monaco_dev ยท Baseline C ยท cell6_agentic_c v2)" # 6-8. e2e trajectories (predictions + judged live under run_logs/) for v in v0 v2 v3; do python scripts/build_trajectories.py \ --predictions ~/run_logs/e2e-monaco_dev-comparison/outputs/$v/named-outputs/predictions/predictions \ --judged ~/run_logs/e2e-monaco_dev-comparison/judge_outputs/$v/named-outputs/judged/judged \ --out trajectories_e2e_$v \ --label "e2e $v (monaco_dev)" done # 9-11. e2e structures (per-qid supporting docs + 5-shape scaffolds) for v in v0 v2 v3; do python scripts/build_e2e_structures.py \ --scaffolds-dir ~/run_logs/e2e-monaco_dev-comparison/outputs/$v/named-outputs/scaffolds_dir \ --out e2e_structures_$v \ --label "e2e $v (monaco_dev)" done # 12. Compare โ€” reads all 9 (pred, judged) pairs and joins by qid python scripts/build_compare.py ``` ## Local preview ```bash python -m http.server 8877 # then open http://127.0.0.1:8877/ ``` ## Deploy ```bash HF_TOKEN="$HF_TOKEN" python ~/.copilot/skills/hf-space-push/push_hf_space.py \ timchen0618/monaco-dev-viewer . \ --commit-msg "Monaco dev viewer โ€” 12 tabs" ``` The Space is `sdk: static`, so it redeploys instantly on push (no build step). ## Data notes - **Cell 1 (closed-book)** has no `outputs/monaco_dev/baselines/cell1_closedbook/` dir; the raw response lives at `outputs/monaco_dev_smoke/sincere_pepper_d54pl76cjj/named-outputs/response/response`. The compare builder points there directly. - **Cell 6 (DCI)** โ€” `outputs/monaco_dev/baselines/cell6_agentic_c/` is the **broken v1** run (100/100 `missing_structures`). The good v2 rerun is at `outputs/cell6_v2_reruns/monaco_dev_cell6_v2/`, judged under `outputs/monaco_dev/judges/c6_agentic_c_v2/`. - **Judge dropouts**: cell 1 = 4/100 missing ยท cell 2 = 4 ยท cell 3 = 7 ยท cell 4 = 0 ยท cell 5 = 1 ยท cell 6 = 4 ยท e2e v0/v2/v3 = 0. Missing rows score 0. - **Non-agentic cells 1-3** have no `events` in the response.jsonl (single LLM call). The trajectory-record renderer collapses to just system prompt + user prompt + model answer + score. ## See also - Full-benchmark viewer: `data_visualizer/monaco-benchmark-viewer/` (~1315 questions, docker-backed). - Sibling for open-wikitable dev: `data_visualizer/open-wikitable-smoke-viewer/`. - Authoritative reproduction guide with per-cell judge means: `information-scaffolds/data_creation/monaco_dev/README.md`.