You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 0bffe4f
Browse filesBrowse the repository at this point in the historyBrowse files
fix(session): drop answered pending operations on load
Crash recovery could reload a pending operation for a call the turns already answer, re-arming its gate and injecting a second tool result at the deadline. load() now drops any pending operation whose suspended call id already has a tool result, warning per drop; marker operations without a suspended call pass through. The removal converges to disk on the next metadata write.
killing the session. The timeout guard leaves `pendingOperationsChanged` set
521
-
rather than writing metadata from the timer callback; the next turns-only
522
-
write or terminal persists the removal, and a crash before then is caught by
523
-
the startup check.
524
-
525
-
**Disposition:** Promotion candidate. Upstream's rehydration and timeout
526
-
paths trust persisted pending operations without consulting history.
527
-
**Removal path:** Upstream PR making rehydration and the approval timeout
528
-
skip calls that already have a result.
529
-
**Re-carry:** new at this patch; sits in `start()` around
530
-
`createStateManager`/`rehydrateGates` and inside the `onGateCleared` timeout
531
-
branch. Re-verify after upstream changes to rehydration or to the ask-rail
532
-
timeout result.
533
-
534
501
## reactor-ts-skip-unchanged-history
535
502
536
503
`reactor.ts` — Skip re-serializing unchanged history on checkpoint.
@@ -761,7 +728,6 @@ revisit point is the next vendored sync (see `docs/VENDORING.md`).
761
728
| harness-ts-inactivity-on-semantic-progress | Gate the inactivity watchdog's re-arm on parsed events, not raw SSE bytes | Alexander Guy <alexander.guy@pm.me> | This ledger (#harness-ts-inactivity-on-semantic-progress) | Next vendored sync |
762
729
| reactor-ts-correlating-ids-leak | Wrap `tryCorrelate` in try/finally so `correlatingIds` clears on success dispatch paths | Alexander Guy <alexander.guy@pm.me> | This ledger (#reactor-ts-correlating-ids-leak) | Next vendored sync |
763
730
| reactor-ts-tool-cycle-turns-only (supersedes reactor-ts-checkpoint-after-tool-cycle) |`executeTools` writes turns to store segments only and defers the cycle commit to terminals; metadata rides along only when a resolved approval dropped a pending operation | Alexander Guy <alexander.guy@pm.me> | This ledger (#reactor-ts-tool-cycle-turns-only) | Next vendored sync |
764
-
| reactor-ts-skip-answered-parked-call | Drop pending operations whose parked call already has a result at rehydration, and inject no approval-timeout result for such a call | Alexander Guy <alexander.guy@pm.me> | This ledger (#reactor-ts-skip-answered-parked-call) | Next vendored sync |
765
731
| reactor-ts-skip-unchanged-history (+ reactor-ts-last-written-turns-revision) | Skip `contextStore.writeTurns` when `getTurnsRevision()` is unchanged | Alexander Guy <alexander.guy@pm.me> | This ledger (#reactor-ts-skip-unchanged-history) | Next vendored sync |
766
732
| reactor-ts-compact-publish-then-memory | Persist compact blobs, stage `writeTurns`, commit, then `replaceTurns` so memory stays on the old generation until publication | Alexander Guy <alexander.guy@pm.me> | This ledger (#reactor-ts-compact-publish-then-memory) | Next vendored sync |
767
733
| reactor-ts-after-checkpoint-director-only | Gate `afterCheckpoint` on `hasOverride` so auto-commits do not emit it | Alexander Guy <alexander.guy@pm.me> | This ledger (#reactor-ts-after-checkpoint-director-only) | Next vendored sync |
0 commit comments