A scheduled operation can become due while I am looking at another project. Using the visible screen as its target would make the timing correct and the destination wrong. I retained the project, account profile and tab in the reservation, then checked that relationship again when execution actually began.
Record an execution destination alongside the time
A project job stores profile, workspace and tab identifiers inside its context. Program identity, definition hash, current inputs and Python or notebook mode are retained too. The design does not save only a time and later run whatever procedure happens to be selected. Listing is also scoped to the owning project.
Creation checks that the plugin is enabled, loads its definition and compares the exact input keys with its parameters. That does not prove the business meaning of every value. It establishes a retained input contract and destination that can be checked again instead of rediscovered from the future screen.
Enter through retained context rather than visible selection
When the timer selects a job, it passes the retained context into the project execution wrapper. The wrapper checks that the tab exists, belongs to the declared workspace and profile, and is not private. A project with copying still in progress is unavailable. Failure does not redirect work into a similar visible tab.
A busy project cannot silently switch accounts. When idle, its runtime cursor is set from the validated context and execution enters that runtime. The concern here extends beyond the general distinction between visible selection and a cursor: a long-lived reservation must revalidate its destination at the moment it becomes actionable.
Do not silently substitute changed code after reservation
Immediately before dispatch, the program is loaded again and its manifest hash is compared with the reserved hash. A change is rejected even if the display name is identical. The actual run identity is checkpointed into the reservation so later status refers to the execution that was started.
A definition hash says nothing about whether the external service has remained unchanged. Authentication, page structure and source material can change under identical code. Definition consistency and current operating conditions therefore remain separate checks. After launch, the runner must identify the same program before its completion is attached to the reservation.
Do not overlap runs in one occupied project
Dispatch first claims a project lane. Different projects can proceed concurrently, while a second job for an occupied project does not start on that tick. Short metadata serialization is distinct from the long program execution, allowing unrelated projects to continue instead of sharing one global execution lock.
A job more than two minutes late is marked missed. The application does not compensate for downtime by launching every old operation in a burst. These reservations depend on the local application being open; they are not a guarantee of continuous server availability or exact-time delivery. The missed state makes that operational limit visible.
Keep another project visible in the isolation test
The existing isolation scenario registers the same procedure in two projects and reserves different inputs for the same time. It observes overlapping execution and then compares target tabs, run identities and results. It also checks that the separately visible project remains selected, making the destination test stronger than merely following the current screen.
That evidence comes from owned Electron profiles and HTTPS fixtures in the existing test, not new reservations on customer services during this writing. The shared lane module illustrates memory ownership only. It does not provide the durable reservation store or browser runner used by the original application.
If the destination disappears, do not invent a replacement
A user may close the tab or change its account connection after scheduling. The system needs a recorded failure and a deliberate review of that relationship. Finding a new tab with a similar title would be convenient while discarding the evidence that the original intent is preserved. Deferred execution needs less guessing, not more.
Jobs found running after restart become review-needed rather than replaying automatically. The local process may have stopped after an external action was delivered. The goal was a reservation whose procedure, destination and execution can be explained, not an unconditional timed click with no account of what happened.