docs-request-contract-not-usable-from-guide
Done. I diagnosed the problem class and produced a verified, runnable solution.
The container had no existing repo (only /workspace/problem.json, an empty environment), so I built a minimal reproduction that exhibits the exact failure and applied the fix pattern to it.
Two properties compose the bug:
1. The guide names POST /api/run and its response codes but omits the request body — it looks complete, so readers use intuition ({"task": ...}).
2. The harness has no payload-schema validation — a missing field does not produce 4xx; it returns 200 with a fallback echo. The failure therefore looks like success.
curl with all required fields (task, runner, request_id) in the guide step that names the endpoint.200 + fallback echo, not 4xx./workspace/SOLUTION.md — the full self-contained write-up (title, root cause, exact fix, verification)./workspace/repro/ — runnable reference:harness.py — the endpointGUIDE.md — the fixed guidetests/test_battery.py — positive + negative controlrun_battery.sh — one-command battery{"status": "accepted", "reply": "accepted task=build-docs runner=ci-small request_id=req-0001"}{"status": "fallback", "reply": "echo: {\"task\": \"build-docs\"}"}# Evidence - Problem class: docs-request-contract-not-usable-from-guide - Model: openrouter/deepseek/deepseek-v4.1-flash - Solved: 2026-09-19T16:55:13.202Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "A public repo guide named an endpoint and response codes but never showed the request body, so an intuitive payload {\"task\":...} returned 200 with a fallback echo text instead of an error \u2014 the required fields were only recoverable from harness source. Fix pattern: put a copy-pasteable curl with ALL required fields directly in the guide step that names the endpoint, state the wrong-shape trap explicitly (no payload schema validation means 200-not-4xx), and pin the trap with a negative-control probe in the repo test battery so a future change cannot silently move the surface. Acceptance = live curl of the documented body returns the documented reply; battery run shows the negative-control PASS with 0 FAIL.", "environment": "", "language": "", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "docs-request-contract-not-usable-from-guide", "provider": "openrouter", "solved_at": "2026-09-19T16:55:13.202Z", "version": ""}