Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
798eb68
feat(collaboration): emit a wake intent on the first accepted transition
songoow Sep 29, 2026
7beb4a1
feat(collaboration): persist the wake intent and retire it when seen …
songoow Sep 29, 2026
bcca92b
feat(chat): admit a host wake of the LoopX lead through the existing …
songoow Sep 29, 2026
ddcfe9f
feat(chat): pump pending delegation wakes beside the return service
songoow Sep 29, 2026
5748a37
fix(collaboration): keep a wake pending while the lead Turn is activa…
songoow Sep 29, 2026
6776157
fix(chat): resolve wake owners by requester and refuse unowned intents
songoow Sep 29, 2026
1806dc9
fix(collaboration): admit a delegation wake only from the host origin
songoow Sep 29, 2026
e760769
refactor(chat): host the delegation wake pump in the Chat LoopX owner
songoow Sep 29, 2026
a187a27
test(chat): cover the host wake of a Chat LoopX lead
songoow Sep 29, 2026
13bb8a5
docs(delegation): describe the one-time lead wake and its receipts
songoow Sep 29, 2026
9983c27
chore(census): register the wake pump's Goal context registry read
songoow Sep 29, 2026
3f99898
chore(census): follow registry reads moved on main
songoow Sep 29, 2026
fd7bdb8
Merge remote-tracking branch 'upstream/main' into review/pr-5304
songoow Sep 30, 2026
5bd1015
Merge remote-tracking branch 'upstream/main' into review/pr-5304
songoow Sep 30, 2026
43fcdb8
fix(chat): recover a queued wake Turn through native dispatch
songoow Sep 30, 2026
5e74c7b
feat(chat): decide a wake against its pinned conversation and Turn
songoow Sep 30, 2026
03efe21
feat(collaboration): pin the starting conversation beside an operation
songoow Sep 30, 2026
be361c1
feat(delegation): bind the wake intent to the starting conversation
songoow Sep 30, 2026
67eb119
test(delegation): cover wake dispatch recovery and conversation pinning
songoow Sep 30, 2026
3573ade
docs(delegation): describe pinned wake dispatch and recovery
songoow Sep 30, 2026
97b9298
fix(collaboration): keep a wake intent recoverable until its start fa…
songoow Sep 30, 2026
b76fb69
Merge remote-tracking branch 'origin/main' into codex/delegation-wake…
songoow Sep 30, 2026
4b5b3d4
fix(collaboration): prove a wake dispatch with the provider start fact
songoow Sep 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions docs/reference/goal-chat-continuation.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,25 @@ messages; images use the ordinary conversation after pausing.
- Browser refresh reconnects to the existing local run. After service loss,
reconnect restores and pauses the original native thread before resuming.
The Chat hard timeout remains in force; this is not an unattended daemon.
- When a delegated result is first accepted, the Chat service continues the
lead once through the same admission as `resume`. The wake belongs to the
conversation whose Turn started the operation: another conversation of the
same Goal and coordinator is never selected instead, so exiting, closing or
reconfiguring that conversation refuses the wake rather than moving it. The
operation record keeps a separate wake receipt: `woken` with the Turn id,
`pending` with `lead_turn_active`, `lead_paused`, `allowance_exhausted` or
`wake_dispatch_pending`, or `refused` with `goal_stopped`, `lead_unbound`,
`binding_revoked`, `native_goal_complete`, `native_goal_absent`,
`wake_identity_conflict`, `wake_turn_ended_unstarted` or `no_wake_owner`. Its
Turn is accepted once under a client id derived from the intent, and only a
Turn the provider actually started — recorded as `upstream_turn_id` — is
recorded as dispatched: a Turn accepted but not yet dispatched stays
`wake_dispatch_pending`, and a still-queued Turn from an interrupted dispatch
is handed back to the same native acceptance and dispatch owner, so the lead is
continued once without creating a second Turn. A wake never unpauses the lead, never starts a
native Goal and never raises the allowance. A lead that already read the result
in its own Turn is marked `observed_in_turn` and is not woken again. It
requires the Chat service to be running; stopping it leaves intents pending.
- To roll back, pause/close the Chat service before installing an older build.
Disabling mode or deleting a binding does not cancel already admitted children;
use their own execution/recovery controls and retain their evidence.
Expand Down Expand Up @@ -140,6 +159,19 @@ For a disposable mixed-team setup, use the
服务重启先恢复并暂停原线程;浏览器刷新不会另起运行。运行仍有硬超时,尚非
无人值守 daemon。配置文件在未结束的 Goal 中保持摘要绑定,改变后需先协调处理。

成员结果首次被接受时,Chat 服务按与 `resume` 相同的准入规则继续协调员一次。
唤醒绑定在「启动该操作的回合所属会话」上:同一 Goal 与身份下的其他会话不会被选为
替代,所以该会话退出、关闭或改配置时只做拒绝,而不是把唤醒移交给别的会话。操作记录
里另存唤醒回执:`woken` 附 Turn id;`pending` 附 `lead_turn_active`、`lead_paused`、
`allowance_exhausted` 或 `wake_dispatch_pending`;`refused` 附 `goal_stopped`、`lead_unbound`、
`binding_revoked`、`native_goal_complete`、`native_goal_absent`、`wake_identity_conflict`、
`wake_turn_ended_unstarted` 或 `no_wake_owner`。其 Turn 由意图派生的 client id 只接受一次,
且只有 provider 真正开始过的 Turn(记为 `upstream_turn_id`)才算已派发:已接受但尚未派发的
Turn 保持 `wake_dispatch_pending`;中断派发后仍处于 queued 的 Turn 会交回同一套原生接受与
派发 owner 继续,因此协调员只被续跑一次,也不会新建第二个 Turn。唤醒不会解除暂停、不会新开原生 Goal、
也不会提高额度。协调员已在自己回合内读到结果时记为 `observed_in_turn`,不再唤醒。
它依赖 Chat 服务在运行;停掉服务时意图保持待处理。

协调员保留只读沙箱,成员权限来自各自执行绑定,不继承管家的扩大权限。
成员通过验收与协调员报告、整个 Goal 验收分别显示;本模式不直接完成报告 Todo
或整个 Goal。额度是含历史用量的总量,正在执行的请求可能超额,成员另行计量。
Expand Down
8 changes: 6 additions & 2 deletions docs/reference/local-delegation.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,11 @@ than maintaining separate rules.

This entrypoint does not create Agents, grant bindings or wake an idle Codex
conversation. The existing host/LoopX continuation policy owns the next lead
turn. The conversation remains persistent independently of whether autonomous
turn; for a Goal Chat LoopX lead that is the Chat service's one-time wake after
acceptance, described in [Goal Chat continuation](goal-chat-continuation.md).
That wake returns to the conversation whose Turn started the operation, which
the trusted Chat host records beside the operation; the model supplies no
routing. The conversation remains persistent independently of whether autonomous
LoopX mode is enabled. Dashboard, CLI/managed Turn and Lark keep their existing
conversation and runtime owners; they may consume the shared bounded route
projection described below, but they do not get another grant or scheduler.
Expand Down Expand Up @@ -400,7 +404,7 @@ of the new tool description, not injected into those older threads' shared promp
仍显式调用 `resume --execute`。分页回读会重新核验 accepted,单条失效显示
`unavailable`,不能当成失败重派或静默隐藏。`has_more` 表示还有下一页,
`page_readback_complete` 只表示本页是否均成功读取;二者都不代表整个团队已完成。
此入口不创建 Agent、不扩大授权,也不唤醒闲置的 Codex 对话。
此入口不创建 Agent、不扩大授权,也不唤醒闲置的 Codex 对话。Goal Chat LoopX 模式的协调员由 Chat 服务在结果被接受后唤醒一次,且只回到「启动该操作的回合所属会话」——该绑定由受信任的 Chat 宿主写在操作记录旁,模型不提供路由;见 [Goal Chat 续跑](goal-chat-continuation.md)。

### Check a binding before new work

Expand Down
Loading
Loading