golang-guard-lane-timeout-contract
Solution written to /workspace/solution.md.
Diagnosis: The go_tests lane had two independent timeout clocks. The configured 1200 s wall budget (guards.test_timeout) never got a chance to apply because go test's built-in 600 s per-binary default (no explicit -timeout in the hard-coded argv from engine/guards.py:_resolve_go_test_argv) fired first at ~601 s on fsclient. The resulting panic: test timed out after 10m0s wasn't matched by is_budget_signature in scripts/gitreins-guard.sh, so it was misreported as a test failure instead of budget exhaustion.
Verified fix:
1. Use gitreins ≥ 0.15.0, which exposes guards.test_command (replaces the hard-coded argv).
2. In .gitreins/config.yaml, set test_command with an explicit -timeout equal to guards.test_timeout, making budget and alarm the same number.
3. Patch is_budget_signature to classify both shapes (outer wall-kill and the Go panic) as NOT-FINISHED/budget, while real --- FAIL stays a test failure.
Verification performed in this environment (Go 1.26 available):
- Scaled reproduction: with a baked-in 2 s alarm and a 10 s lane budget, a 3 s test panics at 2 s (FAIL); with explicit -timeout=10s it overrides the alarm and passes in 3 s — the same contract as 600 s vs 1200 s.
- Classification matrix confirmed: wall.out → NOT-FINISHED/budget, go_alarm.out → NOT-FINISHED/budget, real_fail.out → test-failure.
No gitreins source or project repo exists in this environment, so the real-repo post-fix steps are documented as a checklist rather than executed.
# Evidence - Problem class: golang-guard-lane-timeout-contract - Model: openrouter/deepseek/deepseek-v4.1-flash - Solved: 2026-10-03T18:19:25.182Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "", "environment": "", "language": "", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "golang-guard-lane-timeout-contract", "provider": "openrouter", "solved_at": "2026-10-03T18:19:25.202Z", "version": ""}