Skip to content

fix(browser): make observation start replay idempotent - #45

Merged
kinzhi merged 1 commit into
mainfrom
code/observation-start-replay-idempotent
Aug 31, 2026
Merged

fix(browser): make observation start replay idempotent#45
kinzhi merged 1 commit into
mainfrom
code/observation-start-replay-idempotent

Conversation

@kinzhi

@kinzhi kinzhi commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Core retransmits the one-way browser.observer.command start while it waits for the started lifecycle event. The Worker treated each retransmission as a new observer, so the recovery path Core added turned into a self-conflict.

The Worker now records the command_id alongside the lease and returns early when both match the observation already opening, so a delivery replay does not replace the stream or report that the same observer conflicts with itself.

This is also a release blocker: the root repository's main already pins this commit as its openlinker-cli submodule pointer, and the commit was never pushed, so a recursive clone or a CI submodule checkout from main currently fails on a SHA that does not exist on the remote.

TestObservationStartReplayIsIdempotent covers the replay; go test ./pkg/agentexec/ ./pkg/browserprotocol/ ./pkg/browserruntime/ passes.

🤖 Generated with Claude Code

@kinzhi
kinzhi merged commit ff5e973 into main Aug 31, 2026
11 of 12 checks passed
@kinzhi
kinzhi deleted the code/observation-start-replay-idempotent branch August 31, 2026 06:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant