What happened
element_sequence reports a Fresh observation with a new observation_id after a successful step, but the immediately following click_element with that ID fails reobserve_required. A single click_element from the initial observation does not have this extra failure. The model must spend a failed call and another observation before continuing. Expected: the fresh ID returned by the sequence is immediately actionable.
How to reproduce
- On main
6b652940b, supply a fake CU backend with observeApp and captureObservation returning a window with one enabled AXButton labeled Continue, and runSemantic returning { outcome: { ok: true, tier: "ax", verified: true } }.
- Call
maka_computer observe for that app, then element_sequence with the observed ID and steps: [{ label: "Continue" }].
- Extract
observation_id from the sequence modelText Fresh observation and call click_element with it and the button element ID.
The runtime regression assertion assert.equal(next.error, undefined) fails with actual: "reobserve_required"; the sequence dispatched once, and the next action was refused before dispatch. This uses the real Host tool implementation plus a scripted fake backend, not a real Desktop/model/OS reproduction. The repository test command is node --test --test-name-pattern="a sequence closing observation" packages/runtime/dist/__tests__/computer-use-tools.test.js after building core, storage and runtime with a regression test added.
Environment
- Maka source commit:
6b652940b9f2764cbe9b62bc491e19e4e6cd881f (main, September 18, 2026)
- OS: macOS (local source test)
- Surface: Runtime Host computer-use tool
- Node.js: v24.20.0
Additional context
The sequence closing capture registers the new frame but does not transition the session out of reobserve_required; the single-action fresh observation path performs both. A fix should also validate the observation lease after capture, so a result invalidated during capture is not published as fresh. This issue reports the concrete next-action failure, not a claim that every related Host/fake-backend timing difference sends real OS input. Refs #4909.
Reported with Codex assistance; the contributor owns review and submission.
What happened
element_sequencereports a Fresh observation with a newobservation_idafter a successful step, but the immediately followingclick_elementwith that ID failsreobserve_required. A singleclick_elementfrom the initial observation does not have this extra failure. The model must spend a failed call and another observation before continuing. Expected: the fresh ID returned by the sequence is immediately actionable.How to reproduce
6b652940b, supply a fake CU backend withobserveAppandcaptureObservationreturning a window with one enabled AXButton labeledContinue, andrunSemanticreturning{ outcome: { ok: true, tier: "ax", verified: true } }.maka_computerobservefor that app, thenelement_sequencewith the observed ID andsteps: [{ label: "Continue" }].observation_idfrom the sequencemodelTextFresh observation and callclick_elementwith it and the button element ID.The runtime regression assertion
assert.equal(next.error, undefined)fails withactual: "reobserve_required"; the sequence dispatched once, and the next action was refused before dispatch. This uses the real Host tool implementation plus a scripted fake backend, not a real Desktop/model/OS reproduction. The repository test command isnode --test --test-name-pattern="a sequence closing observation" packages/runtime/dist/__tests__/computer-use-tools.test.jsafter building core, storage and runtime with a regression test added.Environment
6b652940b9f2764cbe9b62bc491e19e4e6cd881f(main, September 18, 2026)Additional context
The sequence closing capture registers the new frame but does not transition the session out of
reobserve_required; the single-action fresh observation path performs both. A fix should also validate the observation lease after capture, so a result invalidated during capture is not published as fresh. This issue reports the concrete next-action failure, not a claim that every related Host/fake-backend timing difference sends real OS input. Refs #4909.Reported with Codex assistance; the contributor owns review and submission.