mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-17 16:46:31 +03:00
Live: stop the preflight writing source, cache the resolution
The polling-rework preflight wrote the variant scaffold into source during the poll lease, before the agent acted. On source-preview targets (React/Vue/Vite, everything but the svelte-component path) that write full-reloaded the framework; a browser caught mid-reload missed the agent's variant write and the SSE done, and sat stranded at 0/N. Restore the 3.5 single-atomic-edit semantics: the preflight still resolves the element location and computes the scaffold, but --defer-source-write leaves source untouched and hands the agent the wrapper text plus the picked source range. The agent splices variants into the wrapper and replaces the range in one write, so the framework reloads exactly once. The svelte-component path is untouched (it never writes route source). The missed-completion recovery stays as defense in depth. Also cache the resolved source file per target signature (locator + route): the ~7.6s tree search re-ran on every generate for the same element; a hit now points the helper straight at the file via --file, invalidated when the target changes or a resolution fails. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
4cd5ea7547
commit
dbe0c12b91
@@ -235,11 +235,12 @@ function recordAgentPhase(id, phase, details = {}) {
|
||||
/**
|
||||
* Detect a browser that missed the generation `done` broadcast.
|
||||
*
|
||||
* The preflight scaffold write triggers a framework full-reload (Astro reloads
|
||||
* the page for any .astro edit). If the agent's variant write + `done` land
|
||||
* while the browser is mid-reload, the new page misses both the second HMR
|
||||
* reload and the SSE `done` — it resumes from the scaffold-only source and
|
||||
* sits in GENERATING at 0/N forever. That resumed page always checkpoints
|
||||
* The preflight no longer writes the scaffold into source for source-preview
|
||||
* targets (the agent writes wrapper + variants in one atomic edit), so the old
|
||||
* scaffold-write full-reload that opened the "stranded at 0/N" race is gone.
|
||||
* This recovery stays as defense in depth: any framework reload that drops the
|
||||
* agent's variant write + `done` while the browser is mid-reload leaves the new
|
||||
* page in GENERATING at 0/N. That resumed page always checkpoints
|
||||
* (`browser_resumed`), so a checkpoint claiming "still generating, variants
|
||||
* missing" for a session whose generation already completed is direct
|
||||
* evidence of the miss. Rebuild the `done` payload from the snapshot so the
|
||||
|
||||
Reference in New Issue
Block a user