Skip to content

Commit 4ffaa63

Browse files
committed
docs(rfcs): record typed topology scope and read-only semantic corrections
Signed-off-by: huangruiteng <huangrt01@163.com>
1 parent 2e3a4a7 commit 4ffaa63

6 files changed

Lines changed: 74 additions & 2 deletions

File tree

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2664,6 +2664,13 @@ The original direction remains; execution cards expand these stages rather than
26642664

26652665
#### Durability execution cards
26662666

2667+
The task graph's T3 topology consumer now shares the inventory/horizon relation
2668+
catalog and consumes one supplied status snapshot. Its missing/truncated metrics
2669+
describe read completeness, not canonical validity or promotion qualification.
2670+
File/SQLite reader replay with a missing Markdown display must remain read-only;
2671+
the graph never repairs display or changes authority. This retires duplicate
2672+
Python relationship/traversal knowledge without changing the D1–D3 gates below.
2673+
26672674
Capability-gap consumers now share the TS requirement/resolution owner across
26682675
legacy and canonical inputs, including quota's Monitor capability partition.
26692676
The old Python missing-set and owner/repair decision builders are removed;

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2111,6 +2111,12 @@ selector 见 TS RFC 的 T3 卡。真实 FileAuthorityStore CLI 测试覆盖展
21112111

21122112
#### 持久化执行卡
21132113

2114+
Task graph 的 T3 topology consumer 现共用 inventory/horizon 关系目录,消费
2115+
一次已提供的 status 快照。缺失/截断指标描述读取完整度,不代表 canonical
2116+
有效性或 promotion 资格。File/SQLite 在 Markdown 展示缺失时的 reader 回放
2117+
必须只读:图不修复展示,也不改变 authority。本批删除 Python 重复关系与
2118+
遍历知识,不改变以下 D1–D3 门禁。
2119+
21142120
命令清单、update/monitor 事务和 consumer 删除统一按
21152121
[TS 执行卡](typescript-control-plane-migration-v0.zh-CN.md#当前-stack-合入后的执行卡)
21162122
推进,不在这里复制第二套实现路线,也不把 read-policy PR 合并视为存储就绪。

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,18 @@ delivery. This does not finish all T2 commands or authorize whole-Goal promotion
508508

509509
**T3 — close remaining structured consumers, then remove their old reads.**
510510

511+
Task-graph topology now shares `work_items/planning_relations.ts` with inventory
512+
and horizon. One pure TS request owns relationship discovery, deterministic
513+
bounded traversal, edge deduplication and missing/truncated completeness; the
514+
Python predecessor indexes, condition parser and traversal are retired. Python
515+
retains status source adaptation and public-safe node/evidence/handoff rendering.
516+
This intentionally distinguishes successor lineage from completion dependencies,
517+
corrects unblocks direction, includes Monitor generation conditions and preserves
518+
parallel/diamond edges at the node cap. See the [graph contract](../../reference/protocols/task-graph-projection-v0.md#typed-todo-topology).
519+
It does not change lifecycle admission, claim/lease semantics or default provider.
520+
The status source can still be incomplete: this closes one T3 interpretation
521+
boundary, not all graph source delivery or the remaining T1–T4 work.
522+
511523
Capability resolution now shares `agents/capability_gate.ts`: missing prerequisites,
512524
repair outputs, owner/agent resolution and blocked-Todo bindings have one typed
513525
owner. Quota planning v1 passes normalized requirements, not Python-computed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,15 @@ promotion 已完成。
390390

391391
**T3 — 闭合剩余 structured consumer,删除各自旧读路径。**
392392

393+
Task graph topology 与 inventory/horizon 共用 `work_items/planning_relations.ts`。
394+
一轮纯 TS 请求拥有关系发现、稳定有界遍历、边去重与缺失/截断完整度;删除
395+
Python 的前驱索引、条件拆解和遍历。Python 保留 status 来源适配及节点、
396+
evidence/handoff 的脱敏展示。明确的语义修正:successor 谱系不再冒充完成
397+
依赖,unblocks 方向修正,补 Monitor generation 条件,上限处保留平行关系
398+
和菱形汇合边。详见[图协议](../../reference/protocols/task-graph-projection-v0.md#typed-todo-topology)。
399+
不改变生命周期准入、claim/lease 或默认 provider。来源仍可能不完整:本批
400+
闭合一个 T3 解释边界,不宣称所有图来源交付或 T1–T4 已完成。
401+
393402
Quota 的 scope/claim 消费者现通过每个 source 一次 `todo.quota_planning.project`,
394403
组合选择、有限展示与既有 resume planner。`quota_selection.ts` 替代 Python
395404
claim-visibility 模块及 Agent-scope 中独立的 User gate/action 过滤器。Python

‎docs/reference/protocols/task-graph-projection-v0.md‎

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,46 @@ compact blocker or validation writebacks:
131131
- `audits` says compact run-history evidence reviews, checks, or bounds a
132132
selected work lane.
133133
- `continues` says compact run-history evidence is a continuation of a selected
134-
work lane.
134+
work lane, or a Todo follows a predecessor through explicit successor lineage.
135+
136+
### Typed Todo topology
137+
138+
Planning inventory, horizon and task graph share the TS `planning_relations`
139+
catalog. The graph is a different **read lens**, not another lifecycle reducer:
140+
141+
| Persisted relation | Graph direction and label | Meaning |
142+
| --- | --- | --- |
143+
| A has successor B | B → A, `continues` | Lineage only; does not require A to complete |
144+
| A is superseded by B | B → A, `supersedes` | Lineage only; does not authorize a transition |
145+
| A unblocks B | B → A, `depends_on` | Typed lifecycle link, not the reverse dependency |
146+
| A resumes when B is done | A → B, `depends_on` | Completion condition; the resume evaluator owns readiness |
147+
| A resumes when Monitor M changes | A → M, `depends_on` | Generation-change condition, not Monitor completion |
148+
149+
These are intentional corrections to the old graph, which collapsed successor
150+
lineage into dependencies, reversed unblocks discovery, and omitted Monitor
151+
conditions. Parallel lineage and condition edges are retained. Opaque route,
152+
capability and unknown-condition suffixes must not be interpreted as Todo IDs
153+
by either graph or horizon. Existing read-only node kinds, status normalization,
154+
claim presentation and evidence/handoff renderers are unchanged.
155+
156+
The predecessor lens expands the selected Todo and completed predecessors;
157+
open predecessors are visible boundaries, not recursive traversal roots.
158+
It admits at most four predecessor nodes, in deterministic breadth-first and
159+
Todo-ID order. Cycles do not duplicate nodes. Reaching the node cap must not
160+
discard another edge between already admitted nodes (including diamond joins).
161+
162+
`limits.missing_predecessor_count` counts unique referenced predecessors absent
163+
from the supplied renderable snapshot. `source_truncated` records upstream
164+
omission; `predecessor_truncated` records display-limit omission. The additive
165+
`topology_complete` flag is true only if none of those conditions applies,
166+
**within this expansion policy**, not for the entire Goal graph. No missing
167+
target creates a phantom node, a provider read, a repair write, or an execution
168+
permission. No extra complete-state read is introduced: status supplies its
169+
existing source, and an incomplete summary stays explicitly incomplete.
170+
171+
中文:谱系不等于依赖;Monitor 的 generation 条件不等于完成 Monitor。
172+
节点上限不应吞掉已展示节点间的边。完整度只针对上述有界展开策略,不能
173+
把缺失、上游裁剪或展示裁剪说成完整 Goal 图;图始终没有写入或准入权限。
135174

136175
These relations may help a dashboard or reviewer explain why a work item is
137176
still active, stale, repaired, or safe to hand off. They must not create a graph

‎loopx/control_plane/work_items/planning_relations.ts‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,3 @@ export interface PlanningRelationSource {
9595
route_id?: string;
9696
route_key?: string;
9797
}
98-

0 commit comments

Comments
 (0)