Review design docs and freeze cockpit contract decisions
Why: user approved the four design documents and authorized implementation (/goal); the plan's section-7 tradeoffs gate the I1 public DTO and had to be frozen before any implementation unit starts. A read-only audit of the RDM backend (Agent-System-RDM main 5df66106) supplied the source facts. Evidence: audit findings recorded in rollout section 7 (tree is doc->section only, no confidence field, no persisted conflict entity, per-project event seq complete); review fixes folded into the read-model contract (statReasons, structuralGap, AssertionSummary); precheck receipt READY imported via task-resume. Impact: unlocks I1 implementation in the RDM repo; design deliverable ready for PR/CI/merge; no business code, pins, database or deployment touched. Refs: .task/feature-document-visualization-plan.md
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -95,18 +95,18 @@
|
||||
|
||||
每个增量在实现前需有独立任务卡、当前基线和明确文件范围;实现单元按仓库 `AGENT-EXECUTION.md` 路由,主模型负责集成和验证。请求审核、合入和完成声明前分别执行 `make task-sync`,命令输出通过 `make evidence` 写入任务卡。作者本地测试只能标 `SELF`;精确 HEAD 的 CI 标 `GATE`,独立复跑标 `REPLAY`。
|
||||
|
||||
## 7. 未决决策
|
||||
## 7. 契约决策(已冻结 2026-10-16)
|
||||
|
||||
以下问题会改变公开契约或用户结果,在实现前需要用户/项目 owner 选择:
|
||||
用户于 2026-10-16 评审四份文档并授权进入实施(`/goal 按照方案开始实施`),本节四项取舍由本轮评审冻结。依据为实施前对 RDM 后端(独立仓 `Agent-System-RDM`,main `5df66106`)的只读源审计;后续领域数据演进时按契约 §9 版本规则扩展,不在本版内回改。
|
||||
|
||||
1. 文档完成度的分母:只统计已有叶节点,还是把模板要求的缺失章节也纳入分母。
|
||||
2. 来源置信度是否沿用现有枚举,还是由本次读模型固定为 `high/medium/low/unknown`。
|
||||
3. 冲突计算的首期范围:字段级断言,还是先只显示领域已登记的冲突关系。
|
||||
4. 全景首屏是否允许直接显示段落摘要,还是只显示章节概览以降低敏感内容暴露。
|
||||
1. **完成度分母只统计已存在的文档/章节节点。** 现状:文档树叶节点即章节 Section(`internal/domain/doctree.go:40-51`),`Section.Require` 标记必选章节,但“模板要求而未实例化的章节”缺少已核实的权威数据源;纳入分母会引入猜测值,触碰“不得生成猜测值”停止条件。树内结构性缺失继续由 `missingChildCount` 与 `structuralGap` 承载;模板级完成度留待后续增量,且须先核对 `Doc.Template` 的实例化语义。
|
||||
2. **置信度由读模型固定为 `high/medium/low/unknown`,适配器不猜测。** 现状:领域仅有来源溯源枚举 `human|rule|model`(`internal/domain/eventlog.go:53-60`),无 confidence 数值;核验语义仅存在于法规双通道 `RegSource.Verified()`(`internal/domain/regcheck.go:13-27`)。v1 适配规则:只有可复核证据(如法规来源已核验)才产出 `high`,其余一律 `unknown`;禁止把溯源枚举直译为置信等级。
|
||||
3. **首期冲突只投影领域现有检测视图,不做字段级断言。** 现状:无持久化冲突实体;冲突是 `fc.Detector` 对切片对的运行时碰撞检测(`internal/domain/fc/collide.go:27-53`),裁决落为 `supersedes` 追溯边并关闭成对 pending 项(`collide.go:125-145`)。v1 映射:pending 碰撞 → `open`;存在 supersedes 裁决 → `resolved`/`superseded`(按实际边语义);`acknowledged` 首期不产生。字段级断言冲突须等领域先有字段级断言登记,属后续领域增量。
|
||||
4. **全景首屏只显示章节概览与统计,不显示段落摘要。** 现状:文档树只有 doc→section 两级,无段落层(`internal/domain/domain.go:23-35`);且首屏共享面上的正文摘要在无逐字段披露检查时会扩大敏感内容暴露。段落/正文摘要在选中节点与阅读器内按权限展示。
|
||||
|
||||
在这些决策未冻结前,不启动 I1 的公开 DTO 实现;可以继续做只读源审计和示例数据映射,但不得把示例当作运行能力。
|
||||
I1 的公开 DTO 实现自本节冻结起解锁;实施落点为 RDM 后端仓(聚合读取服务与命令),Dev 仓只承载文档、组合 pin 与后续前端集成。
|
||||
|
||||
## 8. 当前状态与下一步
|
||||
|
||||
本计划已形成可评审的设计交付,所有 I1–I4、测试、CI、部署和业务验收均为 `NOT_RUN`。下一步是先评审四份文档并冻结第 7 节取舍;批准后再把 I1 拆成实际实施单元和独立任务卡。
|
||||
四份文档已于 2026-10-16 评审通过,§7 四项决策冻结,实施授权已由用户给出(`/goal 按照方案开始实施`)。I1–I4、测试、CI、部署和业务验收仍为 `NOT_RUN`。下一步:合入本设计 PR 后,在 RDM 后端仓为 I1(聚合读取服务与 DTO)建立实施任务并按 AGENT-EXECUTION.md 拆分派发;I1 适配目标为 `rdm.inspect.*` 既有事实与 §7 冻结的映射规则。
|
||||
|
||||
|
||||
@@ -58,6 +58,9 @@ interface CockpitOverview {
|
||||
conflictCount: number | null
|
||||
pendingChangeCount: number | null
|
||||
updatedAt?: string
|
||||
// 任一统计为 null 时,必须在本表给出该字段名的 unavailableReason
|
||||
// (如 forbidden_source / projection_lag / upstream_error),见 §6。
|
||||
statReasons: Record<string, string>
|
||||
}
|
||||
documents: TreeNode[]
|
||||
recentChanges: ChangeSummary[]
|
||||
@@ -84,6 +87,9 @@ interface TreeNode {
|
||||
conflictCount: number
|
||||
impactCount: number
|
||||
missingChildCount: number
|
||||
// 现有层级不足以表达契约层级时为 true(v1:文档树只有 document -> section,
|
||||
// 章节即叶节点;subsection/paragraph 枚举值保留给后续层级扩展)。
|
||||
structuralGap: boolean
|
||||
}
|
||||
lastChangedAt?: string
|
||||
lastChangedBy?: ActorSummary
|
||||
@@ -154,6 +160,14 @@ interface ChangeSummary {
|
||||
version?: string
|
||||
}
|
||||
|
||||
interface AssertionSummary {
|
||||
node: NodeRef
|
||||
claim: string
|
||||
sourceRef?: { kind: SourceKind; id: string }
|
||||
visibility: 'full' | 'redacted' | 'metadata_only'
|
||||
redactedReason?: 'private' | 'forbidden' | 'expired' | 'not_loaded'
|
||||
}
|
||||
|
||||
interface ConflictSummary {
|
||||
id: string
|
||||
node: NodeRef
|
||||
@@ -166,6 +180,8 @@ interface ConflictSummary {
|
||||
}
|
||||
```
|
||||
|
||||
v1 冲突投影(冻结于实施计划 §7.3):领域无持久化冲突实体,适配器只转换现有碰撞检测视图与 `supersedes` 裁决边;`acknowledged` 首期不产生,一侧受限时对应 `AssertionSummary` 降为 `redacted` 并给出 `redactedReason`。
|
||||
|
||||
历史查询和导出只能使用已提交批次结束序号。读服务不得把正在写入的中间事件投影为“最近变化”。
|
||||
|
||||
## 6. 筛选、排序和缓存
|
||||
|
||||
Reference in New Issue
Block a user