Skip to content

Commit 9f19169

Browse files
authored
Retire unused Todo coordination command paths (#4723)
* refactor(control-plane): retire unused coordination mutation wires Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> * refactor(todo): retire capture-followups command Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> * docs: record todo command retirement boundary Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> * test: rebind retired fence remediation mutant Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --------- Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Co-authored-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
1 parent 936e043 commit 9f19169

41 files changed

Lines changed: 214 additions & 1693 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎docs/architecture/rfcs/human-attention-wishlist-v0.md‎

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ The current seams do not compose into that outcome:
5959
- an open `user_action` can enter the user notification channel even when it is
6060
non-blocking;
6161
- `todo suggest` creates a read-only candidate queue that requires later
62-
promotion, while `todo capture-followups` writes only agent work;
62+
promotion; the retired `todo capture-followups` command wrote only agent
63+
work and never provided a human-wish route;
6364
- the compact turn envelope carries required execution and writeback actions,
6465
but no signed optional sidecar hint.
6566

@@ -168,10 +169,11 @@ It must:
168169
`duplicate_updated` result;
169170
- perform no quota spend and claim no delivery progress by itself.
170171

171-
The exact command name is open to implementation review. The behavior above is
172-
the contract; extending `todo capture-followups` is acceptable only if it keeps
173-
agent follow-up and human-wish routing explicit and cannot silently change the
174-
role or task class.
172+
The exact command shape is open to implementation review. The behavior above
173+
is the contract. The retired `todo capture-followups` batch command is not an
174+
extension point; a future implementation must use a typed wish-specific helper
175+
or an explicit canonical `todo add` option that cannot silently change role or
176+
task class.
175177

176178
## 5. Skill and Heartbeat Generation Rule
177179

@@ -400,8 +402,8 @@ contract.
400402

401403
## 14. Open Questions
402404

403-
1. Should the helper be `todo capture-wishes`, or should the existing
404-
`capture-followups` command accept an explicit destination kind?
405+
1. Should the helper be `todo capture-wishes`, or should canonical `todo add`
406+
accept an explicit human-attention kind?
405407
2. Should v0 cap active wishes per agent, per goal, or both?
406408
3. Should piggyback delivery be part of the initial slice, or should the first
407409
implementation expose wishes only through status/review packets?

‎docs/architecture/rfcs/human-attention-wishlist-v0.zh-CN.md‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ LoopX 已经区分阻塞性的 `user_gate` todo 与非阻塞的 `user_action` to
4040
- heartbeat 指南要求记录高价值候选,却没有定义 wishlist 写命令或生命周期;
4141
- `todo_write_hint` 提供 gate、user-action 和 agent-todo 模板,却没有“不通知的可选人类请求”模板;
4242
- 一个打开的 `user_action` 即使非阻塞,也可能进入用户通知通道;
43-
- `todo suggest` 只产生只读候选队列,还需要后续 promotion;`todo capture-followups` 则只写 agent work;
43+
- `todo suggest` 只产生只读候选队列,还需要后续 promotion;已退役的
44+
`todo capture-followups` 只写 agent work,从未提供 human wish 路由;
4445
- compact turn envelope 带有必须执行的动作和写回,却没有签名过的可选 sidecar 提示。
4546

4647
结果是一种可以避免的生产偏差:agent 要么把可选价值升级成 blocker,要么制造提醒噪音,要么遗忘它。
@@ -124,7 +125,9 @@ loopx todo capture-wishes \
124125
- 限制每个 agent 的活跃 wish 数,并返回 typed `max_items_exceeded` 或 `duplicate_updated` 结果;
125126
- 自身不 spend quota,也不声明 delivery progress。
126127

127-
精确命令名留给实现评审。以上行为才是协议;只有在能保持 agent follow-up 与 human wish 路由显式、且不会静默改变 role/task class 时,才可选择扩展 `todo capture-followups`。
128+
精确命令形态留给实现评审。以上行为才是协议。已退役的
129+
`todo capture-followups` 批量命令不再作为扩展点;未来实现必须使用 wish 专属的
130+
typed helper,或为 canonical `todo add` 增加不会静默改变 role/task class 的显式选项。
128131

129132
## 5. Skill 与 Heartbeat 生成规则
130133

@@ -292,7 +295,7 @@ v0 拒绝。它会扩大每个 task-class switch、CLI validator、state project
292295

293296
## 14. 开放问题
294297

295-
1. Helper 应命名为 `todo capture-wishes`,还是让现有 `capture-followups` 接受显式 destination kind?
298+
1. Helper 应命名为 `todo capture-wishes`,还是让 canonical `todo add` 接受显式 human-attention kind?
296299
2. v0 应按 agent、按 goal,还是同时限制 active wish?
297300
3. Piggyback 呈现应进入初始切片,还是第一版只通过 status/review packet 暴露 wish?
298301
4. 在专用 typed outcome 出现前,哪一个 public-safe lifecycle field 最适合记录用户的显式 decline?

‎docs/architecture/rfcs/shared-goal-authority-state-provider-v0.md‎

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2107,16 +2107,16 @@ Per stage, this increment implements:
21072107
failures, and zero skips.
21082108
- Stage 2C observation foundation: seven `s2c1.*` rows port the local-shadow CLI
21092109
E2E and migration assertions and pin the single-lineage guarantee. The configure round trip previews, enables,
2110-
reads back, and disables the observer; every writer family (handoff-mode,
2111-
todo add/update/complete/supersede/capture-followups/archive-completed,
2110+
reads back, and disables the observer; every retained writer family (handoff-mode,
2111+
todo add/update/complete/supersede/archive-completed,
21122112
task-lease acquire/renew/transfer) captures with
21132113
`primary_writeback_preserved`, `provider_to_local_writes=false`, and
21142114
`candidate_read_for_decision=false`, while an idempotent re-acquire does not
21152115
observe; default-off goals stay isolated; candidate failure preserves the
21162116
primary commit; a POSIX SIGKILL in the crash gap loses only that
21172117
observation; a `--runtime-root` override that differs from
2118-
`common_runtime_root` keeps todo add, task-lease acquire, todo update,
2119-
follow-up capture, and a leased completion in one store identity while the
2118+
`common_runtime_root` keeps two todo adds, task-lease acquire, todo update,
2119+
and a leased completion in one store identity while the
21202120
registry root gains neither a candidate lineage nor lease state; and
21212121
`migrate-state` seeds a fresh lineage without legacy bytes.
21222122
- Stage 2C parity half: ten `s2c2.*` rows drive one explicitly enabled
@@ -2133,8 +2133,8 @@ Per stage, this increment implements:
21332133
as `bootstrap_required`, rebootstraps a fresh lineage and replays; three
21342134
cycles of interleaved writers (add, note update with a no-change repeat,
21352135
explicit exclusion set and clear with a no-change repeat, acquire, renew,
2136-
transfer, leased complete and supersede with their fence closes,
2137-
capture-followups) keep every bounded qualification matched with
2136+
transfer, leased complete and supersede with their fence closes, and a
2137+
second add) keep every bounded qualification matched with
21382138
`sustained_parity_verdict=not_evaluated`; a
21392139
direct primary edit reports `shadow_projection_drift`, a later write holds
21402140
on `source_partition_continuity_unproved`, and only rollback plus rebootstrap
@@ -2802,6 +2802,15 @@ one-way projections. Do not add a third TS-Markdown backend, bidirectional
28022802
live synchronization, or per-command split authority. Unsupported post-cutover
28032803
commands fail closed; they do not fall back to the old writer.
28042804

2805+
The 2026-09-19 command-retirement checkpoint removes the unconsumed
2806+
`coordination.local_authority.mutate` and Todo compatibility-edit execution
2807+
wrappers while retaining `prepareCoordinationProjectionCommit` and the shared
2808+
reducer used by live domain transactions. It also removes the unrelated public
2809+
`todo capture-followups` product command. That command retirement does not
2810+
remove, weaken, or rename the runtime shadow-capture mechanism described here.
2811+
`todo suggest` remains a manual read-only discovery entrypoint and is not part
2812+
of provider promotion qualification.
2813+
28052814
#### Refactoring roadmap overview
28062815

28072816
The Monitor state owner now lives in TS and is composed with authoring scope,

‎docs/architecture/rfcs/shared-goal-authority-state-provider-v0.zh-CN.md‎

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1678,14 +1678,14 @@ CLI runner、observation-lock 窗口、候选回读)、只读 TypeScript 探
16781678
PostgreSQL 集成测试文件,要求至少九个 pass、零 fail、零 skip。
16791679
- Stage 2C 观察基础:七个 `s2c1.*` 行移植本地 shadow CLI E2E 与迁移断言,并钉住单一
16801680
lineage 保证。
1681-
configure 往返先预览、再开启、回读、最后关闭 observer;每个 writer family
1682-
(handoff-mode、todo add/update/complete/supersede/capture-followups/
1681+
configure 往返先预览、再开启、回读、最后关闭 observer;每个保留的 writer family
1682+
(handoff-mode、todo add/update/complete/supersede/
16831683
archive-completed、task-lease acquire/renew/transfer)都以
16841684
`primary_writeback_preserved`、`provider_to_local_writes=false`、
16851685
`candidate_read_for_decision=false` 完成 capture,而幂等 re-acquire 不产生
16861686
observation;default-off goal 保持隔离;候选失败不推翻主写;POSIX SIGKILL
16871687
落在崩溃间隙时只丢失该次 observation;`--runtime-root` 与 `common_runtime_root`
1688-
不同时,todo add、task-lease acquire、todo update、follow-up 捕获与带 lease 的
1688+
不同时,两次 todo add、task-lease acquire、todo update 与带 lease 的
16891689
complete 仍落入同一个 store identity,registry root 既不产生候选 lineage 也不
16901690
产生 lease 状态;`migrate-state` 在不携带 legacy 字节的前提下建立新 lineage。
16911691
- Stage 2C parity 后半段:十个 `s2c2.*` 行只通过公开 CLI 驱动一个显式开启
@@ -1699,7 +1699,7 @@ CLI runner、observation-lock 窗口、候选回读)、只读 TypeScript 探
16991699
条目、把 capture 置于 `bootstrap_required`、重新 bootstrap 出新 lineage 并可重放;
17001700
三轮交错 writer(add、note update 及其无变化重复、显式 exclusion 设置与清除及其
17011701
无变化重复、acquire、renew、transfer、带 lease 的 complete 与 supersede 及其
1702-
fence close、capture-followups)让每次有界 qualification 都保持 matched,且
1702+
fence close,以及第二次 add)让每次有界 qualification 都保持 matched,且
17031703
`sustained_parity_verdict=not_evaluated`;
17041704
直接改主文件会报告 `shadow_projection_drift`,其后的写入以
17051705
`source_partition_continuity_unproved` 挂起,只有 rollback 加重新 bootstrap 才能恢复;
@@ -2223,6 +2223,13 @@ CLI / Agent / Dashboard → 唯一 TS Todo 事务 owner → canonical authority
22232223
供数;cutover 后,所选 canonical provider 向单向投影供数。不增加第三种 TS-Markdown
22242224
backend、实时双向同步或按命令拆开的权威;晋升后不支持的命令 fail closed,不能回退旧 writer。
22252225

2226+
2026-09-19 命令退役检查点删除了无人消费的
2227+
`coordination.local_authority.mutate` 与 Todo compatibility-edit 执行包装,同时保留
2228+
实际领域事务仍复用的 `prepareCoordinationProjectionCommit` 与共享 reducer;另行删除
2229+
无关的公开产品命令 `todo capture-followups`。后一个命令的退役不删除、不削弱、也不
2230+
重命名本 RFC 的 runtime shadow-capture 机制。`todo suggest` 继续作为人工触发的只读
2231+
发现入口,不纳入 provider promotion 资格。
2232+
22262233
#### 重构主线总览
22272234

22282235
Monitor 状态 owner 现位于 TS,并与 authoring scope、external-wait 校验及字段更新

‎docs/architecture/rfcs/typescript-control-plane-migration-v0.md‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,16 @@ readers but does not finish Todo writers, retention/compaction or promotion.
975975

976976
**T4 — collect full-writer retirement after durability cutover.**
977977

978+
- The 2026-09-19 command audit retires two already-typed but unconsumed
979+
execution surfaces: `coordination.local_authority.todo_compatibility_edit`
980+
and `coordination.local_authority.mutate`. Shared projection reduction and
981+
commit preparation remain because live claim, lease, update, archive,
982+
monitor, and team-plan transactions use them. The same audit retires the
983+
unused public `todo capture-followups` batch command instead of migrating it;
984+
ordinary `todo add` remains available but is not claimed to preserve the
985+
retired command's atomic batch, deduplication, or replay contract. The
986+
read-only, manually invoked `todo suggest` surface remains, but is not a
987+
provider-default prerequisite.
978988
- Depends on T1–T3 and the shared RFC's [D1–D3](shared-goal-authority-state-provider-v0.md#durability-execution-cards), including owner approval
979989
and the explicit legacy migration window. Search remaining imports and
980990
public command routes before deleting old Markdown business writers,

‎docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,14 @@ T3/D1 reader,未完成全部 Todo writer、retention/compaction 或 promotion
757757

758758
**T4 — durable cutover 后兑现完整 writer 删除。**
759759

760+
- 2026-09-19 命令审计退役两条已经 typed、但没有实际消费者的执行面:
761+
`coordination.local_authority.todo_compatibility_edit` 与
762+
`coordination.local_authority.mutate`。claim、lease、update、archive、monitor
763+
和 team-plan 事务仍复用 projection reduction 与 commit preparation,因此这些
764+
公共内核保留。同一审计直接退役无实际调用的公开批量命令
765+
`todo capture-followups`,不再为它继续迁移;普通 `todo add` 仍可用,但不宣称保留
766+
已退役命令的批量原子性、去重或 replay 合同。人工触发、只读的 `todo suggest`
767+
保留,但不是 provider 默认切换的前置条件。
760768
- 前提是 T1–T3 和 shared RFC 的 [D1–D3](shared-goal-authority-state-provider-v0.zh-CN.md#持久化执行卡),包括 owner 批准及明确的 legacy 迁移窗口。
761769
搜索剩余 import 和公开路由后,删除旧 Markdown 业务 writer、capture-only adapter、
762770
重复 reference aggregate。

‎docs/reference/protocols/todo-suggestion-prompt-v0.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ frequency limits. The project agent reads the current repo and returns
99
`suggested_todos`; those candidates are not formal LoopX todos until the user
1010
or primary controller promotes one.
1111

12+
This is intentionally a manual, read-only discovery surface. It is retained
13+
even without automatic product callers because an explicit operator request is
14+
its product entrypoint. It is not a provider-default or TypeScript-migration
15+
prerequisite, and it should not gain a dedicated write path unless a real
16+
replacement interaction is first accepted.
17+
1218
## Command
1319

1420
```bash

0 commit comments

Comments
 (0)