mirror of
https://github.com/esengine/DeepSeek-Reasonix.git
synced 2026-11-07 10:45:59 -10:00
depends_on ordered its endpoints and delivered nothing, so a research → implement pair paid for the same research twice. Three changes that compose: - The edge carries the dependency's answer. It travels as ContextRequest.Upstream, never inside TaskSpec.Objective, because the objective must stay the pristine text delivery classification judges — ClassifierTaskText is captured before any host framing. One 8 KiB budget is shared across a node's dependencies, so a wide fan-in cannot flood the opening turn and no dependency is starved out of it. - list_subagents enumerates the children a conversation owns. A reference is the only address a child answer has, and a background fleet that a restart repaired to interrupted never delivered the aggregate carrying those references, leaving its completed children unreachable. - adopt_ref stands a node down to an already-completed child's answer instead of running it. It is proven in preflight through ReadFinalAnswer, so what may be adopted cannot drift from what read_subagent_result may read. Nothing runs, so the node claims no write_paths and cannot collide with a live writer; prompt and every execution field are refused on it rather than silently ignored. Whether an adopted answer is still valid is not readable from structure, so the host does not decide it: adoption is addressed by reference, and the caller that listed the reference judges freshness. That is also why a plan fingerprint does not quietly reuse matching children — reuse the caller cannot see is reuse it cannot correct. A child now inherits something, which is exactly what InheritedContext exists to keep a decision rather than an accident, so the capsule records it and SPEC 3.13 says so. --ablate upstream leaves the edge ordering its endpoints while delivering nothing, which is what lets the payload be measured apart from the order. Against the real provider on benchmarks/upstream-edge/fleet-edge-wide, n=6 per arm, removing the payload cost +27.6% tokens (exact permutation p=0.011) and +59% sub-agent tool calls for the same answer, 6/6 solved either way. On a fact one grep away it buys nothing: the edge pays in proportion to what the upstream's work cost against how small its result is. boot.go's delegation registrations moved to delegation_tools.go and Execute's spec loop to buildItemSpecs; that, plus folding two defaulting branches into firstNonEmpty, is what paid for the new lines without widening the repolint baseline.