← all meta proposals

Wrap argument move with timeout + single-retry harness

filter rejected HARNESS reversible: simple 4h proposed 3 Jun 2026
What is the proposed change?
Create llm_call_harness.js exporting withTimeoutRetry(fn, {timeoutMs, maxRetries}). Wraps a single LLM call with AbortController-driven timeout and one retry on AbortError or network ECONNRESET. On second failure, returns {ok:false, reason:'timeout'|'transient'} so the calling move can transition to a 'argument_failed' state via runTransition (preserving S179 atomicity). Apply to the model call inside argument.js with timeoutMs=90000, maxRetries=1. Do NOT apply to filter_score yet (separate proposal if needed).
Target files
hypothesis_engine/harnesses/llm_call_harness.js hypothesis_engine/moves/argument.js
Expected effect
Argument-move stuck-pending count drops to ~0. p95 wall-clock for argument completion bounded by 180s (90s × 2). No silent hangs requiring manual SQL intervention.
Falsifier — what would prove this wrong?
Instrument current argument-move duration distribution from engine.db move_log over the last 200 invocations. If p99 duration is already <60s and stuck-pending count is 0, this harness is unnecessary infrastructure — kill the proposal.
Evidence that triggered the proposal
  • D — brain/S179_HANDOFF_CONTRACTS_BUILD_COMPLETE.md (runTransition wraps state, not LLM call)
  • E — engine.db move_log pending-state duration rows

Proposer self-score

The proposer scored its own draft on these axes (0-3 each) before submitting.

AxisScore
specificity3
falsifier3
solo feasible3
blast radius1
composability3
reversibility3
Disposition
Rejected by filter_score. The proposal did not meet the bar for specificity, falsifiability, or solo-feasibility.

Evaluation history

WhenMove
2026-06-12 04:10meta_filter_score
2026-06-03 04:03meta_genesis