agent-orchestrator/backend/internal
Pritom14 eda39a156a fix(terminal): guard subscribe-to-assign window in openTerminal
A session can exit and run onExit (which deletes c.terms[id]) in the gap
between subscribe returning exited=false and openTerminal assigning
c.terms[id]. The delete is a no-op there since the key isn't set yet, so
the later assign resurrects a stale entry for a dead pane, trapping every
future open for that id on the connection. Re-apply the delete after the
assign when onExit fired in the window, tracked by a c.mu-guarded flag.

Add a stress regression test that races the exit against the assign.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 23:42:59 +05:30
..
adapters refactor(tracker): address code-review findings 2026-05-30 22:32:45 +05:30
cdc feat(storage,cdc): minimal 6-table schema + trigger-driven CDC (storage layer) 2026-05-31 05:42:59 +05:30
config docs(config): drop stale CDC-JSONL mention in resolveDataDir 2026-05-31 07:18:22 +05:30
domain Merge pull request #37 from aoagents/feat/sqlite-storage-cdc 2026-05-31 17:13:00 +05:30
httpd Merge remote-tracking branch 'origin/main' into feat/terminal-streaming 2026-05-31 20:50:26 +05:30
lifecycle feat(backend): atomic PR-observation write + CDC on check status updates 2026-05-31 17:02:47 +05:30
observe/reaper feat(backend): port lifecycle lane onto the new storage+CDC model 2026-05-31 07:16:06 +05:30
ports Merge pull request #37 from aoagents/feat/sqlite-storage-cdc 2026-05-31 17:13:00 +05:30
project feat(api): implement project routes with mock manager/store (#47) 2026-05-31 20:31:22 +05:30
runfile feat(api): implement project routes with mock manager/store (#47) 2026-05-31 20:31:22 +05:30
session feat(backend): port lifecycle lane onto the new storage+CDC model 2026-05-31 07:16:06 +05:30
storage/sqlite feat(backend): atomic PR-observation write + CDC on check status updates 2026-05-31 17:02:47 +05:30
terminal fix(terminal): guard subscribe-to-assign window in openTerminal 2026-05-31 23:42:59 +05:30