Skip to content

engine: a person's Stop tells the agent; Stopping… belongs to its turn - #160

Merged
fxck merged 5 commits into
mainfrom
engine/parallel-jobs-and-stops
Oct 9, 2026
Merged

fxck merged 5 commits into
mainfrom
engine/parallel-jobs-and-stops

Conversation

@fxck

@fxck fxck commented Oct 9, 2026

Copy link
Copy Markdown
Member

Fixes from Milo's stress run 3 (0.15.18), segments B and C.

  • Three parallel background jobs (B +4:06): not an engine defect. The engine tracked all three: w10/w11 opened as items i/15 and i/17 and closed stopped at the person's Stop. The recorder cut ws frames at 2,000 characters, and its reader skipped the cut frames. A bridge test now pins the Claude shapes of three jobs started together, each with its own work and its own end.
  • Stop after the turn (C +0:21.6). The engine already recorded every helper and job stopped; helper A's stopped was also in a cut frame. What was missing: a Stop's close had no words in the lost-work note, and the note was suppressed after a person's Stop. Work a person's Stop ended is now recorded stopped and noted "stopped by the person" in a wake of its own. That wake is held for the next message only: it never fires and never starts a run. The restart and exit notes are unchanged.
  • Phantom "Stopping…" (B +6:06.6). The background Stop's flag cleared only when the after-turn liveness turned null. The +4:12.4 press came as wake 66 took over, so the liveness was already null and never changed. "Stopping…" now shows only under the turn the Stop was pressed under.

For the card lane: every work item a Stop ended arrives stopped. The card's "worked 11s · 2 helpers" line does not count those ends yet.

Gates: node scripts/gate-changed.ts green (engine contract gate 138 cases, related t3 1636 cases, web, typechecks).

🤖 Generated with Claude Code

fxck added 5 commits October 9, 2026 21:56
Milo's stress run 3 (B +4:06) read as if the engine tracked one of three
background jobs started in one turn. It tracked all three: the work items
w10/w11 (items i/15, i/17) opened running and closed stopped at the
person's Stop. The recorder cut its ws frames at 2,000 characters and its
reader skipped the cut ones, so those frames never reached the breakdown.

This pins the Claude shapes of three jobs started together: three
task_started for three Bash calls, each its own work with its own end.
A Stop after the turn closed the session and recorded each helper and job
stopped, but nothing told the agent: a Stop's close had no words in the
lost-work note, and the note was suppressed after a person's Stop. Milo
later called the Stop "the restart".

Work a person's Stop ended (its session's close, the driver's own stopped
report as the session goes, or a Stop on the running turn) is recorded
stopped and noted "stopped by the person". That note is held for the next
message in a wake of its own: it never fires or is released to a run of
its own, since the person stopped the work on purpose. The restart and
exit notes keep their wake and behaviour.
Milo's stress run 3 (B +6:06.6): "Stopping…" showed under a later
turn's wait on its helpers with no Stop pressed. The background Stop's
flag cleared only when the after-turn liveness turned null. The Stop at
+4:12.4 was pressed as wake 66 took over: the liveness was already null,
never changed, and the flag lived on to the next wait's Stop button.

The press now records the turn it was pressed under, and "Stopping…"
shows only under that turn.
… message

The certified pump scene pinned the next send as the bare text; with the
person's-Stop note it carries the note first.
@fxck
fxck merged commit 5ff358c into main Oct 9, 2026
19 checks passed
fxck added a commit that referenced this pull request Oct 9, 2026
- #160 engine: a person's Stop tells the agent; Stopping… belongs to its turn
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