# Verification ## What actually works Honest status, regenerated from the run logs — not a wish list. A task counts as **passing** only when its numeric conditions pass **and** the rendered contact sheet was inspected and agrees. The numeric checks are deliberately strict, and three of them were caught *lying* during development (see [`DIAGNOSTICS.md`](DIAGNOSTICS.md)): a pour that reported success with a failed grasp, and two joints that "moved" on gravity alone. Each was tightened rather than worked around, so several tasks moved from green to red on purpose. Run `python scripts/status.py` to regenerate the table below from `outputs/tasks/*.log`. ### Agent-in-the-loop verification The numeric check only inspects final object poses. It will happily pass an episode where the cup landed upside-down, a gripper hung empty in the air, or a vessel was carried over the target without ever tipping — all three of those actually happened here. So every task is also reviewed visually, and only `numeric=SUCCESS` **and** `visual=CONFIRMED` counts as done. ```bash python scripts/contact_sheet.py outputs/tasks/*.mp4 # episode -> one strip of frames python scripts/yam_agent_loop.py evaluate # contact sheets + per-task review prompts python scripts/yam_agent_loop.py update # verdicts -> concrete parameter fixes python scripts/yam_agent_loop.py propose # uncovered skill axes from the asset library ``` `evaluate` renders a sheet per episode and emits a prompt naming what to look for in that specific task (is the cup upright? is anything actually in the gripper? did the lid come off *before* the food went in?). `update` maps a verdict onto a fix through a symptom→cause table built from the failures in [`DIAGNOSTICS.md`](DIAGNOSTICS.md) — e.g. *"jaws closed on nothing"* → measure the mesh origin offset, not the clamp force. `propose` reads the converted asset library and suggests skills not yet covered. Reviewing this way is what caught the three false positives described above; the fix in each case was to tighten the numeric condition, so the visual pass and the numeric pass now agree.