mirror of
https://github.com/JackChen-me/open-multi-agent.git
synced 2026-10-22 02:53:26 -05:00
The 2026-09-04 weekly run failed with a structured-output validation error, but the output ceiling was the real cause. change-analyst spent 19,822 characters of reasoning against its 4,500-token cap and returned empty text, so there was no JSON to validate. The single in-run correction that followed emitted malformed JSON, and both dependent synthesis tasks failed with it. This is the second time the same defect has broken the weekly cadence. #519 hit it on release-reviewer at 3,500 tokens with the identical signature, empty text after the budget went to reasoning, and fixed it by disabling thinking for the two synthesis agents. That treated the symptom on the wrong axis and left the two evidence roles carrying the same bug. Reasoning and the answer are billed against one budget, so the ceiling is now sized for both: a single 64,000-token limit shared by every role, roughly fourteen times the reasoning this run actually produced. An unused ceiling costs nothing, and the run-level token budget cannot stand in for it because it is only checked after a call returns, never during one. With the budget no longer the binding constraint, thinking goes back on for the synthesis agents and every role moves to DeepSeek's max effort. The three timeouts move as one chain, because raising the token ceiling alone would have traded a validation failure for a timeout. An evidence role's worst case is a tool turn, an answer, and one correction, so 3 x 180s fits inside its 600s. The DAG's worst case is the evidence pair in parallel and then both synthesis agents in series, so 3 x 600s fits inside a 30-minute deadline, raised from 10. That leaves the job's 45-minute timeout room for checkout, install, build, and the deterministic PR work that follows the analysis. The orchestrator test now asserts the per-role thinking config alongside the token ceiling. #519 removed thinking from two agents with no assertion to record it, which is part of why the regression stayed invisible. Refs #574.