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
21 changes: 21 additions & 0 deletions docs/architecture/rfcs/complete-state-recovery-v0.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,27 @@ remains partial for compound worst cases and broader platform/provider profiles.
This checkpoint does not qualify M2/M3, live adoption, remote providers or the G1
team journey. No original identity or receipt is rewritten.

### Delivery after the writer cutoff (2026-10-16)

The landed [R5/T4 cutoff](loopx-overall-roadmap-v0.md#post-6396-delivery-plan)
provides a simpler current mutation owner, not a stronger capture profile or
activation receipt. Reuse M1's verifier, safe extraction and readable audit.
The next implementation is the existing M2 for one local File/SQLite profile:
record required component-owner revisions and achieved capture consistency;
exercise concurrent/quiescence/crash and downgrade cases, while v0 remains
readable and incomplete audits remain held.

Then deliver M3's one-Goal packaged recovery, reusing the Goal-lifetime work in
[#5206](https://github.com/loopx-project/loopx/issues/5206). Before the drill,
freeze owner support, source/destination fencing, the replacement/new-lifetime
decision, effect disposition and RPO/RTO. Original operations, later writes and
unsupported/unknown effects retain their owners; copied leases or provider
identity cannot activate the destination. Return an independently accepted
unfinished-work result through the initiating product entry, with recovered,
lost/unknown work and human interventions recorded. Keep service and additional
platform profiles with M4/M5. This coordination checkpoint implements no M2/M3
behavior and starts no recovery or activation.

### First supported user outcome

The first bounded user promise is recovery of one local Goal after its source
Expand Down
15 changes: 15 additions & 0 deletions docs/architecture/rfcs/complete-state-recovery-v0.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,21 @@ held,未知状态不改称可恢复,执行权限始终为 false。限制与
本检查点不证明 M2/M3、live adoption、远端 provider 或 G1 团队验收,不重写原身份或回执。


### writer 截止后的交付(2026-10-16)

已合入的 [R5/T4 截止](loopx-overall-roadmap-v0.zh-CN.md#post-6396-delivery-plan)
简化当前写入归属,不提供更强的捕获 profile 或激活回执。复用 M1 verifier、安全
解包和可读审计;下一实现沿既有 M2,先做一个本地 File/SQLite profile:记录必要
组件 owner revision 与实际捕获一致性,覆盖并发/静止/crash/降级;v0 继续可读,
不完整审计继续 held。

随后复用 [#5206](https://github.com/loopx-project/loopx/issues/5206) 的 Goal 生命周期
工作交付 M3 单 Goal 打包恢复。演练前冻结 owner 支持、源/目标 fence、替代延续或
新生命周期决定、effect 处置和 RPO/RTO。原操作、后写和不支持/未知 effect 各自归
原 owner;复制 lease 或 provider 身份不能激活目标。在发起产品入口返回独立验收的
未完成工作结果,记录已恢复、丢失/未知工作和人工介入。服务及额外平台 profile
继续由 M4/M5 承接。本协调检查点未实现 M2/M3,也不启动恢复或激活。

### 首个支持的用户结果

首个有界用户承诺是:一个本地 Goal 的来源工作区不可用或不再可信后,用户可以恢复
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,26 @@ Goal authorities. This RFC does not approve automatic cleanup of every
external provider, automatic candidate selection, or direct mutation of
orphan state by ordinary bootstrap.

### Post-merge recovery integration (2026-10-16)

[#6396](https://github.com/loopx-project/loopx/pull/6396) retires ordinary legacy
source writers in the 2.0 tree. It does not mechanically exclude installed old
binaries, global routes or warm executors, and does not lift this RFC's activation
hold. Continue [#5206](https://github.com/loopx-project/loopx/issues/5206)'s
remaining binding-owner inventory, commit fences and external-effect drain;
reuse delivered codec/source-session/quota owners instead of restarting them.

Coordinate only the exercised local profile with complete-recovery M2/M3 and
[R5](loopx-overall-roadmap-v0.md#post-6396-delivery-plan). Goal lifetime, provider
incarnation, execution/session generation and lease epoch remain distinct.
Freeze replacement continuity versus a new lifetime through the Goal owner,
then prove that old A cannot write, deliver, debit or settle same-alias B after
recovery. M4 orphan resolution keeps its preview/backup/journal/retry boundary;
M5 adds the real product/peer result and original-route return only after the
profile's M2/M3 fences pass. Component fixtures may precede activation but
cannot certify it. Ordinary supported creation/collaboration need not wait for
all service profiles; this checkpoint grants no activation or recovery authority.

## 2. Problem and motivation

Today one `goal_id` serves as both a display name and a durable identity. A
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,22 @@ Lease 和全局 registry 的角色都不会成为新的 Goal authority。本 RFC
自动清理所有外部 provider、自动选择 candidate,也不允许普通 bootstrap
直接修改孤儿状态。

### 合入后的恢复集成(2026-10-16)

[#6396](https://github.com/loopx-project/loopx/pull/6396) 已在 2.0 tree 退役普通 legacy
source writer,但不机械排除已安装旧二进制、global route 或 warm executor,也不
解除本 RFC 的 activation hold。继续 [#5206](https://github.com/loopx-project/loopx/issues/5206)
剩余 binding-owner 清单、commit fence 和外部 effect drain;复用已交付的 codec/
source-session/quota owner,不从头重做。

只将确实涉及的本地 profile 与完整恢复 M2/M3、[R5](loopx-overall-roadmap-v0.zh-CN.md#post-6396-delivery-plan)
协调。Goal 生命周期、provider incarnation、执行/session generation 和 lease epoch
仍是不同身份。由 Goal owner 冻结替代延续或新生命周期决定,再证明恢复后旧 A 不能
写入、投递、扣额或结算同名 B。M4 孤儿处置保留 preview/backup/journal/retry
边界;M5 只在本 profile 的 M2/M3 fence 通过后增加真实产品/peer 结果及原路返回。
组件 fixture 可先于 activation,但不能认证它。已支持的普通创建/协作不等待全部
服务 profile;本检查点不授予激活或恢复权限。

## 2. 问题与动机

当前 `goal_id` 同时承担展示名称和持久身份。Goal 可能已从项目 registry
Expand Down
Original file line number Diff line number Diff line change
@@ -1,31 +1,37 @@
# Local authority: retirement cadence after integration

- 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).
- Current implementation checkpoint: October 16, 2026, #6396 landed at `a4483aaec`; 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.

<a id="current-candidate-checkpoint"></a>

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

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.
Contributor-led [#6396](https://github.com/loopx-project/loopx/pull/6396) landed
at `a4483aaec`, with the same complete tree as final PR head `404433aee`.
The C1/T4 deletion package includes fork supplements, the native Core-version
repair and [absorbed #6366 obligations](../../../../reference/local-authority-provider-selection.md#retirement-proposal-reconciliation).
The compatible 1.4.2 release preceded it; the 2.0 cutoff is now on main, not a
released-default or complete-adoption claim.

| Boundary | Candidate fact | Remaining work / retained obligation |
| Boundary | Landed 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.
| Ordinary Markdown mutation and capture producers | Obsolete writers and ordinary producers are removed; canonical creation/mutation, team-plan, Monitor and lease callers reuse existing typed owners. | Qualify final-main installed callers; do not repeat this deletion family. Keep permanent document IO and supported import/recovery. |
| Ownership and historical recovery | Fresh execution/configuration accepts soft/hard; historical legacy codecs, exact release and original receipts remain. | Exercise affected installed Host/App paths, stale proofs, expired-but-unreleased leases and later-write preservation. Storage conversion is not lifetime adoption. |
| Final combination | The post-#7 source and its installed repair have explicit tree/source mappings; later main merges match automatic trees and include #6597. | [Executed evidence](https://github.com/loopx-project/loopx/pull/6396#issuecomment-6208115093) stays pinned to its revisions. Graph equivalence and merge status do not certify an unexecuted final combination. |
| Full backup and identity | M1 inert verification/readback exists; source/import history stays readable. | Existing complete-recovery M2/M3 and #5206 own capture consistency, lifetime/old-writer/effect drain and controlled adoption. Pending outboxes keep original receipt/cursor/disposition owners. |
| Sustained/default qualification | New-Goal SQLite/hard-lease selection exists in source. | D2 retains formal volume/elapsed failures and missing rows; D3 and shared-authority 7.2 decide cohort versus released default separately. No cohort or soak starts here. |

Use [R5's post-merge sequence](../../loopx-overall-roadmap-v0.md#post-6396-delivery-plan)
and the [TS current frontier](../../typescript-control-plane-migration-v0.md#current-delivery-frontier-2026-10-02)
for new work. The dated records below retain their original measurements and
dependency judgments. Statements that ordinary source writers are reachable
refer to their older baselines, not unfinished implementation on current main.
Retire further adapters only with actual last-caller/compatibility evidence;
historical recovery and provider/OS IO are not unused merely because writer
retirement landed.

## Historical reconciled baseline

Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,32 @@
# 合并后的本地权威退役节奏

- 当前候选 checkpoint:2026-10-15,#6396 `5d29213d3`;历史 1.x 计划:2026-10-07,`06b6caa07`;历史核对基线:`ce3862e33`;采用后续核对:`71525ab90`,2026-09-28;[English](2026-09-28-retirement-cadence.md)。
- 当前实现检查点:2026-10-16,#6396 已合入 `a4483aaec`;历史 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)
## 当前实现检查点(2026-10-16)

贡献者主导的 [#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 基线。
贡献者主导的 [#6396](https://github.com/loopx-project/loopx/pull/6396) 已合入 `a4483aaec`,
与最终 PR head `404433aee` 完整 tree 相同。C1/T4 删除包包含 fork 补缺、原生 Core
版本修复及 [#6366 已吸收义务](../../../../reference/local-authority-provider-selection.md#retirement-proposal-reconciliation)。
兼容 1.4.2 已先发布;2.0 截止已进入 main,不等于发布默认或完整采用资格完成。

| 边界 | 候选现状 | 剩余工作/保留义务 |
| 边界 | 已落地事实 | 剩余工作/保留义务 |
| --- | --- | --- |
| 普通 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 仍可达”
只描述当时基线,不能再次派生候选已经实现的工作。
| 普通 Markdown mutation 与 capture producer | 废弃 writer 和普通 producer 已删除;canonical 创建/写入、team-plan、Monitor 和 lease caller 复用既有 typed owner。 | 验证最终 main 的安装 caller,不重做该删除家族;保留永久文档 IO 及受支持导入/恢复。 |
| 所有权与历史恢复 | fresh 执行/配置接受 soft/hard,历史 legacy codec、精确 release 和原回执保留。 | 验证受影响安装 Host/App、旧 proof、过期未释放租约及后写保持;存储转换不等于生命周期接纳。 |
| 最终组合 | #7 后的源码及安装修复有明确 tree/source 对应;后续 main 合并等于自动 tree,并含 #6597。 | [已执行证据](https://github.com/loopx-project/loopx/pull/6396#issuecomment-6208115093) 保留原 revision;图等价和合入状态不认证未执行的最终组合。 |
| 完整备份与身份 | M1 隔离验证/读回已存在,源/导入历史仍可读。 | 既有完整恢复 M2/M3 与 #5206 负责捕获一致性、生命周期/旧 writer/effect drain 及受控接纳;pending outbox 保留原 receipt/cursor/处置 owner。 |
| 持续/默认资格 | 新 Goal 的 SQLite/hard-lease 源码选择已存在。 | D2 保留正式容量/经过时间失败和缺失项;D3 与 shared-authority 7.2 区分 cohort 和发布默认决定;本计划不启动 cohort/soak。 |

新工作沿 [R5 合入后顺序](../../loopx-overall-roadmap-v0.zh-CN.md#post-6396-delivery-plan)
和 [TS 当前边界](../../typescript-control-plane-migration-v0.zh-CN.md#当前交付边界2026-10-02)。
下方具名记录保留原测量与依赖判断;“普通源 writer 仍可达”描述其旧基线,不能当作
当前 main 尚未实现的工作。后续 adapter 删除须有真实最后 caller/兼容证据;
历史恢复、provider/OS IO 不因 writer 已退役而变成无用代码。

## 历史核对基线

Expand Down
Loading
Loading