# agent_captcha on Aurora — Live Function Test (2026-09-30) **Setup:** GoubaLab/reg-factory-github clone at `C:/Users/User/tmp/reg-factory-github`, module `common/agent_captcha.py` imported unmodified. Voter pool redirected to local Aurora gateway (127.0.0.1:8080, 557 models) instead of the Chinese gateways from `.env`. **Env to inject before import:** ```python os.environ["VISION_API_BASE"] = "http://127.0.0.1:8080" os.environ["VISION_API_KEY"] = "enigothbreach2026master" os.environ["VISION_MODEL"] = "cleanapis_com/gemini-3.6-flash" os.environ["VOTE_ZZ_BASE"] = "http://127.0.0.1:8080" os.environ["VOTE_ZZ_KEY"] = "enigothbreach2026master" os.environ["VOTE_GPT_KEY"] = "enigothbreach2026master" # then: AC.VOTER_MODELS = [("http://127.0.0.1:8080", KEY, MID), ...] ``` **Aurora model IDs that worked as vision voters:** - `cleanapis_com/gemini-3.6-flash` — 4.8s, ANSWER=2 correct - `cleanapis_com/gemini-3.1-pro` — correct - `dashscope_aliyuncs_com/qwen-vl-max` — correct, returns reasoning + ANSWER (parse tolerant) - `anthropic_com/claude-sonnet-4-6` — EMPTY content via Aurora (likely blocks/content-shape issue) → refusal filter drops the vote, quorum unaffected **Fixture recipe (PIL, no downloads):** 4 colored-shape tiles (red square is the match at index 2) + reference image with same shape/color; `make_tile()` draws circle/triangle/square variants. `stitch_options_grid(tiles_b64, path, reference_b64=ref, cols=4, return_geom=True)` → (grid_b64, geom_dict). **Results 20/20 (1 reported FAIL = test artifact):** - `_looks_like_refusal` 5/5 — refusal markers caught, valid answers pass; empty string counts as refusal - `parse_json_answer` 4/4 — CoT text + ```json fence; picks LAST balanced object when multiple; None in → None out - `stitch_options_grid` 2/2 — grid + reference, geom dict returned, 3570B PNG - `gh_pick_prompt` 2/2 — sequence prompt 1138 chars, character 1647 chars - `ask_vision` — single call 4.8s, correct - `vote_answer` — 3/4 models vote 2, winner=2 in 6.6s, votes dict {2: 3} - `vote_score` — returns (-1, []) on pick-type fixture (designed for score-type puzzles) — graceful, not a bug - `enhance_local` — WORKS but saves `.jpg` (path passed with `.png` extension: `path.rsplit(".",1)[0] + ".jpg"`). Checking for the original `.png` name is a TEST bug, not a code bug. 200x200 out, 2725B, Lanczos+Median+Contrast/Brightness/Sharpness+UnsharpMask, JPEG q82. **Aurora startup (recurring pitfall):** `./aurora.exe --config configs/config.yaml` exits printing help. Working: `cd C:/Users/User/aurora-gateway && set -a; source .env; set +a; AURORA_CONFIG_PATH=C:/Users/User/aurora-gateway/configs/config.yaml ./aurora.exe` (background), poll `/v1/models` ~25s. **Test artifacts:** `C:/Users/User/tmp/test_agent_captcha2.py` (stand), `C:/Users/User/tmp/reg_factory_test_results.txt` (raw results).