Files
waggle-os/benchmarks/gaia2/smoke-evidence.md
Oleg Maslov b20b138fe4 moving
2026-09-02 10:14:22 +02:00

153 lines
8.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 2 Smoke Evidence (Sesija C Task C1+C2)
**Date:** 2026-04-30 (executed 2026-04-29 21:5521:58 local timestamp inside ARE logs; date discrepancy is local-clock drift, branch + commit time stamps are authoritative)
**Branch:** `feature/gaia2-are-setup` @ Phase 1 commit `a72b724`
**Wall-clock:** ~3 minutes total (sync 1.5min + Smoke A 1s + Smoke B-retry 31.8s)
**LLM cost:** **$0.00** (oracle mode + mock provider — no real model invocations)
---
## §1 — ARE platform clone (Task C1.a)
| Field | Value |
|---|---|
| Repo | `https://github.com/facebookresearch/meta-agents-research-environments` |
| Cloned to | `D:/Projects/waggle-os/external/meta-agents-research-environments/` (gitignored) |
| Clone strategy | `git clone --depth 1` (shallow; full history not required for setup verification) |
| **Pinned SHA** | **`0330191ffef8581e3c0620b78df9c7408bcb98b0`** (2026-04-20 11:53:48 +0200, "Format run-config HF split selection fix (#55)") |
| License | MIT |
| Repo size | 95+ Python deps + are/ source tree (~2,000+ Python files) |
| Last upstream commit at clone | 2026-04-20 (10 days before Sesija C kickoff) |
**Note on SHA discipline (per branch architecture LOCKED §4.1 binding):** The pinned SHA above was captured from `git rev-parse HEAD` after clone, not from memory. Cite this SHA going forward, not "latest main".
---
## §2 — Install verification (Task C1.b)
**Method:** `uv sync --frozen` from `external/meta-agents-research-environments/`.
| Field | Value |
|---|---|
| uv version | 0.8.17 |
| Python version | 3.10.18 (uv-managed; auto-selected per `requires-python = ">=3.10"` in `pyproject.toml`; system Python 3.11.9 not used) |
| Dependency count | 95 packages |
| Editable install | meta-agents-research-environments 1.2.0 |
| Key dependencies | `litellm 1.71.1` (LiteLLM-compatible — aligns with our existing routing layer); `huggingface-hub 0.33.4`; `mcp 1.11.0`; `datasets 4.0.0`; `aiohttp 3.13.2`; `httpx 0.28.1` |
| Install duration | ~1.5 min wall-clock |
| Exit code | 0 (clean install) |
**Binary verification:** `uv run are-run --help` and `uv run are-benchmark gaia2-run --help` both return clean usage output.
---
## §3 — Smoke A: Oracle mode, built-in scenario (Task C2.a)
**Command:**
```bash
cd external/meta-agents-research-environments && \
uv run are-run -o -s scenario_find_image_file \
--output_dir benchmarks/gaia2/runs/smoke-c2-2026-04-30/smoke-A-oracle
```
**Result:** **PASS.**
- `ScenarioValidationResult(success=True, exception=None, ...)`
- `Success=100.0%`, 1 scenario completed in <1 second
- Output files: `output.jsonl`, `initial_state.jsonl`, `final_state.jsonl`
- Output format (output.jsonl): `{"task_id": "scenario_find_image_file", "trace_id": null, "score": 1.0, "metadata": {"scenario_id": "scenario_find_image_file", "status": "success", "has_exception": false}}`
**Cosmetic warning (non-blocking):** Windows cp1252 codec cannot encode `✅` (✅) emoji from ARE's logger. UnicodeEncodeError raised inside `logging_config.py:61`, scenario completes normally. Acceptable for headless CI/CD if stdout encoding is set to utf-8.
---
## §4 — Smoke B: Gaia2 mini config × 1 scenario, mock provider (Task C2.b)
**First attempt — `gaia2-run` with default executor:** ❌ FAILED on Windows. Error: `cannot find context for 'fork'`. ARE's `gaia2-run` orchestrates 7 phase/configs (standard/{ambiguity, adaptability, execution, search, time}, agent2agent/mini, noise/mini) using `multiprocessing` with `fork` context — Windows only supports `spawn`. All 7 phases skipped.
**Second attempt — `are-benchmark run` with thread executor:****PASS.**
```bash
cd external/meta-agents-research-environments && \
uv run are-benchmark run \
--hf-dataset meta-agents-research-environments/gaia2 \
--hf-config mini \
--hf-split validation \
-l 1 \
--provider mock \
--agent default \
--executor_type thread \
--max_concurrent_scenarios 1 \
--output_dir benchmarks/gaia2/runs/smoke-c2-2026-04-30/smoke-B-gaia2-mock-thread \
--trace_dump_format lite
```
| Metric | Value |
|---|---|
| Dataset loaded | 160 examples in `mini/validation` split |
| Scenarios run | 1 unique × 3 runs (Pass@3 standard) |
| Wall-clock | 31.8 seconds |
| Provider | `mock` (default model alias `meta-llama/llama3-70b-instruct`, no real inference) |
| Success rate | 0.0% (mock provider returns fake responses; expected) |
| Exit code | 0 (1 config attempted, 1 successful) |
| Output files | `output.jsonl`, `benchmark_stats.json` |
**Per-run failure mode (3/3 runs):** `module 'signal' has no attribute 'SIGALRM'` — Windows lacks the Unix `SIGALRM` signal used by ARE's per-scenario timeout enforcement (`scenario_runner.py` raises `AttributeError`). Caught and recorded as `exception_runs` in stats, but blocks ANY scenario from completing on Windows even with mock provider.
**Output format (sample run, output.jsonl line):**
```json
{
"task_id": "scenario_universe_21_xvc7uo",
"trace_id": null,
"score": 0.0,
"metadata": {
"scenario_id": "scenario_universe_21_xvc7uo",
"run_number": 1,
"status": "failed",
"has_exception": true,
"exception_type": "AttributeError",
"exception_message": "module 'signal' has no attribute 'SIGALRM'"
}
}
```
**Stats schema (benchmark_stats.json):** `metadata{model, model_provider, timestamp, report_version}` + `statistics{per_capability{<config>{success_rate, pass_at_k, pass_k, total_runs, ...}}, global{macro_success_rate, micro_success_rate, pass_at_k, pass_k, job_duration, ...}}`. Pass@k + Pass^k are first-class metrics (k=3 by default for Gaia2 standard).
---
## §5 — Windows compat findings + Phase 3+4 implications
| Finding | Where it surfaces | Workaround for Phase 3 (adapter) | Workaround for Phase 4 (dry run) |
|---|---|---|---|
| `multiprocessing.get_context('fork')` fails on Windows | `gaia2-run` full benchmark orchestrator | Use `are-benchmark run` directly (per-config) instead of `gaia2-run`; our adapter wraps single-config calls anyway | Use `--executor_type thread` for parallelism + run configs sequentially |
| `signal.SIGALRM` missing on Windows | `scenario_runner.py` per-scenario timeout enforcement (every scenario, regardless of provider/agent) | **Hard blocker** for Windows — adapter must either (a) patch `signal.SIGALRM` shim, (b) run inside Docker/WSL, or (c) document that dry run requires Linux | **DECISION POINT for PM**: Windows-host dry run blocked. Options: (i) WSL2 / Linux subsystem; (ii) Docker (Dockerfile present in ARE repo); (iii) accept Windows + monkey-patch; (iv) defer Phase 4 to Linux CI runner. |
| Unicode `✅` emoji in logger crashes on cp1252 | `logging_config.py:61` (cosmetic only) | Set `PYTHONIOENCODING=utf-8` env var before invoking | Same env var setting |
**Severity ranking:** SIGALRM is **HIGH** (blocks all scenario execution on Windows host). Fork is **MEDIUM** (blocks `gaia2-run` orchestrator only, our adapter doesn't need it). Unicode is **LOW** (cosmetic).
**Fastest unblock for Phase 4:** Docker. The ARE repo ships a `Dockerfile` (`external/meta-agents-research-environments/Dockerfile`). A containerized run sidesteps both fork + SIGALRM issues since the container runs Linux. Trade-off: Docker daemon dependency on operator machine, ~5-15min initial image build.
**Decision deferred to PM:** Phase 4 Windows host vs Docker vs WSL ratification before Task C5 (dry run execution).
---
## §6 — What the smoke verified (smoke verdict)
| Brief §0.1 acceptance criterion | Verified by Smoke A+B |
|---|---|
| ARE platform installable | ✅ uv sync exit 0, 95 deps |
| Default agent runs scenarios | ✅ Smoke A: scenario_find_image_file PASS oracle; Smoke B: Gaia2 mini scenario_universe_21_xvc7uo executed (failed only on SIGALRM, not on agent logic) |
| HF dataset accessible | ✅ Smoke B downloaded mini/validation 160 examples |
| Output format reproducible | ✅ output.jsonl + benchmark_stats.json schemas captured §3 + §4 above |
| Provider config supports mock + LiteLLM-compatible providers | ✅ `mock` provider works; ARE shares LiteLLM 1.71.1 with our LLM routing layer (zero-friction Phase 3 wiring) |
**Phase 2 verdict: SMOKE PASS** (with documented Windows-compat halt-and-PM trigger for Phase 4 host choice).
---
## §7 — Audit anchors
- ARE clone SHA: `0330191ffef8581e3c0620b78df9c7408bcb98b0`
- Smoke A output: `runs/smoke-c2-2026-04-30/smoke-A-oracle/` (gitignored; reproducible from §3 command)
- Smoke B output: `runs/smoke-c2-2026-04-30/smoke-B-gaia2-mock-thread/` (gitignored; reproducible from §4 command)
- This evidence: `benchmarks/gaia2/smoke-evidence.md`