Real-app proof: OpenCode 2.1.4 ACP questions

Environment: Linux web client, Chromium, 1280×800 CSS pixels, light theme. Separate development servers and fresh worktree-local databases; automatic production-data seeding disabled with T3CODE_DEV_SEED=0. Only synthetic Color demo project and question threads were used. Base configured through Settings → Providers → Add provider → Show more → Local ACP command; executable basename opencode, argument acp. The head used the identical provider configuration, with its own fresh database.

The VM's installed executable was version 1.19.5. Version 2.1.4 was installed separately with npm install --prefix <scratch-install> @opencode/cli@2.1.4. A pass-through wrapper, named opencode, forwards stdin/stdout unchanged and records only elicitation requests and replies. It does not synthesize questions or model output. Set PROOF_OPENCODE_REAL to that executable and PROOF_ACP_LOG to a new per-side JSONL file before starting the development server. No credentials are in these artifacts.

seed.sh is the real app CLI driver. Run it from each checkout, setting PROOF_PROJECT to a new synthetic git repository and PROOF_MODEL to an available inexpensive model slug. The same prompt asks for one single-select question, Color preference / Which color do you prefer?, Red and Blue, custom input enabled, and exact-answer acknowledgement.

Browser interaction:
1. Open the seeded Color choices thread and wait for Input requested.
2. Capture the question. Select Blue.
3. Base advances to Color preference (other), 2/2; the original question has no inline custom field. Type Green into this separate step and submit. OpenCode receives q0=Blue and q0_custom=Green, and replies Green.
4. Head stays on one question with inline custom input. Submit the selected Blue with the custom field blank. OpenCode receives q0=Blue only and acknowledges Blue.
5. On head, repeat the exact original prompt in the same thread (thread send). Type Green into the inline field without selecting an option and submit. OpenCode receives q0_custom=Green only and acknowledges Green.

These are live provider runs, not replay, mocked events, unit tests, or a fabricated screenshot. The generic scenario replay provider cannot exercise the OpenCode-specific registry adapter flavor, as the scenario guide's provider-specific exclusion describes.

Captures focus on the same 740-pixel-wide conversation/composer region. The sidebars/details and composer footer containing private runtime metadata are cropped out. Original CSS viewport and light theme match. Still captures were taken in pairs at least 500 ms apart; the final question regions and answer-result region compare pixel-identically (ImageMagick AE=0). Videos show the actual question interaction and provider acknowledgement; they are cropped, with audio removed. Every uploaded still and video was visually inspected (videos through extracted contact sheets).

The live model varied option descriptions slightly between runs; question text, header, Red/Blue values, custom-answer companion shape, executable version, and prompt matched.

AI-assisted; verified with the tests and tools listed above.
