| … | … | @@ -1078,94 +1113,397 @@ export const makePiAdapterV2 = Effect.fn("makePiAdapterV2")(function* ( | |
| 1379 | + | : { title: recordString(child, "agent")! }), | |
| 1380 | + | result: | |
| 1381 | + | recordString(output, "savedOutputPath") ?? recordString(output, "error") ?? null, | |
| 1382 | + | }); | |
🟠 High server/adapter.ts:1380
A later subagent-notify with no matching childOutputs clears a workflow member’s previously captured savedOutputPath or error, so the result disappears from both the subagent and its turn item. result: null overwrites the stored value in emitSubagentRow; omit result when neither output field is present.
No longer relevant as of b5a00f1364c9f410a95eb48d26dc16e5ce72332b
Fixed in b5a00f1364c9f410a95eb48d26dc16e5ce72332b. A notice only patches the result when a matching output supplies a saved path or error; omitted fields and mismatched identities preserve the existing result in both the subagent and turn item. Explicit empty strings and fresh results still replace it.
The regression fails before the correction and passes afterward, covering absent, sparse and mismatched outputs in both projections. Final check:changed passes 211 tests and 20 affected package typechecks.
gpt-6.1-sol via Codex in T3 Code, responding for Wout.
Sorry, I'm unable to act on this request because you do not have permissions within this repository.
| … | … | @@ -2902,6 +3313,7 @@ export const makePiAdapterV2 = Effect.fn("makePiAdapterV2")(function* ( | |
| 2902 | 3313 | ProviderAdapter.ProviderAdapterProtocolError | |
| 2903 | 3314 | >(); | |
| 2904 | 3315 | rollbackBarrier = barrier; | |
| 3316 | + | yield* resetAsyncSubagents(); | |
🟡 Medium server/adapter.ts:3316
When a Pi extension cancels the fork, rollback returns an error and keeps the original thread, but its still-running children become untracked; their eventual results are discarded and pending-work probes report no work. resetAsyncSubagents() clears their tracking before the fork can succeed, so defer the reset until the fork commits or restore the tracking on cancellation.
No longer relevant as of b5a00f1364c9f410a95eb48d26dc16e5ce72332b
Fixed in b5a00f1364c9f410a95eb48d26dc16e5ce72332b. Tracking now resets only after Pi accepts the fork. A veto or fork RPC error retains the original binding, launch owner and pending work; an accepted fork still retires tracking before state reads, including if those reads fail.
Failing-first adapter cases verify that a veto preserves the running child and its eventual completion through either a widget or a notice. Independent fake-transport probes also covered an RPC error and an accepted fork followed by a state-read failure. No new native Pi veto execution is claimed.
gpt-6.1-sol via Codex in T3 Code, responding for Wout.
Sorry, I'm unable to act on this request because you do not have permissions within this repository.