STEP 1592 — PlanRunner v0.3

STEP 1592 · Bluesky RunEngine の残 7 Msg type 追加 · 累計 18 Msg type · Rei-AIOS · 2026-08-30

目的

藤本さん directive「counter fix + MCP migration auto + Bluesky v0.3 (pause/resume/kickoff/complete/create/save/drop) 順」 arc 3/3。 STEP 1534 v0.2 で除外していた Msg type を Rei semantics 明確化して追加。

追加 7 Msg type

BlueskyRei v0.3Rei semantics
pausepauseplan を human review 点で一時停止 (resume signal 待ち、 optional timeout)
resumeresume外部から runner.resume(label) で pause 解除。 symbolic yield も可 (no-op、 trace 記録用)
kickoffkickoff長時間 async task を fire (token 即返却、 task は background で走る)
completecompletekickoff の token で await + 結果回収 (optional timeout)
createcreaterun-scoped ephemeral data 格納 (in-memory Map)
savesavedata を user-supplied persistFn で永続化 (file I/O は user code に委譲)
dropdroprun-scoped data 削除 (existed flag 返却)

Runner API

const runner = new PlanRunnerV03(options);

// pause / resume control
runner.resume('gate')           // → boolean (found & resumed)
runner.cancelPause('gate', msg) // → boolean (found & rejected)
runner.pending()                // → string[] (active pause labels)

// kickoff / complete introspection
runner.activeTasks()            // → number (in-flight tokens)

// create / save / drop store
runner.storeKeys()              // → string[]
runner.storeGet(key)            // → unknown

Example: full realistic sequence

function* plan(): PlanV03 {
  yield openRunMsg('sess-1');                              // v0.2
  yield subscribeMsg('__run__.closed', (e) => log(e));    // v0.2
  yield createMsg('config', { threshold: 0.95 });          // v0.3 create
  const k = yield kickoffMsg('long-analysis', async () => { // v0.3 kickoff
    return await runHeavyAnalysis();
  });
  yield pauseMsg('gate', 'wait for user approval');        // v0.3 pause
  // ... external: runner.resume('gate')
  if (k.kind === 'kicked_off') {
    const done = yield completeMsg(k.token);                // v0.3 complete
  }
  yield saveMsg('config', (k, v) => fs.writeFileSync(...)); // v0.3 save
  yield dropMsg('config');                                  // v0.3 drop
  yield closeRunMsg('sess-1', 'success');                  // v0.2
}

累計 Msg type 18 (v0.1 + v0.2 + v0.3)

VersionMsg type
v0.1 (STEP 1579)call / check / dry_run_hint / wait / checkpoint5
v0.2 (STEP 1534)open_run / close_run / subscribe / monitor / stage / unstage6
v0.3 (STEP 1592 本 page)pause / resume / kickoff / complete / create / save / drop7
Total18

Bluesky RunEngine の 15+ Msg type から Rei semantics 明確化できたもの全て取り込み完了。

Backward compat 完全

Test — 53/53 PASS + regression 130/130 clean

  1. Msg constructors (7 新 v0.3 type)
  2. v0.1/v0.2 backward compat via v0.3 runner (checkpoint/openRun/call/closeRun 4 Msg delegate)
  3. pause + resume flow (external resume unblocks)
  4. pause timeout throws
  5. kickoff + complete round-trip (async task fire-and-await)
  6. complete timeout throws
  7. create + storeGet + drop (in-memory store)
  8. save invokes persistFn with correct args
  9. save without create throws
  10. dryRun skips persistFn + kickoff fn but records trace
  11. summarizeTraceV03 counts new v0.3 Msgs
  12. Full realistic sequence (9 Msg: open + subscribe + create + kickoff + pause + complete + save + drop + close)

Honest scope