Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions apps/presentation/dashboard/src/data/chat.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { HANDOFF_MODES, EXECUTION_HANDOFF_MODES } from "../../../../../loopx/control_plane/coordination/handoff_mode_vocabulary.js";
import { HANDOFF_MODES, EXECUTION_HANDOFF_MODES, type ExecutionHandoffMode } from "../../../../../loopx/control_plane/coordination/handoff_mode_vocabulary.js";
import { normalizeGoalDraft } from "../../../../../loopx/control_plane/collaboration/goal_draft.js";
import { parseTurnStep, type TurnStep } from "./turn-steps.js";
import { z } from "zod";
Expand Down Expand Up @@ -2466,7 +2466,7 @@ export const ownershipPreviewSchema = z.object({
});
export type GoalOwnership = z.infer<typeof goalOwnershipSchema>;
export type OwnershipPreview = z.infer<typeof ownershipPreviewSchema>;
export type ExecutionOwnershipMode = typeof EXECUTION_HANDOFF_MODES[number];
export type ExecutionOwnershipMode = ExecutionHandoffMode;

export async function fetchGoalOwnership(goalId: string) {
return goalOwnershipSchema.parse(await requestJson<unknown>(`/api/chat/goal-ownership?${new URLSearchParams({goal_id: goalId})}`));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,33 @@
# Local authority: retirement cadence after integration

- Current plan: October 7, 2026, `06b6caa07`; historical audit: `ce3862e33`; adoption follow-up: `71525ab90`, September 28, 2026; [中文](2026-09-28-retirement-cadence.zh-CN.md).
- Current candidate checkpoint: October 15, 2026, #6396 at `5d29213d3`; historical 1.x plan: October 7, 2026, `06b6caa07`; historical audit: `ce3862e33`; adoption follow-up: `71525ab90`, September 28, 2026; [中文](2026-09-28-retirement-cadence.zh-CN.md).
- Owners: overall roadmap R3/R4/R5/R6; shared authority D1–D3; TS migration T0–T4.
- This replaces the **current inventory/estimates** in the September 27 recovery
and Host-supervision ledgers, not their historical validation results.

## Reconciled baseline
<a id="current-candidate-checkpoint"></a>

## Current candidate checkpoint (2026-10-15)

The C1/T4 deletion package is implemented in contributor-led
[#6396](https://github.com/loopx-project/loopx/pull/6396) at reviewed head
`5d29213d3`, including the fork supplements and
[absorbed #6366 obligations](../../../../reference/local-authority-provider-selection.md#retirement-proposal-reconciliation).
This is an open 2.0 candidate, not the released additive 1.x baseline.

| Boundary | Candidate fact | Remaining work / retained obligation |
| --- | --- | --- |
| Ordinary Markdown mutation and capture producers | Obsolete writer implementations, including `todos/legacy_mutation.py`, `todos/line_update.py` and `runtime_shadow_writer_adapter.py`, are absent. Canonical creation/mutation, team-plan, Monitor and lease callers use existing typed owners. | Integrate and qualify the adopted source; do not create another writer-deletion task from the historical table. Keep permanent document/display IO and supported import/recovery. |
| Ownership policy | Fresh execution/configuration targets are `soft_claim` / `hard_lease`; typed runtime admission and proof inspection reject live `legacy` execution. | Historical three-value decoding, original receipts, exact release and reviewed backed-up policy migration remain. Qualify real installed migration and affected Host/App consumers separately. |
| Source and outbox recovery | Normal producer retirement does not erase prepared/committed history. | Preserve original receipt/cursor recovery and reconcile or explicitly disposition outstanding outboxes before removing their readers. Storage conversion does not complete ownership migration. |
| Adoption and release | Exact-head review and selected combined-tree validation are recorded with source revisions in the PR. | The reversible core-developer trial, natural Host use, Goal-instance lifetime/recovery and formal D2/D3/default evidence keep their existing owners and open exits. Retain failed/missing rows; mocks, elapsed mixed-version use or a PR merge cannot replace them. |

Use this table and the [TS current frontier](../../typescript-control-plane-migration-v0.md#current-delivery-frontier-2026-10-02)
for new work. The dated records below preserve their original source-specific
measurements and dependency decisions; claims that old writers are reachable
refer to those earlier baselines and must not regenerate completed candidate work.

## Historical reconciled baseline

| Already merged | What no longer belongs in the remaining-work count |
| --- | --- |
Expand All @@ -27,12 +49,12 @@ reimplementing them. Their scopes are dependencies only for affected callers;
local default does not wait for unrelated cloud or hundred-Agent work.

**File as the default store factory is not File as the default authority for
all new/existing Goals.** Unpromoted Markdown writers remain reachable. Two
all new/existing Goals.** At this historical baseline, unpromoted Markdown writers remained reachable. Two
successful Goal migrations, or File↔SQLite transfer, do not prove their absence.
No fixed “5–8 PRs remaining” is carried forward: below are named delivery and
qualification boundaries, not a promise about defect count or merge count.

## When and how to delete
## Historical last-caller inventory and deletion rules

| Boundary | Actual reachable code/caller | Earliest safe deletion and retained obligation |
| --- | --- | --- |
Expand Down Expand Up @@ -126,9 +148,9 @@ C1, D2 and release-default adoption remain separate acceptance boundaries.

<a id="current-closeout-validation-migration-and-deletion-2026-10-02"></a>

## Current closeout: validation, migration and deletion (2026-10-07)
## Historical closeout plan: validation, migration and deletion (2026-10-07)

Rechecked against main `06b6caa07` and the linked merged PRs. This is the current
Rechecked against main `06b6caa07` and the linked merged PRs. This was the
execution plan for **R5 / D1–D3 / T0–T4**, replacing the previous A–D schedule;
older measurements remain source-specific evidence. R6 is a separate successor.
Storage format, authority selection and ownership policy are three distinct
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,31 @@
# 合并后的本地权威退役节奏

- 当前计划:2026-10-07,`06b6caa07`;历史核对基线:`ce3862e33`;采用后续核对:`71525ab90`,2026-09-28;[English](2026-09-28-retirement-cadence.md)。
- 当前候选 checkpoint:2026-10-15,#6396 `5d29213d3`;历史 1.x 计划:2026-10-07,`06b6caa07`;历史核对基线:`ce3862e33`;采用后续核对:`71525ab90`,2026-09-28;[English](2026-09-28-retirement-cadence.md)。
- Owner:总 roadmap R3/R4/R5/R6、shared authority D1–D3、TS 迁移 T0–T4。
- 本记录替代 9 月 27 日 recovery、Host supervision 记录的**当前清单和估算**,
不替代其历史验证结果。

## 重新核对的基线
<a id="current-candidate-checkpoint"></a>

## 当前候选 checkpoint(2026-10-15)

贡献者主导的 [#6396](https://github.com/loopx-project/loopx/pull/6396),已评审 head
`5d29213d3`,已实现 C1/T4 删除包,纳入 fork 补缺及
[#6366 已吸收义务](../../../../reference/local-authority-provider-selection.md#retirement-proposal-reconciliation)。
这是开放的 2.0 候选,不是已发布的兼容 1.x 基线。

| 边界 | 候选现状 | 剩余工作/保留义务 |
| --- | --- | --- |
| 普通 Markdown mutation 与 capture producer | 废弃 writer 实现已不存在,包括 `todos/legacy_mutation.py`、`todos/line_update.py` 和 `runtime_shadow_writer_adapter.py`;canonical 创建/写入、team-plan、Monitor 及 lease caller 使用既有 typed owner。 | 集成并验证采用后的源码,不从历史表再创建 writer 删除任务;保留永久文档/显示 IO 及受支持的导入/恢复。 |
| 所有权策略 | fresh 执行/配置目标为 `soft_claim`/`hard_lease`;typed runtime 准入及 proof inspect 拒绝 live `legacy` 执行。 | 历史三值解码、原回执、精确 release 与有备份的审核策略迁移保留;真实安装迁移及受影响 Host/App 消费者分别验证。 |
| Source/outbox 恢复 | 普通 producer 退役不抹去 prepared/committed 历史。 | 保留原 receipt/cursor 恢复;删除 reader 前对账或明确处置未完成 outbox。存储转换不等于所有权迁移完成。 |
| 采用与发布 | PR 按源码 revision 记录精确 head 评审及选定组合 tree 验证。 | 可回退核心开发者试用、自然 Host 使用、Goal-instance 生命周期/恢复及正式 D2/D3/默认资格沿用原 owner 与开放出口;保留失败/缺失项,mock、混合版本经过时间或 PR 合并都不能替代。 |

新工作以本表及 [TS 当前交付边界](../../typescript-control-plane-migration-v0.zh-CN.md#当前交付边界2026-10-02)
为准。下方具名历史记录保留原源码上的测量与依赖判断;“旧 writer 仍可达”
只描述当时基线,不能再次派生候选已经实现的工作。

## 历史核对基线

| 已合并 | 不再计入剩余工作的内容 |
| --- | --- |
Expand All @@ -25,11 +45,11 @@
不等待无关云端或百 Agent 工作。

**File 是默认 store factory,不等于所有新旧 Goal 默认以 File 为权威。**
未晋升的 Markdown writer 仍可达。两个 Goal 迁移成功、或 File↔SQLite 传输成功,
在这个历史基线上,未晋升的 Markdown writer 仍可达。两个 Goal 迁移成功、或 File↔SQLite 传输成功,
都不能证明旧 writer 已没有消费者。本轮不再沿用“还剩 5–8 个 PR”;以下列出的是
交付和验证边界,不承诺缺陷数量或合并数量。

## 什么时候删、怎么删
## 历史最后调用方清单与删除规则

| 边界 | 真实可达的代码/调用方 | 最早删除条件及保留义务 |
| --- | --- | --- |
Expand Down Expand Up @@ -109,10 +129,10 @@ Host IO;C1、D2 和发布默认采用仍是独立验收边界。

<a id="当前收尾验证迁移与删除2026-10-02"></a>

## 当前收尾:验证、迁移与删除(2026-10-07)
## 历史收尾计划:验证、迁移与删除(2026-10-07)

按 main `06b6caa07` 和所列已合并 PR 重新核对。本节是 **R5 / D1–D3 / T0–T4**
的当前执行计划,替代旧 A–D 排期;历史测量仍只适用于原源码和负载。R6 单独推进。
的当时执行计划,替代旧 A–D 排期;历史测量仍只适用于原源码和负载。R6 单独推进。
存储格式、权威选择、所有权策略是三种不同迁移:有 SQLite 数据库,不代表新 Goal
已经默认使用 canonical authority,也不代表 `legacy` handoff 策略已经退役。

Expand Down
62 changes: 40 additions & 22 deletions docs/architecture/rfcs/typescript-control-plane-migration-v0.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,46 @@ T0–T4, not additional provider promotion or completed migration claims.

<a id="current-delivery-frontier-2026-10-02"></a>

## Current delivery frontier (2026-10-12)
## Current delivery frontier (2.0 candidate, 2026-10-15)

Contributor-led [#6396](https://github.com/loopx-project/loopx/pull/6396),
at reviewed head `5d29213d3`, carries the C1/T4 normal-Markdown-writer cutoff
and live `legacy` ownership-policy retirement. It incorporates the fork
supplements and the valuable #6366 invariants and recovery checks documented in
[the absorption map](../../reference/local-authority-provider-selection.md#retirement-proposal-reconciliation).
The candidate removes the obsolete writer implementations and capture producers;
canonical mutation, creation, team-plan, Monitor and lease consumers reuse their
existing typed owners. Do not schedule those deletions again from the older
writer inventory below. The additive 1.x line and an open 2.0 proposal remain
different delivery baselines; this checkpoint does not claim a released cutoff.

New execution/configuration targets share `ExecutionHandoffMode`, derived from
`EXECUTION_HANDOFF_MODES` (`soft_claim` / `hard_lease`). Historical `HandoffMode`
and receipt codecs still recognize `legacy`. The typed policy owner refuses
fresh legacy execution, acquire/maintenance and current-proof grants, including
delegation launch/resume; exact historical receipt recovery, release and
reviewed backup/plan/migrate remain supported. Storage conversion and ownership
migration remain distinct. No active Goal is migrated by this proposal.

Current work is candidate integration and adoption qualification, not another
writer extraction: retain the compatible 1.x upgrade/backup/recovery route,
finish the bounded reversible core-developer trial and affected real Host/App
journeys, and keep formal D2 failures/missing evidence and release-default
qualification open. Permanent Markdown document/display IO, historical readers
and outstanding receipt/outbox disposition are retained obligations. A passing
conversion drill does not establish natural adoption or Goal-instance retirement.

Use the [current retirement ledger](ledger/shared-goal-authority-state-provider-v0/2026-09-28-retirement-cadence.md#current-candidate-checkpoint)
for that frontier. [Exact-head review](https://github.com/loopx-project/loopx/pull/6396#pullrequestreview-5535116423)
and [combined-tree evidence](https://github.com/loopx-project/loopx/pull/6396#issuecomment-6195855339)
retain their source revisions; they do not certify an untested later head/base,
a completed installed cohort or all RFC acceptance.

### Historical 1.x prerequisite checkpoints (through 2026-10-12)

The following records explain the prerequisites and validation at their named
sources. Their references to reachable writers and a “next” cutoff describe
that 1.x baseline, not remaining implementation work in the candidate above.

Rechecked at main `38cb407ed`: #5413/#5466/#5283 and the affected creation,
Host-stop and UI-history owners #5500/#5805/#5308/#5398 are merged. Reuse
Expand Down Expand Up @@ -127,27 +166,6 @@ The existing delivery Todos should carry these concrete exits:
This updates the existing R5/T4 frontier and release proposal; it creates no
parallel migration owner, runtime gate or release activation.

The retirement proposal is now reconciled through contributor-led #6396 and
its fork supplement #2. The [absorption map](../../reference/local-authority-provider-selection.md#retirement-proposal-reconciliation)
retains canonical ownership/terminal invariants, fixed 1.x receipt recovery,
reviewed App creation and the actual-contention mutation oracle from #6366.
The competing implementation stack is not an integration prerequisite; adopted
combined-head validation, core trial, real Host and D2/release exits stay open.


The same C1/T4 boundary now retires the live `legacy` ownership policy rather
than preserving a third execution strategy. The existing TS policy owner rejects
fresh claim/update/terminal/Monitor admission and execution fences; acquire and
lease maintenance share that rule. Current-proof readback and inspection cannot
turn a retained lease or original receipt into execution. Delegation consumes the
same typed support before launch/resume, including old no-lease-required records;
source inspection no longer carries a second Todo-admission projection. Historical mode decoding,
original-operation recovery, exact release and reviewed backup/plan/migrate remain.
Normal fixtures use soft/hard independently of their legacy/native wire shape;
explicit legacy-policy negatives and retained 1.x artifacts preserve that boundary.
No live Goal is changed by this proposal. Adopted combined-head qualification,
installed policy migration, real Host adoption and D2/release remain open.

Team-plan recovery prerequisite: an unpromoted plan that published its original
receipt can now recover through the Chat confirmation owner while shadow
bootstrap is interrupted. Registry/Todo/source locks still protect the read,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,39 @@ R1–R3 的 TS 消费者包括 App 产品路径,不只 CLI 结算。

<a id="当前交付边界2026-10-02"></a>

## 当前交付边界(2026-10-07)
## 当前交付边界(2.0 候选,2026-10-15)

贡献者主导的 [#6396](https://github.com/loopx-project/loopx/pull/6396),
已评审 head `5d29213d3`,承接 C1/T4 普通 Markdown writer 截止与 live `legacy`
所有权策略退役,已纳入 fork 补缺及 #6366 中有价值的不变量和恢复检查,见
[吸收清单](../../reference/local-authority-provider-selection.md#retirement-proposal-reconciliation)。
候选已删除废弃 writer 实现及 capture producer;canonical mutation、创建、
team-plan、Monitor 和 lease 消费者复用既有 typed owner。不能根据下方旧清单
再次派生同样的删除工作。兼容的 1.x 线和仍开放的 2.0 提案是不同交付基线;
本 checkpoint 不宣称截止行为已发布。

新执行/配置目标统一使用 `ExecutionHandoffMode`,从既有
`EXECUTION_HANDOFF_MODES`(`soft_claim`/`hard_lease`)派生;历史 `HandoffMode`
及回执 codec 仍识别 `legacy`。typed 策略 owner 拒绝 fresh legacy 执行、
acquire/维护及当前 proof 授权,包括 delegation 启动/恢复;历史原回执恢复、
精确 release 与有备份的 plan/migrate 保留。存储转换和所有权迁移仍是不同操作;
提案不自动迁移任何活跃 Goal。

当前工作是候选集成与采用验证,不是再做 writer extraction:保留兼容 1.x 的
升级/备份/恢复路线,完成有界可回退核心开发者试用及受影响的真实 Host/App
旅程,保持正式 D2 的失败/缺失证据与发布默认资格开放。永久 Markdown 文档/
显示 IO、历史 reader 及未完成的 receipt/outbox 处置仍需保留。转换演练通过
不代表自然采用或 Goal-instance 退役完成。

后续以[当前退役 ledger](ledger/shared-goal-authority-state-provider-v0/2026-09-28-retirement-cadence.zh-CN.md#current-candidate-checkpoint)
为准。[精确 head 评审](https://github.com/loopx-project/loopx/pull/6396#pullrequestreview-5535116423)
和[组合 tree 证据](https://github.com/loopx-project/loopx/pull/6396#issuecomment-6195855339)
各自保留源码 revision,不认证未验证的后续 head/base、安装 cohort 或全部 RFC 验收。

### 历史 1.x 前置 checkpoint(截至 2026-10-12)

以下记录解释具名源码上的前置条件与验证。“writer 仍可达”及“下一次截止”
描述当时的 1.x 基线,不是上方候选仍未实现的工作。

按 main `06b6caa07` 复核,#5413/#5466/#5283,以及创建、Host 停止、UI 历史
相关 owner #5500/#5805/#5308/#5398 均已合并。复用各自已交付的边界,不重开
Expand Down Expand Up @@ -71,17 +103,6 @@ actor/可运行状态/输入拒绝、精确 lineage 读回,以及当前输
隔离路径验证。新能力进入时持续守卫,不把历史库存当永久出口。最后受支持的
旧源 writer、历史恢复、安装 cohort 与发布验收各自保持开放。

当前 C1/T4 退役提案由贡献者主导的 #6396 及 fork 补缺 #2 承接,#6366 已被替代;
[吸收清单](../../reference/local-authority-provider-selection.md#retirement-proposal-reconciliation)
保留 canonical ownership/终态不变量、固定 1.x 回执恢复、审核后的 App 创建及真实锁竞争 oracle。
同一 TS 策略 owner 清理第三种 live legacy 执行策略:fresh claim/update/terminal、
Monitor、执行 fence、acquire 及租约维护拒绝 legacy;当前 proof 读回和 inspect 也不能把
保留租约或原回执变为执行资格。delegation 首次启动和恢复都消费同一 typed support,
包括旧“无需租约”记录;source inspect 不再二次解析 Todo 准入。历史 mode 解码、原操作恢复、精确 release 与有备份的
plan/migrate 保留。正常 fixture 使用 soft/hard;legacy/native wire shape 与策略分开,
显式 legacy 拒绝和固定 1.x artifact 继续验证恢复边界。提案不自动修改活跃 Goal。
采用后的 combined head 验证、安装态策略迁移、真实 Host 采用与 D2/发布保持开放。

保留的 import-compatible field writer 在既有 typed field plan 中统一等待条件
归一化及矛盾 clear 拒绝;保持 Python 空白输入省略和锁内 IO,只退役重复的
normalization crossing,不删除仍受支持的 writer 或迁移 reader。
Expand Down
Loading