mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-21 18:47:02 +03:00
generate: plan, tune, and accept exactly like live
The lane's variants were tamer than the ones a live session makes on the same element: its poll instructions replaced live.md's planning method with a cheat sheet, its reference forbade knobs, told the agent to copy the markup verbatim and to treat DESIGN.md as a hard boundary, and its accept appended anchored overrides instead of integrating the design. Measured on the same page with Opus, live runs promoted a tier, broke the grid, and declared knobs; lane runs restyled three equal boxes. Now a Go the generate verb fires gets the same _instructions as a user's Go (the action's reference, section 4 planning, knobs per section 7), generate.md hands the design work to live.md's Handle generate and its Required after accept, Setup runs as for any command, the Tune chip behaves as in any session, and the mechanical bake is opt-in (--bake) instead of the lane's default. The start verdict points at live.md, and `browser` (the config key the opener reads) is a recognized key. Goldens re-recorded for the accept help and the recognized-keys line. Written with AI assistance (Claude). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
committed by
Abdul Wahab
co-authored by
Claude Fable 5
parent
c36e37808e
commit
695d1bd515
@@ -846,15 +846,15 @@ describe('live-browser source contracts', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('never shows a pending Tune chip for a session the generate verb started', () => {
|
||||
// The generate lane declares no knobs, so the chip that spins between
|
||||
// the variants mounting and the done reply is noise there; a user's Go
|
||||
// keeps the chip exactly as before (origin null).
|
||||
it('shows the pending Tune chip for a lane session exactly as for any other', () => {
|
||||
// A Go the generate verb fired plans and declares knobs like a user's Go,
|
||||
// so the chip that spins between the variants mounting and the done
|
||||
// reply is gated on the parameter state and nothing else.
|
||||
assert.equal((SOURCE.match(/parameterGenerationState = 'pending';\s*sessionOrigin = agentTargetForGo \? 'agent' : null;/g) || []).length, 2, 'every Go records who fired it');
|
||||
assert.match(
|
||||
SOURCE,
|
||||
/const paramsPending = !hasParams && sessionOrigin !== 'agent' && \(parameterGenerationState === 'pending' \|\| parameterGenerationState === 'loading'\);/,
|
||||
'the pending chip is gated on the origin and nothing else changed',
|
||||
/const paramsPending = !hasParams && \(parameterGenerationState === 'pending' \|\| parameterGenerationState === 'loading'\);/,
|
||||
'the pending chip is not gated on the origin',
|
||||
);
|
||||
assert.match(SOURCE, /origin: sessionOrigin \|\| undefined,/, 'the origin is saved with the session');
|
||||
assert.match(SOURCE, /sessionOrigin = saved\.origin === 'agent' \? 'agent' : null;/, 'and restored across a reload');
|
||||
|
||||
Reference in New Issue
Block a user