codex-workflow-v2 2.0.0-beta.13.2 → 2.0.0-beta.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -329,9 +329,11 @@ A Milestone chat and its Task chats are separate user-visible execution contexts
329
329
  conversation. Create every Task chat as a brand-new Codex task with `create_thread`, an explicit
330
330
  Task-only prompt, and an explicit title. Never use `fork_thread`, thread handoff, or a continuation
331
331
  of the Milestone chat to create a Task chat: those paths carry parent history into the child. A
332
- failure to create a new task is a routing blocker. Check the thread list for an already-created
333
- exact Task ID, retry `create_thread` once sequentially when none exists, and then stop; never fall
334
- back to a fork.
332
+ confirmed failure to create a new task is a routing blocker. A pending `clientThreadId`, timeout,
333
+ lost response, or absence from `list_threads` does not establish failure and never permits a
334
+ second creation. Persist the attempt before calling the App, resolve its actual ID and confirm
335
+ it with `read_thread`; never fall back to a fork. Read and follow
336
+ `../../references/chat-dispatch.md` for the executable dispatch/recovery and model-selection contract.
335
337
 
336
338
  Codex App may wrap the supplied prompt in a host-generated `codex_delegation` envelope containing
337
339
  only routing provenance such as `source_thread_id`. That envelope is permitted and is not parent
@@ -376,6 +378,22 @@ chat type, Milestone/Task/Step membership ordinals, semantic title, authoritativ
376
378
  review attempt. Use returned `requestedTitle` verbatim. Never derive its prefix from
377
379
  `list_threads`, sidebar order, a count, or `count + 1`: allocation atomically reserves the
378
380
  project-wide monotonically increasing `#NNN`, and an abandoned number is never reused.
381
+ Allocation reuses an existing matching reservation. For a new dispatch, call `dispatch-begin`
382
+ with the closed packet and explicit model request, then call the App exactly once only when
383
+ `createAllowed=true`, using returned `createArgs` unchanged. Record the full result via
384
+ `dispatch-result`, resolve/read back via `dispatch-discover` and `dispatch-observe`, and bind.
385
+ After restart use `dispatch-status`; an unresolved creation cannot be abandoned to create another.
386
+ For legacy reservations without a dispatch marker, first reconcile existing App/source evidence;
387
+ absence of the new marker does not prove no earlier creation occurred.
388
+
389
+ When the user authorizes model selection, use the versioned role/phase/complexity matrix rather
390
+ than coordinator inheritance. Both `model` and App `thinking` must be explicit in create arguments.
391
+ Use the destination host's current supported model/effort catalog; no guessed aliases or silent
392
+ fallback. Before a materially different phase, `model-select` returns explicit follow-up settings
393
+ for the same bound thread. Routine lifecycle work should not retain planning/review reasoning by
394
+ accident; security-sensitive and complex work must not be classified as routine to save tokens.
395
+ Without user authorization for model selection, do not manufacture it from a registry field;
396
+ resolve that policy choice before starting a new dispatch.
379
397
 
380
398
  The builder owns these compact title families; callers must not hand-compose variants:
381
399
 
@@ -397,7 +415,7 @@ Put `#NNN` and membership ordinals first so clipped sidebar titles remain distin
397
415
  inherit the parent title, use a generic title such as `Milestone recovery` / `Task execution`, or
398
416
  reuse one title for different entity IDs. Maintain the registry-backed
399
417
  `Task ID -> thread ID -> title` mapping in
400
- the Milestone chat. Before dispatch, verify from the thread list that the title contains the exact
418
+ the Milestone chat. Before supervision, verify from actual `read_thread` evidence that the title contains the exact
401
419
  ordinal and entity ID, is unique, and the new chat input contains only its TaskContextPacket plus
402
420
  the permitted host routing envelope. Never trust the `create_thread` title argument without a
403
421
  readback: pass the observed title to registry `readback`. If it returns `renameRequired=true`,
@@ -406,6 +424,12 @@ compact the role while preserving `#NNN`, membership ordinals, attempt, and the
406
424
  Never invent another fallback or abbreviate the ID. Bind the verified entry to `threadId` and
407
425
  `hostId`; if all candidates fail, mark it blocked and stop routing. Visual sidebar clipping is
408
426
  harmless only when exact API readback still matches. Do not dispatch while title/context is wrong.
427
+ Persist the single supervisor, cursor and next action using `supervision-record`. Large tool/CLI
428
+ JSON must be saved completely to a private local file and parsed there, with only bounded non-secret
429
+ summaries printed. For an uncertain mutation outcome, run fresh `status -> next` before recovery;
430
+ never replay a mutation merely because displayed output was truncated. Review the exact serialized
431
+ external-review envelope passed to Core, not a separately reconstructed object. Public CREF expiry
432
+ is independent of lease expiry and must be checked before every credential-consuming transition.
409
433
 
410
434
  After every significant Task Step boundary—completion, failure, block, skip, sealed-review result,
411
435
  or corrective decision—the Task chat prints a compact Task progress Markdown table from fresh