{"data":{"kind":"file","path":"README.md","version_id":"ncofbjtkenlnj5vke3war0p5","entry":{"name":"README.md","path":"README.md","is_directory":false,"size":3991,"modified_at":"2026-09-05T11:19:49.261000","content_hash":"fa4e7bb58d4ebc2a12c76ad2e84faf375d2c886f356841ba2df4d1f4b0846b38"},"entries":[],"content":"# uber-clone-031\n\nOne controlled Android task: book a Premium ride from Airport Road to City Centre,\nselect a Premium cab and CARD payment, and do not cancel. No real ride or payment\nis performed. Only `task/uber_clone_031.yaml` is loaded (seed 3030, 12 actions).\n\n## Verifier v1 (package 0.3.0)\n\n`uber_clone_031/verifier.py` independently reads the app's persisted state. The\nprimary reward is binary: 1 only when every required outcome, integrity, process,\nand execution/evidence gate passes. There are no calibrated numerical weights.\nThis is a reusable scorecard structure with task-specific state predicates, **not**\na universal learned judge or an empirically calibrated universal standard.\n\n| Group | Required checks |\n| --- | --- |\n| Outcome | Airport Road pickup; Premium ride and cab; City Centre destination; card payment; journey stage 5; booked screen; confirmed true; cancelled false |\n| Integrity | Readable persisted state and matching fresh episode ID |\n| Process | No invalid action; no recorded forbidden action; clean app sequence flag; at most 12 actions |\n| Execution/evidence | No recorded execution error; valid PNG at reset and after each attempted action |\n\n`outcome_success` is separate from `safe_success` (the all-gates primary reward),\nso missing evidence is not misrepresented as a wrong destination. Process checks\nare instrumentation for this controlled app, not proof of general Android safety.\nThe old shared-runtime weighted reward remains in raw diagnostics only. It does\nnot determine the new primary score. Neither persisted verifier state nor answer\nkeys are exposed to the model. Model actions are not repaired by a scripted agent.\n\n## Validate, then evaluate\n\nRequires Linux x86-64 with accessible `/dev/kvm`, Android API-33 emulator, ADB,\nJDK/build tools (for APK builds), and the shared Python runtime dependency.\nThe Hub wheel is not an Android VM: publication alone does not provision KVM.\n\n```bash\n# From this environment's source directory, with Python dependencies installed:\npython3 -m unittest discover -s tests -v\nbash scripts/run_eval.sh                         # scripted smoke validation\nPOLICY=openrouter MODEL=minimax/minimax-m3:free bash scripts/run_eval.sh\n# OPENROUTER_API_KEY must already be set; do not put secrets in command history.\n```\n\nDocker source build (not required when reusing the repository's existing image):\n\n```bash\ndocker build -t uber-clone-031-env .\ndocker run --rm --device /dev/kvm --shm-size 2g \\\n  -v \"$PWD/artifacts:/workspace/artifacts\" uber-clone-031-env\n```\n\nThe package delegates Android controls to the declared shared runtime Hub wheel,\nwhile the versioned scorecard, screenshot capture, prompt, unrepaired runner, and\nPrime bridge are included in this task's wheel. The copied `runtime/` tree is\nlegacy source/reference, not the active v0.3.0 scoring entry.\n`prime/load_environment.py` delegates to the package's active loader.\n\nEach unique run directory contains `result.json`, `scorecard.json`, `metadata.json`,\n`results.jsonl`, `messages.json`, `model_calls.json`, `trajectory.jsonl`,\n`manifest.json`, `screenshots/*.png`, `states/*.xml`, and `ui/*.xml`. The manifest\nrecords SHA-256 image hashes. Messages include genuine screenshots; state/XML logs\nare evidence for the evaluator, not hidden inputs to the model.\n\n## Upload the completed model run to Prime\n\nWith Prime CLI authenticated as terrano09, use its Python environment:\n\n```bash\npython scripts/upload_evidence.py /absolute/path/to/the/model/run\n```\n\nThe upload helper requires `prime_cli` and `prime_evals`, uploads one model sample\nplus screenshots and logs to `terrano09/uber-clone-031`, then downloads the sample\nand checks screenshot hashes. `prime_upload.json` records the dashboard URL and\nverification result. A completed local KVM run uploaded to Prime is not a hosted\nPrime KVM run or a live remote-desktop stream. Dashboard image rendering must be\ndistinguished from successful API storage; the receipt verifies stored bytes.\n","encoding":"utf-8","truncated":false,"total_bytes":3991},"status":null}