Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed29cb5200 | ||
|
|
e9d57ea772 | ||
|
|
241bfccc1e | ||
|
|
f2a7fa94d2 | ||
|
|
ea3eeadb77 |
@@ -1,6 +1,25 @@
|
||||
---
|
||||
description: 任务分级、授权、文档与收口入口
|
||||
description: 强制 Agent 文档同步与 ops 协作纪律;详情见 AGENTS.md
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
遵循 [AGENTS](../../AGENTS.md) 的启动、任务分级与收口规则。写入文档前读 [文档地图](../../.doc/README.md);创建、集成、环境操作、清理前读 [操作规范](../../.doc/ops/2026-09-21-agent-worktree-workflow.md)。
|
||||
# Agent 文档同步(强制)
|
||||
|
||||
完整规范见 [AGENTS.md](../../AGENTS.md) 与 [PROJECT.md](../../PROJECT.md)。
|
||||
|
||||
## 开场必读
|
||||
|
||||
1. `AGENTS.md` → `PROJECT.md` → `.doc/README.md` → `.doc/ops/CURRENT.md` → `FEATURE-MATRIX` → short-term / handoff
|
||||
|
||||
## 红线
|
||||
|
||||
- 任务开始前:short-term/long-term + CURRENT 并行认领(mutex)
|
||||
- 合 dev + 容器测:占用 CURRENT 集成槽位;他人 queue 等待
|
||||
- 多 Agent 并行:worktree(`.worktrees/`);禁止 worktree 内 env-service start
|
||||
- 禁止只改代码;done 任务 → `archive/ops/`
|
||||
- 验收报告 → `.doc/test-reports/`;运行产物 → `test-reports/assets/`
|
||||
- 禁止在 `.doc/` 根或 `docs/` 随意新建文档
|
||||
|
||||
## 状态
|
||||
|
||||
`planned | in_progress | blocked | done | cancelled`
|
||||
|
||||
@@ -1,6 +1,24 @@
|
||||
---
|
||||
description: 凭证与推送授权入口
|
||||
description: Git push 凭证自主读取;禁止向用户索要 token;详情见 AGENTS.md §8
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
遵循 [AGENTS 安全与证据](../../AGENTS.md#5-安全与证据);授权推送的凭证和脚本入口见 [PROJECT](../../PROJECT.md#凭证与推送)。
|
||||
# Git Secrets 自主(禁止索要)
|
||||
|
||||
完整规范见 [AGENTS.md](../../AGENTS.md) §8 与 [PROJECT.md](../../PROJECT.md) §7。
|
||||
|
||||
## 本仓约定
|
||||
|
||||
- 凭证:`${HOME}/.secrets/gitea`
|
||||
- 字段:`- ACCESS_TOKEN=`、`- URL_PREFIX=`
|
||||
- 推送:优先 `./scripts/git-push-dev.sh <branch>`
|
||||
|
||||
## 禁止
|
||||
|
||||
- 向用户索要或要求粘贴 token
|
||||
- 在聊天/文档/commit 中展示 secret
|
||||
- 写入 git config 或提交到仓库
|
||||
|
||||
## 缺失时
|
||||
|
||||
在 `.doc/ops` 记 blocker(路径 + 缺字段),提示用户本机补齐后重试;**仍不索要内容**。
|
||||
|
||||
@@ -1,6 +1,60 @@
|
||||
---
|
||||
description: 分支、原子提交与环境操作入口
|
||||
description: 项目固定3分支模型(dev/test/main)、逐步渐进式提交规范与三套独立服务(知识库共享+对话与DB隔离)准则
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
分支/原子提交边界见 [AGENTS](../../AGENTS.md),环境拓扑见 [PROJECT](../../PROJECT.md)。创建、集成、环境写操作及清理按 [操作规范](../../.doc/ops/2026-09-21-agent-worktree-workflow.md) 执行。
|
||||
# Git 三分支流转与三套服务环境架构准则
|
||||
|
||||
本仓库严格遵循以下固定分支体系、提交拆分规范与多套独立服务运行准则:
|
||||
|
||||
## 一、 Git 固定三分支体系
|
||||
|
||||
1. **开发分支 (`dev`)**:
|
||||
- **合入基线**,不是日常 commit 目标。
|
||||
- **禁止**在 `dev` 上直接开发提交(含 docs/chore)。
|
||||
- 一律从最新 `dev` 检出 `feature/<name>` 或 `fix/<name>`,在 feature 分支上渐进式提交;自测后占集成槽位,`--no-ff` 合回 `dev`,并删除临时子分支(见 [AGENTS.md](../../AGENTS.md) §6.2)。
|
||||
|
||||
2. **测试分支 (`test`)**:
|
||||
- 当 `dev` 积累了一定的功能阶段后,合并至 `test` 分支,创建阶段候选节点 Tag(如 `rc-vX.Y.Z-beta.1`)。
|
||||
- 用于较长时间的真实环境部署、全链路集成测试、运维稳定性检验。
|
||||
- **严禁**在 `test` 分支进行开发或直接 commit。
|
||||
|
||||
3. **主分支 (`main`)**:
|
||||
- 生产发布分支(Release)。
|
||||
- **严禁**直接在 `main` 上开发或 commit!
|
||||
- 只有 `test` 分支的代码经过实际运维和测试充分验证达到发布标准后,方可将对应验证节点合并回 `main` 分支,并打正式发布 Tag(如 `v1.0.0`)。
|
||||
|
||||
---
|
||||
|
||||
## 二、 任务拆分与渐进式提交规范 (Progressive Commits)
|
||||
|
||||
- **原子性拆分**:严禁把整个任务的大量改动揉合成一次庞大的提交。
|
||||
- **阶段逐步提交**:一个任务必须按功能逻辑分层逐步提交:
|
||||
1. `feat(db)` / `refactor(db)`: 数据表、模型、迁移脚本
|
||||
2. `feat(agent)` / `feat(service)`: 业务逻辑、智能体执行流程
|
||||
3. `feat(api)`: 接口路由与交互
|
||||
4. `test(...)`: 单元测试与集成测试用例
|
||||
5. `docs(...)` / `chore(...)`: 配置、运维脚本与文档同步
|
||||
- **提交规范**:遵循 Conventional Commits (`feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `ci`)。
|
||||
|
||||
---
|
||||
|
||||
## 三、 三套环境独立运行准则 (知识库共享 + 对话与DB隔离)
|
||||
|
||||
三套独立服务对应三个分支的运行态:
|
||||
|
||||
| 环境 | 分支 | Compose 项目 | HTTP 端口 | DB 端口 | 数据/对话路径 |
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| **共享知识库** | 跨环境 | `agent-infra` | - | `5432` | `data/shared/kb` |
|
||||
| **开发环境** | `dev` | `agent-dev` | `8080` | `5433` | `data/dev` |
|
||||
| **测试环境** | `test` | `agent-test` | `8081` | `5434` | `data/test` |
|
||||
| **生产环境** | `main` | `agent-main` | `8000` | `5435` | `data/main` |
|
||||
|
||||
### 核心约束:
|
||||
1. **知识库共享**:
|
||||
- 三套环境服务均通过共享网络或内网连接同一个知识库数据库(`shuimu-kb-shared:5432`)。
|
||||
- 知识库法规、向量索引保持全局一致。
|
||||
2. **对话数据与数据库隔离(红线)**:
|
||||
- 各环境对话记录(Chat History)、Agent 思考工作区、审计事件及 SQLite/Postgres 业务库必须严格隔离!
|
||||
- 严禁任何环境读取或写入其他环境的对话数据与业务库。
|
||||
- 宿主机挂载目录严格区分:`data/dev/`、`data/test/`、`data/main/`。
|
||||
|
||||
@@ -1,6 +1,65 @@
|
||||
---
|
||||
description: 按变更范围选择测试及真实证据要求
|
||||
description: 规定项目中所有自动化测试、功能测试、集成测试报告的存放路径与结构标准规范
|
||||
globs: ["**/*test*.go", ".doc/test-reports/**/*.md"]
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
测试范围、精确产品 PI 入口、环境模型证据和报告格式统一见 [验证契约](../../.doc/ops/2026-09-21-validation-contract.md)。按实际变更选择适用行;报告大小不扩大测试范围。
|
||||
# 测试报告规范准则 (Test Reports Standard)
|
||||
|
||||
本仓库严格遵循标准化、可追溯的质量测试管理体系。所有测试报告必须归档于指定的文档目录下,并遵循固定结构。
|
||||
|
||||
## 一、 测试报告归档路径规范
|
||||
|
||||
- **统一目录**:所有测试报告必须统一存放于 `.doc/test-reports/` 目录下。
|
||||
- **命名规范**:遵循 `YYYY-MM-DD-<模块/功能/版本>-test-report.md` 命名格式。
|
||||
- 例如:`.doc/test-reports/2026-09-07-three-branch-intent-framework-test-report.md`
|
||||
- **证据附件**:运行产物(json/jsonl、workspace 快照、截图)放 `.doc/test-reports/assets/<report-slug>/`,**不得**与 `*-test-report.md` 混放在同一层级目录。
|
||||
|
||||
---
|
||||
|
||||
## 二、 测试报告固定结构模板
|
||||
|
||||
每份测试报告必须包含以下核心板块:
|
||||
|
||||
```markdown
|
||||
# [功能/模块名称] 测试报告
|
||||
|
||||
## 一、 测试背景 (Background)
|
||||
- 简述被测功能/特性的产生背景、业务痛点或上一轮测试中发现的缺陷与瓶颈。
|
||||
|
||||
## 二、 测试目标 (Test Objectives)
|
||||
- 列举本次测试需要验证的核心功能点、质量指标(如通过率 100%、无流程卡点、非阻塞人机协同等)。
|
||||
|
||||
## 三、 测试方案与环境 (Test Plan & Environment)
|
||||
- 测试环境(OS、Go 版本、后端 Stub/Real 模型);
|
||||
- 测试层级分层(单元测试、协同集成测试、CLI 真实交互测试);
|
||||
- 核心测试用例矩阵设计。
|
||||
|
||||
## 四、 预期结果 (Expected Results)
|
||||
- 明确给出各用例输入下的理论判定分支、目标意图、提取槽位、参谋回复风格与状态机流转。
|
||||
|
||||
## 五、 实际测试结果与判定 (Actual Results & Evaluation)
|
||||
- 必须包含针对每一个典型测试用例的真实记录:
|
||||
- **测试输入 (Input)**
|
||||
- **实际输出 (Actual Output)**:贴出真实的终端/日志输出文本
|
||||
- **评价判定 (Evaluation / Verdict)**:PASS / FAIL 标志及判定依据
|
||||
- **性能与耗时 (Duration & Latency)**
|
||||
|
||||
## 六、 自动化测试套件汇总 (Test Suite Execution)
|
||||
- 附带 `go test -v ./...` 全量回归测试输出与通过率统计。
|
||||
|
||||
## 七、 测试结论与后续优化建议 (Conclusion & Next Steps)
|
||||
- 总结测试是否达到上线/合并标准,提出后续演进或强化点。
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、 执行要求与真实 Agent 交付铁律
|
||||
|
||||
1. **真实 Agent 交付铁律(红线)**:
|
||||
- **开发实现阶段**:可以快速使用 `stub` 验证状态机、协议分流、数据落盘与逻辑契约,加速反馈;
|
||||
- **交付前验收与测试报告生成**:**必须切回真实环境与真实 Agent(`pi-agent` + 实际运行的 `MiniMax-M2.7-highspeed` 容器)进行全链路端到端实测**;
|
||||
- **严禁**使用 stub 的测试输出作为最终交付报告的验收数据。
|
||||
2. **严禁散落存放**:测试报告统一归档至 `.doc/test-reports/` 目录下,禁止散落在根目录或临时沙箱中。
|
||||
3. **真实控制台取样**:测试报告中的输入、输出、耗时与判定必须取自实际环境运行的真实控制台输出与日志。
|
||||
4. **Git 规范管理**:测试报告伴随对应阶段的 `docs(test)` 或 `test(...)` 规范提交入库。
|
||||
|
||||
@@ -33,10 +33,6 @@
|
||||
|
||||
| 我要… | 读这里 |
|
||||
|--------|--------|
|
||||
| 规则来源/生效版本 | [规范登记](ops/2026-09-21-policy-registry.md) |
|
||||
| 选择测试/报告范围 | [验证契约](ops/2026-09-21-validation-contract.md) |
|
||||
| 任务模板与会话收口 | [任务模板](ops/templates/short-term-task.md) · [收口清单](ops/templates/session-close-checklist.md) |
|
||||
| 创建任务、集成、部署、清理 | [worktree 工作规范](ops/2026-09-21-agent-worktree-workflow.md) |
|
||||
| 当前在做什么 | [ops/CURRENT.md](ops/CURRENT.md) |
|
||||
| 模块完成度 | [status/FEATURE-MATRIX.md](status/FEATURE-MATRIX.md) |
|
||||
| 发布 blocker | [remediation/gap-matrix.md](remediation/gap-matrix.md) |
|
||||
@@ -46,7 +42,6 @@
|
||||
| 架构设计 | [system-design/README.md](system-design/README.md) |
|
||||
| 测试报告 | [test-reports/](test-reports/) |
|
||||
| 历史功能设计 | [archive/design/superpowers/](archive/design/superpowers/) |
|
||||
| Herdr 角色、审批与备援 | [ops/2026-09-13-herdr-agent-roster.md](ops/2026-09-13-herdr-agent-roster.md) |
|
||||
|
||||
---
|
||||
|
||||
@@ -61,13 +56,9 @@
|
||||
|
||||
## 文档生命周期
|
||||
|
||||
按 [AGENTS 任务分级](../AGENTS.md#2-任务分级与授权) 选择最小产物。下图是可选信息流,不要求每任务创建所有文件;小任务/有价值的只读审查可由一个主文档承载范围、结论、验证与交接。主文档先明确 task_id、owner、授权来源、状态和证据;跨阶段信息确需独立时才拆分并回链。
|
||||
|
||||
```text
|
||||
audit(问题)→ remediation(方案)→ ops/short-term(任务)
|
||||
→ test-reports(验收)→ archive(关闭证据)
|
||||
```
|
||||
|
||||
状态字段:`planned | in_progress | blocked | done | cancelled`
|
||||
|
||||
会话结束不等于任务完成;只有 done/cancelled 任务归档。CURRENT 保留最多 3 项焦点及活跃/阻塞/待集成/待清理事项,完成认领和长证据迁入 [历史快照](archive/ops/2026-09-21-current-history.md)。移动文档同步修复相对链接,保留证据与来源。规范生命周期另用 proposed/approved/active/deprecated;工具能力另用 manual/enforced。
|
||||
|
||||
@@ -1,62 +1,29 @@
|
||||
# ADR:以纵向绞杀方式实施模块化单体解耦
|
||||
# ADR:模块化单体解耦——契约通信、单一写者、编排下沉
|
||||
|
||||
## 状态
|
||||
|
||||
已接受(2026-09-14 提议;2026-09-18 确认——Phase 1 纵向绞杀与 Phase 2 持久事件交付已落地并验收,见 gap-matrix `DOC-RELIABILITY-PILOT` PASS、[Phase 1 计划](../remediation/2026-09-14-module-decoupling-refactor-plan.md)、[Phase 2 修订计划](../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md)、[Track E 复盘](../ops/research/2026-09-15-track-e-retrospective.md))
|
||||
已接受(2026-09-14;Wave 0 契约骨架与 arch-check warn 基线已落地,未占集成槽)
|
||||
|
||||
## 背景
|
||||
|
||||
`internal/server`、`internal/bizdev`、共享 `UserProjectContext`、工作区路径和多表写入形成隐式耦合。
|
||||
历史受控正文 404/409、刷新后投影缺失和任务终态不完整说明,单纯搬包不会修复事实源、事务与恢复边界。
|
||||
多轮审计与实测表明:一处修改波及多处的根因不是模块数量不足,而是——
|
||||
`internal/server`(17k 行)同时是组合根、跨模块闭包事件总线、编排载体与文件系统/SSE 细节持有者;`internal/bizdev` 是第二组合根(依赖 16 个内部包);`UserProjectContext` 被 chat/coordinator 双向直改;`document_records` 有 5 个写者;工作区路径与 squad 文件 schema 是无版本化的隐性公共契约;`intent→bizdev` 反向依赖。
|
||||
证据与完整诊断见 [../system-design/2026-09-14-module-decoupling-architecture.md](../system-design/2026-09-14-module-decoupling-architecture.md) §1。
|
||||
|
||||
## 决策
|
||||
|
||||
1. **保持模块化单体**:不拆微服务;进程内调用使用窄端口,跨进程可靠性只用于持久事件和 FAV。
|
||||
2. **纵向绞杀**:先在现有包边界插入端口和适配器,迁完一条业务链并验证后再移动或重命名包;禁止“先全量搬包、以后再接口化”。
|
||||
3. **契约分层**:外部 API DTO 归 `server/api`;持久 schema、公共事件和稳定共享词汇进入按领域划分的 contracts;一对一内部接口由消费者拥有。
|
||||
4. **命令与事务同属一个应用用例**:一个业务命令只有一个事务 owner;跨表属主通过同一不透明事务作用域协作,业务状态、账本、当前指针、staging 和 outbox 原子提交。
|
||||
5. **单一写者不等于单独事务**:表属主控制 SQL 和不变量;应用 UnitOfWork 控制跨属主提交边界。属主端口不得私自嵌套提交。
|
||||
6. **并发正确性以数据库为准**:用户编辑使用乐观版本/ETag;状态转换使用行锁和条件更新;项目级不变量可使用事务级 advisory lock;进程内 mutex 只能优化,不能作为多副本正确性依据。
|
||||
7. **锁顺序固定**:同一事务按 project/workflow instance → document record → document version/snapshot → task run → outbox/staging 的顺序取锁;事务内禁止 LLM、对象存储、网络调用和长文件 I/O。
|
||||
8. **可靠事件采用 transactional outbox**:事件按至少一次投递设计,具有稳定 ID、schema version、环境/项目范围、聚合序号、因果链和幂等键;逐消费者记录 delivery、重试、租约和死信。
|
||||
9. **工作区是可清理投影**:跨模块只传不可伪造 Workspace ID 和受限 artifact key;物理路径只在 workspace/squadrun 适配器内解析和校验。
|
||||
10. **最终成果进入 FAV**:PostgreSQL 保存业务关系和授权,FAV 只保存已确认终态的精确 payload、manifest、回执和删除状态,workspace 不承担最终成果事实源。
|
||||
11. **授权逐动作校验**:认证适配器构造不可由请求覆盖的 Principal;HTTP、CLI、后台订阅者和恢复流程都按 action/resource/current state fail closed。
|
||||
12. **先完成文档可靠性试点**:只有受控正文刷新、重启、并发提交、投影缺失降级和授权负例通过后,才批准 chat、squad、编排层和传输层扩展。
|
||||
13. **迁移采用 expand/migrate/contract**:允许新增 Goose migration;不得修改已发布迁移;回滚只保证回到最近的兼容阶段,不能任意独立 revert 早期依赖。
|
||||
14. **协议改造独立立项**:统一错误信封和 PI Runner `result.json` 不作为核心模块解耦前置条件;它们使用独立兼容与 E2E 验收。
|
||||
|
||||
## 并发与失败语义
|
||||
|
||||
- 普通聚合状态转换默认 `READ COMMITTED` + 明确行锁/条件更新;涉及跨聚合唯一不变量时才使用 Serializable,并对 `40001`/`40P01` 重跑完整事务。
|
||||
- outbox worker 使用小批次 `FOR UPDATE SKIP LOCKED` 认领,处理发生在事务外;完成、续租和失败回填使用 fencing token 防止过期 worker 覆盖新 owner。
|
||||
- 每个写命令必须同时有 idempotency key、expected version 或两者;相同 key 不同 payload 返回 typed conflict。
|
||||
- 锁等待、事务时长、重试次数、队列积压和死信必须可观测;超过预算时失败返回,不无限等待。
|
||||
|
||||
## 授权与恢复语义
|
||||
|
||||
- Principal 至少携带 actor、环境、认证来源和请求关联 ID;项目、会话、文档、阶段与 duty 从数据库权威关系重新解析。
|
||||
- 持久事件中的 actor 只用于审计,不能替代订阅者对当前资源状态的授权检查。
|
||||
- FAV 降级读取要求运行库授权图完整;授权图缺失时禁止面向用户返回内容。
|
||||
- 恢复只允许进入 scratch identity;promotion 需要系统管理员与数据责任人确认,并通过各属主端口提交,禁止恢复 CLI 直写运行表。
|
||||
1. **架构形态**:维持模块化单体(不做微服务拆分),新增 `internal/contracts` 作为跨模块接口/DTO/事件/共享枚举的唯一 SSOT;模块间仅允许「调 contracts 接口」与「发布/订阅 contracts 事件」两种通信。
|
||||
2. **单一写者**:每张表、每类文件唯一属主(docgov 独占 `document_records`;chatlog 独占 chat_* 表;workspace 独占工作区路径);跨模块写走属主端口方法。
|
||||
3. **编排下沉**:跨模块流程收敛到应用编排层(chatflow/stageflow/docflow,拆自 bizdev/coordinator/chat);HTTP handler 只做参数→服务→DTO 三行式。
|
||||
4. **组合根唯一**:wiring 迁 `internal/app`;`server.NewServer` 只剩 HTTP 装配;SSE 帧协议下沉 `internal/stream/transport`。
|
||||
5. **squadrun 契约**:系统备好工作区与 `InputBundle`,小队按 `OutputContract` 交货并写 `RunManifest`(SchemaVer=1);外部禁止直读/覆写工作区内部文件。
|
||||
6. **机器门禁**:`scripts/arch-check.sh` + `module-boundaries.yaml`(import allowlist / 表属主 / 路径字面量属主),warn 两周后 block 进 CI 与集成槽位冒烟。
|
||||
7. **兼容承诺**:HTTP URL 与响应结构在 Wave 1–5 不变;**零表结构迁移**;旧路径设一版兼容期后删除。
|
||||
8. **实施顺序**:Wave 0 立规矩 → 1 止血 → 2 读路径 API 化 → 3 小队契约化 → 4 单写者 → 5 编排事件化(可拆 5a/5b)→ 6 传输收口;每 Wave 独立分支、独立回滚,遵守 AGENTS.md §6 mutex/槽位纪律,避开在途认领。
|
||||
|
||||
## 后果
|
||||
|
||||
- 首个实现里程碑的改动面小于原 Wave 1–6,但会先增加 UnitOfWork、事件投递和授权基础设施。
|
||||
- “单表唯一写者”检查改为生产 SQL 写权限检查,并允许 migration、测试和经批准运维脚本存在表名。
|
||||
- `feature/final-artifact-vault` 是候选依赖,不直接假定可合入;必须先按当前 dev 重放测试、迁移和权限审计。
|
||||
- 包物理移动、错误信封、SSE 和 PI Runner 协议可延后,不阻塞文档一致性整改。
|
||||
|
||||
## 替代方案
|
||||
|
||||
- **一次性横向搬包**:拒绝。冲突面大,不能先证明用户故障减少。
|
||||
- **仅增加 arch-check**:拒绝。门禁不能替代事务、锁和授权契约。
|
||||
- **拆微服务**:拒绝。当前问题是模块边界和数据一致性,不需要引入分布式事务与跨服务部署成本。
|
||||
- **继续把 workspace 作为恢复来源**:拒绝。工作区属于可清理计算现场,不能成为最终事实源。
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [模块解耦架构](../system-design/2026-09-14-module-decoupling-architecture.md)
|
||||
- [模块解耦整改与重构计划](../remediation/2026-09-14-module-decoupling-refactor-plan.md)
|
||||
- [方案复核](../audit/2026-09-14-module-decoupling-plan-review.md)
|
||||
- [文档版本边界 ADR](./2026-09-13-document-version-boundary.md)
|
||||
- 新增包:contracts / app / chatlog / contextasm / docquery / squadrun(squad 换壳);
|
||||
- `internal/bizdev` 与 `internal/ctxmgr` 将被拆解退役(知识迁移到 use case 与两个子包);
|
||||
- 所有后续新能力(含软件项目自举)必须基于新边界实现,禁止再挂 bizdev 门面;
|
||||
- 任何契约(contracts 中已发布的 DTO/事件/文件 schema)变更须走 ADR。
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
---
|
||||
title: "事件连续性采用 consumer checkpoint + 首事件 bootstrap"
|
||||
status: accepted
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
---
|
||||
|
||||
# ADR:事件连续性采用 consumer checkpoint + 首事件 bootstrap
|
||||
|
||||
## 状态
|
||||
|
||||
接受(E0A)。在独立 FAV 审计或明确的无缺口 event sequence 迁移完成前不得改为 gap blocking。
|
||||
|
||||
## 背景
|
||||
|
||||
`event_envelopes` 已有 `UNIQUE (aggregate_type, aggregate_id, aggregate_version)`。受控文档的首次持久事件常常从较高 `aggregate_version`(账本 version_no)开始,中间版本从未发事件。若把领域版本号当成无缺口事件序号并在缺号时等待,会永久阻塞 delivery。MemoryBus 的 `TestGapDoesNotSkipVersion` 只是 characterization,不得搬到 PostgreSQL dispatcher。
|
||||
|
||||
## 决策
|
||||
|
||||
1. Track E 选择 **consumer checkpoint + 首事件 bootstrap**。
|
||||
2. 每个 `(consumer, aggregate_type, aggregate_id)` 记录已成功处理的 `event_id` 与可选 `aggregate_version`。该 aggregate 上的第一件 **safe** 事件即为 bootstrap,不要求 version=1。
|
||||
3. 同一版本多个不同类型事件:当前唯一约束禁止。E0A 审计后保持该约束;需要同版本多事件时另立 additive 迁移,把序号改到独立 `event_seq`,不在本 ADR 启用。
|
||||
4. **禁止** 在 dispatcher 启用 gap wait / `ErrGapWait` 阻塞,直到另有 ADR 选择独立无缺口 event sequence 且完成回填。
|
||||
5. 未知 schema、project 0、错误 environment、未知 consumer 的记录进入 inventory,不得 live claim。
|
||||
|
||||
## 后果
|
||||
|
||||
- E0B checkpoint 表随 dispatcher migration 增加。
|
||||
- Projection 以 `document_id + source_snapshot_id + digest` no-replace,不依赖连续 version。
|
||||
- poison 事件 quarantine 后不静默跳号;其他 aggregate 继续。
|
||||
@@ -1,85 +0,0 @@
|
||||
# ADR:纯软件工作流 key 与领域边界(SWBOOT-00)
|
||||
|
||||
## 状态
|
||||
|
||||
已接受(2026-09-16)
|
||||
|
||||
## 背景
|
||||
|
||||
工作流引擎已声明 `non_medical_software` 产品域,但正式目录、创建入口与模板仍以医疗器械三工作流(`main` / `product_manager` / `test_manager`)为硬编码白名单。继续复用医疗 manifest 会造成临床/注册/CDO 语义污染;直接改写既有三 key 会破坏已激活医疗实例。
|
||||
|
||||
详细设计见 [software-project-bootstrap-workflow](../system-design/2026-09-14-software-project-bootstrap-workflow.md)。
|
||||
|
||||
## 决策
|
||||
|
||||
### 1. 新增正式可选工作流 key
|
||||
|
||||
| key | 定位 | 默认产品域 | 可重复实例 |
|
||||
|-----|------|------------|------------|
|
||||
| `software_bootstrap` | 一次性建立项目事实、需求、架构、风险、路线与验证基线 | `non_medical_software` | 否(默认一次;终止后可重建并保留旧证据) |
|
||||
| `software_delivery` | 按里程碑/发布重复交付,承接 change brief → 证据 → 验证 → 发布 → 复盘 | `non_medical_software` | 是 |
|
||||
|
||||
医疗三 key **保持不变**,仍为正式可选;不得在其 published hash 上替换为软件语义。
|
||||
|
||||
### 2. 目录策略:published + selectable,而非“仅三 key”
|
||||
|
||||
项目可选工作流 = 已发布 (`latest_published_version > 0`) ∩ `project_selectable=true` ∩ 策略白名单。
|
||||
|
||||
白名单扩展为:
|
||||
|
||||
```text
|
||||
main | product_manager | test_manager | software_bootstrap | software_delivery
|
||||
```
|
||||
|
||||
固定文档数量校验 **仅** 继续约束医疗三 key;软件工作流按 manifest 自身完整性校验,不强制医疗文档数。
|
||||
|
||||
### 3. 领域与合规分离
|
||||
|
||||
- `product_domain=non_medical_software` 只说明非医疗器械,不关闭鉴权/审计/安全基线。
|
||||
- `compliance_profile` / `governance_profile` / `execution_mode` / `team_mode` 为项目级独立字段。
|
||||
- 首期默认:`governance=standard`,`compliance=internal_control+security_baseline`,`execution_mode=docs_only`。
|
||||
- `controlled_patch` 在 SWBOOT-10 受控执行器就绪前 **不可真正启用**;仅保留 allowlist stub。
|
||||
|
||||
### 4. 串联而非回环
|
||||
|
||||
```text
|
||||
software_bootstrap(完成 + 创建者确认)
|
||||
→ 仅建议 software_delivery
|
||||
→ 创建者确认后新建 planning/激活实例
|
||||
```
|
||||
|
||||
bootstrap 完成不得自动创建或激活 delivery。
|
||||
|
||||
### 5. Solo 审批策略(契约)
|
||||
|
||||
- `collaborative`:独立三权(author/reviewer/approver 不同人)。
|
||||
- `solo`:`creator_acknowledgement`;页面与审计持续标注“未独立评审”。
|
||||
- `controlled` 或要求独立审查的 compliance profile:**禁止 solo**。
|
||||
|
||||
### 6. 错误码(首期)
|
||||
|
||||
| code | 含义 |
|
||||
|------|------|
|
||||
| `ERR_WORKFLOW_NOT_SELECTABLE` | key 不在正式可选白名单或未 published |
|
||||
| `ERR_DOMAIN_INCOMPATIBLE` | 工作流与项目 `product_domain` / `project_type` 不兼容 |
|
||||
| `ERR_COMPLIANCE_PROFILE` | 合规配置非法或与治理冲突(如 controlled+solo) |
|
||||
| `ERR_EXECUTION_MODE_DISABLED` | 请求 `controlled_patch` 但受控执行器未启用 |
|
||||
| `ERR_REPO_PATH_NOT_ALLOWLISTED` | 仓库路径不在管理员 allowlist(SWBOOT-10 stub) |
|
||||
| `ERR_CREATION_PREVIEW_STALE` | creation token / plan_hash 过期或不匹配(409) |
|
||||
|
||||
### 7. 运行时权威不变
|
||||
|
||||
继续遵守 [workflow-runtime-authority](./2026-09-12-workflow-runtime-authority.md):任务只能从冻结 `doc_task_instance` 启动;禁止客户端 `task_key`/duty/stage 旁路。
|
||||
|
||||
## 后果
|
||||
|
||||
- Bootstrap seed 与 catalog API 必须同时暴露软件两 key,且按 `product_domain` 过滤时不把医疗默认话术塞进软件项目。
|
||||
- 项目表 additive 增加 `project_type_key` / `compliance_profile_key` 等字段;旧项目不自动分类为医疗或软件。
|
||||
- SWBOOT-10 仅落地 allowlist stub:任何真实 patch/merge/push 必须 fail closed,直到独立 Epic 验收。
|
||||
- 医疗三工作流黄金用例与固定文档数门禁保持回归基线。
|
||||
|
||||
## 关联
|
||||
|
||||
- 实施任务:`.doc/ops/short-term/2026-09-16-software-project-bootstrap.md`
|
||||
- Backlog:`.doc/ops/long-term/2026-09-14-software-project-bootstrap-implementation.md`
|
||||
- 验收清单:`.doc/ops/checklists/2026-09-14-software-project-bootstrap-acceptance.md`
|
||||
@@ -1,63 +0,0 @@
|
||||
---
|
||||
title: "D7 对话数据留存与删除口径(草案)"
|
||||
status: proposed
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
compliance: pending-compliance-signoff
|
||||
owner: Cline
|
||||
related:
|
||||
- ../remediation/2026-09-16-partial-deferred-completion-plan.md
|
||||
- ../ops/short-term/2026-09-16-partial-deferred-completion.md
|
||||
- ../status/FEATURE-MATRIX.md
|
||||
---
|
||||
|
||||
# ADR:D7 对话数据留存与删除口径
|
||||
|
||||
## 状态
|
||||
|
||||
**提议 / 工程草案**(2026-09-17)。数字与删除口径标 `pending-compliance-signoff`:合规签字或改数前,W7 仅允许数据分类盘点与现状审计,不得按未签字数字执行物理删除或备份清除。接受后状态改为 `accepted`。
|
||||
|
||||
## 背景
|
||||
|
||||
FEATURE-MATRIX「对话数据治理(D7)」为 `deferred`。收口计划 W7 要求:数据分类盘点 → 留存/删除口径落 ADR → 库/备份/日志控制 → 敏感字段加密边界。工程不能单方面定合规数字,但必须提供可审草案,避免无限期停在 deferred。Track E / R13 / R18 / R22 已对日志脱敏与销毁门禁有硬约束,本 ADR 将其固化为 D7 口径。
|
||||
|
||||
## 决策(建议默认;待合规确认)
|
||||
|
||||
### 1. 数据分类与留存
|
||||
|
||||
| 数据类 | 留存 | 说明 |
|
||||
|--------|------|------|
|
||||
| 会话正文(chat sessions/messages) | 热库 **365 天**(可配置) | 超期 soft-delete → 观察窗 → 物理清理 |
|
||||
| 派生文档 / 私密文档 | 与聊天**独立周期**;回收站 **30 天**后物理清理 | 删除 UI 须说明影响范围(只删聊天 / 只删文档 / 两者) |
|
||||
| 审计元数据(导出/治理审计) | **180 天** | 不可被普通用户删除覆盖 |
|
||||
| Agent trace / workspace 非终态 | 任务结束后 **30 天**;nightly 仅合成数据 | 禁止当长期事实源 |
|
||||
| 日志 / dead-letter / reconciliation | 不按正文留存;**只存 ID、digest、typed error code、allowlist 摘要** | Track E 红线 |
|
||||
| FAV 终态制品 | `retention_class` + legal hold + delete ledger | 与聊天口径解耦 |
|
||||
|
||||
### 2. 删除路径
|
||||
|
||||
1. **用户删除**:soft-delete / tombstone → 观察窗 → 物理清理。
|
||||
2. **备份清除**:须二次批准 + 精确 delete manifest;对齐销毁门禁 R22(完整备份恢复演练、migration corpus、FAV coverage、manifest、用户批准)。
|
||||
3. **删除界面**:必须说明聊天源消息与派生文档的独立保留周期及本次操作影响范围。
|
||||
|
||||
### 3. 加密边界(首期)
|
||||
|
||||
- 首期范围:敏感字段**盘点** + 传输与备份访问控制。
|
||||
- **不默认**上字段级加密;选型待合规确认与威胁模型后再立实现任务。
|
||||
|
||||
### 4. 违规升级
|
||||
|
||||
盘点确认当前基线违反已确认的安全或合规要求 → **立即**写入 [`gap-matrix.md`](../remediation/gap-matrix.md),不得继续当普通 backlog;本行 `done` 让位于整改。
|
||||
|
||||
## 后果
|
||||
|
||||
- W7 可按本草案启动盘点;物理删除与备份清除在 `pending-compliance-signoff` 解除前禁止按建议数字自动执行。
|
||||
- 2026-09-17 只读盘点:[../audit/2026-09-17-d7-data-inventory.md](../audit/2026-09-17-d7-data-inventory.md)(未删数据、未升矩阵 done、未写 gap-matrix blocker)。
|
||||
- 日志/DLQ/reconciliation 实现与审计须持续满足 Track E ID-only 红线。
|
||||
- 合规改数后:更新本 ADR 数字表、`updated` 日期,并将 `compliance` 改为 `signed` / `accepted`;再开 W7 整改实现。
|
||||
|
||||
## 相关链接
|
||||
|
||||
- 收口计划 §7.1:[../remediation/2026-09-16-partial-deferred-completion-plan.md](../remediation/2026-09-16-partial-deferred-completion-plan.md)
|
||||
- FEATURE-MATRIX D7 行:[../status/FEATURE-MATRIX.md](../status/FEATURE-MATRIX.md)
|
||||
- Track E Phase 2:[../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md](../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md)
|
||||
@@ -1,609 +0,0 @@
|
||||
---
|
||||
title: "个人工程中控台:实时项目看板与离线 HTML 快照"
|
||||
type: feat
|
||||
date: 2026-09-17
|
||||
artifact_contract: ce-unified-plan/v1
|
||||
product_contract_source: ce-plan-bootstrap
|
||||
execution: code
|
||||
---
|
||||
|
||||
> **已废弃(2026-09-17;2026-09-19 更新)**:旧版只读工程中控台代码已移除。后来短暂合入的 Control Center 也已移出本仓库,进度管理由独立项目承担。本文仅作历史证据保留。
|
||||
|
||||
# 个人工程中控台:实时项目看板与离线 HTML 快照
|
||||
|
||||
## Goal Capsule
|
||||
|
||||
为仓库所有者提供一个独立于产品后台的本地只读中控台。打开一个页面即可判断当前系统由什么组成、哪些任务正在计划或实施、真实分支和 worktree 在哪里、各环境实际运行了什么,并能在两次点击内到达对应的设计、审计、整改、任务和测试材料。
|
||||
|
||||
中控台同时提供两种输出:
|
||||
|
||||
1. `serve`:持续采集本地仓库、Git 和运行环境,提供自动刷新的 HTML 页面与机器可读 JSON;
|
||||
2. `export`:基于同一份不可变快照生成单文件 HTML,便于归档、离线查看和交接。
|
||||
|
||||
这不是产品功能,不接入产品后台、产品数据库或产品权限体系;它也不是发布系统,不执行 Git、Docker、部署或文档写操作。
|
||||
|
||||
### 成功标准
|
||||
|
||||
- 在当前仓库规模下,首次可用页面目标为 2 秒内出现;慢数据源可随后标记为 `degraded`,不得拖垮整页。
|
||||
- 正常情况下,本地文件、Git 或运行态变化在 5 秒内反映到新快照。
|
||||
- 页面分别展示“文档声明、Git 实施、验证证据、环境实装”,不把任务文档的 `done` 翻译为已合并或已部署。
|
||||
- 每个关键结论均显示来源、采集时间、新鲜度和可信类型;冲突保留双方证据,不静默选边。
|
||||
- 在线模式检索 allowlist 内未截断的 Markdown 正文;离线导出同时给出 included、truncated 和 metadata-only 清单,二进制附件只索引路径、类型、大小和归属。
|
||||
- 单文件 HTML 默认权限为 `0600`,可脱离仓库阅读已纳入 inclusion manifest 的 Markdown 正文,并醒目标出截断或仅元数据条目;不打包 `.doc/**/assets`。
|
||||
- 任一采集源失败时仍可查看最近成功数据,并明确显示 `stale/error/last_success_at`。
|
||||
|
||||
---
|
||||
|
||||
## Product Contract
|
||||
|
||||
### 用户与使用场景
|
||||
|
||||
唯一主要用户是仓库所有者。典型使用包括:
|
||||
|
||||
- 每天开始工作时查看焦点任务、阻塞、集成槽和环境异常;
|
||||
- 从模块进入设计、任务、测试和部署证据链;
|
||||
- 判断某项工作究竟只是有计划、正在实现、已经验证,还是已在某环境实装;
|
||||
- 查看本地分支、远端跟踪引用、ahead/behind、worktree 和未提交变更;
|
||||
- 发现 `CURRENT`、功能矩阵、发布门禁、Git 与 Docker 之间的漂移;
|
||||
- 导出一个自包含 HTML,作为某一时点的项目快照。
|
||||
|
||||
### 已确定的产品决策
|
||||
|
||||
#### PKD-1:独立本地工具
|
||||
|
||||
采用独立 Go CLI 和本地 Web 页面,不加入现有产品后台。
|
||||
|
||||
(session-settled: user-approved — chosen over product-admin integration: the console is for the repository owner’s local engineering management and the production image excludes `.doc` and `.git`)
|
||||
|
||||
#### PKD-2:只读实时页与离线快照共用数据模型
|
||||
|
||||
实时服务和导出文件必须由同一份版本化快照生成,避免在线页面与离线报告出现两套口径。
|
||||
|
||||
(session-settled: user-approved — chosen over a static-only report: the requested console must follow agent tasks and project state as they change)
|
||||
|
||||
### 核心需求
|
||||
|
||||
| ID | 需求 |
|
||||
|---|---|
|
||||
| R1 | CLI 默认解析当前 Git 仓库根,也接受显式 `--repo`;页面始终显示绝对根路径、当前分支、HEAD 和采集时间。 |
|
||||
| R2 | 仅监听 `127.0.0.1`,不依赖产品容器、产品数据库或产品登录。 |
|
||||
| R3 | 架构与模块页聚合 `module-boundaries.yaml`、系统设计索引和 `FEATURE-MATRIX`,展示模块、能力、依赖和证据链。 |
|
||||
| R4 | 任务状态至少拆为 `doc_status`、Git facets、`verification_result`/`verification_freshness`、deployment facets;可并存事实不得压成单值枚举。 |
|
||||
| R5 | Git 页展示本地/跟踪分支、ahead/behind、最近提交、worktree、dirty/untracked 和任务声明匹配情况;不得隐式 `fetch`。 |
|
||||
| R6 | 部署页按 shared/dev/test/main 分别展示容器状态、应用 readiness、服务完整性、schema、镜像与 promotion receipt;不得计算未经定义的综合绿灯。 |
|
||||
| R7 | 文档页支持按 taxonomy、状态、模块和关键词筛选,展示正文、正向链接、反向链接、broken、orphan 与 unindexed 状态;查询状态可通过 URL 恢复。 |
|
||||
| R8 | 一个不可变快照包含 `schema_version`、`generation_id`、`revision_id`、`generated_at`、仓库/提交身份、来源状态、事实与冲突。 |
|
||||
| R9 | 自动刷新采用完整快照原子切换;每个来源独立超时,失败时保留最近成功数据并标注过期。 |
|
||||
| R10 | 每条关键事实标注 `declared`、`observed`、`verified` 或 `inferred`,并保留来源路径和采集时间。 |
|
||||
| R11 | 单 HTML 内嵌结构化模型、页面资源和允许导出的 Markdown 正文;附件只保留元数据及相对链接,并显示内容覆盖清单。 |
|
||||
| R12 | 对 Agent 暴露稳定的只读 JSON,而不是让 Agent 解析 HTML;JSON 与页面引用同一 `generation_id` 和 `revision_id`。 |
|
||||
| R13 | TaskState 显示声明的 owner/Agent 类型/认领/mutex 与基于 Git 的最近活动证据;Herdr 工程 Agent 和产品 PI Agent Runner 使用不同类型。没有运行态来源时必须显示 unknown,不得把“已认领”写成“正在执行”。 |
|
||||
| R14 | 文件、命令和 HTTP 均采用 allowlist;拒绝路径穿越、symlink 越界、原始 HTML 执行、远程资源加载和凭证读取。 |
|
||||
|
||||
### 事实源与权威边界
|
||||
|
||||
| 领域 | 权威来源 | 中控台处理方式 |
|
||||
|---|---|---|
|
||||
| 发布门禁 | `.doc/remediation/gap-matrix.md` | 只解释发布 blocker,不替代能力完成度。 |
|
||||
| 能力成熟度 | `.doc/status/FEATURE-MATRIX.md` | 显示功能完成度,不据此推断是否部署。 |
|
||||
| 当前焦点、认领、集成槽 | `.doc/ops/CURRENT.md` | 作为团队声明,与 Git 和运行态对账。 |
|
||||
| 任务计划 | `ops/short-term`、`ops/long-term`、backlog front matter | 作为计划状态,不据此推断实现。 |
|
||||
| 分支与 worktree | Git plumbing | 作为本地观测;远端状态注明“基于本地 refs,未联网刷新”。 |
|
||||
| 环境运行态 | Docker/Compose 元数据与 `/ready` | 分开展示容器、应用与服务完整性。 |
|
||||
| 验收证据 | `.doc/test-reports` 及 promotion receipts | 显示证据存在性与身份,不以文件名替代内容校验。 |
|
||||
|
||||
来源之间不设全局覆盖顺序。各来源回答自己的问题;值不一致时生成 drift,并并列展示原值、时间和来源。
|
||||
|
||||
### 用户流程
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
Start[启动 serve 或 export] --> Root[解析显式 repo root]
|
||||
Root --> Collect[并行采集文档 Git 运行态]
|
||||
Collect --> Snapshot[构建不可变快照]
|
||||
Snapshot --> Reconcile[按领域对账]
|
||||
Reconcile --> Live[本地实时页面和 JSON]
|
||||
Reconcile --> Export[单文件 HTML]
|
||||
Live --> Refresh[定时生成下一快照]
|
||||
Refresh --> Snapshot
|
||||
```
|
||||
|
||||
总览默认优先显示 `in_progress`、`blocked`、`planned`、`partial/deferred`、drift 和 degraded。`done` 与 archive 默认收起,避免历史材料淹没当前工作。
|
||||
|
||||
任务详情按照以下证据链导航:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
Audit[audit 问题] --> Remediation[remediation 方案]
|
||||
Remediation --> Task[任务声明]
|
||||
Task --> Git[分支 worktree commit merge]
|
||||
Git --> Test[测试与验收报告]
|
||||
Test --> Deploy[环境 artifact 与 readiness]
|
||||
```
|
||||
|
||||
显式 Markdown 链接和既定 taxonomy 属于强关系;仅由文件名或 slug 推断的关系标为“候选”,不得参与完成度计算。
|
||||
|
||||
### 状态模型
|
||||
|
||||
```mermaid
|
||||
flowchart TB
|
||||
D[doc_status: planned/in_progress/blocked/done] --> View[并列状态视图]
|
||||
G[Git facets: branch/worktree/merge/cleanliness/ahead-behind] --> View
|
||||
V[Verification: result + freshness + bound identity] --> View
|
||||
P[Deployment facets: container/readiness/services/artifact identity] --> View
|
||||
View --> Drift{来源是否一致}
|
||||
Drift -->|是| Consistent[consistent]
|
||||
Drift -->|否| Conflict[drift + 双方证据]
|
||||
```
|
||||
|
||||
“实装”定义为存在可核对的环境观测证据,而不是任务文档为 `done`。容器可达但 artifact identity 无法核对时显示“运行可见、版本未验证”,不得提升为 verified deployment。当文档声明 healthy、Docker 显示异常而 `/ready` 为 ok 时,页面保留多值并标记 drift,不输出统一绿灯。
|
||||
|
||||
### 真实验收样本
|
||||
|
||||
1. rdev:存在调研、设计、任务与 backlog,但若没有 CURRENT 认领和真实分支,应显示“已计划、未认领、未实施、未实装”。
|
||||
2. main 环境:若 CURRENT 声明整体 healthy,而 events 容器实际 restarting、应用 `/ready` 仍为 ok,应同时显示三项证据与 drift。
|
||||
3. 本地 dev:若分支领先 `origin/dev`,必须显示“本地已具备、远端未确认可用”,不得写成已远程发布。
|
||||
4. `system-admin-console`:作为产品管理后台能力,与本计划的个人工程中控台分开展示,名称和边界不得混淆。
|
||||
|
||||
### 安全与非目标
|
||||
|
||||
一期明确不做:
|
||||
|
||||
- 不写文档,不修改任务状态,不占用集成槽;
|
||||
- 不创建、切换、合并、删除或推送 Git 分支;
|
||||
- 不执行 `git fetch`,不调用远端托管平台 API;
|
||||
- 不启动、停止、重建或部署容器;
|
||||
- 不控制 Herdr 或向 Agent 派发任务;
|
||||
- 不读取 `.env`、`.secrets`、Docker `Config.Env`、数据库数据或 `.git` 内部文件正文;
|
||||
- 不加入产品 API、产品前端、产品数据库或生产镜像;
|
||||
- 不执行 Markdown 原始 HTML、脚本、Mermaid 或远程资源。
|
||||
|
||||
后续候选包括跨快照历史、远端 CI/Gitea 聚合、受限 Markdown/Mermaid 渲染、Agent 查询 API 和修复建议。任何写操作继续保持在本工具之外。
|
||||
|
||||
---
|
||||
|
||||
## Planning Contract
|
||||
|
||||
### High-Level Technical Design
|
||||
|
||||
以下图示冻结边界和协议,不规定具体函数签名。
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
Docs[.doc sources] --> DC[Document collector]
|
||||
Git[Git/worktrees] --> GC[Git collector]
|
||||
Run[Docker/ready/receipts] --> RC[Runtime collector]
|
||||
DC --> Build[Snapshot builder]
|
||||
GC --> Build
|
||||
RC --> Build
|
||||
Build --> Rec[Reconcile facts and conflicts]
|
||||
Rec --> JSON[Read-only JSON]
|
||||
Rec --> Web[Local HTML]
|
||||
Rec --> File[Offline HTML]
|
||||
```
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant UI as Browser
|
||||
participant C as Collection coordinator
|
||||
participant S as Sources
|
||||
participant P as Snapshot publisher
|
||||
UI->>C: poll with revision_id
|
||||
C-->>UI: current snapshot immediately
|
||||
C->>S: singleflight collection with deadlines
|
||||
S-->>C: facts or source error
|
||||
C->>P: publish complete generation atomically
|
||||
P-->>UI: new revision or not-modified
|
||||
```
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
[*] --> Loading
|
||||
Loading --> Fresh: first collection succeeds
|
||||
Loading --> ErrorUnknown: first collection fails
|
||||
Fresh --> Refreshing: TTL expires
|
||||
Refreshing --> Fresh: new generation succeeds
|
||||
Refreshing --> Stale: source fails and last-known exists
|
||||
Stale --> Fresh: source recovers
|
||||
ErrorUnknown --> Fresh: source first succeeds
|
||||
```
|
||||
|
||||
### 技术决策
|
||||
|
||||
#### KTD-1:采用仓库内独立 Go CLI
|
||||
|
||||
新增 `cmd/engineering-dashboard` 与 `internal/engineeringdashboard`,复用仓库 Go 工具链但不导入产品业务包。Go 标准库足以提供本地 HTTP、资源嵌入、JSON、并发和原子文件输出;现有 `yaml.v3` 可用于已定义的 YAML 契约。
|
||||
|
||||
#### KTD-2:快照是唯一交付模型
|
||||
|
||||
采集器只生产事实,reconcile 层只生产派生状态和冲突,HTTP/API/export 只消费已完成的不可变快照。快照至少包含:
|
||||
|
||||
```text
|
||||
schema_version, generation_id, revision_id, generated_at, collection_duration
|
||||
repository { root, branch, head, dirty }
|
||||
sources[] { name, status, observed_at, last_success_at, error }
|
||||
facts[] { subject, field, value, provenance, source_ref, observed_at, confidence }
|
||||
conflicts[] { subject, field, kind, fact_refs[] }
|
||||
documents[], modules[], tasks[], git[], environments[]
|
||||
```
|
||||
|
||||
`generation_id` 唯一标识一次采集,包含采集批次语义;`revision_id` 只由 schema、仓库身份和规范化的非易变事实、冲突、来源状态确定,明确排除 `generated_at`、`observed_at` 和采集耗时。HTML 与 JSON 必须展示同一对标识,HTTP ETag 和前端是否重绘使用 `revision_id`。一期不读取旧 schema 的外部 JSON;离线 HTML 自带对应 renderer,因此不依赖未来二进制迁移。
|
||||
|
||||
#### KTD-3:专用解析器与容错索引并存
|
||||
|
||||
对 CURRENT、FEATURE-MATRIX、gap-matrix、任务 front matter 和 module boundaries 编写契约化解析器。文档层只索引 promotion receipt 的路径与链接,结构化部署凭证由运行态采集器唯一负责。对其余 Markdown 只提取安全元数据、标题、正文与链接。专用解析器失败时保留原文入口并标记 degraded,不凭模糊规则编造状态。
|
||||
|
||||
#### KTD-4:命令执行采用固定 argv 和超时
|
||||
|
||||
Git 与 Docker 采集通过注入式 command runner 执行固定程序和分离 argv,不通过 shell 拼接。`--repo` 先转为绝对、symlink-resolved 的 Git 根并作为单个参数传递。每个来源默认 2 秒超时;错误输出做长度限制和敏感字段清理。Git 使用 porcelain/plumbing 输出,例如 `status --porcelain=v2`、`worktree list --porcelain`、`for-each-ref`、`rev-list`、`merge-base`。
|
||||
|
||||
#### KTD-5:一期采用短轮询,不引入持久数据库
|
||||
|
||||
服务端由单一采集协调器按 TTL 触发完整重采集,2–5 秒刷新;同一仓库最多一轮采集在途,请求只读取当前快照,不直接叠加扫描。每轮带单调 generation 序号和整轮 deadline,只有当前有效轮次能原子发布。页面使用 ETag/`revision_id` 避免重复传输。last-known 只在同一 `serve` 进程内有效;冷启动或单次 export 首次采集失败时显示 unknown/error,不伪造历史值。文件监听、SSE 通知、持久缓存和历史数据库均后置。
|
||||
|
||||
#### KTD-6:安全阅读优先于富渲染
|
||||
|
||||
在线详情页一期将 Markdown 全部作为纯文本安全转义,并保留换行和空白;标题、列表、链接、代码、图片和 Mermaid 均显示源码,不生成 HTML 节点或发起资源请求。静态导出内嵌同一正文和内部导航。所有文档 ID 都是规范化仓库相对路径,只允许 `.doc/**/*.md` 及明确列入 allowlist 的根 Markdown;读取前后都校验解析路径,直接拒绝 symlink,并对 `.git`、`.env*`、`.secrets`、`data` 等敏感路径执行最终目标 denylist。
|
||||
|
||||
#### KTD-7:导出为自包含、有限尺寸的证据快照
|
||||
|
||||
导出将模型、CSS、JS 和允许的 Markdown 正文写入单 HTML,采用临时文件加 rename 原子落盘,默认 `0600`。数据使用 HTML-safe JSON 或等价编码封装,正文只通过 `textContent`/DOM API 写入;CSP 禁止网络、外部资源和内联事件执行。默认只嵌入 Git tracked、allowlist 内的 Markdown;untracked Markdown 只列元数据,除非用户显式选择。导出前输出 inclusion manifest 与敏感模式告警;`.doc/**/assets`、数据库、构建产物和二进制报告不嵌入。
|
||||
|
||||
### 建议目录
|
||||
|
||||
```text
|
||||
cmd/engineering-dashboard/
|
||||
main.go
|
||||
internal/engineeringdashboard/
|
||||
model.go
|
||||
collector.go
|
||||
source_docs.go
|
||||
source_git.go
|
||||
source_runtime.go
|
||||
reconcile.go
|
||||
server.go
|
||||
export.go
|
||||
assets/
|
||||
index.html
|
||||
app.js
|
||||
app.css
|
||||
testdata/
|
||||
docs/
|
||||
git/
|
||||
runtime/
|
||||
scripts/
|
||||
engineering-dashboard.sh
|
||||
.doc/test-reports/
|
||||
YYYY-MM-DD-engineering-dashboard-test-report.md
|
||||
```
|
||||
|
||||
### 风险与缓解
|
||||
|
||||
| 风险 | 缓解 |
|
||||
|---|---|
|
||||
| 文档结构并不完全统一 | 只对 SSOT 和任务 front matter 使用严格契约;其余文档容错索引并暴露解析告警。 |
|
||||
| 看板制造“假完成” | 多轴 facets、事实 provenance、验证身份绑定、冲突不覆盖、真实反例测试。 |
|
||||
| Docker/Git 卡住或不可用 | 独立超时、并行采集、last-known 状态、degraded 页面。 |
|
||||
| 文档 XSS 或路径穿越 | 纯文本渲染、HTML-safe 数据封装、CSP、路径 allowlist、拒绝 symlink、最终目标敏感路径 denylist。 |
|
||||
| `.doc` 附件导致扫描/导出失控 | 默认跳过 assets 内容,只采集元数据;设置单文档和总正文上限并报告截断。 |
|
||||
| 导出副本离开本机后 `0600` 不再提供保护 | 页面首部标明敏感快照、仓库身份和生成时间;输出 inclusion manifest,交接者自行控制接收者、保留期与删除。 |
|
||||
| worktree 与主 checkout 混淆 | 只管理 `--repo` 指定/解析出的根,页面常驻显示根与 HEAD;其他 worktree 仅作为 Git 元数据。 |
|
||||
| 本地 remote refs 被误认为远端实时状态 | 显示 refs 观测时间和“未联网刷新”,不自动 fetch。 |
|
||||
| 与产品 `system-admin-console` 命名冲突 | CLI、包和文档统一使用 `engineering-dashboard` / “个人工程中控台”。 |
|
||||
|
||||
---
|
||||
|
||||
## Implementation Units
|
||||
|
||||
### U1:冻结快照、事实与状态契约
|
||||
|
||||
**目标**:先建立不会把计划、实现、验证、部署混为一谈的模型与测试夹具。
|
||||
|
||||
**覆盖需求**:R4、R8、R10、R12、R13;承接 PKD-2 的同源快照决策。
|
||||
|
||||
**依赖**:无。
|
||||
|
||||
**文件**:
|
||||
|
||||
- `internal/engineeringdashboard/model.go`
|
||||
- `internal/engineeringdashboard/model_test.go`
|
||||
- `internal/engineeringdashboard/testdata/**`
|
||||
|
||||
**实施要点**:
|
||||
|
||||
1. 定义版本化 `Snapshot`、`SourceState`、`Fact`、`Conflict`、`TaskState`、`AgentClaim`、`EnvironmentState`。
|
||||
2. provenance 固定为 `declared|observed|verified|inferred`;freshness 固定为 `fresh|stale|error|unknown`。
|
||||
3. 状态使用可组合 facets:Git 分为 branch/worktree/merge/cleanliness/ahead-behind;验证分为 result/freshness/subject identity;部署分为 container/readiness/services/artifact identity。
|
||||
4. TaskState 保留 owner、agent kind、claim、mutex、声明分支、观测 worktree、最近活动时间及证据;声明与观测不可互相提升。
|
||||
5. 建立 rdev、dev ahead、main events restarting、CURRENT/worktree 不匹配等夹具。
|
||||
|
||||
**测试场景**:
|
||||
|
||||
- 文档 `done` 但无 merge/deploy 时,Git 与部署 facets 不改变;
|
||||
- `claimed` 但无可观测运行信号时,Agent 活动保持 unknown;Herdr 与产品 PI Runner 不共享类型;
|
||||
- 同字段多来源不一致时生成 conflict 并保留所有 fact 引用;
|
||||
- JSON round-trip 保留 schema 与 snapshot identity;
|
||||
- 枚举未知值失败且错误可定位。
|
||||
|
||||
**完成证据**:模型测试通过,schema 示例落入 Go fixture,不存在页面专用的第二套状态类型。
|
||||
|
||||
### U2:实现文档图谱与领域解析器
|
||||
|
||||
**目标**:将 `.doc` taxonomy、模块、任务、测试和链接转换为可追溯文档图谱。
|
||||
|
||||
**覆盖需求**:R3、R7、R10、R11、R14。
|
||||
|
||||
**依赖**:U1。
|
||||
|
||||
**文件**:
|
||||
|
||||
- `internal/engineeringdashboard/source_docs.go`
|
||||
- `internal/engineeringdashboard/docs_test.go`
|
||||
|
||||
**实施要点**:
|
||||
|
||||
1. 扫描 allowlist 内 Markdown,默认跳过任何 `assets` 目录正文;记录附件元数据。
|
||||
2. 解析 front matter、标题、显式 Markdown 链接和反向链接。
|
||||
3. 为 CURRENT、FEATURE-MATRIX、gap-matrix、任务文、module boundaries 和 test report 建立专用适配器;receipt 只在文档图谱中作为文档与链接,结构化解析归 U4。
|
||||
4. 区分 `broken`、`orphan`、`unindexed`;slug 相似只形成候选关系。
|
||||
5. 规范化路径并阻止 `..`、绝对路径和任何 symlink;最终目标再次应用扩展名 allowlist 与敏感路径 denylist。
|
||||
|
||||
**测试场景**:
|
||||
|
||||
- taxonomy 内文档可检索且反向链接正确;
|
||||
- broken link 不导致整个索引失败;
|
||||
- front matter 缺失或非标准时产生告警并仍可阅读;
|
||||
- assets 不读正文,越界 symlink 被拒绝;
|
||||
- rdev 文档链被发现,但没有被推断为已实现。
|
||||
|
||||
**完成证据**:文档索引能从 fixture 生成稳定 JSON,路径安全负例通过。
|
||||
|
||||
### U3:实现 Git 与 worktree 采集
|
||||
|
||||
**目标**:以只读 Git plumbing 形成可复现的分支、提交和 worktree 观测。
|
||||
|
||||
**覆盖需求**:R1、R4、R5、R10、R14。
|
||||
|
||||
**依赖**:U1。
|
||||
|
||||
**文件**:
|
||||
|
||||
- `internal/engineeringdashboard/source_git.go`
|
||||
- `internal/engineeringdashboard/git_test.go`
|
||||
|
||||
**实施要点**:
|
||||
|
||||
1. 抽象 command runner,固定 argv、工作目录、超时和输出上限。
|
||||
2. 收集当前分支/HEAD、dirty/untracked、local/remote-tracking refs、ahead/behind、merge-base 和 worktree。
|
||||
3. 不执行 fetch;remote tracking ref 始终带本地观测时间与免责声明。
|
||||
4. 对账任务声明的 branch/worktree,但不因路径名相似而认定一致。
|
||||
|
||||
**测试场景**:
|
||||
|
||||
- 本地分支领先 origin 时显示 ahead 且不显示“远端可用”;
|
||||
- worktree 目录名与真实检出分支不一致时生成 drift;
|
||||
- 命令超时、Git 不存在、非 Git 目录时单源 degraded;
|
||||
- runner 记录中不存在 shell、fetch、push 或写命令。
|
||||
|
||||
**完成证据**:临时 Git 仓库集成测试和 fake runner 单元测试通过。
|
||||
|
||||
### U4:实现运行态与部署证据采集
|
||||
|
||||
**目标**:按环境独立呈现容器、应用 readiness、服务完整性、schema、镜像和晋升凭证。
|
||||
|
||||
**覆盖需求**:R4、R6、R10、R14。
|
||||
|
||||
**依赖**:U1。
|
||||
|
||||
**文件**:
|
||||
|
||||
- `internal/engineeringdashboard/source_runtime.go`
|
||||
- `internal/engineeringdashboard/runtime_test.go`
|
||||
|
||||
**实施要点**:
|
||||
|
||||
1. 从仓库内批准的 Compose 静态配置和 allowlist labels 映射环境与服务;无法明确映射时显示 unknown,不用名称猜测。容器 JSON 只提取容器名、image/digest、状态、restart count、health,以及 allowlist 内的 Compose project/service labels;不复制 Env、Mounts、完整 NetworkSettings 或任意 labels。
|
||||
2. 对 allowlist 中的本地 `/ready` 端点执行短超时、响应大小受限的请求;禁用重定向,或对每一跳重新校验 scheme、解析后 IP、端口和 host。
|
||||
3. 解析 promotion receipt/candidate image 等仓库证据,保留 artifact identity。
|
||||
4. 将 container health、app readiness、required-service completeness 分开建模。
|
||||
|
||||
**测试场景**:
|
||||
|
||||
- app ready 且 events restarting 时同时保留两项状态;
|
||||
- Docker 不可用或 HTTP 超时时,其他数据源仍可输出;
|
||||
- receipt 与容器 image 不一致时生成 deployment drift;容器可达但 identity 缺失时标记“运行可见、版本未验证”;
|
||||
- readiness 重定向到外网或非 allowlist 本地端口时拒绝访问;
|
||||
- 输出中不存在容器环境变量或凭证。
|
||||
|
||||
**完成证据**:fixture 和 fake HTTP/Docker runner 测试通过,main 分叉场景被覆盖。
|
||||
|
||||
### U5:实现对账、派生视图与新鲜度
|
||||
|
||||
**目标**:把来源事实组合成用户可判断的视图,但不替来源做未经定义的裁决。
|
||||
|
||||
**覆盖需求**:R3、R4、R6、R8、R9、R10、R13。
|
||||
|
||||
**依赖**:U2、U3、U4。
|
||||
|
||||
**文件**:
|
||||
|
||||
- `internal/engineeringdashboard/reconcile.go`
|
||||
- `internal/engineeringdashboard/reconcile_test.go`
|
||||
|
||||
**实施要点**:
|
||||
|
||||
1. 按领域 SSOT 规则构建 module、task、environment 和 evidence-chain 视图。
|
||||
2. 实现 conflict 分类:declared-vs-observed、task-vs-git、test-vs-subject、receipt-vs-runtime、stale-source、missing-evidence。
|
||||
3. 快照构建期间每个来源独立记录 `observed_at`、持续时间和错误;成功后一次性发布。
|
||||
4. 失败源只可复用同一 serve 进程的 last-known,并标注 stale、age 与 last-success;冷启动无缓存时为 unknown/error。过期数据不隐藏,但按年龄提升告警级别。
|
||||
5. 测试报告只有在 commit/artifact identity 与当前 subject 对齐时才能派生 pass;身份缺失为 unbound,身份不匹配为 stale/drift。
|
||||
|
||||
**测试场景**:
|
||||
|
||||
- 三个真实样本得到预期多轴状态;
|
||||
- 同一组输入顺序变化不改变规范化快照;
|
||||
- 单源失败不会删除其他源,也不会重写 last-known 的观测时间;冷启动失败没有伪造 last-known;
|
||||
- 旧测试报告、新 HEAD 与不同 image 不会派生当前验证通过;
|
||||
- 恢复后 stale 自动清除并产生新 snapshot ID。
|
||||
|
||||
**完成证据**:reconcile table tests 覆盖一致、漂移、缺失、过期和恢复。
|
||||
|
||||
### U6:实现本地服务、总览与文档导航
|
||||
|
||||
**目标**:提供能快速判断异常并下钻证据的本地只读页面和 JSON。
|
||||
|
||||
**覆盖需求**:R1、R2、R3、R7–R10、R12–R14;承接 PKD-1 和 PKD-2。
|
||||
|
||||
**依赖**:U5。
|
||||
|
||||
**文件**:
|
||||
|
||||
- `internal/engineeringdashboard/server.go`
|
||||
- `internal/engineeringdashboard/server_test.go`
|
||||
- `internal/engineeringdashboard/assets/index.html`
|
||||
- `internal/engineeringdashboard/assets/app.js`
|
||||
- `internal/engineeringdashboard/assets/app.css`
|
||||
- `cmd/engineering-dashboard/main.go`
|
||||
|
||||
**实施要点**:
|
||||
|
||||
1. `serve --repo <path> --addr 127.0.0.1:<port>`;一期无条件拒绝所有非 loopback 地址,包括通配、IPv6 非 loopback 和显式传入值。
|
||||
2. 暴露 `/api/v1/snapshot`、`/api/v1/doc/<id>`、`/healthz`;所有接口只读。严格校验 Host/Origin/Fetch Metadata,不信任代理转发头;页面和 API 使用每次启动生成的不可预测访问令牌,降低 DNS rebinding 与跨站读取风险。
|
||||
3. 页面分为总览、架构/模块、任务、Git、部署、文档和证据链。
|
||||
4. 自动刷新完整快照,保留当前筛选、滚动位置、焦点和选中文档;ETag 未变化时不重绘。
|
||||
5. 明确一级视图状态:initial loading、fresh empty、fresh success、partial/degraded with last-known、hard error without cache、refreshing、recovered。刷新中继续展示上一完整快照,直到下一版本原子替换。
|
||||
6. 搜索覆盖标题、仓库相对路径、front matter 和未截断正文;不同维度用 AND、同一维度多选用 OR,默认先排当前任务和异常证据,再按匹配度与路径稳定排序。筛选、查询和选中文档写入 URL 参数,支持浏览器前进/后退与深链。
|
||||
7. 桌面优先;窄屏下侧栏变为可关闭抽屉,宽表格保留可横向滚动的语义表头,详情区单列。所有功能可键盘完成,使用 landmark/标题/表格语义,drift/degraded 不只靠颜色表达,自动刷新通过非打断式 live region 报告且不抢焦点。
|
||||
8. Markdown 正文只进入文本节点;在线页与导出页均设置限制性 CSP,不执行 HTML、脚本、SVG、远程 URL 或事件属性。
|
||||
|
||||
**测试场景**:
|
||||
|
||||
- 只监听 loopback,方法 allowlist 拒绝写请求;Host/Origin/token、DNS rebinding 和跨 Origin 负例被拒绝;
|
||||
- HTML 与 JSON 的 generation/revision identity 一致;
|
||||
- 文档 ID 越界、symlink 越界、未知 ID 返回安全错误;
|
||||
- degraded source 在总览可见且页面仍可导航;
|
||||
- 任务状态四轴、drift 和来源时间在浏览器中可见。
|
||||
- 首次加载、空数据、无缓存错误、刷新、恢复状态可区分;键盘、焦点、语义结构、窄屏和非颜色告警验收通过。
|
||||
- 搜索组合逻辑、排序、无结果、URL 深链和刷新后的视图保持通过。
|
||||
|
||||
**完成证据**:HTTP tests、基本无障碍检查和真实浏览器验收通过。
|
||||
|
||||
### U7:实现离线导出、启动脚本与治理文档
|
||||
|
||||
**目标**:生成安全、可携带、可追踪的单文件快照,并完成仓库治理接线。
|
||||
|
||||
**覆盖需求**:R1、R8、R9、R11、R14;承接 PKD-1 和 PKD-2。
|
||||
|
||||
**依赖**:U6。
|
||||
|
||||
**文件**:
|
||||
|
||||
- `internal/engineeringdashboard/export.go`
|
||||
- `internal/engineeringdashboard/export_test.go`
|
||||
- `scripts/engineering-dashboard.sh`
|
||||
- `.doc/status/FEATURE-MATRIX.md`
|
||||
- `.doc/ops/CURRENT.md`
|
||||
- `.doc/test-reports/YYYY-MM-DD-engineering-dashboard-test-report.md`
|
||||
|
||||
**实施要点**:
|
||||
|
||||
1. `export --repo <path> --output <file>` 构建一次不可变快照并原子写入;首次采集失败的来源显示 unknown/error。
|
||||
2. 以 HTML-safe JSON/等价编码内嵌允许的 Markdown 正文、索引和页面资源;附件保持元数据与相对链接,所有正文只写入文本节点。
|
||||
3. 默认权限 `0600`,输出页显示生成时间、repo、HEAD、snapshot ID 和 degraded/drift。
|
||||
4. 薄脚本只负责定位仓库与调用 Go CLI,不隐藏参数或执行安装/部署副作用。
|
||||
5. 实施期间按仓库规范更新 CURRENT、FEATURE-MATRIX 和 test report;完成后再迁移任务生命周期状态。
|
||||
|
||||
**测试场景**:
|
||||
|
||||
- 导出文件脱离仓库后仍能搜索和阅读 Markdown;
|
||||
- 导出中不含附件字节、绝对凭证路径、env 值或远程请求;`</script>`、事件属性、SVG、危险 URL scheme 和 Unicode 边界载荷不能逃逸数据上下文;
|
||||
- 默认 tracked/untracked 与敏感模式策略、inclusion manifest 和覆盖清单符合契约;
|
||||
- 采集部分失败时仍能导出并保留错误;
|
||||
- 输出中 JSON/HTML snapshot identity 一致,权限符合预期;
|
||||
- 大文档和总正文上限触发时明确标记截断。
|
||||
|
||||
**完成证据**:export tests、离线浏览器验收和治理文档回链完整。
|
||||
|
||||
---
|
||||
|
||||
## Verification Contract
|
||||
|
||||
### 自动验证
|
||||
|
||||
实施阶段至少运行:
|
||||
|
||||
```bash
|
||||
go test ./internal/engineeringdashboard/...
|
||||
go test ./cmd/engineering-dashboard/...
|
||||
go vet ./...
|
||||
go test -short ./...
|
||||
git diff --check
|
||||
```
|
||||
|
||||
涉及共享容器的只读验收也必须遵守 CURRENT 集成槽规则;中控台本身不得为测试启动、停止或重建共享容器。
|
||||
|
||||
### 契约验证矩阵
|
||||
|
||||
| 领域 | 必须证明 |
|
||||
|---|---|
|
||||
| 模型 | 计划、Git facets、验证、部署 facets 互不覆盖;Agent 声明和运行观测分离;所有派生结论可追溯到 facts。 |
|
||||
| 文档 | taxonomy、全文检索、反链、broken/unindexed、路径安全与 assets 排除。 |
|
||||
| Git | ahead/behind、worktree、dirty、local refs 新鲜度和无隐式 fetch。 |
|
||||
| 部署 | container/app/service 三类信号分离,receipt/artifact 身份可核对。 |
|
||||
| 降级 | 每个源超时、错误、stale、恢复都不会让整页不可用。 |
|
||||
| 实时 | 变化在目标时间内形成完整新快照,不出现半新半旧卡片。 |
|
||||
| 导出 | 单文件离线可读、默认 `0600`、不嵌 assets、不产生网络请求。 |
|
||||
| 安全 | loopback、Host/Origin/startup token、read-only methods、命令 allowlist、路径边界、Docker 字段 allowlist、CSP 与输出脱敏。 |
|
||||
|
||||
### 浏览器验收
|
||||
|
||||
1. 从总览进入 rdev,确认“计划/实施/验证/实装”四轴与源文档链接均可见。
|
||||
2. 在仓库外复制导出 HTML,断网打开并全文搜索、阅读至少一份设计与一份测试报告。
|
||||
3. 制造 fixture 中的 CURRENT/Docker/readiness 冲突,确认页面保留多值且不出现综合绿灯。
|
||||
4. 切换 fixture 快照,确认页面刷新后筛选条件和当前文档保持不变。
|
||||
5. 尝试路径穿越、未知文档、POST、DNS rebinding、跨 Origin、readiness 重定向和含原始 HTML/脚本逃逸载荷的 Markdown,确认均不能越界、外联或执行。
|
||||
|
||||
### 性能与容量验证
|
||||
|
||||
- 记录当前 `.doc` 规模下的冷启动、增量刷新、JSON 大小和 HTML 导出大小。
|
||||
- 建议一期门槛:UI shell 与来源状态在 2 秒内可交互,P95 完整快照重建不超过 5 秒,单源超时不超过 2 秒;基线不达标时必须记录实测并拆分后台正文索引,不能伪造 PASS。
|
||||
- 导出达到配置上限时必须显式列出被截断文档,不允许静默丢失。
|
||||
|
||||
---
|
||||
|
||||
## Definition of Done
|
||||
|
||||
- [ ] `serve` 和 `export` 在显式仓库根下可重复运行,且没有产品后台依赖。
|
||||
- [ ] 实时 HTML、离线 HTML 与 JSON 使用同一版本化快照契约。
|
||||
- [ ] `generation_id` 标识采集实例,`revision_id` 标识内容版本并驱动 ETag;无内容变化不会触发重绘。
|
||||
- [ ] 架构、模块、功能、任务、Git、部署、文档和证据链均可从页面访问。
|
||||
- [ ] 计划、实施、验证、实装四轴独立,rdev、dev ahead、main events 分叉样本通过。
|
||||
- [ ] Agent 认领与可观测活动分开,Herdr 工程 Agent 与产品 PI Agent Runner 不混称。
|
||||
- [ ] 所有 drift、degraded、stale 都带来源和时间,不存在未经定义的综合绿灯。
|
||||
- [ ] 默认 loopback、Host/Origin/startup token、只读命令、路径边界、脱敏、CSP 和 Markdown 安全测试通过。
|
||||
- [ ] 首次加载、空数据、部分失败、无缓存失败、恢复、键盘、窄屏和 URL 深链验收通过。
|
||||
- [ ] 导出 HTML 脱离仓库可读 Markdown,且不包含二进制 assets 或凭证数据。
|
||||
- [ ] 单元、集成、全仓短测、浏览器验收和 `git diff --check` 均有真实输出。
|
||||
- [ ] `.doc/test-reports` 报告回链任务文,FEATURE-MATRIX 与 CURRENT 按实际状态更新。
|
||||
- [ ] 没有遗留调试入口、写操作按钮、未使用的替代模型或与产品后台重名的组件。
|
||||
|
||||
---
|
||||
|
||||
## Appendix
|
||||
|
||||
### 一期交付边界
|
||||
|
||||
一期交付:本地只读服务、版本化快照 JSON、架构/任务/Git/部署/文档视图、四轴状态、drift/degraded、全文搜索、安全文档阅读和单 HTML 导出。
|
||||
|
||||
后续评估:跨快照历史趋势、远端托管/CI 聚合、受限富文本与 Mermaid、跨仓库聚合、面向 Agent 的筛选查询 API。
|
||||
|
||||
永久排除:在页面中修改文档、切换或推送分支、控制 Agent、执行部署、读取密钥、成为产品后台模块。
|
||||
|
||||
### 方案依据
|
||||
|
||||
- `.doc/README.md` 定义的文档 taxonomy 与生命周期;
|
||||
- `.doc/ops/CURRENT.md` 的焦点、认领、集成槽与环境声明;
|
||||
- `.doc/status/FEATURE-MATRIX.md` 的模块完成度口径;
|
||||
- `.doc/remediation/gap-matrix.md` 的发布门禁口径;
|
||||
- `.doc/system-design/README.md` 与模块边界清单;
|
||||
- Git/worktree、Docker/Compose、`/ready` 和 promotion receipts 的当前可观测能力。
|
||||
@@ -2,7 +2,7 @@
|
||||
title: "Herdr Agent 角色、备援与自动审批治理"
|
||||
status: done
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-13
|
||||
updated: 2026-09-14
|
||||
owner: Codex
|
||||
branch: feature/herdr-agent-governance
|
||||
worktree: .worktrees/feature-herdr-agent-governance
|
||||
@@ -11,6 +11,8 @@ mutex: ops-governance
|
||||
|
||||
# Herdr Agent 角色、备援与自动审批治理
|
||||
|
||||
> **superseded 2026-09-14**:活文档与 `scripts/herdr-agent-*.sh` 已移除;本文件仅作历史证据。见 [2026-09-14-remove-herdr-agent-settings.md](./2026-09-14-remove-herdr-agent-settings.md)。
|
||||
|
||||
## 目标
|
||||
|
||||
建立可审计的 Herdr Agent 能力分工、额度保护、故障接管和免人工工具审批入口,并明确 Herdr PI 与产品容器 PI Agent Runner 不是同一执行体。
|
||||
@@ -47,9 +49,10 @@ mutex: ops-governance
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Agent roster: [../../ops/2026-09-13-herdr-agent-roster.md](../../ops/2026-09-13-herdr-agent-roster.md)
|
||||
- Handoff: [../../ops/handoffs/2026-09-13-herdr-agent-governance.md](../../ops/handoffs/2026-09-13-herdr-agent-governance.md)
|
||||
- Agent roster: [2026-09-13-herdr-agent-roster.md](./2026-09-13-herdr-agent-roster.md)
|
||||
- Handoff: [handoffs/2026-09-13-herdr-agent-governance.md](./handoffs/2026-09-13-herdr-agent-governance.md)
|
||||
- Test report: 本任务文“证据 / 备注”
|
||||
- 移除设定任务: [./2026-09-14-remove-herdr-agent-settings.md](./2026-09-14-remove-herdr-agent-settings.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
# Herdr Agent 角色、审批与备援 SSOT
|
||||
|
||||
> **archived / superseded 2026-09-14**:不再作为活协作规范;脚本已删除。历史证据保留本文件。移除任务见 [./2026-09-14-remove-herdr-agent-settings.md](./2026-09-14-remove-herdr-agent-settings.md)。
|
||||
|
||||
**更新**: 2026-09-13(归档标注 2026-09-14)
|
||||
**owner**: `orchestrator_codex`
|
||||
**status**: archived
|
||||
|
||||
本文只管理工程协作终端,不管理产品运行时智能体。通用分支、worktree、mutex、集成槽、密钥和破坏性操作规则仍以仓库根 [AGENTS.md](../../../AGENTS.md) 为准。
|
||||
|
||||
## 1. 身份边界
|
||||
|
||||
| 名称 | 唯一含义 | 禁止混称 |
|
||||
|------|----------|----------|
|
||||
| Herdr PI / `context_pi` | Herdr pane 内运行的 PI CLI,当前目标模型 MiniMax M3,负责工程调研与长上下文分析 | 不代表后端 runner,不作为产品 E2E 证据 |
|
||||
| 产品 PI Agent Runner | Compose/服务端调用的产品执行器;模型与验收要求见 PROJECT | 不参与 Herdr 工程任务路由 |
|
||||
|
||||
文档、提示词和 handoff 中禁止只写“PI”;必须写 `context_pi` 或“产品 PI Agent Runner”。
|
||||
|
||||
## 2. 稳定角色
|
||||
|
||||
| 逻辑名 | 客户端 / 目标模型 | 主责 | 工作量策略 | 首选备援 |
|
||||
|--------|-------------------|------|------------|----------|
|
||||
| `orchestrator_codex` | Codex / GPT Sol 5.6 | 需求澄清、系统方案、任务拆解、调度、跨模块风险、代码终审、发布判断 | 保留推理容量,原则上不承担大批量机械实现 | `context_kimi`;关键争议才用 `reserve_claude` |
|
||||
| `implementer_cursor` | Cursor / Auto | 前后端实施、测试补齐、重构、浏览器验证、按 checklist 收口 | 主力实施席,承担最大常规工作量 | `implementer_cline` → `verifier_antigravity` → `orchestrator_codex` |
|
||||
| `verifier_antigravity` | Antigravity / Gemini 3.8 Flash | 快速只读排查、测试设计、文档核对、日志归纳、低风险小修 | 低成本高频;不得单独作安全或发布终审 | `implementer_cline` → `implementer_cursor` |
|
||||
| `context_pi` | PI CLI / MiniMax M3 1M | 全仓长上下文扫描、文档/代码交叉研究、候选清单、handoff 压缩 | 长材料首选;结论由 Codex 或 reviewer 复核 | `context_kimi` → `orchestrator_codex` |
|
||||
| `context_kimi` | Kimi Code / Kimi K3 1M | PI 备援、长文档审查、跨文件一致性检查、方案反证 | 额度有限,优先作长上下文备援而非日常实现 | `context_pi` → `orchestrator_codex` |
|
||||
| `implementer_cline` | Cline / GLM 5.3 Flash | 机械实现、测试修复、格式化、重复性迁移、Cursor 备援 | CLI 已可调用;进入主路由前需完成一次隔离 worktree 写验收 | `implementer_cursor` → `verifier_antigravity` |
|
||||
| `reserve_claude` | Claude Code / Sonnet 5 | P0/P1 架构争议、安全关键复核、Codex 失败后的第二强意见 | 额度极少,禁止日常调研、批量实现和首轮测试 | `orchestrator_codex` → `context_kimi` |
|
||||
| `reserve_devin` | Devin / 尚未接入 | 预留长任务自治席 | `standby`,不得派发 | 无 |
|
||||
|
||||
模型名称来自当前工作区约定;启动脚本不猜测各 CLI 的模型别名。每次新会话由 orchestrator 在首条状态回报中确认实际模型,不一致则停止高风险任务并记录 handoff。
|
||||
|
||||
## 3. 任务泳道与自动备援顺序
|
||||
|
||||
| lane | 适用任务 | 路由顺序 |
|
||||
|------|----------|----------|
|
||||
| `governance` | 方案、拆解、跨模块决策、普通 review | Codex → Kimi → Cursor → Claude |
|
||||
| `critical-review` | 鉴权、安全、迁移、发布 blocker 终审 | Codex → Claude → Kimi |
|
||||
| `implementation` | Go/React/SQL 实施与测试 | Cursor → Cline → Antigravity → Codex |
|
||||
| `ui` | React、交互、Playwright | Cursor → Antigravity → Cline |
|
||||
| `test` | 单测、集成测试、失败定位 | Cursor → Cline → Antigravity |
|
||||
| `fast-check` | 日志、静态核对、文档一致性、小修 | Antigravity → Cline → Cursor |
|
||||
| `long-context` | 全仓/全量文档审读、证据汇总 | PI → Kimi → Codex |
|
||||
|
||||
Claude 只在 `critical-review` 中作为前排备援;其他 lane 放在最后或不进入路由,以保护额度。Codex 的实现兜底只用于阻塞交付的关键路径。
|
||||
|
||||
## 4. 自动派发和接管协议
|
||||
|
||||
1. Orchestrator 先创建 short-term、认领 mutex、建立独立 worktree;之后才启动或选择 agent。
|
||||
2. 实例必须使用上表逻辑名,且 `cwd` 必须与任务 worktree 完全相同。派发器不会占用名称不规范或其他目录的实例。
|
||||
3. 只向 `idle` / `done` 实例投递。同一 mutex 同时只允许一个执行者写入。
|
||||
4. 以下情况可自动尝试下一个备援:实例不存在、启动前已 blocked、认证失败、明确额度耗尽、客户端在写入前失败。
|
||||
5. Agent 只有在尚未写文件、未运行有副作用命令时,才可返回派发器给出的本次唯一 `HERDR_RETRY:<dispatch-id>:<reason>` 行触发降级。
|
||||
6. `timeout`、`agent_prompt_stalled`、`unknown` 或无终态标记均不能证明任务未执行;派发器必须停止,不得盲目重投。先读取 pane,必要时写 handoff。
|
||||
7. 接管前确认原实例不再 `working`;有部分改动时由原实例或 orchestrator 写 handoff,备援串行续作,不得并发覆盖。
|
||||
8. Review 可由不同 worktree 的多个只读实例并行;写任务仍受 mutex 单写者约束。
|
||||
|
||||
## 5. 自动审批不是无限授权
|
||||
|
||||
统一入口为 [`scripts/herdr-agent-start.sh`](../../scripts/herdr-agent-start.sh)。当前安装版本验证过的参数如下:
|
||||
|
||||
| profile | 自动审批参数 | 保留的边界 |
|
||||
|---------|--------------|------------|
|
||||
| Claude | `--dangerously-skip-permissions` | 仍受本规范和任务提示约束 |
|
||||
| Codex | `--ask-for-approval never --sandbox workspace-write` | 保留 workspace 沙箱;失败回传模型,不询问人工 |
|
||||
| Cursor | `--force --sandbox enabled --approve-mcps --trust` | 保留 Cursor 沙箱和显式 deny |
|
||||
| Antigravity | `--dangerously-skip-permissions --sandbox` | 保留其终端沙箱 |
|
||||
| PI | `--approve` | 信任项目本地文件;该 CLI 没有独立的逐工具审批开关 |
|
||||
| Kimi | `--auto` | Never Ask 模式 |
|
||||
| Cline | `--tui --auto-approve true` | 所有工具自动批准 |
|
||||
|
||||
即使客户端不弹确认框,Agent 也不得自行执行:删库/清空数据、强推、删除主干或 worktree、停止 Herdr server、覆盖其他 Agent 未合并改动、泄露密钥、未获用户授权的外部写入。需要新权限时写 handoff/blocker,不把确认框转交给用户逐条点击。
|
||||
|
||||
## 6. 操作入口
|
||||
|
||||
在任务 worktree 的 Herdr pane 中启动标准实例:
|
||||
|
||||
```bash
|
||||
./scripts/herdr-agent-start.sh codex orchestrator_codex <pane-id>
|
||||
./scripts/herdr-agent-start.sh cursor implementer_cursor <pane-id>
|
||||
```
|
||||
|
||||
预览某泳道路由,或自动投递:
|
||||
|
||||
```bash
|
||||
./scripts/herdr-agent-dispatch.sh --explain implementation
|
||||
./scripts/herdr-agent-dispatch.sh implementation "读取任务文并完成已认领范围,验证后写 handoff。"
|
||||
```
|
||||
|
||||
派发器只处理规范命名且已在线的实例,不擅自创建 pane、不重启 agent、不抢集成槽。缺少实例时由 orchestrator 用启动脚本补齐。
|
||||
|
||||
## 7. 当前可用性基线
|
||||
|
||||
2026-09-13 现场基线:Herdr client/server 0.9.0、协议 22;Claude/Codex/Cursor/Antigravity/PI/Kimi 集成已安装且 current;Cline CLI 3.0.61 可调用,但尚无在线标准命名实例;Devin 尚未接入。在线状态是瞬时信息,派发前必须重新运行 `herdr agent list`。
|
||||
@@ -1,61 +0,0 @@
|
||||
---
|
||||
title: "可靠事件与 FAV 集成 M2–M3"
|
||||
status: cancelled
|
||||
created: 2026-09-14
|
||||
updated: 2026-09-15
|
||||
owner: TBD
|
||||
branch: refactor/durable-event-fav-integration
|
||||
worktree: "-"
|
||||
mutex: event-delivery
|
||||
---
|
||||
|
||||
# 可靠事件与 FAV 集成 M2–M3
|
||||
> 2026-09-15:本任务把 durable event 与未审计 FAV 绑成同一关闭条件,且步骤状态已与 U8/U9 后续交付漂移。任务停止使用;持久事件由 [Track E](../../ops/short-term/2026-09-15-durable-event-track-e.md) 接续,FAV subscriber 继续走独立审计,不把本条已勾选步骤视为生产 dispatcher 验收。
|
||||
|
||||
## 目标
|
||||
|
||||
完成 U5–U9,使投影、通知、RunManifest 和最终成果在多 worker、崩溃、重放和 workspace 清理后仍可恢复且不越权。
|
||||
|
||||
## 范围
|
||||
|
||||
- opaque workspace capability、lease 和 fencing。
|
||||
- durable outbox、逐消费者 delivery/inbox、重试和 dead letter。
|
||||
- 审计并集成 `feature/final-artifact-vault` 的适用实现。
|
||||
- taskrun finalize、RunManifest 持久化、FAV coverage 和迁移 corpus。
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不盲目整分支 cherry-pick FAV。
|
||||
- 不启用跨授权图的 vault 读取。
|
||||
- 不自动销毁 dev/main 数据。
|
||||
- 不执行 U10–U12。
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 读取 M1 test report,确认继续 M2 的 go/no-go 已通过。
|
||||
2. [x] 重新分配 Goose 序号并审计 U6/FAV schema 组合。
|
||||
3. [x] 实现 U5–U6,多 app/worker 和 crash matrix 先通过。
|
||||
4. [x] 逐文件审计 FAV 分支,按 U7 边界迁移合格实现。
|
||||
5. [ ] 实现 U8,收敛 taskrun terminal finalize 与 RunManifest。
|
||||
6. [ ] 实现 U9 的 checkpoint backfill、corpus、quarantine 和 cleanup gates。
|
||||
7. [ ] 完成真实 PI、浏览器、workspace 清理、scratch recovery 和 rebuild 演练。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 多订阅者有独立 delivery,失败者不阻塞其他订阅者。
|
||||
- [ ] worker crash/retry/replay 不造成重复可见副作用。
|
||||
- [ ] workspace 清空后,verified 最终文档/回复仍可定位并校验。
|
||||
- [ ] 授权图缺失、跨项目、tombstone、坏 digest 和 stale fencing 全部拒绝。
|
||||
- [ ] clean/oldest/previous/hazard/import/reload/rollback/artifact recovery 八轨有独立证据。
|
||||
- [ ] 任何数据销毁仍需完整备份、corpus、FAV coverage 和用户批准。
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Checklist: [../checklists/2026-09-14-module-decoupling-refactor-acceptance.md](../../ops/checklists/2026-09-14-module-decoupling-refactor-acceptance.md)
|
||||
- Handoff: 实施时创建
|
||||
- Test report: 实施后按 M2、M3 分开创建
|
||||
- Plan: [../../remediation/2026-09-14-module-decoupling-refactor-plan.md](../../remediation/2026-09-14-module-decoupling-refactor-plan.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
本任务依赖 M1,不得与 M1 同时修改 docgov/docrevision 的事务主链。
|
||||
@@ -1,55 +0,0 @@
|
||||
---
|
||||
title: "模块解耦架构与重构计划修订"
|
||||
status: done
|
||||
created: 2026-09-14
|
||||
updated: 2026-09-14
|
||||
owner: Codex
|
||||
branch: feature/module-decoupling-remediation
|
||||
worktree: .worktrees/feature/module-decoupling-remediation
|
||||
mutex: architecture-docs
|
||||
---
|
||||
|
||||
# 模块解耦架构与重构计划修订
|
||||
|
||||
## 目标
|
||||
|
||||
把模块解耦方案修订为可以分段实施、验证和回滚的架构与重构计划,补齐事务、并发互斥、授权、可靠事件、FAV、数据迁移和真实页面验收。
|
||||
|
||||
## 范围
|
||||
|
||||
- 修订模块化单体架构设计与 ADR。
|
||||
- 新增详细整改与重构计划。
|
||||
- 建立首个文档可靠性纵向试点及后续里程碑任务。
|
||||
- 更新 CURRENT、FEATURE-MATRIX 和相关索引。
|
||||
|
||||
## 非目标
|
||||
|
||||
- 本任务不修改业务代码、数据库迁移或部署配置。
|
||||
- 本任务不合并 `feature/final-artifact-vault`,只定义其集成依赖和边界。
|
||||
- 本任务不执行共享容器验证,也不占用集成槽位。
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 对照当前源码、已接受 ADR、FAV 分支和外部权威资料复核原方案。
|
||||
2. [x] 修订架构设计与 ADR。
|
||||
3. [x] 编写详细整改计划、里程碑任务和验收清单。
|
||||
4. [x] 更新协作 SSOT 与索引并完成文档一致性检查。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 计划明确事务所有权、锁顺序、事件投递语义、授权主体和恢复边界。
|
||||
- [x] 首个独立交付边界直接覆盖受控文档刷新、重启、投影缺失和授权负例。
|
||||
- [x] 每个后续里程碑有依赖、文件范围、并发风险、测试矩阵、停走门和回滚边界。
|
||||
- [x] FAV、迁移语料库和完整备份的职责不重叠,工作区不再承担最终成果事实源。
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Checklist: [../../ops/checklists/2026-09-14-module-decoupling-refactor-acceptance.md](../../ops/checklists/2026-09-14-module-decoupling-refactor-acceptance.md)
|
||||
- Handoff: 不需要;实现阶段使用两个 planned short-term 接续
|
||||
- Test report: 本任务仅产出计划,不生成业务验收报告
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- 原方案位于主工作区未跟踪文件;本任务在独立 worktree 重建并修订,未覆盖原工作区。
|
||||
- `feature/final-artifact-vault` 已有实现与测试证据,但尚未合入本任务基线,实施前必须重新审计分支差异。
|
||||
- 文档校验:本地相对链接、R/KTD/U ID 唯一性、Mermaid fence 和 `git diff --check` 均通过。
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: "移除 Herdr 工作与角色设定"
|
||||
status: done
|
||||
created: 2026-09-14
|
||||
updated: 2026-09-14
|
||||
owner: Cursor-Auto
|
||||
branch: feature/remove-herdr-agent-settings
|
||||
worktree: "-"
|
||||
mutex: agent-collab-docs
|
||||
---
|
||||
|
||||
# 移除 Herdr 工作与角色设定
|
||||
|
||||
## 目标
|
||||
|
||||
从仓库活文档与脚本中移除 Herdr Agent 角色、审批、备援与派发设定,协作规范回到通用 AGENTS / worktree / mutex 流程。
|
||||
|
||||
## 范围
|
||||
|
||||
- 删除 `scripts/herdr-agent-start.sh`、`scripts/herdr-agent-dispatch.sh`
|
||||
- 归档 roster / 相关 handoff
|
||||
- 从 `AGENTS.md`、`PROJECT.md`、`.doc/README.md` 去掉 Herdr 专章与索引
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不改写历史 audit / remediation / 已归档任务中的执行者名(如 `implementer_cursor`)作为证据
|
||||
- 不卸载本机 Herdr 客户端
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 从 `dev` 开 `feature/remove-herdr-agent-settings` 并认领
|
||||
2. [x] 移除活文档与脚本中的 Herdr 设定
|
||||
3. [x] 归档 roster / handoff 并更新 CURRENT
|
||||
4. [x] 提交
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 活文档与 `scripts/` 无 Herdr 角色/派发入口
|
||||
- [x] 历史证据在 `archive/` 可追溯
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Roster(已归档): [./2026-09-13-herdr-agent-roster.md](./2026-09-13-herdr-agent-roster.md)
|
||||
- 既有治理归档: [./2026-09-13-herdr-agent-governance.md](./2026-09-13-herdr-agent-governance.md)
|
||||
- Handoff(已归档): [./handoffs/2026-09-13-herdr-agent-governance.md](./handoffs/2026-09-13-herdr-agent-governance.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- 删除:`scripts/herdr-agent-start.sh`、`scripts/herdr-agent-dispatch.sh`
|
||||
- 文档:去掉 `AGENTS.md` §6.6、`PROJECT.md` §10 Herdr 章与索引行、`.doc/README.md` roster 入口
|
||||
- 归档:roster + handoff → `.doc/archive/ops/`
|
||||
@@ -1,63 +0,0 @@
|
||||
---
|
||||
title: "M5/M6 组合根与传输门禁 U11–U12"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: feature/app-composition-u11-u12
|
||||
worktree: "-"
|
||||
mutex: app
|
||||
---
|
||||
|
||||
# M5/M6 组合根与传输门禁 U11–U12
|
||||
|
||||
## 目标
|
||||
|
||||
按整改计划四个子切片完成组合根、文档通知闭包迁出、stageflow 用例、UserProjectContext CAS;再收口 SSE 编码与已清零规则的 arch-check block。用户已明确授权继续 U11/U12(推翻 U10 报告的停止扩面)。
|
||||
|
||||
## 范围
|
||||
|
||||
- U11a:`internal/app` 唯一 composition root;幂等 Start/Stop
|
||||
- U11b:文档 `OnOutbox` 通知迁到 `internal/app/docnotify`
|
||||
- U11c:`internal/app/stageflow` 拥有 ExecuteTask / ExecuteStage
|
||||
- U11d:`ContextUpdate` 版本 CAS,禁止跨模块字段级直改
|
||||
- U12:SSE 中性 frame 编码;`import`/`event` 转 block;不改错误信封与 PI Runner 协议
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不碰 `intent` 包行为(编码阶段 mutex 仍由 Codex 占用;合入后浏览器门另开 handoff)
|
||||
- 不整支 merge `feature/final-artifact-vault`;不启用 `FAV_DEGRADED_READ`
|
||||
- 不终止或改写项目 143
|
||||
- 不删除未到期的 sql_write/path 例外(U3/U5 残留)
|
||||
- 不在 worktree 内 `env-service`
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 认领 CURRENT + 本任务
|
||||
2. [x] U11a composition root
|
||||
3. [x] U11b docnotify
|
||||
4. [x] U11c stageflow
|
||||
5. [x] U11d ContextUpdate
|
||||
6. [x] U12 SSE + arch-check block_kinds
|
||||
7. [x] 短测 / 目标包 race / 报告
|
||||
8. [x] 占槽 `--no-ff` 合入 `dev` + 主仓 `dev rebuild`
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 重复 Start 不重复注册 subscriber;Stop 后再 Start worker 仍在
|
||||
- [x] server 生产代码不再赋值 `OnOutbox`
|
||||
- [x] HTTP 与 CLI 走同一 stageflow 用例
|
||||
- [x] ContextUpdate 并发 stale version 不丢更新赢家
|
||||
- [x] `arch-check --mode block` 对已清零的 import/event 通过
|
||||
- [x] 测试报告回链 U11/U12
|
||||
- [x] 合入后 `/health` `/ready` schema 38、`pi-agent`、新镜像 digest
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Checklist: [../../ops/checklists/2026-09-14-module-decoupling-refactor-acceptance.md](../../ops/checklists/2026-09-14-module-decoupling-refactor-acceptance.md)
|
||||
- Plan: [../../remediation/2026-09-14-module-decoupling-refactor-plan.md](../../remediation/2026-09-14-module-decoupling-refactor-plan.md)
|
||||
- Test report: [../../test-reports/2026-09-15-app-composition-u11-u12-test-report.md](../../test-reports/2026-09-15-app-composition-u11-u12-test-report.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
用户口头授权:「继续解耦到 U11、U12」。合入 `dev@bf59cce`。rebuild 镜像 `sha256:a8e3e940f01111c4298c67947ae9f4cd6105f13cf58134672f4a87daa19e27ab`。health/ready:`.doc/test-reports/assets/2026-09-15-app-composition-u11-u12/rebuild-health-ready.txt`。
|
||||
@@ -1,45 +0,0 @@
|
||||
---
|
||||
title: "D4 bizdev locator 最终移除"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: fix/bizdev-locator-removal
|
||||
worktree: "-"
|
||||
mutex: bizdev
|
||||
---
|
||||
|
||||
# D4 bizdev locator 最终移除
|
||||
|
||||
## 目标
|
||||
|
||||
删除 bizdev 上 8 个 locator getter;组合根一次性 Snapshot 后由 Runtime/Server 持有端口。
|
||||
|
||||
## 范围
|
||||
|
||||
- `Pool` `DocGov` `DocRevision` `ContextManager` `CAS` `ProjectWorkflow` `FreeformDoc` `KB`
|
||||
- Runtime / Server 字段
|
||||
- archtest 禁止把 getter 加回去
|
||||
- 调用方迁移
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不删 SchemaVersion / DatabaseReady
|
||||
- 不切事件 live
|
||||
- 不实现 Track P
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] Snapshot + Runtime 端口
|
||||
2. [x] 迁移 server/cmd/tests
|
||||
3. [x] 同批删除 8 getter
|
||||
4. [x] 报告合入
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 生产无 8 个 getter
|
||||
- [x] [S1 报告](../../test-reports/2026-09-15-bizdev-locator-removal-test-report.md)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Phase 2 D4
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
title: "D7b chat 编排剩余批次"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: fix/chatflow-orchestration-boundary
|
||||
worktree: "-"
|
||||
mutex: chat
|
||||
---
|
||||
|
||||
# D7b chat 编排剩余批次
|
||||
|
||||
## 目标
|
||||
|
||||
`internal/chat` 生产代码不再 import bizdev;任务请求走 stageflow 类型别名。
|
||||
|
||||
## 范围
|
||||
|
||||
- action_executor 去掉 Bizdev 字段
|
||||
- 收紧 chat import allowlist
|
||||
- 表征测试保留
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不搬空测试 import
|
||||
- 不把 taskrun 签名从 bizdev 别名拷成独立结构
|
||||
- 不切事件 live
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] action_executor 改 stageflow 类型
|
||||
2. [x] 收紧 yaml
|
||||
3. [x] 报告合入
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] chat 生产无 bizdev import
|
||||
- [x] [S4b 报告](../../test-reports/2026-09-15-chatflow-orchestration-boundary-test-report.md)
|
||||
@@ -1,59 +0,0 @@
|
||||
---
|
||||
title: "U10 chatlog/contextasm 原地端口化"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: feature/chatlog-contextasm-u10
|
||||
worktree: "-"
|
||||
mutex: chat
|
||||
---
|
||||
|
||||
# U10 chatlog/contextasm 原地端口化
|
||||
|
||||
## 目标
|
||||
|
||||
在不物理拆包的前提下,为对话读取与 prompt 装配建立带 Principal 的消费者端口,使正文、分类、计数、导出、摘要和恢复使用同一授权可见集合。
|
||||
|
||||
## 范围
|
||||
|
||||
- `internal/app/chatflow` ChatLog / ContextAssembler 端口
|
||||
- ctxmgr 表所有权不变;adapter 内做可见性过滤
|
||||
- server 历史读取 handler 改走 ChatLog;忽略 query/body 中的 user_id 身份
|
||||
- 会话 restore / 记忆召回只注入允许集合
|
||||
- 不碰 `intent` mutex,不物理搬到 `chatlog`/`contextasm` 包
|
||||
|
||||
## 非目标
|
||||
|
||||
- U11–U12
|
||||
- 整支 merge `feature/final-artifact-vault`
|
||||
- 启用 `FAV_DEGRADED_READ`
|
||||
- 纯搬包
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 核实 `chat` mutex:`fix/chat-history-refresh` 已是 `dev` 祖先;剩余真实 PI 刷新与 U10 同批收口
|
||||
2. [x] 从最新 `dev` 开 `feature/chatlog-contextasm-u10` 并登记 CURRENT
|
||||
3. [x] 定义 chatflow 端口与 ctxmgr adapter
|
||||
4. [x] 迁移 window/day/stats/search/unread/export/digest/history/restore/memory
|
||||
5. [x] 合同测试:同集计数、非 owner 403、restore/digest 不放大不可见消息
|
||||
6. [x] 验收报告;最后一句 **停止扩面**
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 刷新前后同一授权集合的正文与分类计数一致(adapter 合同测试)
|
||||
- [x] 跨用户负例 fail closed(guest 非 owner)
|
||||
- [x] context assembly / digest 只使用允许集合
|
||||
- [x] 真实 PI 闲聊刷新 E2E 证据(与对话刷新活验同批;编制任务链 save 400 未纳入停走)
|
||||
- [x] 未物理拆包;DTO 转换为 0,拆包收益不成立
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Checklist: [../checklists/2026-09-14-module-decoupling-refactor-acceptance.md](../checklists/2026-09-14-module-decoupling-refactor-acceptance.md)
|
||||
- Plan: [../../remediation/2026-09-14-module-decoupling-refactor-plan.md](../../remediation/2026-09-14-module-decoupling-refactor-plan.md)
|
||||
- Chat refresh: [../../test-reports/2026-09-13-chat-history-refresh-test-report.md](../../test-reports/2026-09-13-chat-history-refresh-test-report.md)
|
||||
- Test report: [../../test-reports/2026-09-15-chatlog-contextasm-u10-test-report.md](../../test-reports/2026-09-15-chatlog-contextasm-u10-test-report.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
U9 最后一句 **继续 U10** 只批准进入 M4。禁止 U11–U12。`intent` 认领仍 `in_progress`,本单元不改意图分类。活验项目 6252 / `sess-p6252-u10`;产物 `.doc/test-reports/assets/2026-09-15-chat-history-refresh-live/live.json`。未占槽 rebuild。
|
||||
@@ -1,59 +0,0 @@
|
||||
---
|
||||
title: "M3 U9 存量回填、migration corpus 与数据生命周期"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: feature/dataset-lifecycle-u9
|
||||
worktree: "-"
|
||||
mutex: dataset
|
||||
---
|
||||
|
||||
# M3 U9 存量回填、migration corpus 与数据生命周期
|
||||
|
||||
## 目标
|
||||
|
||||
只保留可解释的演示/回归数据,并持续验证旧数据迁移、重载和受控恢复。backfill 可暂停续跑,异常进 quarantine;八条轨道可重复;销毁默认 fail closed。
|
||||
|
||||
## 范围
|
||||
|
||||
- dataset registry(pinned / demo / regression / migration_baseline / ephemeral / quarantine)
|
||||
- checkpoint 分批 backfill:只枚举 snapshot、approved/commit event、completed chat turn
|
||||
- SKIP LOCKED 多 worker;禁止扫描 workspace
|
||||
- 销毁门禁:FAV coverage + 完整备份 restore + corpus + 精确 manifest + 双人批准 + quarantine 观察窗
|
||||
- restore 拒绝共享 env DSN;只允许 scratch
|
||||
- 八轨:clean / oldest-supported / previous / hazard / import / reload / rollback / artifact recovery
|
||||
|
||||
## 非目标
|
||||
|
||||
- U10–U12;不碰 `chat` / `intent` mutex
|
||||
- 不整支 merge `feature/final-artifact-vault`;不启用 `FAV_DEGRADED_READ`
|
||||
- 不修改历史 Goose;不销毁 `agent_system_dev/test/main`
|
||||
- 不终止或改写项目 143;worktree 内禁止 `env-service`
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] CURRENT 认领 `mutex=dataset`;从 `dev` 开 `feature/dataset-lifecycle-u9`
|
||||
2. [x] Goose 00038 + `module-boundaries.yaml`
|
||||
3. [x] `internal/artifactvault/backfill.go` + `internal/dataset` + `cmd/dataset`
|
||||
4. [x] 硬化 `scripts/restore-system-db-drill.sh`
|
||||
5. [x] 隔离库 + 八轨 + 目标包 `-race` + 占槽 rebuild
|
||||
6. [x] 验收报告;最后一句 **继续 U10**
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] backfill 中断、重复、并发新终态时分母/分子可复算且不重复 artifact
|
||||
- [x] legacy-v0 / 旧 schema / 高 ID / projection fork / 缺 snapshot → quarantine 或升级
|
||||
- [x] restore 拒绝共享 DSN、错误 storage identity、篡改 manifest、缺权限
|
||||
- [x] coverage / backup / corpus 任一失败阻止 destroy
|
||||
- [x] 批准 dataset 导入后关系、SHA、sequence 可复算
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Checklist: `.doc/ops/checklists/2026-09-14-module-decoupling-refactor-acceptance.md`
|
||||
- Plan: `.doc/remediation/2026-09-14-module-decoupling-refactor-plan.md` U9
|
||||
- Test report: `.doc/test-reports/2026-09-15-dataset-lifecycle-u9-test-report.md`
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
见验收报告。Goose 00038。dev schema 38。
|
||||
@@ -1,46 +0,0 @@
|
||||
---
|
||||
title: "D6 doccontent canonical 边界"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: fix/doccontent-canonical-boundary
|
||||
worktree: "-"
|
||||
mutex: docgov
|
||||
---
|
||||
|
||||
# D6 doccontent canonical 边界
|
||||
|
||||
## 目标
|
||||
|
||||
Markdown canonicalization 与 SHA 抽到 `internal/doccontent`;生产 `docgov` 不再 import `docrevision`。
|
||||
|
||||
## 范围
|
||||
|
||||
- `internal/doccontent`
|
||||
- `docgov/lease.go` 改走 doccontent
|
||||
- `docrevision` 薄封装保持旧调用方
|
||||
- golden + wrapper 对账
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不改 hash 语义
|
||||
- 不碰项目 143 数据
|
||||
- 不删 `docrevision.CanonicalizeMarkdown` 导出(兼容)
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 分支与 CURRENT
|
||||
2. [x] 提取模块与切断 docgov→docrevision
|
||||
3. [x] golden / arch-check
|
||||
4. [x] 报告并合入
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 生产 docgov 不 import docrevision
|
||||
- [x] project143 hard-break golden 仍过
|
||||
- [x] [S3 报告](../../test-reports/2026-09-15-doccontent-canonical-boundary-test-report.md)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Phase 2: [../../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md](../../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md)
|
||||
@@ -1,53 +0,0 @@
|
||||
---
|
||||
title: "Track E 持久事件交付"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: fix/event-e2-hook-guard
|
||||
worktree: "-"
|
||||
mutex: events
|
||||
---
|
||||
|
||||
# Track E 持久事件交付
|
||||
|
||||
## 目标
|
||||
|
||||
按 E0A→E0B→E1A→E1B→E1C 完成 notify、workflow advance、projection 的 PG 持久交付,并用授权页面刷新/重启恢复证据关闭 `DOC-RELIABILITY-PILOT` 的事件部分。
|
||||
|
||||
## 范围
|
||||
|
||||
- E0A:生产入口/UoW、event contract、runtime registry、历史数据与 sequence 门。
|
||||
- E0B:PG dispatcher、attempt audit、独立进程、并发与故障注入。
|
||||
- E1A/B/C:三个消费者独立 shadow、switch、rollback 和真实恢复验收。
|
||||
|
||||
## 非目标
|
||||
|
||||
- FAV consumer 激活、bizdev/chat/intent 结构重构、HTTP 错误信封、PI typed result。
|
||||
- 删除或覆盖历史事件;在 E0A 通过前启动 dispatcher。
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] E0A 单独建 short-term/分支,dispatcher 保持 off。
|
||||
2. [x] E0A 报告通过后再认领 E0B。
|
||||
3. [x] 依次交付 E1A notify、E1B workflow advance、E1C projection;每步独立 go/no-go。
|
||||
4. [x] E2 兼容守卫:live 时闭包停写;hook API 待 live 窗口后删除。
|
||||
5. [x] 同步 test report、CURRENT、FEATURE-MATRIX、gap-matrix、[复盘](../research/2026-09-15-track-e-retrospective.md)。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 满足 [Phase 2 Track E Definition of Done](../../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md#track-e-definition-of-done)(共享 live 与删除 hook API 仍开放)。
|
||||
- [x] 每个波次拥有独立 owner、mutex、分支、报告和回滚证据。
|
||||
- [x] 未把计划、MemoryBus、stub 或日志冒充生产 PG/browser/restart 验收。
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Checklist: 按每个波次建立
|
||||
- Audit: [Phase 2 方案审阅](../../audit/2026-09-15-module-decoupling-phase2-plan-review.md)
|
||||
- Remediation: [Phase 2 修订计划](../../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md)
|
||||
- Test report: [E2](../../test-reports/2026-09-15-event-e2-hook-guard-test-report.md)
|
||||
- 复盘: [./research/2026-09-15-track-e-retrospective.md](../research/2026-09-15-track-e-retrospective.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
本条只建立执行入口,不代表已批准 E0A 或已认领 mutex。实施前必须按 CURRENT 检查冲突并从当时最新 dev 建分支。
|
||||
@@ -1,49 +0,0 @@
|
||||
---
|
||||
title: "E0A 事件生产、契约与历史数据门"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: fix/event-production-scope-contract
|
||||
worktree: "-"
|
||||
mutex: events
|
||||
---
|
||||
|
||||
# E0A 事件生产、契约与历史数据门
|
||||
|
||||
## 目标
|
||||
|
||||
组合根注入唯一 `docflow.Commands`;candidate-ready、downstream-impact、approved 三条链在同一 UoW 写 envelope/delivery;缺 env/project fail closed;FAV 不写入;allowlist 与 runtime registry parity;历史 inventory 分类且不删数据;dispatcher 保持 off。
|
||||
|
||||
## 范围
|
||||
|
||||
- D3 生产入口与作用域
|
||||
- D10 既有 event allowlist 补全与 registry parity
|
||||
- D11 inventory、sequence ADR、repair/quarantine/expire、replay 骨架、service principal 表
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不实现/启动 PG dispatcher
|
||||
- 不激活 FAV,不写 staging/artifact/publication
|
||||
- 不删除历史事件
|
||||
- 不开始 Track S/P
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 从最新 `dev` 开 `fix/event-production-scope-contract` 并登记 CURRENT
|
||||
2. [x] 唯一 Commands、三条链同 UoW、FAV 隔离
|
||||
3. [x] allowlist + registry parity + 动态 FAV 注册失败
|
||||
4. [x] inventory/repair/replay/principal additive schema 与用例
|
||||
5. [x] 连续性模型 ADR;gap blocking 关闭
|
||||
6. [x] 隔离库 PG 证据与 test-report
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 见 [E0A 测试报告](../../test-reports/2026-09-15-event-e0a-production-scope-contract-test-report.md)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Remediation: [../../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md](../../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md)
|
||||
- Track E: [./2026-09-15-durable-event-track-e.md](./2026-09-15-durable-event-track-e.md)
|
||||
- Report: [../../test-reports/2026-09-15-event-e0a-production-scope-contract-test-report.md](../../test-reports/2026-09-15-event-e0a-production-scope-contract-test-report.md)
|
||||
- ADR: [../../adr/2026-09-15-event-consumer-checkpoint.md](../../adr/2026-09-15-event-consumer-checkpoint.md)
|
||||
@@ -1,43 +0,0 @@
|
||||
---
|
||||
title: "E0B PG dispatcher 基座"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: feature/events-dispatcher-pg
|
||||
worktree: "-"
|
||||
mutex: events
|
||||
---
|
||||
|
||||
# E0B PG dispatcher 基座
|
||||
|
||||
## 目标
|
||||
|
||||
原子 lease/attempt/heartbeat/fencing、独立 `cmd/events`、默认 mode=off、1/2/4 worker 与崩溃注入。
|
||||
|
||||
## 范围
|
||||
|
||||
- Goose 00040、ClaimLeases、cmd/events、compose events 服务
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不把任何 consumer 切 live
|
||||
- 不激活 FAV
|
||||
- 不删除历史
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 从 E0A 后 `dev` 开 `feature/events-dispatcher-pg`
|
||||
2. [x] additive schema + atomic claim
|
||||
3. [x] worker/heartbeat/fencing/shadow scan
|
||||
4. [x] cmd/events + compose
|
||||
5. [x] 隔离库 PG + race + 报告
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] [E0B 测试报告](../../test-reports/2026-09-15-event-e0b-dispatcher-pg-test-report.md)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Track E: [./2026-09-15-durable-event-track-e.md](./2026-09-15-durable-event-track-e.md)
|
||||
- Report: [../../test-reports/2026-09-15-event-e0b-dispatcher-pg-test-report.md](../../test-reports/2026-09-15-event-e0b-dispatcher-pg-test-report.md)
|
||||
@@ -1,48 +0,0 @@
|
||||
---
|
||||
title: "E1A notify shadow 与切换"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: fix/event-notify-cutover
|
||||
worktree: "-"
|
||||
mutex: events
|
||||
---
|
||||
|
||||
# E1A notify shadow 与切换
|
||||
|
||||
## 目标
|
||||
|
||||
notify 消费者具备 shadow 覆盖门、live 唯一可见结果与显式 rollback;生产集群保持 off。
|
||||
|
||||
## 范围
|
||||
|
||||
- Goose 00041、`EmitVisibleDocumentEvent`、`docnotify.EventConsumer`、Handler 与 Ack 同事务
|
||||
- cmd/events 注册 notify(mode=off 时不 claim)
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不把共享环境 notify 切 live
|
||||
- 不删除 OnOutbox 闭包
|
||||
- 不激活 FAV / workflow advance / projection live
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 从 E0B 后 `dev` 开 `fix/event-notify-cutover`
|
||||
2. [x] additive `source_event_id` 与可见结果唯一索引
|
||||
3. [x] shadow dry-run + live 同事务 ack
|
||||
4. [x] fixture N=30、quarantine、correlation、rollback
|
||||
5. [x] 隔离库 PG + race + 报告
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] [E1A 测试报告](../../test-reports/2026-09-15-event-e1a-notify-cutover-test-report.md)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Track E: [./2026-09-15-durable-event-track-e.md](./2026-09-15-durable-event-track-e.md)
|
||||
- Report: [../../test-reports/2026-09-15-event-e1a-notify-cutover-test-report.md](../../test-reports/2026-09-15-event-e1a-notify-cutover-test-report.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
隔离库 `agent_rel_e1a` 测完已 DROP。共享 `event_consumer_modes.notify=off`。
|
||||
@@ -1,44 +0,0 @@
|
||||
---
|
||||
title: "E1B workflow advance shadow 与切换"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: fix/event-workflow-advance
|
||||
worktree: "-"
|
||||
mutex: events
|
||||
---
|
||||
|
||||
# E1B workflow advance shadow 与切换
|
||||
|
||||
## 目标
|
||||
|
||||
workflow_advance 具备 shadow/live/rollback;并发或重放批准只产生一次阶段可推进可见结果。生产集群保持 off。
|
||||
|
||||
## 范围
|
||||
|
||||
- Goose 00042、`docadvance.EventConsumer`、`EmitVisibleStageReady`、MarkDocTaskApproved 走 fenced tx
|
||||
- cmd/events 注册 workflow_advance
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不把共享环境 workflow_advance 切 live
|
||||
- 不删除 AddOnApprovedHook
|
||||
- 不激活 FAV / projection live
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 从 E1A 后 `dev` 开 `fix/event-workflow-advance`
|
||||
2. [x] additive source_event_id on stage_advance_requests
|
||||
3. [x] consumer 重读文档并同事务 ack
|
||||
4. [x] 隔离库并发/重放/quarantine/rollback
|
||||
5. [x] 报告
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] [E1B 测试报告](../../test-reports/2026-09-15-event-e1b-workflow-advance-test-report.md)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Track E: [./2026-09-15-durable-event-track-e.md](./2026-09-15-durable-event-track-e.md)
|
||||
- Report: [../../test-reports/2026-09-15-event-e1b-workflow-advance-test-report.md](../../test-reports/2026-09-15-event-e1b-workflow-advance-test-report.md)
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
title: "E1C projection no-replace"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: fix/event-projection-cutover
|
||||
worktree: "-"
|
||||
mutex: events
|
||||
---
|
||||
|
||||
# E1C projection no-replace
|
||||
|
||||
## 目标
|
||||
|
||||
projection 消费者幂等只前进;共享集群保持 off。
|
||||
|
||||
## 范围
|
||||
|
||||
- Goose 00043、ProjectHeadNoReplace、docproject.EventConsumer
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不把共享 projection 切 live
|
||||
- 不激活 FAV
|
||||
- 不删除闭包
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 分支与 additive schema
|
||||
2. [x] no-replace SQL + consumer
|
||||
3. [x] 隔离库 + race + worker 重启
|
||||
4. [x] 报告
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] [E1C 测试报告](../../test-reports/2026-09-15-event-e1c-projection-test-report.md)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Track E: [./2026-09-15-durable-event-track-e.md](./2026-09-15-durable-event-track-e.md)
|
||||
@@ -1,48 +0,0 @@
|
||||
---
|
||||
title: "E2 闭包 live 停写与 Track E 复盘"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: fix/event-e2-hook-guard
|
||||
worktree: "-"
|
||||
mutex: events
|
||||
---
|
||||
|
||||
# E2 闭包 live 停写与 Track E 复盘
|
||||
|
||||
## 目标
|
||||
|
||||
在 dispatcher 仍默认 off 时保留 `OnOutbox` / `AddOnApprovedHook` 接线,使对应消费者切 `live` 后闭包立即停写,避免双写;并写 Track E 复盘。不关闭 `DOC-RELIABILITY-PILOT`。
|
||||
|
||||
## 范围
|
||||
|
||||
- `events.WriterLive`
|
||||
- `docnotify.Subscriber.SkipWrite`
|
||||
- Runtime / 遗留 HTTP hook 在 `workflow_advance` live 时 no-op
|
||||
- 复盘与 E2 测试报告
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不删除 hook API(须等 live 发布窗口)
|
||||
- 不把共享 notify/advance/projection 切 live
|
||||
- 不激活 FAV
|
||||
- 不关闭 Track E 发布 blocker
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 从最新 `dev` 开 `fix/event-e2-hook-guard` 并登记 CURRENT
|
||||
2. [x] WriterLive + 闭包守卫 + 单测
|
||||
3. [x] 隔离库 mode 矩阵
|
||||
4. [x] 复盘与报告
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] live 时闭包不写;off/shadow 仍写
|
||||
- [x] 生产仍保留 Bind / AddOnApprovedHook(mode=off 必需)
|
||||
- [x] [E2 报告](../../test-reports/2026-09-15-event-e2-hook-guard-test-report.md)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Track E: [./2026-09-15-durable-event-track-e.md](./2026-09-15-durable-event-track-e.md)
|
||||
- 复盘: [../research/2026-09-15-track-e-retrospective.md](../research/2026-09-15-track-e-retrospective.md)
|
||||
@@ -1,54 +0,0 @@
|
||||
---
|
||||
title: "共享环境事件消费者 live 切换"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: feature/event-shared-live-cutover
|
||||
worktree: "-"
|
||||
mutex: events
|
||||
---
|
||||
|
||||
# 共享环境事件消费者 live 切换
|
||||
|
||||
## 目标
|
||||
|
||||
在共享 `agent-dev` 上按 notify → workflow_advance → projection 完成 shadow → drain → live → 回滚演练,再删除生产 hook 注册。
|
||||
|
||||
## 范围
|
||||
|
||||
- `scripts/event-consumer-mode.sh` + `cmd/eventmode`
|
||||
- 共享 `agent_system_dev` inventory / quarantine
|
||||
- 逐消费者 live 与授权页纵切(项目 6275;143 只读)
|
||||
|
||||
## 非目标
|
||||
|
||||
- FAV live
|
||||
- test/main 环境
|
||||
- 编辑 Phase 2 计划原文
|
||||
- Track P(独立波次)
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] L0 受控 SetMode 与 inventory
|
||||
2. [x] L1 notify
|
||||
3. [x] L2 workflow_advance
|
||||
4. [x] L3 projection + 授权页
|
||||
5. [x] L4 删除生产 hook 注册
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] fav / test / main 切模式失败
|
||||
- [x] 每消费者独立 live 报告
|
||||
- [x] 生产代码无 `OnOutbox =` / `AddOnApprovedHook(`
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Long-term: [.doc/archive/ops/2026-09-15-event-shared-live-cutover.md](../../archive/ops/2026-09-15-event-shared-live-cutover.md)
|
||||
- Notify: [.doc/test-reports/2026-09-15-event-notify-shared-live-test-report.md](../../test-reports/2026-09-15-event-notify-shared-live-test-report.md)
|
||||
- Advance: [.doc/test-reports/2026-09-15-event-workflow-advance-shared-live-test-report.md](../../test-reports/2026-09-15-event-workflow-advance-shared-live-test-report.md)
|
||||
- Projection: [.doc/test-reports/2026-09-15-event-projection-shared-live-test-report.md](../../test-reports/2026-09-15-event-projection-shared-live-test-report.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
已合入 `dev@39dc68d`。生产 hook 注册已删;方法本体保留一个窗口。
|
||||
@@ -1,34 +0,0 @@
|
||||
---
|
||||
title: "共享环境事件消费者 live 切换"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
---
|
||||
|
||||
# 共享环境事件消费者 live 切换
|
||||
|
||||
## 动机
|
||||
|
||||
Track E 已在隔离库证明 notify / workflow_advance / projection 的 exactly-one visible outcome 与 E2 闭包守卫。共享集群仍为 `off`,HTTP 闭包仍是唯一真实写者。未 live 则不能删 hook API,也不能关闭 `DOC-RELIABILITY-PILOT`。
|
||||
|
||||
## 成功标准
|
||||
|
||||
- 按消费者独立:shadow coverage → drain → 原子 live;E2 守卫使对应闭包停写。
|
||||
- 授权页刷新/重启正文与 head digest 一致;未授权不泄露。
|
||||
- 回滚开关保留一个发布窗口后再删 `OnOutbox` / `AddOnApprovedHook`。
|
||||
- FAV 保持 disabled;项目 143 只读。
|
||||
|
||||
## 依赖
|
||||
|
||||
- E0A–E2 已合入;隔离库报告已归档。
|
||||
- 需要明确授权:动共享 `agent-dev` 消费者 mode。
|
||||
|
||||
## 暂不启动原因
|
||||
|
||||
已完成共享 live 与生产去注册。方法本体保留一个窗口。
|
||||
|
||||
## 相关链接
|
||||
|
||||
- [Track E 复盘](../research/2026-09-15-track-e-retrospective.md)
|
||||
- [E2 报告](../../test-reports/2026-09-15-event-e2-hook-guard-test-report.md)
|
||||
- [gap-matrix DOC-RELIABILITY-PILOT](../../remediation/gap-matrix.md)
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
title: "D7a intent 与 bizdev 解绑"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: fix/intent-bizdev-boundary
|
||||
worktree: "-"
|
||||
mutex: intent
|
||||
---
|
||||
|
||||
# D7a intent 与 bizdev 解绑
|
||||
|
||||
## 目标
|
||||
|
||||
intent 只依赖成熟度词汇叶子包,不再 import bizdev。
|
||||
|
||||
## 范围
|
||||
|
||||
- `internal/maturity`
|
||||
- intent 生产与表征测试
|
||||
- bizdev 类型别名保持兼容
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不改识别规则
|
||||
- 不迁 coordinator / chatflow(D5/D7b)
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 叶子包与别名
|
||||
2. [x] intent 切断 bizdev
|
||||
3. [x] 表征测试与 arch-check
|
||||
4. [x] 报告
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] intent 生产 import 无 bizdev
|
||||
- [x] [S4a 报告](../../test-reports/2026-09-15-intent-bizdev-boundary-test-report.md)
|
||||
@@ -1,50 +0,0 @@
|
||||
---
|
||||
title: "清点旁支并收口已合入本地分支"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: chore/leftover-branch-cleanup
|
||||
worktree: "-"
|
||||
mutex: ops
|
||||
---
|
||||
|
||||
# 清点旁支并收口已合入本地分支
|
||||
|
||||
## 目标
|
||||
|
||||
删除 tip 已是 `dev` 祖先的本地旁支与对应 worktree;不整支合入会回归或触红线的 5 条未合并分支;主仓跑一次 short 冒烟。
|
||||
|
||||
## 范围
|
||||
|
||||
- 拆 7 个已合入 worktree
|
||||
- `git branch -d` 已 `--merged` 旁支
|
||||
- CURRENT 记录故意保留的 FAV / herdr-removal / diagnosis / data-root / `dev-old-linear`
|
||||
- vet / short / arch-check / health+ready
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不整支 merge `feature/final-artifact-vault`;不启用 `FAV_DEGRADED_READ`
|
||||
- 不合入 `feature/remove-herdr-agent-settings`(会回归 U12 arch-check、删 Herdr 脚本)
|
||||
- 不合入 `fix/project143-controlled-content-404-diagnosis`(会回退审计关闭结果)
|
||||
- 不合入 `fix/dev-runtime-data-root-guard`、`dev-old-linear`
|
||||
- 不 push;不删 `origin/*`;不从 worktree 起 docker;不碰项目 143
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 占 CURRENT 集成槽
|
||||
2. [x] 拆已合入 worktree
|
||||
3. [x] 删除已 merged 本地旁支
|
||||
4. [x] 冒烟并写报告
|
||||
5. [x] 槽位 idle + archive
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 已合入旁支 worktree 只剩 FAV 错名目录
|
||||
- [x] `--merged dev` 旁支已删(31 条)
|
||||
- [x] 5 条未合入分支仍在
|
||||
- [x] 测试报告 + health/ready schema 38
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Test report: [../../test-reports/2026-09-15-leftover-branch-cleanup-test-report.md](../../test-reports/2026-09-15-leftover-branch-cleanup-test-report.md)
|
||||
@@ -1,57 +0,0 @@
|
||||
---
|
||||
title: "审阅并修订模块解耦 Phase 2 方案"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Codex
|
||||
branch: docs/module-decoupling-ipc-assessment
|
||||
worktree: "-"
|
||||
mutex: architecture-docs
|
||||
---
|
||||
|
||||
# 审阅并修订模块解耦 Phase 2 方案
|
||||
|
||||
## 目标
|
||||
|
||||
以当前代码、migration、ADR 和 Phase 1 计划为证据,修正调研与 Phase 2 方案,并补齐高并发、互斥、权限、历史数据、灰度和回滚设计;不实施业务代码。
|
||||
|
||||
## 范围
|
||||
|
||||
- 复核调研报告与原 Phase 2 方案的事实、依赖和完成边界。
|
||||
- 将事件可靠性、结构解耦、HTTP/PI 协议拆成独立轨道。
|
||||
- 补充 PG 状态机、fencing、幂等、顺序、连接预算、权限、replay、脱敏、迁移和 browser/restart 验收。
|
||||
- 同步 audit、remediation、CURRENT、FEATURE-MATRIX 与 gap-matrix。
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不实现 dispatcher、consumer、migration 或协议代码。
|
||||
- 不合并、部署、重启容器、删除数据或审计/合入 FAV 分支。
|
||||
- 不把文档完成写成系统能力完成。
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 完成仓库启动链和上位 ADR/Phase 1 证据复核。
|
||||
2. [x] 完成一致性、可行性、范围、安全、产品与对抗视角审阅。
|
||||
3. [x] 修正调研报告中的 PG、依赖方向、allowlist 与进程边界事实。
|
||||
4. [x] 重写 Phase 2 为 Track E/S/P,补齐详细实施和停走门。
|
||||
5. [x] 同步索引与状态 SSOT。
|
||||
6. [x] 执行文档链接、diff、冲突标记和术语检查。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 调研不再把 SELECT-only Claim、MemoryBus 测试或 allowlist 基线写成生产闭环。
|
||||
- [x] Track E 可独立关闭,FAV/D8/D9 不阻塞。
|
||||
- [x] 方案明确 at-least-once 与 exactly-one visible outcome、最终提交点 fencing、集群级切换和授权模型。
|
||||
- [x] 历史脏数据只分类/隔离/修复,不授权删除。
|
||||
- [x] 文档状态一致且没有实施或发布声明。
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Audit: [方案审阅](../../audit/2026-09-15-module-decoupling-phase2-plan-review.md)
|
||||
- Remediation: [Phase 2 修订计划](../../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md)
|
||||
- Research: [IPC/RPC 现状评估](../../ops/research/2026-09-15-module-decoupling-ipc-assessment.md)
|
||||
- Test report: 不适用(文档审阅,无业务实现)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
本任务沿用用户已创建的 `docs/module-decoupling-ipc-assessment` 分支。该分支名早于当前 `feature/*|fix/*` 规则;未改写或重命名用户分支。起点提交为 `a3392e3` 与 `5cef856`,本轮未获授权 commit/push。
|
||||
@@ -1,47 +0,0 @@
|
||||
---
|
||||
title: "PI typed-result-v1 P1–P4"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: feature/pi-typed-result
|
||||
worktree: "-"
|
||||
mutex: pi-agent
|
||||
---
|
||||
|
||||
# PI typed-result-v1 P1–P4
|
||||
|
||||
## 目标
|
||||
|
||||
Runner additive 输出 `result_v1`;Go typed-first fail-closed;共享 dev 真实 PI 双轨对账;去掉 stderr/legacy 明文错误。
|
||||
|
||||
## 范围
|
||||
|
||||
- `configs/schemas/pi-run-result-v1.json`
|
||||
- `deploy/pi-agent/result-v1.mjs` + runner 接线
|
||||
- `internal/agent` parser / 负例 / `RUN_PI_E2E=1` 双轨
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不把 member 正文搬进 `result_v1`(仍走 `patches[]`)
|
||||
- 不改 HTTP 状态码;不启用 FAV;不写项目 143
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] Schema + Runner additive
|
||||
2. [x] Go typed-first + handshake
|
||||
3. [x] 真实 PI 双轨
|
||||
4. [x] 删 stderr/隐式 legacy;报告与合入
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] typed-present-invalid 永不 fallback
|
||||
- [x] handshake downgrade 负例 PASS
|
||||
- [x] `RUN_PI_E2E=1` 成功/失败/取消/超时对账
|
||||
- [x] test-report 归档
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Test report: `.doc/test-reports/2026-09-15-pi-typed-result-v1-test-report.md`
|
||||
- Remediation: `.doc/remediation/2026-09-15-pi-typed-result-v1-remediation.md`
|
||||
- P0: `.doc/ops/research/2026-09-15-pi-typed-result-p0-matrix.md`
|
||||
@@ -1,45 +0,0 @@
|
||||
---
|
||||
title: "晋升 dev → test 并部署测试环境"
|
||||
status: in_progress
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: feature/promote-dev-to-test-2026-09-15
|
||||
worktree: "-"
|
||||
mutex: infra
|
||||
---
|
||||
|
||||
# 晋升 dev → test 并部署测试环境
|
||||
|
||||
## 目标
|
||||
|
||||
把已完成的 Phase 2 代码从本地 `dev` 合入 `test`,重建并冒烟测试环境,供人工实测。不实施多意图 HITL。
|
||||
|
||||
## 范围
|
||||
|
||||
- `test` 分支 `--no-ff` 合入当前 `dev`
|
||||
- `./scripts/env-service.sh test rebuild`
|
||||
- test 库 notify/workflow_advance/projection 切 live(L4 去 hook 后 off 会停写);FAV 保持 off
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不实施多意图 HITL U1+
|
||||
- 不合入 `main`、不启用 FAV
|
||||
- 不写项目 143
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 确认 Phase 2 已在本地 `dev`
|
||||
2. [ ] occupy 集成槽并合入 `test`
|
||||
3. [ ] rebuild 测试服务
|
||||
4. [ ] health/ready + schema 冒烟
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] `:8081` health/ready PASS
|
||||
- [ ] events `:8089` health PASS
|
||||
- [ ] FAV 仍 off
|
||||
|
||||
## 相关链接
|
||||
|
||||
- CURRENT: `.doc/ops/CURRENT.md`
|
||||
@@ -1,40 +0,0 @@
|
||||
---
|
||||
title: "D5 stageflow 类型归属与 D7b chatflow 首批"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: fix/stageflow-type-ownership
|
||||
worktree: "-"
|
||||
mutex: stageflow
|
||||
---
|
||||
|
||||
# D5 stageflow 类型归属与 D7b chatflow 首批
|
||||
|
||||
## 目标
|
||||
|
||||
coordinator 生产代码不再 import bizdev;task/stage 请求走 stageflow 类型;chatflow assembler 改用 maturity。
|
||||
|
||||
## 范围
|
||||
|
||||
- stageflow 类型别名与状态常量
|
||||
- coordinator 构造改为 StageTaskRunner + ContextServices
|
||||
- chatflow 去掉 bizdev import
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不复制行为方法成 DTO(身份别名 + token golden)
|
||||
- 不删除 bizdev 八个 getter(D4)
|
||||
- 不搬空 chat 包
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 类型边界与 coordinator 解绑
|
||||
2. [x] chatflow assembler
|
||||
3. [x] 表征测试与 arch-check
|
||||
4. [x] 报告
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] coordinator 生产 import 无 bizdev
|
||||
- [x] [S2/S4b 报告](../../test-reports/2026-09-15-stageflow-type-ownership-test-report.md)
|
||||
@@ -1,60 +0,0 @@
|
||||
---
|
||||
title: "M3 U8 TaskRun 终态与 RunManifest"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
owner: Cursor
|
||||
branch: feature/taskrun-runmanifest
|
||||
worktree: "-"
|
||||
mutex: taskrun
|
||||
---
|
||||
|
||||
# M3 U8 TaskRun 终态与 RunManifest
|
||||
|
||||
## 目标
|
||||
|
||||
TaskRun 终态在同一 UoW 内 CAS 写入唯一合法状态,并持久化类型化 RunManifest;重复 finalize / cancel race / SSE 断线不得产生第二条助手消息或第二份 artifact;workspace 清理仅在 verified receipt 之后。
|
||||
|
||||
## 范围
|
||||
|
||||
- Goose 00037 `task_run_manifests` + `finalizing` 状态
|
||||
- `internal/taskrun` RunManifest 规范字节 / SHA / members
|
||||
- `taskrun.Commands.Finalize` 唯一 finalize 命令;server 变薄
|
||||
- `ctxmgr.FinalizeAssistantTaskMessage` 仅此写路径加入 UoW
|
||||
- workspace 清理门禁;`ReadArtifact` 替代 `Join(workDir, "output.md")`
|
||||
- BackendRef 服务端 policy;隔离库并发测试;占槽 rebuild;U8 报告
|
||||
|
||||
## 非目标
|
||||
|
||||
- U9 backfill / corpus / 八轨 / 销毁
|
||||
- M4–M6;整支 merge FAV;启用 `FAV_DEGRADED_READ`
|
||||
- 终止或改写项目 143
|
||||
- 动 `chat` / `intent` 刷新任务
|
||||
- worktree 内 `env-service`
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] CURRENT 认领 `mutex=taskrun`;从本地 `dev` 开 `feature/taskrun-runmanifest`
|
||||
2. [x] Goose 00037 Up+Down;`module-boundaries.yaml` 表属主
|
||||
3. [x] Finalize 同 UoW:CAS + 助手 turn + manifest + envelope/staging
|
||||
4. [x] 清理门禁与 server 去路径、BackendRef
|
||||
5. [x] 隔离库双 pool / race;占槽 rebuild;报告最后一句只能「继续 U9」或「停止扩面」
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 重复 finalize:同一 status、同一 manifest SHA、助手消息 1 条、envelope/staging 不加倍
|
||||
- [x] finalize ∥ cancel:恰好一个合法终态
|
||||
- [x] SSE `done` 不出现在 TX 失败路径;commit 前断线重试不第二 turn
|
||||
- [x] 无 verified receipt 则 cleanup FAIL;有 receipt 则可清 workspace 且 staging 仍能取出原 SHA
|
||||
- [x] 报告最后一句为「继续 U9」或「停止扩面」;U9 清单项保持未勾
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Checklist: [2026-09-14-module-decoupling-refactor-acceptance.md](../checklists/2026-09-14-module-decoupling-refactor-acceptance.md)
|
||||
- Remediation: [2026-09-14-module-decoupling-refactor-plan.md](../../remediation/2026-09-14-module-decoupling-refactor-plan.md)
|
||||
- 权威停走门: [2026-09-14-document-reliability-m2-test-report.md](../../test-reports/2026-09-14-document-reliability-m2-test-report.md)(继续 M3)
|
||||
- Test report: [2026-09-15-taskrun-runmanifest-u8-test-report.md](../../test-reports/2026-09-15-taskrun-runmanifest-u8-test-report.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
未签字前禁止 U9–U12。合入 + 容器测占集成槽,主仓 `./scripts/env-service.sh dev rebuild`。
|
||||
@@ -1,31 +0,0 @@
|
||||
---
|
||||
title: "Track P 协议实施(信封与 typed-result)"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
---
|
||||
|
||||
# Track P 协议实施(信封与 typed-result)
|
||||
|
||||
## 动机
|
||||
|
||||
H0/P0 盘点后独立实施 HTTP 信封与 PI typed-result,不回退事件 live。
|
||||
|
||||
## 成功标准
|
||||
|
||||
已关闭:
|
||||
|
||||
- [HTTP 信封 H1–H3](../../test-reports/2026-09-15-http-error-envelope-h1-h3-test-report.md)
|
||||
- [PI typed-result P1–P4](../../test-reports/2026-09-15-pi-typed-result-v1-test-report.md)
|
||||
|
||||
## 依赖
|
||||
|
||||
mutex `server`/`web`/`pi-agent` 已释放。
|
||||
|
||||
## 暂不启动原因
|
||||
|
||||
已完成。
|
||||
|
||||
## 相关链接
|
||||
|
||||
- [Phase 2 计划](../../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md)
|
||||
@@ -1,55 +0,0 @@
|
||||
---
|
||||
title: "PU6 语义摘要 shadow(SEMANTIC_SUMMARY_SHADOW)"
|
||||
status: done
|
||||
created: 2026-09-16
|
||||
updated: 2026-09-16
|
||||
owner: Cursor-Auto
|
||||
branch: feature/pu6-semantic-summary
|
||||
worktree: ".worktrees/feature-pu6-semantic-summary"
|
||||
mutex: chat
|
||||
---
|
||||
|
||||
# PU6 语义摘要 shadow
|
||||
|
||||
## 目标
|
||||
|
||||
在授权可见消息集合上落地 `SEMANTIC_SUMMARY_SHADOW`(默认 off):shadow 语义摘要、失败回 deterministic 并标注 freshness;不启用 REPLACE。
|
||||
|
||||
## 范围
|
||||
|
||||
- `internal/ctxmgr/summarizer.go` + semantic shadow
|
||||
- `internal/app/chatflow/` 授权过滤入口
|
||||
- `internal/server/chat_digest_api.go` 出站 freshness/shadow 字段
|
||||
- 单元/表征测试;测试报告
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不启用 `SEMANTIC_SUMMARY_REPLACE`
|
||||
- 不合入 `dev`
|
||||
- 不改 plan 文件
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 从 `dev` 开分支 / worktree 并认领
|
||||
2. [x] flags + 无工具语义摘要器 + rolling summary shadow
|
||||
3. [x] chatflow 授权路径 + digest API
|
||||
4. [x] 测试与报告
|
||||
5. [x] 渐进提交并 push
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] flag off 行为与基线一致
|
||||
- [x] shadow on:仅 authorized 消息;失败保留 deterministic + freshness
|
||||
- [x] injection 不能提权;REPLACE 路径未接线
|
||||
- [x] 测试报告归档
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Contract: `../long-term/2026-09-16-pu6-semantic-summary-contract.md`
|
||||
- Test report: `../../test-reports/2026-09-16-pu6-semantic-summary-test-report.md`
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- 分支:`feature/pu6-semantic-summary`(worktree)
|
||||
- 测试:`go test -short ./internal/ctxmgr/ ./internal/app/chatflow/ ./internal/server/` PASS
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
---
|
||||
title: "P5 PU8 U9–U12 独立 flag 脚手架"
|
||||
status: done
|
||||
created: 2026-09-16
|
||||
updated: 2026-09-16
|
||||
owner: Cursor
|
||||
branch: feature/pu8-u9-u12-flags
|
||||
worktree: /tmp/wt-pu8
|
||||
mutex: intent-plan
|
||||
---
|
||||
|
||||
# P5 PU8 U9–U12 独立 flag 脚手架
|
||||
|
||||
## 目标
|
||||
|
||||
为多意图扩面 U9–U12 落地独立 env flag(默认 OFF)与 stub/dry-run 端口,不升 `MULTI_INTENT_PLAN_TIER`。
|
||||
|
||||
## 范围
|
||||
|
||||
- `MULTI_INTENT_U9_SEGMENT` / `U10_MUTATE` / `U11_DOCGOV` / `U12_RUN_CONTROL`
|
||||
- U9 segment proposal port + fail-closed stub
|
||||
- U10–U12 dry-run adapters + `BuildOwnerMux` 门控
|
||||
- 单测证明默认 off 与 enable 路径不 panic
|
||||
|
||||
## 非目标
|
||||
|
||||
- 真实 LLM 分段 / 升 tier / 合入 `dev`
|
||||
- 真实 docgov/workflow 副作用写路径
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 独立 flags + `.env.example`
|
||||
2. [x] segment proposal + expansion adapters + mux 门控
|
||||
3. [x] Assemble `BuildOwnerMux` 接线
|
||||
4. [x] 单测 + 测试报告
|
||||
5. [x] push(不合 `dev`)
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 四 flag 默认 off;开 flag 不升 PlanTier
|
||||
- [x] flag off ≡ legacy(无 LLM proposal、无新 adapters)
|
||||
- [x] flag on:U9 fail-closed;U10–U12 dry-run/guarded
|
||||
- [x] 报告归档
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Contracts: [u9](../long-term/2026-09-16-pu8-u9-segment-proposal-contract.md) … [u12](../long-term/2026-09-16-pu8-u12-workflow-run-control-contract.md)
|
||||
- Test report: [../../test-reports/2026-09-16-pu8-u9-u12-flags-test-report.md](../../test-reports/2026-09-16-pu8-u9-u12-flags-test-report.md)
|
||||
@@ -1,30 +0,0 @@
|
||||
---
|
||||
title: "Wave 2 PU4 真实 PI 补证(U8 + full/none)"
|
||||
status: done
|
||||
created: 2026-09-16
|
||||
updated: 2026-09-16
|
||||
owner: Cursor
|
||||
branch: feature/wave2-real-pi-evidence
|
||||
worktree: "-"
|
||||
mutex: intent-plan
|
||||
---
|
||||
|
||||
# Wave 2 PU4 真实 PI 补证(U8 + full/none)
|
||||
|
||||
## 目标
|
||||
|
||||
补齐 multi-intent U8 与工作流 full/none 的真实 PI / PG / 跨用户 / 恢复证据。
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 认领 + 占槽 rebuild
|
||||
2. [x] U8 live 证据路径
|
||||
3. [x] full/none 混合长链 live 测试
|
||||
4. [x] 报告 + 矩阵更新 + 释放槽位
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] U8 真实 PI PASS
|
||||
- [x] full 跨用户审批 PASS
|
||||
- [x] none 免审批且不阻塞 PASS
|
||||
- [x] 报告归档 `.doc/test-reports/2026-09-16-wave2-real-pi-evidence-test-report.md`
|
||||
@@ -1,48 +0,0 @@
|
||||
---
|
||||
title: "docgov 变更提案 HTTP + 前端接线"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: feature/docgov-modification-proposal-http
|
||||
worktree: .worktrees/feature-docgov-modification-proposal-http
|
||||
mutex: docgov
|
||||
---
|
||||
|
||||
# docgov 变更提案 HTTP + 前端接线
|
||||
|
||||
## 目标
|
||||
|
||||
暴露 `POST /api/v1/docgov/proposal`,前端「修改」快捷分支与 `ProposalConfirmCard` 走真实 propose/decide,不再本地假装成功。
|
||||
|
||||
## 范围
|
||||
|
||||
- API:`ProposeModification` 路由;decide 补 404/403 映射
|
||||
- 前端:`docgov.ts` + `App.tsx` 接线
|
||||
- 单测 + 真实 HTTP 证据
|
||||
- 关闭 audit 缺口;dev 试点总开关证据归档
|
||||
|
||||
## 非目标
|
||||
|
||||
- 晋升 test/main
|
||||
- 变更提案自动改写受控正文(批准后仍为 UI 演示增补)
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 实现 propose handler + 路由
|
||||
2. [x] 前端 client + App 接线
|
||||
3. [x] handler/client 单测
|
||||
4. [x] 合入 dev + rebuild + 真实 HTTP
|
||||
5. [x] push origin/dev;清理 author-only worktree
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] `POST /api/v1/docgov/proposal` 可写库(单测)
|
||||
- [x] 真实 HTTP claim → propose → decide PASS
|
||||
- [x] audit 缺口 resolved;CURRENT 认领收敛
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Audit: [../../audit/2026-09-17-docgov-modification-proposal-http-gap.md](../../audit/2026-09-17-docgov-modification-proposal-http-gap.md)
|
||||
- Pilot: [../../test-reports/assets/2026-09-17-author-only-pilot/](../../test-reports/assets/2026-09-17-author-only-pilot/)
|
||||
- Closeout: [../handoffs/2026-09-17-document-author-only-closeout.md](../handoffs/2026-09-17-document-author-only-closeout.md)
|
||||
@@ -1,53 +0,0 @@
|
||||
---
|
||||
title: "修复 CreateOrGetDocument 可选职责 0→NULL FK"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: fix/docgov-optional-duty-null-fk
|
||||
worktree: "-"
|
||||
mutex: docgov
|
||||
---
|
||||
|
||||
# 修复 CreateOrGetDocument 可选职责 0→NULL FK
|
||||
|
||||
## 目标
|
||||
|
||||
无 reviewer/approver 职责时创建文档账本成功,不再因 `reviewer_id=0` FK 失败并被标成 `INTERNAL_ERROR`。
|
||||
|
||||
## 范围
|
||||
|
||||
- `internal/docgov/engine.go`:`nullIfZero` 写入 author/reviewer/approver
|
||||
- `internal/stream/classify.go`:`DOC_LEDGER_ERROR` 分型
|
||||
- 回归测试 + audit/test-report
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不强制项目配置 reviewer
|
||||
- 不改前端 flushSync / 虚拟列表
|
||||
- 不改项目 6417 存量数据(代码修好后重试即可)
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] CreateOrGetDocument 0→NULL
|
||||
2. [x] ClassifyError `DOC_LEDGER_ERROR`
|
||||
3. [x] 单元/回归测试(`-short` 已绿)
|
||||
4. [x] 占集成槽位 rebuild + 6417 复测(`run_1789625396102207018`,`doc_proj6417_intake` NULL FK)
|
||||
5. [x] test-report 归档;合入 `dev`
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] `go test -short ./internal/docgov/... ./internal/stream/...` PASS
|
||||
- [x] 仅-author 项目 `CreateOrGetDocument` / 任务发起不再 `INTERNAL_ERROR`;`reviewer_id IS NULL`
|
||||
- [x] 项目 6417 账本创建成功(full 职责路径未被本修复改动)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Audit: [../../audit/2026-09-17-docgov-optional-duty-null-fk.md](../../audit/2026-09-17-docgov-optional-duty-null-fk.md)
|
||||
- Test report: [../../test-reports/2026-09-17-docgov-optional-duty-null-fk-test-report.md](../../test-reports/2026-09-17-docgov-optional-duty-null-fk-test-report.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- 失败 run:`run_1789622069585300787`
|
||||
- 验证 run:`run_1789625396102207018` / `doc_proj6417_intake` author=9 reviewer/approver NULL
|
||||
- merge:`e488d10 merge: fix/docgov-optional-duty-null-fk`
|
||||
@@ -1,47 +0,0 @@
|
||||
---
|
||||
title: 文档编制人兼任审核批准方案
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Codex
|
||||
branch: feature/document-author-only-plan
|
||||
worktree: .worktrees/feature-document-author-only-plan
|
||||
mutex: document-duty-policy-plan
|
||||
---
|
||||
|
||||
# 文档编制人兼任审核批准方案
|
||||
|
||||
## 目标
|
||||
|
||||
基于当前源码形成管理员总授权、项目创建者逐文档选择的详细实施方案,交用户审核。
|
||||
|
||||
## 范围
|
||||
|
||||
权限、系统设置、工作流规划和冻结、文档三职、动作鉴权、状态机、前端、迁移与验收。
|
||||
|
||||
## 非目标
|
||||
|
||||
本次不修改业务代码、不变更数据库或共享容器、不推送。
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 阅读启动链并从本地 dev 建立隔离分支。
|
||||
2. [x] 核查实现并记录证据。
|
||||
3. [x] 编写方案、检查边界与验收覆盖。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 方案覆盖用户两个权限层级及逐文档持久化。
|
||||
- [x] 当前事实与拟议行为分开,列明实施单元与测试场景。
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
基线 dev adb48c8。已 fetch origin/dev,本地 dev 领先 44、落后 0,保留未推送集成成果;主工作区 feature/control-center-server 未切换。worktree 脚本默认从当前 HEAD 创建,故直接指定 dev 创建本 worktree,避免引入他人分支。
|
||||
|
||||
## 交付
|
||||
|
||||
- 方案:`.doc/remediation/2026-09-17-document-author-only-plan.md`
|
||||
- 核查:`.doc/audit/2026-09-17-document-author-only-analysis.md`
|
||||
- 本任务完成仅指方案交付,业务实现为 planned;R9/R10 待用户审核。
|
||||
- 未合入 dev:方案保留在独立分支供审核;未推送、未修改业务代码或容器。
|
||||
- 验证:源码与文档一致性检查、git diff --check;未执行业务测试。
|
||||
@@ -1,57 +0,0 @@
|
||||
---
|
||||
title: "文档编制人兼任:U1 策略存储与总授权"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: feature/document-author-only-plan
|
||||
worktree: ".worktrees/feature-document-author-only-plan"
|
||||
mutex: sysadmin + document-duty-policy
|
||||
---
|
||||
|
||||
# 文档编制人兼任:U1 策略存储与总授权
|
||||
|
||||
## 目标
|
||||
|
||||
落地 `workflow.allow_author_only_approval` 管理员总开关:默认关闭、严格 bool、revision CAS、事务内审计,并向 projectinstance 提供可参与激活事务的窄读取接口。
|
||||
|
||||
## 范围
|
||||
|
||||
- Goose 增量迁移(revision 列、种子行、策略审计表)
|
||||
- `internal/sysadmin` 存储/服务/窄 Policy 接口
|
||||
- `admin_system_handlers` 对本 key 的 `expected_revision` 协议
|
||||
- 单元 / PG / HTTP 负例测试
|
||||
|
||||
## 非目标
|
||||
|
||||
- 逐文档 duty_policy(U2)
|
||||
- 前端设置页文案(U5)
|
||||
- 已激活实例紧急熔断
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 认领 CURRENT
|
||||
2. [x] 迁移 00050
|
||||
3. [x] sysadmin CAS + 审计 + PolicySource
|
||||
4. [x] admin handler
|
||||
5. [x] 测试与提交
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 管理员可开关;非管理员 403
|
||||
- [x] null/字符串布尔拒绝
|
||||
- [x] 并发 CAS 仅一版成功
|
||||
- [x] 审计失败回滚设置
|
||||
- [x] 窄接口可读 allowed+revision;缺行默认 false;DB 故障不伪装
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Plan: `.doc/remediation/2026-09-17-document-author-only-plan.md` U1
|
||||
- Checklist:
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- `go test ./internal/sysadmin/ ./internal/server/ -run 'Settings|AuthorOnly|PGSettings|AdminSystem'` PASS
|
||||
- `go test -short ./internal/sysadmin/ ./internal/server/` PASS
|
||||
- Key: `workflow.allow_author_only_approval`
|
||||
- 窄接口: `sysadmin.AuthorOnlyPolicySource`
|
||||
@@ -1,54 +0,0 @@
|
||||
---
|
||||
title: "文档编制人兼任:U2 逐文档模式与激活"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: feature/document-author-only-plan
|
||||
worktree: ".worktrees/feature-document-author-only-plan"
|
||||
mutex: projectinstance + document-duty-policy
|
||||
---
|
||||
|
||||
# 文档编制人兼任:U2 逐文档模式与激活
|
||||
|
||||
## 目标
|
||||
|
||||
落地逐文档 `duty_policy=author_only`:规划校验、预览摘要、激活 token 绑定策略 revision,激活事务内行锁串行化关闭总开关。
|
||||
|
||||
## 范围
|
||||
|
||||
- DocTaskPlan / PreviewSummary / ProjectSettings 扩展
|
||||
- ResolveDocTaskDuty、Save/Preview/Activate 消费 U1 策略
|
||||
- Goose 00051 token revision 列
|
||||
- app 适配器装配、HTTP 错误码映射
|
||||
- 单元测试
|
||||
|
||||
## 非目标
|
||||
|
||||
- Heal/文档投影(U3)
|
||||
- 前端 UI(U5)
|
||||
- 运行时动作多职责(U4/U6)
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 类型与解析器
|
||||
2. [x] service/store/迁移
|
||||
3. [x] app 装配与 handler
|
||||
4. [x] 测试与提交
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 一位成员兼任可存/预览/激活(总开关开)
|
||||
- [x] 总开关关时 Save 拒绝
|
||||
- [x] 预览后 revision 变化旧 token 409
|
||||
- [x] 未开模式只填作者仍 partial 拒绝
|
||||
- [x] 旧快照缺 duty_policy 时 hash 稳定
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Plan: `.doc/remediation/2026-09-17-document-author-only-plan.md` U2
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- `go vet ./internal/projectinstance/ ./internal/app/ ./internal/server/`
|
||||
- `go test -short ./internal/projectinstance/ ./internal/server/ ./internal/app/` PASS
|
||||
@@ -1,55 +0,0 @@
|
||||
---
|
||||
title: "文档编制人兼任:U3 文档绑定与职责投影"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: feature/document-author-only-plan
|
||||
worktree: ".worktrees/feature-document-author-only-plan"
|
||||
mutex: docgov + docduty + bizdev + document-duty-policy
|
||||
---
|
||||
|
||||
# 文档编制人兼任:U3 文档绑定与职责投影
|
||||
|
||||
## 目标
|
||||
|
||||
生成时写入实例治理职责并 `duty_locked`;heal/revoke 跳过锁定行;读侧投影 `duty_policy`。
|
||||
|
||||
## 范围
|
||||
|
||||
- Goose 00052:`document_records.duty_locked` / `duty_policy`
|
||||
- `docgov.LockDocumentDuty` + 列表投影
|
||||
- `docduty` heal/revoke `AND NOT duty_locked`
|
||||
- `bizdev.InstanceDutySource` + `resolveTaskDocumentDuties` 治理分支;跳过 governed 内存 heal
|
||||
- `app/instance_duty_adapter.go` 装配
|
||||
|
||||
## 非目标
|
||||
|
||||
- U4 动作鉴权 / allowed_actions
|
||||
- U5/U6 前端
|
||||
- 合入 `dev`
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 迁移
|
||||
2. [x] docgov / docduty
|
||||
3. [x] bizdev + app 适配器
|
||||
4. [x] 测试与提交
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 受治理文档创建后 `duty_locked=true` 且三职来自实例
|
||||
- [x] heal/revoke 不清锁定行(SQL 过滤 + 单测/PG 可选)
|
||||
- [x] 生成后 governed 路径不再用项目默认覆盖内存态
|
||||
- [x] 模块边界:bizdev/docduty/docgov 不导入 projectinstance
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Plan: U3(文档绑定与职责投影一致性)
|
||||
- 依赖:U1 `3b6def2`、U2 `c03d0a3`
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- `go vet ./internal/docgov/ ./internal/docduty/ ./internal/bizdev/ ./internal/app/ ./internal/projectinstance/`
|
||||
- `go test -short` 上述包 PASS
|
||||
- PG:`TEST_DATABASE_URL` 未配置时 `Heal/Revoke SkipsDutyLocked` 自动跳过
|
||||
@@ -1,47 +0,0 @@
|
||||
---
|
||||
title: "文档编制人兼任:U4 动作鉴权与审计"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: feature/document-author-only-plan
|
||||
worktree: ".worktrees/feature-document-author-only-plan"
|
||||
mutex: projectinstance + docgov + document-duty-policy
|
||||
---
|
||||
|
||||
# 文档编制人兼任:U4 动作鉴权与审计
|
||||
|
||||
## 目标
|
||||
|
||||
ABAC 门禁识别 `duty_policy=author_only` 派生职责;审计 Details 携带 duty_policy。
|
||||
|
||||
## 范围
|
||||
|
||||
- `duty_action` / `stage_access` / `gate` 改用 `ResolveDocTaskDuty`
|
||||
- `state_machine` Transition* Details 补 `duty_policy`
|
||||
- author_only 动作矩阵与阶段可见性测试
|
||||
|
||||
## 非目标
|
||||
|
||||
- U5 UI / U6 浏览器闭环
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] ABAC 三文件
|
||||
2. [x] 审计详情
|
||||
3. [x] 测试与提交
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] author_only 规范存储(仅 Author ID)下 A 可 run/edit/submit/review/approve
|
||||
- [x] 非 A 拒绝;阶段门禁将 author_only 视为 approvalManaged
|
||||
- [x] 审计 Details 含 duty_policy
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Plan: U4+U5 实施计划
|
||||
- 依赖:U1–U3
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- `go test -short ./internal/projectinstance/ ./internal/docgov/ ./internal/app/ ./internal/server/` PASS
|
||||
@@ -1,48 +0,0 @@
|
||||
---
|
||||
title: "文档编制人兼任:U5 系统设置与逐文档 UI"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: feature/document-author-only-plan
|
||||
worktree: ".worktrees/feature-document-author-only-plan"
|
||||
mutex: web + document-duty-policy
|
||||
---
|
||||
|
||||
# 文档编制人兼任:U5 系统设置与逐文档 UI
|
||||
|
||||
## 目标
|
||||
|
||||
前端识别 `duty_policy` / `author_only_policy`;项目设置可逐文档开启兼任。
|
||||
|
||||
## 范围
|
||||
|
||||
- `projectSettings.ts` 类型
|
||||
- `projectSettingsDuties.ts` resolveClientDocTaskDuty + 校验
|
||||
- `ProjectSettingsModal` 兼任勾选与预览
|
||||
- SettingsSection 不改(白名单通用渲染)
|
||||
|
||||
## 非目标
|
||||
|
||||
- U6 多职责动作栏 / 浏览器 E2E
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 类型与 lib
|
||||
2. [x] UI
|
||||
3. [x] 测试与提交
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] author_only 客户端校验通过且不计三人门槛
|
||||
- [x] 总开关关闭时兼任勾选禁用并提示
|
||||
- [x] 预览展示兼任文档计数
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Plan: U4+U5 实施计划
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- `npx tsc --noEmit` PASS
|
||||
- `npm test` PASS(含 projectSettingsDuties author_only 用例)
|
||||
@@ -1,55 +0,0 @@
|
||||
---
|
||||
title: "文档编制人兼任:U6 多职责动作与真实闭环"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: feature/document-author-only-plan
|
||||
worktree: ".worktrees/feature-document-author-only-plan"
|
||||
mutex: web + document-duty-policy
|
||||
---
|
||||
|
||||
# 文档编制人兼任:U6 多职责动作与真实闭环
|
||||
|
||||
## 目标
|
||||
|
||||
去掉 author-first 动作短路,把认领/送审/审核/批准接到真实 docgov HTTP,完成 author_only 端到端验收。
|
||||
|
||||
## 范围
|
||||
|
||||
- `web/src/api/docgov.ts` 四接口客户端
|
||||
- `docGovActionVisibility` / `holdsDocDuty`
|
||||
- `App.tsx` 真实 handler + 快捷指令
|
||||
- `duty_policy` 透传与「编制人兼任」徽标
|
||||
- 单测 + 真实闭环报告
|
||||
|
||||
## 非目标
|
||||
|
||||
- 变更提案 HTTP 路由(另记 audit)
|
||||
- 合入 `dev` / 推送远端(未授权不推)
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] API 客户端
|
||||
2. [x] ID 直判可见性
|
||||
3. [x] App 接线 + 驳回批准修正
|
||||
4. [x] duty_policy 徽标透传
|
||||
5. [x] 单测 / tsc
|
||||
6. [x] 真实闭环与报告
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] author_only 下 A 可见三动作;非 A 403
|
||||
- [x] 真实 API 闭环写库与审计含 duty_policy
|
||||
- [x] 浏览器可见「编制人兼任」徽标
|
||||
- [x] 测试报告归档
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Test report: [../../test-reports/2026-09-17-document-author-only-u6-test-report.md](../../test-reports/2026-09-17-document-author-only-u6-test-report.md)
|
||||
- Remediation U6: [../../remediation/2026-09-17-document-author-only-plan.md](../../remediation/2026-09-17-document-author-only-plan.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- `npm test` 390 pass;`tsc --noEmit` clean
|
||||
- assets: `test-reports/assets/2026-09-17-document-author-only-u6/`
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
title: "首次加载性能诊断与改进方案"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Codex
|
||||
branch: feature/initial-load-performance-plan
|
||||
worktree: .worktrees/feature-initial-load-performance-plan
|
||||
mutex: loading-performance-audit
|
||||
---
|
||||
|
||||
# 首次加载性能诊断与改进方案
|
||||
|
||||
## 目标
|
||||
以源码、现有容器静态资源和只读浏览器测量定位首次加载瓶颈,输出可审核的分期改进方案。
|
||||
|
||||
## 范围
|
||||
登录前首屏、登录后初始化、项目/文档首次打开、静态资源交付;区分事实与待验证假设。
|
||||
|
||||
## 非目标
|
||||
不修改业务代码,不重启/重建共享服务,不触发真实对话或文档写任务,不提交或推送其他人的工作。
|
||||
|
||||
## 步骤
|
||||
1. [x] 阅读仓库启动链;独立 dev 基线 worktree,主仓保留其他 Agent 分支。
|
||||
2. [x] 采集数值基线和源码证据。
|
||||
3. [x] 写 audit 和 remediation,同步 CURRENT,归档任务。
|
||||
|
||||
## 验收标准
|
||||
- [x] 原因有文件位置或运行时测量支持,未覆盖环境明确标注。
|
||||
- [x] 方案包含优先级、改动边界、性能预算、回归门禁和回滚。
|
||||
|
||||
## 证据 / 备注
|
||||
仅诊断与方案,不代表优化已实施。fetch 后 origin/dev 落后本地 dev;不拉回或覆盖本地工作。worktree 从创建瞬间的 dev 建立。
|
||||
|
||||
## 交付
|
||||
|
||||
- 诊断:`.doc/audit/2026-09-17-initial-load-performance-audit.md`
|
||||
- 方案:`.doc/remediation/2026-09-17-initial-load-performance-plan.md`
|
||||
- 报告:`.doc/test-reports/2026-09-17-initial-load-performance-baseline.md`
|
||||
- 本轮仅方案;没有业务代码、没有部署、未提交、未合dev、未推送。主仓仅同步本任务认领。
|
||||
- 临时3199 Vite已停止;既有3100/8080/8081未重启。未占集成槽。
|
||||
@@ -1,55 +0,0 @@
|
||||
---
|
||||
title: "修复 KB 宿主机错误口令与静默离线降级"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: fix/kb-host-auth-layered-load
|
||||
worktree: "-"
|
||||
mutex: infra
|
||||
---
|
||||
|
||||
# 修复 KB 宿主机错误口令与静默离线降级
|
||||
|
||||
## 目标
|
||||
|
||||
消除 `config.Load("")` 只读 `configs/.env.dev`、忽略根 `.env` 的 `KB_DB_PASSWORD` 导致的错误默认口令与静默离线;E2E/nightly 默认 fail-closed。
|
||||
|
||||
## 范围
|
||||
|
||||
- `internal/config` 分层加载 + 宿主机 DNS 归一化 + 空默认口令
|
||||
- `internal/kb` 脱敏日志、`Online()`、`KB_REQUIRE_ONLINE` / `KB_ALLOW_OFFLINE`
|
||||
- `/health` 增加 `kb_ready`
|
||||
- PI E2E helper 与 `scripts/run-nightly-real-pi.sh` 预检
|
||||
- env 模板与验收报告
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不改 KB 数据内容 / 法规迁移
|
||||
- 不把真实口令写入 git 跟踪的 `configs/.env.*`
|
||||
- 不把容器内 DNS 改成 localhost
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 分层 Load + 默认口令清空
|
||||
2. [x] NormalizeKBHostForRuntime
|
||||
3. [x] kb 客户端脱敏 + RequireOnline(EnsureOnline;不 Fatalf)
|
||||
4. [x] health `kb_ready` + E2E/nightly 门禁
|
||||
5. [x] 合入 `dev` 冒烟(rebuild + `/health` `kb_ready=true`)
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] `config.Load("")` 分层合并后口令来自根 `.env`(单测临时文件 + live 布尔校验)
|
||||
- [x] 宿主机 `shuimu-kb-shared` → `127.0.0.1`;容器内保留 compose DNS
|
||||
- [x] 错口令/空口令离线且日志无明文密码;`KB_ALLOW_OFFLINE=1` 可降级
|
||||
- [x] 合 `dev` 后 short 测 PASS;dev rebuild 后 `kb_ready=true`,日志 `online=true dsn=...:***@shuimu-kb-shared...`,无 `shared_kb_secret_pass`
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Test report: `.doc/test-reports/2026-09-17-kb-host-auth-layered-load-test-report.md`
|
||||
- Plan: 修复 KB 连接降级
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
根因:`Load` 优先单文件 `configs/.env.dev`(故意省略 `KB_DB_PASSWORD`),保留错误默认 `shared_kb_secret_pass`;Compose 本已分层,宿主机 `go test` 未对齐。
|
||||
合入后容器日志:`[kb] online=true dsn=postgres://regkb:***@shuimu-kb-shared:5432/regulations?sslmode=disable`;health `kb_ready=true`。
|
||||
@@ -1,57 +0,0 @@
|
||||
---
|
||||
title: "rdev 模板深度补强 S1 续批(剩余 46 份)"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: feature/rdev-template-depth-s1-continued
|
||||
worktree: ".worktrees/feature-rdev-template-depth-s1-continued"
|
||||
mutex: rdev-templates
|
||||
---
|
||||
|
||||
# rdev 模板深度补强 S1 续批(剩余 46 份)
|
||||
|
||||
## 目标
|
||||
|
||||
将剩余 46 份 `rd_*` 模板按写作规范做同等深度补强,lint allowlist 扩至全 60 份,抽样真 PI 打样收口。
|
||||
|
||||
## 范围
|
||||
|
||||
- 批1:6 份评审记录
|
||||
- 批2:阶段06 硬件/工艺 8 份
|
||||
- 批3:阶段06 软件/检验/技术要求+清单 9 份
|
||||
- 批4:阶段08 验证 12 份
|
||||
- 批5:阶段10–13 转换/确认 11 份
|
||||
- lint allowlist + 抽样真 PI + 文档同步
|
||||
|
||||
## 非目标
|
||||
|
||||
- S2/S3、P2 前端、P3 三样本全量 E2E、P4 键名空间化
|
||||
- 晋升 test/main
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 批1 评审记录 6 份
|
||||
2. [x] 批2 硬件/工艺 8 份
|
||||
3. [x] 批3 软件/检验/清单 9 份
|
||||
4. [x] 批4 验证 12 份
|
||||
5. [x] 批5 转换/确认 11 份
|
||||
6. [x] 抽样真 PI + 文档同步(合入 push 见 merge 步骤)
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 46 份无「按本阶段专业结构写」;lint allowlist 60/60
|
||||
- [x] 抽样 1–2 份真 PI PASS(`rd_planning_review` + `rd_design_vv`,项目 6446)
|
||||
- [x] FEATURE-MATRIX / 写作规范 / backlog 已更新
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Backlog: [.doc/backlog/2026-09-17-rdev-phase2-backlog.md](../../backlog/2026-09-17-rdev-phase2-backlog.md)
|
||||
- 写作规范: [.doc/system-design/project-workflow/08-rdev模板写作规范.md](../../system-design/project-workflow/08-rdev模板写作规范.md)
|
||||
- 首批报告: [.doc/test-reports/2026-09-17-rdev-template-depth-test-report.md](../../test-reports/2026-09-17-rdev-template-depth-test-report.md)
|
||||
- 续批报告: [.doc/test-reports/2026-09-17-rdev-template-depth-s1-continued-test-report.md](../../test-reports/2026-09-17-rdev-template-depth-s1-continued-test-report.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- 资产:`.doc/test-reports/assets/2026-09-17-rdev-template-depth-s1-continued/`
|
||||
- 附带:`fix(projectinstance): allocate next instance_no for planning drafts`
|
||||
@@ -1,54 +0,0 @@
|
||||
---
|
||||
title: "rdev 模板深度补强 S0 + S1 首批"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: feature/rdev-template-depth
|
||||
worktree: ".worktrees/feature-rdev-template-depth"
|
||||
mutex: rdev-templates
|
||||
---
|
||||
|
||||
# rdev 模板深度补强 S0 + S1 首批
|
||||
|
||||
## 目标
|
||||
|
||||
修复 rdev leader prompt 错配,并为阶段 01–05 的 14 份 rdev 模板补齐 ISO 13485 专业章节与逐节写作指令,以 dev 真实 PI 打样验证收口。
|
||||
|
||||
## 范围
|
||||
|
||||
- S0.1 B1:`rdev_leader.md` + InstructionsFile 注入链
|
||||
- S0.2:`rd_design_input_spec` 样例 + 写作规范 + lint
|
||||
- S0.3:dev 真实 PI 打样
|
||||
- S1 首批:阶段 01–05 共 14 份模板(分 3 批)
|
||||
|
||||
## 非目标
|
||||
|
||||
- overlay 机制本体、R1–R7 二期、per-stage 步骤定制、模型配置化、manifest 元数据、前端(P2)、键名空间化(P4)、阶段 06–13 模板
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] S0.1 leader prompt 注入链(`6a09062`)
|
||||
2. [x] S0.2 样例模板 + 规范 + lint(含于 `eb09b21`)
|
||||
3. [x] S0.3 真实 PI 打样(项目 6424 intake + 6425 `rd_design_input_spec`)
|
||||
4. [x] S1 批 1–3(`eb09b21`)
|
||||
5. [x] 文档与门禁
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] rdev leader AGENTS.md 含「设计控制」且不含「商务对接负责人」「CDO」
|
||||
- [x] intake leader 回归仍含「商务对接负责人」
|
||||
- [x] 14 份模板 lint 绿灯;真 PI 终稿五节实质论证
|
||||
- [x] `go vet` + `go test -short` 全绿
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Test report: [.doc/test-reports/2026-09-17-rdev-template-depth-test-report.md](../../test-reports/2026-09-17-rdev-template-depth-test-report.md)
|
||||
- Assets: [.doc/test-reports/assets/2026-09-17-rdev-template-depth/](../../test-reports/assets/2026-09-17-rdev-template-depth/)
|
||||
- Backlog: [.doc/backlog/2026-09-17-rdev-phase2-backlog.md](../../backlog/2026-09-17-rdev-phase2-backlog.md)
|
||||
- 写作规范: [.doc/system-design/project-workflow/08-rdev模板写作规范.md](../../system-design/project-workflow/08-rdev模板写作规范.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- 依赖 `feature/rdev-core`(尚未合 dev);合入前需 rebase 丢弃已进 dev 的 engineering-dashboard 重复提交。
|
||||
- 真 PI:`run_1789635054471569201`(intake ~220s);`run_1789635960880707641`(DI ~450s,`stage=RD03_design_input`)。
|
||||
@@ -1,70 +0,0 @@
|
||||
---
|
||||
title: "研发工作流(rdev)接入:13 阶段 / 60 文档任务"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: fix/docgov-stage-dynamic → feature/rdev-core
|
||||
worktree: "-"
|
||||
mutex: workflow-def
|
||||
---
|
||||
|
||||
# 研发工作流(rdev)接入:13 阶段 / 60 文档任务
|
||||
|
||||
## 目标
|
||||
|
||||
在现有 5 个正式工作流外新增医疗第 4 工作流「研发设计控制流程」(key: `rdev`),完整承载参考项目 13 phase / 60 文档任务的 ISO 13485 DHF 设计控制链,并通过真实 PI 验收;随后完成全工作流任务键命名空间化(P4)。
|
||||
|
||||
## 范围
|
||||
|
||||
- 方案:[07-研发工作流rdev接入-设计与实施计划](../../system-design/project-workflow/07-研发工作流rdev接入-设计与实施计划.md)(P0–P4 五期;§8 四项决策已确认)
|
||||
- P0:docgov Stage 去硬编码 + stage key 透传
|
||||
- P1:rdev.v2.json manifest(13×60 一次到位)+ 60 份 rd_ 前缀模板 + catalog/seed/registry + squad kind 编排 + main-completed precheck + 齐套测试 + stub PG 全链路
|
||||
- P2:前端激活规划/切换/前置 Banner + intent 文档名匹配 + prior docs 注入与血缘
|
||||
- P3:真实 PI Agent E2E(rd_proposal / rd_planning_review / rd_sw_plan 三样本)+ CI 门禁扩四
|
||||
- P4:现有工作流(main/pm/tm + 软件两盘点)任务键 `bd_`/`pm_`/`tm_`(`sw_`)空间化,alias 兼容式改名(D12),独立分支独立验收
|
||||
|
||||
## 非目标
|
||||
|
||||
- 二期增强全部移入 backlog:[2026-09-17-rdev-phase2-backlog](../../backlog/2026-09-17-rdev-phase2-backlog.md)(N/A 不适用页生成、UR/RS 结构化门禁、kind 专用门禁、depends_on 精确血缘、DMR 归档、sw_ 键盘点、complexity regulatory 注入)
|
||||
- 云盘 canonical DHF/DMR 归档(本仓库无云盘模块)
|
||||
- 软件域(non_medical_software)开放 rdev
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 用户确认方案 §8 四项决策(2026-09-17:名称「研发设计控制流程」/ 60 任务一次到位 / N/A 规划期关闭 + backlog / rd_ 前缀并扩展到现有工作流键名空间化)
|
||||
2. [x] P0 分支 `fix/docgov-stage-dynamic`(StageKey 透传;已叠入 `feature/rdev-core`)
|
||||
3. [x] P1 分支 `feature/rdev-core`(manifest/模板/seed/编排/precheck/齐套测试)
|
||||
4. [ ] P2 分支 `feature/rdev-web-governance`(前端 + intent + 血缘)— **骨架已定,待独立认领**
|
||||
5. [ ] P3 真实 PI 验收 + 报告归档 + FEATURE-MATRIX 更新 — **骨架已定,待独立认领**
|
||||
6. [ ] P4 分支 `feature/workflow-key-namespace`(D12 alias 兼容式改名 + 双路径回归)— **骨架已定,待独立认领**
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] `go vet ./...` && `go test -short` 相关包 PASS(P0+P1)
|
||||
- [x] 齐套断言:manifest 60 任务 ↔ `templates/docs/rd_*.md` 存在非空;rd_ 键与既有任务键不相交
|
||||
- [x] precheck:main 未 completed 时 rd 任务启动被拒且文案含 CDO
|
||||
- [ ] PG 集成:rdev 实例 planning→live→推进(`TestPG_RDevActivateWithNAClose`,需 `TEST_DATABASE_URL`)
|
||||
- [ ] web `npm test && npm run build` PASS;Playwright 抽检激活/推进(P2)
|
||||
- [ ] 真实 PI + MiniMax 三样本 E2E 报告归档 `.doc/test-reports/`(P3)
|
||||
- [ ] P4:旧 live 实例(旧键)+ 新实例(新键)双路径回归 PASS;全工作流任务键集合无交集
|
||||
|
||||
## 相关链接
|
||||
|
||||
- 设计方案: [07-研发工作流rdev接入-设计与实施计划](../../system-design/project-workflow/07-研发工作流rdev接入-设计与实施计划.md)
|
||||
- 参考调研: [2026-09-17-rdev-workflow-reference-analysis](../research/2026-09-17-rdev-workflow-reference-analysis.md)
|
||||
- 二期 backlog: [2026-09-17-rdev-phase2-backlog](../../backlog/2026-09-17-rdev-phase2-backlog.md)
|
||||
- Checklist: -
|
||||
- Handoff: -
|
||||
- Test report: -
|
||||
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- 参考项目:`.refs/weichen-agent-system`(configs/workflows/rdev.yaml 60 stage、templates/docs 60 模板、squads/overlays 配套)
|
||||
- 关键约束:WF-DEF-06(无流程级依赖,precheck 先例 test_manager);doc_id `doc_proj{pid}_{taskKey}` 平铺命名 → rd_ 前缀
|
||||
|
||||
## 合入说明(2026-09-17)
|
||||
|
||||
- P0+P1 已 `--no-ff` 合入本地 `dev`(含 template-depth S0+S1)。
|
||||
- P2/P3/P4 仍 planned,待独立认领。
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
title: "W4 PU8 U9–U12 独立 flag live"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor
|
||||
branch: feature/w4-u9-segment-live
|
||||
worktree: "-"
|
||||
mutex: intent-plan
|
||||
---
|
||||
|
||||
# W4 PU8 U9–U12 独立 flag live
|
||||
|
||||
## 目标
|
||||
|
||||
U9 真实 LLM proposer(规则能切则不出 proposal);U10–U12 各自独立 flag 的 dry-run→confirm 证据;不升 `MULTI_INTENT_PLAN_TIER`。
|
||||
|
||||
## 范围
|
||||
|
||||
- `PiSegmentProposer` + 规则门 + 组合根接线
|
||||
- U10 mutate 幂等 dry-run receipt;U11 项目 143 只读;U12 run-control 独立 flag
|
||||
- 四份独立 test-report
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不升 `confirm` / `full`
|
||||
- 不把 U10–U12 dry-run 写成领域 live 写
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] U9 PI proposer + 规则门
|
||||
2. [x] U10–U12 分 flag 证据
|
||||
3. [x] 合 `dev` + 矩阵升 done
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 真实 MiniMax U9
|
||||
- [x] 负例 malformed/timeout/OOB/规则已切
|
||||
- [x] PLAN_TIER 仍 legacy
|
||||
@@ -1,40 +0,0 @@
|
||||
---
|
||||
title: "功能启用与文档修改影响分析调研"
|
||||
status: done
|
||||
created: 2026-09-20
|
||||
updated: 2026-09-20
|
||||
owner: Codex
|
||||
branch: feature/capability-enablement-impact-plan
|
||||
worktree: "-"
|
||||
mutex: capability-impact-research
|
||||
---
|
||||
|
||||
# 功能启用与文档修改影响分析调研
|
||||
|
||||
## 目标
|
||||
核实已实现功能的有效启用状态,形成分阶段启用方案及需求追踪、增量影响分析设计。
|
||||
|
||||
## 范围
|
||||
源码、配置、只读运行态、已有证据;研究报告与整改方案落盘。
|
||||
|
||||
## 非目标
|
||||
本轮不修改业务代码、不启用开关、不改变共享容器或真实项目数据。
|
||||
|
||||
## 步骤
|
||||
1. [x] 核实功能状态和接线。
|
||||
2. [x] 调研已有修改报告、依赖与需求追踪模型。
|
||||
3. [x] 编写详细报告和可实施方案,完成文档核查。
|
||||
|
||||
## 验收标准
|
||||
- [x] 当前事实与历史验收分开;每项启用方案有前置条件、验收、回退。
|
||||
- [x] 影响分析有版本、权限、增量更新、一致性和用户交互契约。
|
||||
|
||||
## 证据 / 备注
|
||||
开始时 dev=8fdcd98,工作区干净;git pull --ff-only 返回 Already up to date。无集成槽占用、无 push 授权。
|
||||
|
||||
产物:
|
||||
|
||||
- [调研报告](../../ops/research/2026-09-20-capability-enablement-impact-research.md)
|
||||
- [整改方案](../../remediation/2026-09-20-capability-enablement-impact-plan.md)
|
||||
- [FEATURE-MATRIX 校准](../../status/FEATURE-MATRIX.md)
|
||||
- [方案审阅记录](../../ops/research/2026-09-20-capability-enablement-impact-plan-review.md)
|
||||
@@ -1,49 +0,0 @@
|
||||
---
|
||||
title: "2026-09-20 P0 热修(迁移 / 越权 / 稳定性 / 凭证)"
|
||||
status: done
|
||||
created: 2026-09-20
|
||||
updated: 2026-09-20
|
||||
owner: Cursor-Auto
|
||||
branch: docs/p0-closeout-2026-09-20
|
||||
worktree: "-"
|
||||
mutex: docs
|
||||
---
|
||||
|
||||
# 2026-09-20 P0 热修
|
||||
|
||||
## 目标
|
||||
|
||||
关闭系统体检发现的 P0 critical:迁移断链、三项 IDOR、进程 panic/race、凭证泄漏与生产口令轮换。
|
||||
|
||||
## 范围
|
||||
|
||||
- Wave 0–4(见 [整改方案](../../remediation/2026-09-20-p0-remediation-plan.md))
|
||||
- 后续实现分支:`fix/capability-merge-00058-2026-09-20`、`fix/authz-idor-hotfixes-2026-09-20`、`fix/runtime-panic-races-2026-09-20`、`fix/credential-hardening-2026-09-20`、`docs/p0-closeout-2026-09-20`
|
||||
|
||||
## 非目标
|
||||
|
||||
- main 分支对齐晋升
|
||||
- FAV / SWBOOT-10 / D7 / MULTI_INTENT full
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] Wave 0:审计与整改文档、CURRENT 认领、long-term 增补
|
||||
2. [x] Wave 1:capability 合入 + 00058 + rebuild
|
||||
3. [x] Wave 2:三项越权
|
||||
4. [x] Wave 2b:panic/race/recover/XSS
|
||||
5. [x] Wave 3:凭证 + 口令轮换
|
||||
6. [x] Wave 4:测试报告与收口
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 见 [测试报告](../../test-reports/2026-09-20-p0-hotfixes-test-report.md)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Audit: [../../audit/2026-09-20-system-triage-audit.md](../../audit/2026-09-20-system-triage-audit.md)
|
||||
- Remediation: [../../remediation/2026-09-20-p0-remediation-plan.md](../../remediation/2026-09-20-p0-remediation-plan.md)
|
||||
- Test report: [../../test-reports/2026-09-20-p0-hotfixes-test-report.md](../../test-reports/2026-09-20-p0-hotfixes-test-report.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
(各波次合入 commit 与健康输出)
|
||||
@@ -1,51 +0,0 @@
|
||||
---
|
||||
title: "落实 Agent 规范与 L1 操作门禁"
|
||||
status: done
|
||||
created: 2026-09-21
|
||||
updated: 2026-09-21
|
||||
owner: Codex
|
||||
branch: feature/agent-governance-implementation
|
||||
worktree: .worktrees/agent-governance-implementation
|
||||
base_dev_sha: a241e838150f218f3a09d3523f93291b847d45fd
|
||||
mutex: agent-governance
|
||||
review_state: passed
|
||||
integration_state: integrated
|
||||
deployment: not_required
|
||||
cleanup: pending
|
||||
cleanup_owner: independent-maintainer-after-owner-exit
|
||||
remote_sync: not_requested
|
||||
---
|
||||
|
||||
# 落实 Agent 规范与 L1 操作门禁
|
||||
|
||||
用户已授权“按照方案实现这些规范”。范围:审查 R01–R10、两项安全补充、两个共享文档与 dev 操作的 L1 管理入口。所有修改在本任务 worktree;不改产品业务代码、数据库、模型配置,不升级 test/main,不 push。Python 标准库 sqlite3/fcntl 实现本机协调,不增加产品 Go 依赖。
|
||||
|
||||
## 实施单元与所有权
|
||||
|
||||
- 规范 Agent:AGENTS/PROJECT/客户端薄入口/模板/测试规范/CURRENT 归档,互斥 policy-docs。
|
||||
- 工具 Agent:worktree helper、env-service、candidate-images-build 与对应测试,互斥 ops-scripts。
|
||||
- 根 Agent:agentctl/SQLite/lease/CAS/提交与集成门禁、runbook、报告、FEATURE-MATRIX、ignore,互斥 coordination-core。
|
||||
- 测试 Agent:核心独立行为测试,仅写自己的测试文件,使用临时 Git 仓库。
|
||||
|
||||
## 验收
|
||||
|
||||
- [x] 新规范一致、轻量入口和真实状态可用;历史迁移不丢失。
|
||||
- [x] 主仓唯一 .locks;原子资源集合、父子冲突、活跃/失效身份、幂等及保守恢复。
|
||||
- [x] CURRENT/MATRIX 受控增量/CAS 更新,旧基线不覆盖,记录恢复证据。
|
||||
- [x] 错误工作区/无租约服务写入被拒;候选镜像源码 SHA 不符被拒。
|
||||
- [x] 安全 create/remove、commit/ref 门禁正反例通过。
|
||||
- [x] 独立代码审查及真实临时仓库并发验收;本地 dev 接收验证后的候选;安全清理。
|
||||
|
||||
## 交付边界
|
||||
|
||||
L1 对统一入口与 Git hooks 防误改,不能阻止任意同 UID shell 绕过。OS 沙箱、跨机锁、产品 PI 镜像交付等独立运行架构变更不在本次规范/最小门禁改动内。纯工程代码与文档不触发产品重建;将验证主目录运行挂载和就绪未因本轮改变。
|
||||
|
||||
## 验证与集成结果
|
||||
|
||||
- 76 项 Python 工程测试通过;最终候选复跑同样 76 PASS。20 个真实进程/独立 Git worktree 争同一资源:1 个执行、19 个 LOCK_BUSY。
|
||||
- ce-simplify-code 三视角完成;ce-code-review `20260921-133611-5e4781e6` 的 5 个确认问题全部修复并经独立复核关闭。详见[报告](../../test-reports/2026-09-21-agent-governance-test-report.md)。
|
||||
- 源码实现提交 `fed87ad1`;保留并行 Cursor 材料切块任务后任务 HEAD 为 `578a96440da56717582ec5ab267a094ceea3d941`。dev 从 `a5ea469ca44171a5c3e6419b1757852270fb991d` 接收完整验证候选 `7e9317b849e0696e110bac5b27749861178d7e3d`,这是规则 effective_commit。
|
||||
- 主仓 `.locks` 初始化、旧/新 dev flock 同 inode 和三个 hooks 已启用;doctor 正常,无租约 env guard 返回 LEASE_REQUIRED。收口文档使用已生效入口完成 CAS、提交与后续候选集成。
|
||||
- 真实 dev 合入前后 ready=ok/schema61、容器镜像和主目录 data/dev 挂载一致。本轮 deployment=not_required;未 push、未操作 test/main、无产品数据库或模型配置改动。
|
||||
- cleanup=pending:实际普通 remove 因部分同 UID 进程 cwd 不可读拒绝。保留本任务及 integrate-agent-governance-implementation 两个工作区,不使用 force/-D。独立维护者在 owner 退出并解决/核实进程可见性后重跑全部门禁;仅含可再生 pycache 的文件先明确删除。其他任务现场不在清理范围。
|
||||
- 文档链接检查 356 个目标中,唯一已存在的 `FEATURE-MATRIX` 历史 promotion receipt 断链不由本轮引入;本轮新增/修改链接全部有效。
|
||||
@@ -1,48 +0,0 @@
|
||||
---
|
||||
title: "Agent 工作规范与 worktree 并行治理方案"
|
||||
status: done
|
||||
created: 2026-09-21
|
||||
updated: 2026-09-21
|
||||
owner: Codex
|
||||
branch: feature/agent-workflow-governance-plan
|
||||
worktree: .worktrees/feature-agent-workflow-governance-plan
|
||||
mutex: agent-workflow-governance-plan
|
||||
---
|
||||
|
||||
# Agent 工作规范与 worktree 并行治理方案
|
||||
|
||||
## 目标
|
||||
|
||||
基于当前仓库规范、脚本和现场,评估主目录保护、强制 worktree、串行集成与清理机制,交付可审核方案。
|
||||
|
||||
## 范围
|
||||
|
||||
- 只读检查 Git、脚本、Compose、测试入口和协作记录。
|
||||
- 形成调研、治理方案及交接文档;仅在本任务 worktree 写文档。
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不修改业务代码、Agent 规则或运维脚本;不切换主目录分支、不干预其他任务、不重建服务、不清理既有 worktree、不 push。
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 阅读启动链并盘点现场。
|
||||
2. [x] 显式从本地 dev@15b8a4a8 创建独立 worktree。
|
||||
3. [x] 完成机制核验、方案和边界审查。
|
||||
4. [x] 写交接并核查文档差异。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 有现状证据、方案比较、操作流程、并行边界、恢复与验收标准。
|
||||
- [x] 区分已存在机制与拟实现机制;不将方案宣称为已落地。
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
初始主目录为 fix/intent-workflow-scoping-2026-09-21,有其他任务未提交变更。为保护现场,未执行 checkout dev / pull;从显式本地 dev 创建 worktree。origin/dev...dev 为 0/309,仅为本地远端跟踪引用快照,本轮未 fetch。认领仅登记本 worktree 的 CURRENT,尚无跨 worktree 实时协调入口;本任务只读代码且使用独立文档路径。
|
||||
|
||||
## 交付
|
||||
|
||||
- [调研](../../ops/research/2026-09-21-agent-workflow-governance-research.md)
|
||||
- [方案](../../remediation/2026-09-21-agent-workflow-governance-plan.md)
|
||||
- [交接](../../ops/handoffs/2026-09-21-agent-workflow-governance-plan.md)
|
||||
- 仅文档核验,未执行产品测试;治理能力在 FEATURE-MATRIX 保持 planned。
|
||||
@@ -1,286 +0,0 @@
|
||||
# CURRENT 历史快照(2026-09-21)
|
||||
|
||||
归档来源:实施基线 `eb4dbdca5baae8dd5f3ddefc0f5510ac2978dcd3` 的 `.doc/ops/CURRENT.md`。以下保留原始认领、环境断言、焦点和证据索引;只调整移动后的 Markdown 相对链接。历史状态不是当前锁、环境或授权依据,活跃协调见 [CURRENT](../../ops/CURRENT.md)。基线内已失效的旧链接另在本次验证记录中说明,不把历史声明改写成新结论。
|
||||
|
||||
---
|
||||
|
||||
# 当前焦点
|
||||
|
||||
**更新**: 2026-09-21
|
||||
**production_ready**: yes(门禁 B1–B4 已签;dev schema **61**,test/main 仍为 **58**。P0 热修 done;rdev 种子热修 done,见 [报告](../../test-reports/2026-09-20-rdev-seed-hotfix-test-report.md))
|
||||
|
||||
## 焦点
|
||||
|
||||
1. **工作流作用域权重**:`WORKFLOW_SCOPE_MODE` 默认 `strict`;`weighted` 按关系权重打分,只读跨流注明归属,写动作仍拦截。见 [报告](../../test-reports/2026-09-21-workflow-scope-weighting-test-report.md)。test/main 未晋升。
|
||||
2. **意图确认优先与阶段感知**:弱写「整理需求」→ intake 确认卡片。见 [报告](../../test-reports/2026-09-21-intent-confirm-stage-aware-test-report.md)。test/main 未晋升。
|
||||
3. **上传解析提示 / 去重 / CoW 收口**:MinerU 解析状态轮询闭环(pending→running→done)、重复文件「已复用」提示、失败原因+重新解析、CAS 不可变 CoW 契约测试,已合入 `dev`(代码 `99905571`、证据 `74587ccf`、收口 `a0464eb5`)。见 [报告](../../test-reports/2026-09-21-upload-parse-ux-dedup-test-report.md)。test/main 未晋升。前序任务执行状态卡收口见 [报告](../../test-reports/2026-09-21-taskrun-status-card-persistence-test-report.md)(含二轮修复:completed 步骤 label 冻结为"正在…(NN%)"的收口归一化 + dev 历史回填,已合入 `dev@4b303247` 并真实 PI 验收)。
|
||||
4. **MinerU 真实 PDF 二轮验收**:用户反馈「PDF 内容未被理解」由两因叠加——(A) 首轮在 worktree 内跑 `env-service dev rebuild` 令挂载漂到 worktree `data/dev`,真实历史 blob 全部读不到;(B) Agent 轻量 API 硬限 20 页,28 页真实文件失败。首轮结论作废。二轮从**主目录** rebuild 修复挂载,`internal/mineru` 在 `-30003` 时按 20 页窗分块解析并重编全局页锚;`ReadRefBytes` 失败改为 `slog.Warn`。已合入 `dev@362b68a0`。真实 `bd_intake`(项目 6532)`completed`,工作区 `materials_text` 注入 29152 字节中文正文。见 [报告](../../test-reports/2026-09-21-mineru-doc-parsing-test-report.md) 第八节。
|
||||
5. **红线**:禁止整支 merge FAV;不默认升 `MULTI_INTENT_PLAN_TIER=full`;`SEMANTIC_SUMMARY_REPLACE` 不随 W2 开启;FAV live 观察窗证据驱动;`FAV_DEGRADED_READ=false`;项目 143 只读;SWBOOT-10 保持 fail-closed stub;D7 对话 ADR 仍待合规签字(追踪表留存类别已定为 `record`,不授权物理删除);**不改 `production_ready`**;模块解耦批次 A–G 与回溯实施切片未单独认领前保持 `planned`;**合入 dev 后必须回主目录跑 `env-service.sh dev rebuild`,禁止任何 worktree 内运行 `env-service`**(脚本 ROOT_DIR 取自脚本所在目录树,会带走 bind mount,导致 `/app/data` 漂到 worktree 空目录)。
|
||||
|
||||
## 并行认领
|
||||
|
||||
| owner | task | branch | worktree | mutex | status |
|
||||
|-------|------|--------|----------|-------|--------|
|
||||
| Codex | 2026-09-21-agent-governance-implementation | feature/agent-governance-implementation | .worktrees/agent-governance-implementation | agent-governance | in_progress |
|
||||
| Cursor | 2026-09-21-workflow-scope-weighting | feature/workflow-scope-weighting-2026-09-21 | .worktrees/workflow-scope-weighting-2026-09-21 | intent+web+docgov | done |
|
||||
| Cursor | 2026-09-21-upload-parse-ux-dedup | feature/upload-parse-ux-2026-09-21 | .worktrees/upload-parse-ux-2026-09-21 | server+web+storage | done |
|
||||
| Cursor | 2026-09-21-mineru-doc-parsing | feature/mineru-doc-parsing-2026-09-21 | .worktrees/mineru-doc-parsing-2026-09-21 | storage+bizdev+kb | done |
|
||||
| Cursor | 2026-09-21-intent-confirm-stage-aware | fix/intent-confirm-stage-aware-2026-09-21 | .worktrees/intent-confirm-stage-aware-2026-09-21 | intent+web+docgov | done |
|
||||
| Cursor | 2026-09-21-taskrun-status-card | feature/taskrun-status-card-2026-09-21 | .worktrees/feature-taskrun-status-card-2026-09-21 | chat+web+taskrun | done |
|
||||
| Cursor | 2026-09-21-intent-workflow-scoping | fix/intent-workflow-scoping-2026-09-21 | - | intent+web+docgov | done |
|
||||
| Codex | 2026-09-21-agent-workflow-governance-adoption | feature/agent-workflow-governance-plan | .worktrees/feature-agent-workflow-governance-plan | agent-workflow-governance | in_progress |
|
||||
| Codex | 2026-09-21-agent-workflow-governance-plan | feature/agent-workflow-governance-plan | .worktrees/feature-agent-workflow-governance-plan | agent-workflow-governance-plan | done |
|
||||
| Cursor | 2026-09-21-workflow-doc-key-unification | fix/workflow-doc-key-unification-2026-09-21 | .worktrees/fix-workflow-doc-key-unification-2026-09-21 | docgov+web | done |
|
||||
| Cursor | 2026-09-21-dev-deep-test-four-issues | fix/dev-deep-test-four-issues-2026-09-21 | - | web+intent+taskrun | done |
|
||||
| Cursor | 2026-09-21-trace-panel-to-chat | feature/trace-panel-to-chat-2026-09-21 | - | trace-impact+web | done |
|
||||
| Cursor | 2026-09-21-taskrun-scope-persist | fix/taskrun-scope-persist-2026-09-21 | - | projectinstance+taskrun | done |
|
||||
| Cursor | 2026-09-21-dev-multiuser-four-issues | fix/dev-multiuser-four-issues-2026-09-21 | .worktrees/fix-dev-multiuser-four-issues | projectinstance+docgov | done |
|
||||
| Cursor | 2026-09-21-taskrun-error-transparency | fix/taskrun-error-transparency-2026-09-21 | - | chat+web | done |
|
||||
| Cursor | 2026-09-21-trace-panel-null-crash | fix/trace-panel-null-crash-2026-09-21 | - | trace-index+web | done |
|
||||
| Cursor-Auto | 2026-09-20-stage-backtrack-design | feature/stage-backtrack-design | - | trace-impact-design | done |
|
||||
| Cursor-Auto | 2026-09-20-impact-loop-t1 至 T3/B1–B3 | feature/stage-backtrack-impl | - | trace-index | done |
|
||||
| Cursor | 2026-09-20-rdev-seed-hotfix | fix/workflow-seed-bootstrap-2026-09-20 | - | workflow-def | done |
|
||||
| Cursor-Auto | 2026-09-20-module-decoupling-spec-audit | docs/module-decoupling-spec-2026-09-20 | - | module-decoupling-spec | done |
|
||||
| Cursor-Auto | 2026-09-20-p0-closeout | docs/p0-closeout-2026-09-20 | - | docs | done |
|
||||
| Cursor-Auto | 2026-09-20-p0-hotfixes(Wave 0 文档) | docs/p0-triage-2026-09-20 | - | docs | done |
|
||||
| Cursor-Auto | 2026-09-20-p0-capability-00058 | fix/capability-merge-00058-2026-09-20 | - | infra+chat | done |
|
||||
| Cursor-Auto | 2026-09-20-p0-idor | fix/authz-idor-hotfixes-2026-09-20 | - | authz | done |
|
||||
| Cursor-Auto | 2026-09-20-p0-runtime-stability | fix/runtime-panic-races-2026-09-20 | - | taskrun+chat+web | done |
|
||||
| Cursor-Auto | 2026-09-20-p0-credentials | fix/credential-hardening-2026-09-20 | - | ops+infra | done |
|
||||
| Cursor-Auto | 2026-09-20-proposed-authoritative-reports | feature/capability-enablement-impact-plan | - | docgov | done |
|
||||
| Cursor-Auto | 2026-09-20-pi-narrative-clipped-diff | feature/capability-enablement-impact-plan | - | docgov | done |
|
||||
| Cursor-Auto | 2026-09-20-pi-reasoning-profile | feature/capability-enablement-impact-plan | - | pi-agent | done |
|
||||
| Cursor-Auto | 2026-09-20-semantic-summary-persistence | feature/capability-enablement-impact-plan | - | chat+lineage-version | done |
|
||||
| Cursor-Auto | 2026-09-20-feature-readiness-and-lineage-authz | feature/capability-enablement-impact-plan | - | sysadmin+lineage | done |
|
||||
| Codex | 2026-09-20-capability-enablement-impact-plan | feature/capability-enablement-impact-plan | - | capability-impact-research | done |
|
||||
| Cursor-Auto | 2026-09-20-post-activation-duty-reassign-member-chat | fix/post-activation-duty-reassign-member-chat | - | projectworkflow+authz+web | done |
|
||||
| Cursor-Auto | 2026-09-20-test-env-triage-fixes | fix/test-env-triage-2026-09-20 | - | projectworkflow+chat+assets | done |
|
||||
| Cursor-Auto | 2026-09-20-test-env-beta6-verification | docs/test-env-beta6-verification | - | infra+docs | done |
|
||||
| Cursor-Auto | 2026-09-20-bug-hunt-permissions-uploads | fix/bug-hunt-2026-09-20-permissions-and-uploads | - | authz+web+projectworkflow | done |
|
||||
| Cursor | audit-b1-data-consistency | fix/audit-b1-data-consistency | - | docgov+workflow+chat | done |
|
||||
| Cursor | audit-b2-authz-hardening | fix/audit-b2-authz-hardening | - | authz | done |
|
||||
| Cursor | audit-b3-sse-events | fix/audit-b3-sse-events | - | chat+events | done |
|
||||
| Cursor | audit-b4-frontend | fix/audit-b4-frontend | - | web | done |
|
||||
| Cursor-Auto | 2026-09-19-audit-remainder-closeout | fix/audit-remainder-closeout | - | audit-remainder | done |
|
||||
| Antigravity | 2026-09-20-dev-deep-test-and-promotion | feature/dev-deep-test-and-promotion | - | integration | done |
|
||||
| Cursor-Auto | 2026-09-19-remove-control-center | fix/remove-control-center | - | controlcenter | done |
|
||||
| Cursor-Auto | 2026-09-17-control-center-server | feature/control-center-server | - | controlcenter | cancelled |
|
||||
| Kimi | 2026-09-18-user-manual | feature/user-manual | .worktrees/feature-user-manual | docs | done |
|
||||
| Cursor-Auto | 2026-09-18-wave7-roadmap-orchestration | docs/wave7-roadmap-orchestration | - | roadmap-orchestration | done |
|
||||
| Cursor-Auto | 2026-09-18-wave6-doc-drift | docs/wave6-doc-drift | - | doc-drift | done |
|
||||
| Cursor-Auto | 2026-09-18-wave5-deadcode-decisions | fix/wave5-deadcode-decisions | - | deadcode-cleanup | done |
|
||||
| Cursor-Auto | 2026-09-18-wave4-hardening-r1-r8 | fix/wave4-hardening-r1-r8 | - | hardening | done |
|
||||
| Cursor-Auto | 2026-09-18-wave3-test-debt-blindspots | fix/wave3-test-debt-blindspots | - | test-debt | done |
|
||||
| Cursor-Auto | 2026-09-18-wave2-config-flag-align | fix/wave2-config-flag-align | - | infra | done |
|
||||
| Cursor | 2026-09-18-wave1-main-env-fix | fix/wave1-main-env-fix | - | infra | done |
|
||||
| Cursor | 2026-09-18-wave0-p0-bug-fixes | fix/wave0-p0-sse-chat-cache-bugs | - | chat + web | done |
|
||||
| Kimi | 2026-09-17-system-health-check(只读审计,未实施) | - | - | audit | done |
|
||||
| Cursor | 2026-09-17-docgov-modification-proposal-http | feature/docgov-modification-proposal-http | - | docgov | done |
|
||||
| Cursor | 2026-09-17-document-author-only-closeout | feature/document-author-only-plan | - | document-duty-policy | done |
|
||||
| Cursor | 2026-09-17-rdev-template-depth-s1-continued | feature/rdev-template-depth-s1-continued | .worktrees/feature-rdev-template-depth-s1-continued | rdev-templates | done |
|
||||
| Cursor | 2026-09-17-rdev-workflow-integration | feature/rdev-core | - | workflow-def | done |
|
||||
| Cursor | 2026-09-17-rdev-template-depth | feature/rdev-template-depth | .worktrees/feature-rdev-template-depth | rdev-templates | done |
|
||||
| Codex | 2026-09-17-document-author-only-plan | feature/document-author-only-plan | - | document-duty-policy-plan | done |
|
||||
| Cursor | 2026-09-17-initial-load-perf-u2 | feature/initial-load-perf-u2 | - | web + static-delivery | done |
|
||||
| Codex | 2026-09-17-initial-load-performance-plan | feature/initial-load-performance-plan | .worktrees/feature-initial-load-performance-plan | loading-performance-audit | done |
|
||||
| Kimi | 2026-09-17-system-admin-console | feature/system-admin-console | - | web + sysadmin | done |
|
||||
| Cursor-Auto | 2026-09-17-engineering-dashboard | feature/engineering-dashboard | .worktrees/feature-engineering-dashboard | engineering-dashboard | done |
|
||||
| Cursor | 2026-09-17-promote-null-fk-to-test | feature/promote-null-fk-to-test | - | infra | done |
|
||||
| Cursor | 2026-09-17-docgov-optional-duty-null-fk | fix/docgov-optional-duty-null-fk | - | docgov | done |
|
||||
| Cursor | 2026-09-17-leftover-hygiene | chore/leftover-hygiene-2026-09-17 | - | ops | done |
|
||||
| Cursor | 2026-09-17-w2-semantic-summary-shadow | feature/w2-semantic-summary-shadow-live | - | chat | done |
|
||||
| Cursor | 2026-09-17-w3-pi-change-report-narrative | feature/w3-pi-change-report-narrative-live | - | docgov | done |
|
||||
| Cursor | 2026-09-17-w4-multi-intent-u9-u12 | feature/w4-u9-segment-live | - | intent-plan | done |
|
||||
| Cursor | 2026-09-17-w5a-software-bootstrap-ui | feature/w5a-software-bootstrap-ui-pi | - | workflow-design | done |
|
||||
| Cursor | 2026-09-17-w6-fav-subscriber-shadow | feature/w6-fav-subscriber-shadow | - | events | done |
|
||||
| Cursor | 2026-09-17-w7-d7-inventory | feature/w7-d7-data-inventory | - | chat | done |
|
||||
| Cursor | 2026-09-17-promote-dev-to-test | feature/promote-dev-to-test-2026-09-17 | - | infra | done |
|
||||
| Cursor | 2026-09-17-kb-host-auth-fix | fix/kb-host-auth-layered-load | - | infra | done |
|
||||
| Cursor | 2026-09-17-w1-ci-e2e-green-nightly | feature/w1-ci-e2e-green-nightly | - | ci | done |
|
||||
| Cline | 2026-09-16-partial-deferred-completion | docs/partial-deferred-completion-plan | - | architecture-docs | in_progress |
|
||||
| Cursor | 2026-09-16-intent-plan-playwright-dual-tab | feature/intent-plan-cards-playwright | .worktrees/feature-intent-plan-cards-playwright | web | done |
|
||||
| Cursor | 2026-09-16-full-backlog-override | docs/override-nogo-full-backlog | - | architecture-docs | done |
|
||||
| Cursor | 2026-09-16-gitea-nightly-docker-datadir | fix/gitea-nightly-docker-datadir | - | ci | done |
|
||||
| Cursor | 2026-09-16-gitea-nightly-host-tools | fix/gitea-nightly-host-tools | - | ci | done |
|
||||
| Cursor | 2026-09-21-test-env-lazy-doc-verification | docs/lazy-doc-verification-2026-09-21 | - | infra+docs | done |
|
||||
| Cursor | 2026-09-16-wave-leftovers | fix/wave-leftovers-n7-playwright-dod | - | ci | done |
|
||||
| Cursor | 2026-09-16-wave3-pu6-pu8-go-no-go | feature/wave3-pu6-pu8-go-no-go | - | architecture-docs | done |
|
||||
| Cursor | 2026-09-16-wave2c-same-image-digest | feature/wave2c-same-image-digest | - | infra | done |
|
||||
| Cursor | 2026-09-16-wave2b-nightly-promotion-receipt | feature/wave2b-nightly-promotion-receipt | - | ci | done |
|
||||
| Cursor | 2026-09-16-wave2-real-pi-evidence | feature/wave2-real-pi-evidence | - | intent-plan | done |
|
||||
| Cursor | 2026-09-16-wave1-race-tempdir-cleanup | fix/race-tempdir-cleanup | - | ci | done |
|
||||
| Cursor | 2026-09-16-wave1-iam-fail-closed | fix/iam-store-fail-closed | - | authz | done |
|
||||
| Cursor | 2026-09-16-feature-matrix-wave0-calibration | feature/feature-matrix-production-readiness-plan | .worktrees/feature-matrix-production-readiness-plan | architecture-docs | done |
|
||||
| Codex | 2026-09-16-feature-matrix-production-readiness-plan | feature/feature-matrix-production-readiness-plan | .worktrees/feature-matrix-production-readiness-plan | architecture-docs | done |
|
||||
| Cursor-Auto | 2026-09-16-matrix-deep-test-promote-test | feature/matrix-deep-test-promote-test | - | infra | done |
|
||||
| Cursor-Auto | 2026-09-16-production-ready-gates | docs/production-ready-flip | - | ci | done |
|
||||
| Cursor-Auto | 2026-09-16-demo-seed-pollution | fix/demo-data-pollution-web | - | web | done |
|
||||
| Cursor | 2026-09-16-multi-intent-u8-task-generate | feature/multi-intent-u8-task-generate | - | intent-plan | done |
|
||||
| Cursor | 2026-09-16-multi-intent-u7-auto-read | feature/multi-intent-u7-auto-read | - | intent-plan | done |
|
||||
| Cursor | 2026-09-16-multi-intent-u6-web-cards | feature/multi-intent-u6-web-cards | - | web | done |
|
||||
| Cursor | 2026-09-16-multi-intent-u5-decision-api | feature/multi-intent-u5-decision-api | - | intent-plan | done |
|
||||
| Cursor | 2026-09-16-multi-intent-u4-outbox-projection | feature/multi-intent-u4-outbox-projection | - | events | done |
|
||||
| Cursor | 2026-09-15-multi-intent-u3-intentflow-pg | feature/multi-intent-u3-intentflow-pg | - | intent-plan | done |
|
||||
| Cursor | 2026-09-15-multi-intent-u2-segmenter | feature/multi-intent-u2-segmenter | - | intent | done |
|
||||
| Cursor | 2026-09-15-multi-intent-u1-contracts | feature/multi-intent-u1-contracts | - | architecture-docs | done |
|
||||
| Cursor | app-composition-u11-u12 | feature/app-composition-u11-u12 | - | app | done |
|
||||
| Cursor | chatlog-contextasm-u10 | feature/chatlog-contextasm-u10 | - | chat | done |
|
||||
| Cursor | chat-history-refresh-remediation | fix/chat-history-refresh | - | chat | done |
|
||||
| Cursor | dataset-lifecycle-u9 | feature/dataset-lifecycle-u9 | - | dataset | done |
|
||||
| Cursor | taskrun-runmanifest-u8 | feature/taskrun-runmanifest | - | taskrun | done |
|
||||
| Cursor | document-reliability-m1-live-and-m2 | refactor/document-reliability-pilot | - | workspace | done |
|
||||
| Codex | module-decoupling-remediation-plan | feature/module-decoupling-remediation | - | architecture-docs | done |
|
||||
| Codex | module-decoupling-phase2-plan-review | docs/module-decoupling-ipc-assessment | - | architecture-docs | done |
|
||||
| Cursor | module-decoupling-phase2-docs | feature/module-decoupling-phase2-docs | - | architecture-docs | done |
|
||||
| verifier_antigravity | controlled-content-ui-acceptance | fix/controlled-content-ui-acceptance | - | document-content-ui-acceptance | done |
|
||||
| implementer_cursor | controlled-content-canonical-hash | fix/controlled-content-canonical-hash | - | docgov | done |
|
||||
| Codex | project143-controlled-content-404-diagnosis | fix/project143-controlled-content-404-diagnosis | - | docgov-content-diagnosis | done |
|
||||
| Codex | software-project-bootstrap-plan | feature/software-project-bootstrap-plan | - | workflow-design | done |
|
||||
| Codex | conversation-intent-runtime-state | fix/conversation-intent-state | - | intent | done |
|
||||
| Cursor | conversation-intent-runtime-state | docs/conversation-intent-dual-tab | - | intent | done |
|
||||
| Cursor | document-revision-wave1-6-implementation | feature/document-revision-management | - | docgov | done |
|
||||
| Cursor-Auto | document-revision-runtime-ui03 | fix/document-revision-runtime-ui03 | - | docgov | done |
|
||||
| Cursor-Auto | document-revision-sse-idempotency | fix/document-revision-sse-idempotency | - | docgov | done |
|
||||
| Cursor-Auto | document-revision-active-doc-routing | fix/document-revision-active-doc-routing | - | docgov | done |
|
||||
| Cursor-Auto | document-revision-quality-context | fix/document-revision-quality-context | - | docgov | done |
|
||||
| Cursor-Auto | document-revision-e2e-pending-flow | fix/document-revision-e2e-pending-flow | - | pending-report-ui | done |
|
||||
| Cursor-Auto | document-revision-e2e-reject-routing | fix/document-revision-e2e-reject-routing | - | document-revision-runtime-ui | done |
|
||||
| Cursor-Auto | document-revision-e2e-block-selector | fix/document-revision-e2e-block-selector | - | document-revision-block-selector | done |
|
||||
| Cursor-Auto | document-revision-e2e-save-selector | fix/document-revision-e2e-save-selector | - | document-revision-save-selector | done |
|
||||
| Cursor-Auto | document-revision-e2e-overlay-selector | fix/document-revision-e2e-overlay-selector | - | document-revision-overlay-selector | done |
|
||||
| Cursor-Auto | document-revision-e2e-overlay-transition | fix/document-revision-e2e-overlay-transition | - | document-revision-overlay-transition | done |
|
||||
| Cursor-Auto | document-revision-second-doc-routing-lease | fix/document-revision-second-doc-routing-lease | - | document-revision-second-doc-routing-lease | done |
|
||||
| Cursor-Auto | document-revision-prelim-output | fix/document-revision-pi-runner-module | - | document-revision-prelim-output | done |
|
||||
| Cursor-Auto | document-revision-editor-hydration-race | fix/document-revision-editor-hydration-race | - | document-revision-editor-hydration-race | done |
|
||||
| Cursor-Auto | document-revision-quality-repair-workspace-contract | fix/document-revision-quality-repair-workspace-contract | - | document-revision-quality-repair-workspace-contract | done |
|
||||
| Cursor-Auto | document-revision-fast-completion-observation | fix/document-revision-fast-completion-observation | - | document-revision-fast-completion-observation | done |
|
||||
| Cursor-Auto | document-revision-workflow-category-navigation | fix/document-revision-workflow-category-navigation | - | document-revision-workflow-category-navigation | done |
|
||||
| Cursor-Auto | document-revision-duty-cell-assertion | fix/document-revision-duty-cell-assertion | - | document-revision-duty-cell-assertion | done |
|
||||
| Cursor-Auto | document-revision-reviewer-duty-sync | fix/document-revision-reviewer-duty-sync | - | document-revision-reviewer-duty-sync | done |
|
||||
| Cursor-Auto | document-revision-post-restart-selector | fix/document-revision-post-restart-selector | - | document-revision-post-restart-selector | done |
|
||||
| Cursor-Auto | document-revision-post-restart-final-snippet | fix/document-revision-post-restart-final-snippet | - | document-revision-post-restart-final-snippet | done |
|
||||
| Cursor-Auto | document-revision-pg-id-remap | fix/document-revision-pg-id-remap | - | document-revision | done |
|
||||
| Cursor-Auto | document-revision-runtime | fix/document-revision-runtime-ui03 | - | docgov | done |
|
||||
| Cursor-Auto | document-revision-runtime-ui-final-report | feature/document-revision-runtime-ui-final-report | - | document-revision-runtime-ui | done |
|
||||
| Cursor-Auto | document-revision-evidence-count | fix/document-revision-evidence-count | - | document-revision-evidence-count | done |
|
||||
| Cursor-Auto | document-revision-session-close | feature/document-revision-session-close | - | document-revision-session-close | done |
|
||||
| Cursor-Auto | vite-frp-allowed-hosts | fix/vite-frp-allowed-hosts | - | web-devserver | done |
|
||||
| implementer_cursor | workflow-plan-409-frozen-and-optional-duties | fix/workflow-plan-409-frozen-and-optional-duties | - | workflow | done |
|
||||
| implementer_cursor | governance-action-level-authz | fix/governance-action-level-authz | - | workflow | done |
|
||||
| Cursor | leftover-branch-cleanup | chore/leftover-branch-cleanup | - | ops | done |
|
||||
| Cursor | event-e0a-production-scope-contract | fix/event-production-scope-contract | - | events | done |
|
||||
| Cursor | event-e0b-dispatcher-pg | feature/events-dispatcher-pg | - | events | done |
|
||||
| Cursor | event-e1a-notify-cutover | fix/event-notify-cutover | - | events | done |
|
||||
| Cursor | event-e1b-workflow-advance | fix/event-workflow-advance | - | events | done |
|
||||
| Cursor | event-e1c-projection-cutover | fix/event-projection-cutover | - | events | done |
|
||||
| Cursor | event-e2-hook-guard | fix/event-e2-hook-guard | - | events | done |
|
||||
| Cursor | doccontent-canonical-boundary | fix/doccontent-canonical-boundary | - | docgov | done |
|
||||
| Cursor | intent-bizdev-boundary | fix/intent-bizdev-boundary | - | intent | done |
|
||||
| Cursor | stageflow-type-ownership | fix/stageflow-type-ownership | - | stageflow | done |
|
||||
| Cursor | bizdev-locator-removal | fix/bizdev-locator-removal | - | bizdev | done |
|
||||
| Cursor | chatflow-orchestration-boundary | fix/chatflow-orchestration-boundary | - | chat | done |
|
||||
| Cursor | phase2-closeout-inventories | feature/phase2-closeout-inventories | - | architecture-docs | done |
|
||||
| Cursor | event-shared-live-cutover | feature/event-shared-live-cutover | - | events | done |
|
||||
| Cursor | pi-typed-result | feature/pi-typed-result | - | pi-agent | done |
|
||||
| Cursor | promote-dev-to-test-2026-09-15 | feature/promote-dev-to-test-2026-09-15 | - | infra | done |
|
||||
|
||||
> 新任务开始前登记。`branch` 必须为 `feature/<slug>` 或 `fix/<slug>`,**禁止** `dev` / `test` / `main`。同一 `mutex` 同时仅一个 `in_progress`。
|
||||
|
||||
> workflow-plan 409 与治理鉴权 G1–G5 已收口(见 [test-report](../../test-reports/2026-09-14-governance-action-level-authz-test-report.md))。禁止终止或改写项目 143。
|
||||
> `document-reliability-pilot` U11–U12 已合入 `dev@bf59cce` 并 rebuild。`CHAT-INTENT-STATE` 双标签 busy 已 PASS(项目 6275)。禁止 worktree 内 `env-service`。项目 143 只读,禁止终止。
|
||||
> 2026-09-17 leftover 二次收口:[报告](../../test-reports/2026-09-17-leftover-hygiene-test-report.md)。已合入 leftover worktree/旁支再拆一轮;`feature/software-project-bootstrap` L1 已在 `dev`(残留关闭 commit 已丢弃)。`fix/clean-test-env-baseline` **不 merge**(前端 demo 清理已放弃;仅保留已挑拣的 `SEED_DEMO_USERS=false`)。extra worktree 仅余 `.worktrees/fix-dev-runtime-data-root-guard`(目录名是 guard,检出的是 `feature/final-artifact-vault`)。**故意不合入、不删**:`feature/final-artifact-vault`、`feature/remove-herdr-agent-settings`、`fix/project143-controlled-content-404-diagnosis`、`fix/dev-runtime-data-root-guard`、`dev-old-linear`。不删 `origin/*`。不整支 merge FAV;不启用 `FAV_DEGRADED_READ`。
|
||||
|
||||
## 集成槽位
|
||||
|
||||
| holder | phase | since | scope | queue |
|
||||
|--------|-------|-------|-------|-------|
|
||||
| - | idle | 2026-09-21 | taskrun-status-card label 修复已合入 dev@4b303247 并真实 PI 验收(round2 docs 随后合入);mineru 二轮文档已合入;schema=61 | - |
|
||||
|
||||
**phase**: `idle` | `merging` | `smoke` | `e2e`
|
||||
|
||||
> 合入 `dev` + 共享容器验证必须串行。详见 [AGENTS.md](../../../AGENTS.md) §6.3。
|
||||
|
||||
## 环境快照
|
||||
|
||||
| 环境 | 端口 | schema | 状态 |
|
||||
|------|------|--------|------|
|
||||
| dev | 8080 | **61** | healthy(mineru `00061`;intent-confirm 真实 PI PASS;`/health` schema_version=61;`pi-agent`;events `:8088`) |
|
||||
| test | 8081 | **58** | healthy(`rc-v1.0.0-beta.7`;rdev v1 active;`published_by` 回落到用户 4;events `:8089`) |
|
||||
| main | 8000 | **58** | healthy(P0 Wave3 rebuild 已追平 schema;分支树对齐仍记 backlog;口令已轮换;events `:8090`) |
|
||||
|
||||
## SSOT
|
||||
|
||||
| 类型 | 路径 |
|
||||
|------|------|
|
||||
| 2026-09-21 Agent worktree 工作规范 | [方案](../../remediation/2026-09-21-agent-workflow-governance-plan.md) · [调研](../../ops/research/2026-09-21-agent-workflow-governance-research.md) · [交接](../../ops/handoffs/2026-09-21-agent-workflow-governance-plan.md);规范已采纳,自动化另列 planned |
|
||||
| 2026-09-20 rdev 种子 | [short-term](../../ops/short-term/2026-09-20-rdev-seed-hotfix.md) · [报告](../../test-reports/2026-09-20-rdev-seed-hotfix-test-report.md) |
|
||||
| 2026-09-20 模块解耦 | [审计](../../audit/2026-09-20-module-coupling-audit.md) · [规范](../../system-design/2026-09-20-module-development-standards.md) · [批次 A–G](../../remediation/2026-09-20-module-decoupling-batch-plan.md) · [short-term](../../ops/short-term/2026-09-20-module-decoupling-spec-audit.md) |
|
||||
| 文档总地图 | [../README.md](../../README.md) |
|
||||
| 模块完成度 | [FEATURE-MATRIX](../../status/FEATURE-MATRIX.md)(Wave 0 已校准契约与冻结边界) |
|
||||
| 发布缺口 | [gap-matrix](../../remediation/gap-matrix.md)(`production_ready=yes`;Wave 0 IAM 只读未发现旁路) |
|
||||
| 2026-09-20 系统体检 | [audit](../../audit/2026-09-20-system-triage-audit.md) · [P0 整改](../../remediation/2026-09-20-p0-remediation-plan.md) · [short-term](../../ops/short-term/2026-09-20-p0-hotfixes.md) |
|
||||
| 连续性审计/计划 | [audit](../../audit/2026-09-16-feature-matrix-production-readiness-audit.md) · [remediation](../../remediation/2026-09-16-feature-matrix-production-readiness-plan.md) · [Wave 0 任务](../../ops/short-term/2026-09-16-feature-matrix-wave0-calibration.md) |
|
||||
| 测试报告 | [test-reports/](../../test-reports) |
|
||||
| dev→test 晋升前复核 | [research](../../ops/research/2026-09-19-pre-test-promotion-review.md)(2026-09-19 只读;静态门禁过,容器未 rebuild,暂不合并) |
|
||||
| D7 盘点(W7) | [audit](../../audit/2026-09-17-d7-data-inventory.md) · [报告](../../test-reports/2026-09-17-w7-d7-inventory-test-report.md) · ADR 仍 `pending-compliance-signoff` |
|
||||
| 功能启用与文档影响分析 | [调研](../../ops/research/2026-09-20-capability-enablement-impact-research.md) · [整改方案](../../remediation/2026-09-20-capability-enablement-impact-plan.md) · [方案审阅](../../ops/research/2026-09-20-capability-enablement-impact-plan-review.md)(2026-09-20;未启用开关、未改业务代码) |
|
||||
| 阶段回溯与影响闭环 | [设计](../../system-design/2026-09-20-stage-backtrack-and-impact-loop-design.md) · [short-term](../../ops/short-term/2026-09-20-stage-backtrack-design.md)(2026-09-20;仅设计。切片 T1/T2/B1/B2/B3/T3 均为 planned) |
|
||||
| Wave 7 编排确认 | [决策记录](../../ops/short-term/2026-09-18-wave7-roadmap-orchestration.md) |
|
||||
| Agent 手册 | [AGENTS.md](../../../AGENTS.md) |
|
||||
| 意图双标签 busy 交接 | [./handoffs/2026-09-15-conversation-intent-dual-tab.md](../../ops/handoffs/2026-09-15-conversation-intent-dual-tab.md) |
|
||||
| 受控正文 hash 漂移 W1–W6 | [../ops/handoffs/2026-09-14-controlled-content-canonical-hash.md](../../ops/handoffs/2026-09-14-controlled-content-canonical-hash.md) |
|
||||
| DOCREV ADR | [../adr/2026-09-13-document-version-boundary.md](../../adr/2026-09-13-document-version-boundary.md) |
|
||||
| DOCREV 管理测试 | [../test-reports/2026-09-13-document-revision-management-test-report.md](../../test-reports/2026-09-13-document-revision-management-test-report.md) |
|
||||
| DOCREV 运行时 UI Round20 | [../test-reports/2026-09-14-document-revision-runtime-ui-test-report.md](../../test-reports/2026-09-14-document-revision-runtime-ui-test-report.md) |
|
||||
| 纯软件项目自举设计 | [../system-design/2026-09-14-software-project-bootstrap-workflow.md](../../system-design/2026-09-14-software-project-bootstrap-workflow.md) |
|
||||
| 模块化单体解耦架构 | [../system-design/2026-09-14-module-decoupling-architecture.md](../../system-design/2026-09-14-module-decoupling-architecture.md) |
|
||||
| 模块解耦整改计划 | [../remediation/2026-09-14-module-decoupling-refactor-plan.md](../../remediation/2026-09-14-module-decoupling-refactor-plan.md) |
|
||||
| Phase 2 方案审阅 | [../audit/2026-09-15-module-decoupling-phase2-plan-review.md](../../audit/2026-09-15-module-decoupling-phase2-plan-review.md) |
|
||||
| Phase 2 修订计划 | [../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md](../../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md) |
|
||||
| 多意图 HITL 复核方案 | [../system-design/2026-09-15-multi-intent-hitl-plan.md](../../system-design/2026-09-15-multi-intent-hitl-plan.md) |
|
||||
| 多意图 HITL U1 契约 | [../test-reports/2026-09-15-multi-intent-u1-contracts-test-report.md](../../test-reports/2026-09-15-multi-intent-u1-contracts-test-report.md) |
|
||||
| 多意图 HITL U2 分段 | [../test-reports/2026-09-15-multi-intent-u2-segmenter-test-report.md](../../test-reports/2026-09-15-multi-intent-u2-segmenter-test-report.md) |
|
||||
| 多意图 HITL U3 PG | [../test-reports/2026-09-15-multi-intent-u3-intentflow-pg-test-report.md](../../test-reports/2026-09-15-multi-intent-u3-intentflow-pg-test-report.md) |
|
||||
| 多意图 HITL U4 投影 | [../test-reports/2026-09-16-multi-intent-u4-outbox-projection-test-report.md](../../test-reports/2026-09-16-multi-intent-u4-outbox-projection-test-report.md) |
|
||||
| 多意图 HITL U5 API | [../test-reports/2026-09-16-multi-intent-u5-decision-api-test-report.md](../../test-reports/2026-09-16-multi-intent-u5-decision-api-test-report.md) |
|
||||
| 多意图 HITL U6 Web | [../test-reports/2026-09-16-multi-intent-u6-web-cards-test-report.md](../../test-reports/2026-09-16-multi-intent-u6-web-cards-test-report.md) |
|
||||
| 多意图 HITL U8 generate | [../test-reports/2026-09-16-multi-intent-u8-task-generate-test-report.md](../../test-reports/2026-09-16-multi-intent-u8-task-generate-test-report.md) |
|
||||
| 多意图 HITL U7 只读 | [../test-reports/2026-09-16-multi-intent-u7-auto-read-test-report.md](../../test-reports/2026-09-16-multi-intent-u7-auto-read-test-report.md) |
|
||||
| 文档可靠性 M1 报告 | [../test-reports/2026-09-14-document-reliability-pilot-test-report.md](../../test-reports/2026-09-14-document-reliability-pilot-test-report.md) |
|
||||
| 文档可靠性 M1 活验 | [../test-reports/2026-09-14-document-reliability-pilot-live-test-report.md](../../test-reports/2026-09-14-document-reliability-pilot-live-test-report.md) |
|
||||
| 文档可靠性 M2 | [../test-reports/2026-09-14-document-reliability-m2-test-report.md](../../test-reports/2026-09-14-document-reliability-m2-test-report.md) |
|
||||
| 文档可靠性 M3 U8 | [../test-reports/2026-09-15-taskrun-runmanifest-u8-test-report.md](../../test-reports/2026-09-15-taskrun-runmanifest-u8-test-report.md) |
|
||||
| 文档可靠性 M3 U9 | [../test-reports/2026-09-15-dataset-lifecycle-u9-test-report.md](../../test-reports/2026-09-15-dataset-lifecycle-u9-test-report.md) |
|
||||
| 文档可靠性 M4 U10 | [../test-reports/2026-09-15-chatlog-contextasm-u10-test-report.md](../../test-reports/2026-09-15-chatlog-contextasm-u10-test-report.md) |
|
||||
| 文档可靠性 M5/M6 U11–U12 | [../test-reports/2026-09-15-app-composition-u11-u12-test-report.md](../../test-reports/2026-09-15-app-composition-u11-u12-test-report.md) |
|
||||
| Track E E2 闭包守卫 | [../test-reports/2026-09-15-event-e2-hook-guard-test-report.md](../../test-reports/2026-09-15-event-e2-hook-guard-test-report.md) |
|
||||
| Track E 复盘 | [./research/2026-09-15-track-e-retrospective.md](../../ops/research/2026-09-15-track-e-retrospective.md) |
|
||||
| 旁支清点收口 | [../test-reports/2026-09-15-leftover-branch-cleanup-test-report.md](../../test-reports/2026-09-15-leftover-branch-cleanup-test-report.md) · [二次收口](../../test-reports/2026-09-17-leftover-hygiene-test-report.md) |
|
||||
| SSE/幂等审计 | [../audit/2026-09-13-document-revision-sse-idempotency.md](../../audit/2026-09-13-document-revision-sse-idempotency.md) |
|
||||
| 质量门禁自污染审计 | [../audit/2026-09-13-document-revision-quality-gate-self-pollution.md](../../audit/2026-09-13-document-revision-quality-gate-self-pollution.md) |
|
||||
| 当前文档路由审计 | [../audit/2026-09-13-document-revision-active-doc-routing.md](../../audit/2026-09-13-document-revision-active-doc-routing.md) |
|
||||
| 行动表状态假阳性审计 | [../audit/2026-09-13-document-revision-quality-status-false-positive.md](../../audit/2026-09-13-document-revision-quality-status-false-positive.md) |
|
||||
| 待确认报告选择失败审计 | [../audit/2026-09-13-document-revision-pending-report-selection.md](../../audit/2026-09-13-document-revision-pending-report-selection.md) |
|
||||
| UI-05b 拒绝路由失败审计 | [../audit/2026-09-13-document-revision-e2e-reject-routing.md](../../audit/2026-09-13-document-revision-e2e-reject-routing.md) |
|
||||
| 职责伪造与 ETag 覆盖审计 | [../audit/2026-09-13-document-revision-duty-etag-overwrite.md](../../audit/2026-09-13-document-revision-duty-etag-overwrite.md) |
|
||||
| UI-06 块选择器失败审计 | [../audit/2026-09-13-document-revision-block-selector.md](../../audit/2026-09-13-document-revision-block-selector.md) |
|
||||
| UI-06 保存选择器失败审计 | [../audit/2026-09-13-document-revision-save-selector.md](../../audit/2026-09-13-document-revision-save-selector.md) |
|
||||
| UI-07 纯净阅读取样失败审计 | [../audit/2026-09-13-document-revision-overlay-selector.md](../../audit/2026-09-13-document-revision-overlay-selector.md) |
|
||||
| UI-07 transition 中间帧取样审计 | [../audit/2026-09-13-document-revision-overlay-transition.md](../../audit/2026-09-13-document-revision-overlay-transition.md) |
|
||||
| UI-11 第二份文档路由与 lease 审计 | [../audit/2026-09-13-document-revision-second-doc-routing-lease.md](../../audit/2026-09-13-document-revision-second-doc-routing-lease.md) |
|
||||
| UI-11 prelim_design 缺 output.md 审计 | [../audit/2026-09-13-document-revision-prelim-output.md](../../audit/2026-09-13-document-revision-prelim-output.md) |
|
||||
| UI-06 编辑弹窗 hydration 竞态审计 | [../audit/2026-09-13-document-revision-editor-hydration-race.md](../../audit/2026-09-13-document-revision-editor-hydration-race.md) |
|
||||
| UI-03 质量修复子工作区契约审计 | [../audit/2026-09-13-document-revision-quality-repair-workspace-contract.md](../../audit/2026-09-13-document-revision-quality-repair-workspace-contract.md) |
|
||||
| UI-11 快速完成观测误判审计 | [../audit/2026-09-13-document-revision-fast-completion-observation.md](../../audit/2026-09-13-document-revision-fast-completion-observation.md) |
|
||||
| UI-13a 私密分类导航失败审计 | [../audit/2026-09-13-document-revision-workflow-category-navigation.md](../../audit/2026-09-13-document-revision-workflow-category-navigation.md) |
|
||||
| UI-13a 职责单元格误判审计 | [../audit/2026-09-13-document-revision-duty-cell-assertion.md](../../audit/2026-09-13-document-revision-duty-cell-assertion.md) |
|
||||
| UI-13a reviewer 职责未同步审计 | [../audit/2026-09-13-document-revision-reviewer-duty-sync.md](../../audit/2026-09-13-document-revision-reviewer-duty-sync.md) |
|
||||
| UI-03 首次生成 PG ID 误删 baseline | [../audit/2026-09-13-document-revision-pg-id-remap.md](../../audit/2026-09-13-document-revision-pg-id-remap.md) |
|
||||
| UI-06 刷新后缓存竞争死锁审计 | [../audit/2026-09-14-document-revision-refresh-cache-race.md](../../audit/2026-09-14-document-revision-refresh-cache-race.md) |
|
||||
| 受控正文真实 UI 验收报告 | [../test-reports/2026-09-14-controlled-content-ui-acceptance.md](../../test-reports/2026-09-14-controlled-content-ui-acceptance.md) |
|
||||
|
||||
## 并行集成补录
|
||||
|
||||
来源:dev@a5ea469c 的 CURRENT 增量。保留材料切块任务的新结论;活跃 CURRENT 保留其认领和最新槽位。
|
||||
|
||||
5. **材料切块不再看体积**:项目 6579 `doc_proj6579_bd_intake` 已确认候选 535,正式正文不再含「二进制压缩流」。成功解析的材料一律写入 `material_chunks`,≤60KB 仍全文注入。见 [报告](../../test-reports/2026-09-21-force-material-chunk-index-test-report.md)。已合入 `dev` 并从主目录 rebuild。test/main 未晋升。
|
||||
@@ -1,46 +0,0 @@
|
||||
---
|
||||
task_id: herdr-orchestration-v12
|
||||
status: done
|
||||
owner: Codex
|
||||
branch: feature/herdr-orchestration-v12
|
||||
base_dev_sha: d919e06a73f7a4e18ed9d0cc26728f9cb32f8d97
|
||||
policy_revision: agent-governance-2026-09-21-r1
|
||||
deployment: not_required
|
||||
remote_sync: not_requested
|
||||
integration_state: merged
|
||||
review_state: passed
|
||||
cleanup: pending
|
||||
cleanup_owner: independent-maintainer-after-owner-exit
|
||||
effective_commit: 8c5e3477585fe27a485343dac97a670d95cf8905
|
||||
---
|
||||
# Herdr v1.2 分工与自动审批
|
||||
|
||||
授权:用户要求研究所给方案、纳入仅 Herdr 生效规范,并让已准备客户端自动通过工具请求。本轮修改规则与对应本地入口,提交/合入 dev;不改个人全局配置,不花费模型额度做探针,不操作产品/test/main,不 push。
|
||||
|
||||
本会话 HERDR_ENV 检查失败;依 Herdr 技能不查看/操作现有会话。以本机帮助/非敏感模型别名、官方文档及真实临时 Git/SQLite 配合模拟 Herdr 边界验收,不能声称真实 pane 已启动。
|
||||
|
||||
范围:AGENTS/PROJECT 条件入口、roster、两个启动/派发脚本及共享模块/测试。写入通过任务 path 租约;共享 CURRENT 用 CAS。保留其他任务与已存在 cleanup_pending。
|
||||
|
||||
结论与验收见下文。交付后的原 task_id 继续用于 Kimi 总次数;不得以拆子任务重置预算。
|
||||
|
||||
## 研究与验证结果
|
||||
|
||||
总体采纳。修正 Cursor“无限量”前提、执行跟踪与代码实施边界、默认唯一实施与显式故障接管的矛盾;Kimi 应急/终稿共用上限,GPT 耗尽不以文稿审核代替代码安全终审;普通会话不套用本分工。
|
||||
|
||||
本机配置只读核验:Claude Opus/Sonnet 别名为 glm-5.3[1m],Haiku 为 glm-5.3-flash[1m];Codex 默认 gpt-6-astra;PI 默认 minimax-cn/MiniMax-M3,模型目录可列出 qwen-token-plan-cn/qwen3.8-max、qwen3.8-flash 与 zai-coding-cn/glm-5.3。未读取或输出凭证;未修改这些全局设置;未实际调用远端模型。
|
||||
|
||||
- 11 项专用行为测试 PASS(4.664s),包含九个 profile 的自动审批 flags、Herdr 外/错工作区拒绝、目标 pane 检查、报告路由、显式实施备援、不确定发送不重投、唯一重试标记、同角色歧义、Kimi 关停/跨入口计数/未知结果不退款;八进程竞争只有一次真实模拟发送。
|
||||
- [测试输出](../../test-reports/assets/2026-09-21-herdr-v12/focused-tests.txt);[九种启动命令](../../test-reports/assets/2026-09-21-herdr-v12/launch-commands.json)。Git/SQLite 是真实临时仓库,Herdr transport 为 fake,绝不将其声明为实际 pane 启动/模型 E2E。
|
||||
- PI 安装版本 0.85.1 的本机 README 明确内置工具无权限弹窗,`--approve` 是项目文件信任;扩展仍可自建交互。Cursor force 保留显式 deny,Kimi 使用 auto 而非 yolo。其他本机帮助与[官方出处](../../ops/2026-09-13-herdr-agent-roster.md#5-自动通过请求与实际启动)相互核对。
|
||||
- 本地复核:路由/参数集中于一个 Python 模块,两个 shell 薄入口不复制策略;保留 task 与主仓 `.locks` 身份校验;Kimi 占用在投递前事务提交。没有后台队列/全账户计费控制,MiniMax/GPT 预算轮次由任务记录管理。
|
||||
- 代码不涉及产品 Go/前端/数据库业务;无需产品重建。提交后的候选将按工程测试全集验证,再受控合入 dev;真实 Herdr 会话核验留给下一次在 Herdr 内的实际任务,不在外部强行接入。
|
||||
|
||||
## 收口
|
||||
|
||||
实现提交 `8bc7940e`;生效 dev 候选 `8c5e3477585fe27a485343dac97a670d95cf8905`,其第一父节点 `d919e06a`,主目录持锁快进接收同一已验证节点。[候选完整输出](../../test-reports/assets/2026-09-21-herdr-v12/candidate-tests.txt):87 tests PASS,36.216s,含原门禁与本轮 11 项测试。语法、diff 与本轮链接检查均通过。收口附加提交仅文档,按文档契约另验。
|
||||
|
||||
运行边界:未启动真实 Herdr/pane/模型请求,未改全局配置、产品服务或数据库;deployment=not_required,无远端 push。不会把模拟 transport 的通过当作实际账户、余额或审批 UI 已消失的证明。
|
||||
|
||||
清理:[进程可见性预检](../../test-reports/assets/2026-09-21-herdr-v12/cleanup-preflight.json)拒绝,部分同 UID cwd 不可读。保留 `.worktrees/herdr-orchestration-v12` 与 `.worktrees/integrate-herdr-orchestration-v12`;独立维护者在 owner 退出和进程可见性核实后重跑普通 remove/-d 的全部门禁,不强删,不接管其他任务。
|
||||
|
||||
影响:Herdr roster、条件入口、规范登记、启动/派发脚本一致;不改变 FEATURE-MATRIX 的产品状态或治理完整自动化 partial,也不改变 gap-matrix。下一次实际 Herdr 任务先核验模型/自动审批启动状态,再按既有任务范围调度;Kimi 仅有必要时调用一次。
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
title: "意图确认优先与阶段感知消解"
|
||||
status: done
|
||||
created: 2026-09-21
|
||||
updated: 2026-09-21
|
||||
owner: Cursor
|
||||
branch: fix/intent-confirm-stage-aware-2026-09-21
|
||||
worktree: .worktrees/intent-confirm-stage-aware-2026-09-21
|
||||
base_dev_sha: 49fb68fec1ea56f00616c23d08efb15950c2300d
|
||||
mutex: intent+web+docgov
|
||||
---
|
||||
|
||||
# 意图确认优先与阶段感知消解
|
||||
|
||||
## 目标
|
||||
|
||||
商务流初期「整理一下需求」等弱写表述 → 阶段感知消解为 intake,经确认卡片拍板后再执行;不强指令误伤。扩展已合入的工作流作用域修复。
|
||||
|
||||
## 范围
|
||||
|
||||
- 批次5 `feat(intent)`:弱写动词 + `stageAwareRequirementsTask` + `needs_confirmation`
|
||||
- 批次6 `feat(coordinator)`:智能确认门禁(PendingExpectation)
|
||||
- 批次7 `feat(web)`:阶段错误降级聊天一次
|
||||
- 批次8:验收报告 + 合回 `dev` + 真实 PI 抽样
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 批次5–7 实现与单元门禁
|
||||
2. [x] 批次8:合入 `dev@0c401904` + rebuild + 真实链路抽样(陈威项目 6579)
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] V0.1「整理一下需求」→ 确认 →「好」→ intake(单元 + 真实 PI)
|
||||
- [x] 强指令不强制确认;「编写用户需求表」无 rdev 误拦
|
||||
- [x] 合入后真实 PI 抽样(见测试报告)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Plan: `~/.cursor/plans/意图确认优先与阶段感知_7ab2c4d5.plan.md`
|
||||
- Prior (done): `.doc/archive/ops/2026-09-21-intent-workflow-scoping.md`
|
||||
- Test report: `.doc/test-reports/2026-09-21-intent-confirm-stage-aware-test-report.md`
|
||||
@@ -1,70 +0,0 @@
|
||||
---
|
||||
title: "意图填槽工作流作用域修复"
|
||||
status: done
|
||||
created: 2026-09-21
|
||||
updated: 2026-09-21
|
||||
owner: Cursor
|
||||
branch: fix/intent-workflow-scoping-2026-09-21
|
||||
worktree: "-"
|
||||
mutex: intent+web+docgov
|
||||
---
|
||||
|
||||
# 意图填槽工作流作用域修复
|
||||
|
||||
## 目标
|
||||
|
||||
意图识别填槽(target_doc / target_task)只命中当前激活工作流的文档与任务;显式点名其他工作流的文档时拦截并引导切换工作流,不误触、不执行。
|
||||
|
||||
## 背景
|
||||
|
||||
用户反馈:填「要修改的文档」等槽位时可能命中其他工作流的文档。根因链(2026-09-21 调研):
|
||||
|
||||
1. `intent.ContextSnapshot` 无 workflow 字段,`ToSnapshot()` 丢弃 `Project.ActiveWorkflowKey`;server 默认上下文硬编码 `CurrentWorkflow: "intake"`
|
||||
2. `extractDocName` 词表全是 main(bd_)流文档名,无按流归属约束
|
||||
3. 消费端匹配池 `ListWorkflowDocumentsByProject` 仅按 project_id 过滤(跨工作流全量),`selectReadableWorkflowDocument` 双向 contains 模糊匹配取首个命中
|
||||
4. 前端 `resolveTaskTemplateForMessage` 匹配池 `currentProjectDeliverables` 仅按 projectId 过滤;`activeWorkflowKey` 只用于徽标展示
|
||||
|
||||
## 范围
|
||||
|
||||
- 批次1 `feat(intent)`:`ContextSnapshot` 增加 `ActiveWorkflowKey`;`ToSnapshot` 下传;docgov 命中他流文档名时打 `workflow_scope_mismatch` 标记不误填
|
||||
- 批次2 `feat(coordinator+server+projectinstance)`:`ActiveWorkflowTaskKeys` 辅助查询;文档匹配池收窄到激活流;`ErrDocWrongWorkflow` 拦截引导;TRIGGER_TASK 任务键归属校验;enrich 时注入真实 `active_workflow_key`
|
||||
- 批次3 `feat(web)`:`DeliverableItem.workflowKey`;文档列表 API 附带 `workflow_key` 与 `active_workflow_key`;templateMatch 匹配池按激活流过滤,他流点名返回 wrongWorkflow 提示
|
||||
- 批次4:真实环境验收 + 测试报告 + 合回 dev
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不迁移 `document_records` 表(不加 workflow_instance_id 列)
|
||||
- 不改 `production_ready`、不晋升 test/main、不动项目 143
|
||||
- 不改 SWITCH_WORKFLOW 意图本身行为
|
||||
- UI 文档展示列表保持全量(仅匹配池收窄)
|
||||
|
||||
## 渐进安全策略
|
||||
|
||||
`active_workflow_key` 为空或查不到激活实例(存量单流项目、planning 态)→ 不过滤,保持现状行为。
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 批次1:intent 快照与工作流词表归属
|
||||
2. [x] 批次2:服务端匹配池收窄与拦截引导
|
||||
3. [x] 批次3:前端模板匹配池收窄
|
||||
4. [x] 批次4:真实环境验收、报告归档、合回 dev
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 激活 main 流说「查看调研报告」→ 命中 main 流文档(正例;修改/生成话术另记路由噪声)
|
||||
- [x] 激活 main 流说「编写项目建议书」(rdev 流文档)→ 拦截 + 引导切换(反例;tasks/run 409 ERR_DOC_WRONG_WORKFLOW)
|
||||
- [ ] 激活 rdev 流后同名操作 → 正常执行(切换后正例;本轮 SWITCH 落库未兑现,记 deferred)
|
||||
- [x] 存量无 active_workflow_key 项目 → 行为不变(回归)
|
||||
- [x] 相关包 `go vet` / scoped `go test -short`、`web: npm test && npm run build` 全绿
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Plan: `~/.cursor/plans/意图填槽工作流作用域修复_dba2ab4c.plan.md`
|
||||
- Handoff:
|
||||
- Test report: `.doc/test-reports/2026-09-21-intent-workflow-scoping-test-report.md`
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
用户在 dev 商务对接实测发现跨工作流误命中。用户在方案确认时选定:严格拦截 + 引导切换;等四问题修复 mutex 释放后独立分支推进。
|
||||
|
||||
- 2026-09-21 收口:已合入 `dev@e0665ca4`,验收报告见 `.doc/test-reports/2026-09-21-intent-workflow-scoping-test-report.md`。
|
||||
@@ -1,59 +0,0 @@
|
||||
---
|
||||
title: "工作流作用域权重化"
|
||||
status: done
|
||||
created: 2026-09-21
|
||||
updated: 2026-09-21
|
||||
owner: Cursor
|
||||
branch: feature/workflow-scope-weighting-2026-09-21
|
||||
worktree: .worktrees/workflow-scope-weighting-2026-09-21
|
||||
base_dev_sha: 10aee3feb478c550adc9959f2d3a8d17cd5b48a0
|
||||
write_scope: [internal/workflowscope, internal/intent, internal/server, internal/coordinator, internal/config, internal/sysadmin, web/src, docker-compose.dev.yml, docker-compose.test.yml, docker-compose.main.yml, .env.example, .doc]
|
||||
head_sha: 7723a5515948788602b342cdda1137c90fee311b
|
||||
deployment: deployed
|
||||
cleanup: pending
|
||||
mutex: intent+web+docgov
|
||||
---
|
||||
|
||||
# 工作流作用域权重化
|
||||
|
||||
## 目标
|
||||
|
||||
把「句子里出现他流文档短语就硬拦截」改为「匹配质量 × 工作流关系权重」裁决。激活流优先;只有他流精确命中明显压过激活流时才跨流。只读跨流在查看权限通过后放行并注明归属;写动作仍引导到项目设置切换(跨流写在现架构下不可执行)。`WORKFLOW_SCOPE_MODE` 默认 `strict`,保持现状。
|
||||
|
||||
## 范围
|
||||
|
||||
- 新建 `internal/workflowscope`(开关、关系权重、打分裁决)
|
||||
- 服务端文档读取、意图填槽、前端模板匹配改用同一裁决
|
||||
- compose / `.env.example` / sysadmin 登记开关
|
||||
- dev 真实环境验收与测试报告
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不迁移 `document_records`,不加 `workflow_instance_id`
|
||||
- 不改工作流切换 / 激活接口
|
||||
- 不改 `production_ready`,不晋升 test/main,不动项目 143
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 打分内核与开关
|
||||
2. [x] 服务端只读跨流放行与查看权限
|
||||
3. [x] 意图填槽改打分
|
||||
4. [x] 前端模板匹配改打分
|
||||
5. [x] 开关声明、真实验收、报告、合回 dev
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] strict 模式与现有跨流拦截断言一致
|
||||
- [x] weighted 下激活流精确名压过他流短语,不再误拦
|
||||
- [x] weighted 下只读精确点名他流文档可放行并注明归属;写动作仍拦截
|
||||
- [x] 无查看权限 / 实例已关闭时跨流只读拒绝
|
||||
- [x] 空激活键不过滤
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Plan: `~/.cursor/plans/工作流作用域权重化_411b5e35.plan.md`
|
||||
- Test report: `.doc/test-reports/2026-09-21-workflow-scope-weighting-test-report.md`
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
查看权限:治理实例 `ViewableTaskKeys` 只含当前实例已启用文档。他流任务键不在快照内,不能把它当成「显式隐藏」。判定为:解析失败按 `failClosedAuthz` 拒绝;`ViewableTaskKeys` 为空(实例已关闭)拒绝;键落在当前实例但不可见则拒绝;键不属于当前实例、且调用方已能查看该实例文档时允许只读。
|
||||
+6
-4
@@ -8,6 +8,8 @@ status: closed
|
||||
|
||||
# 交接:Herdr Agent 治理分支待集成
|
||||
|
||||
> **superseded 2026-09-14**:Herdr 角色/脚本已从活文档移除;本交接仅作历史证据。见 [.././2026-09-14-remove-herdr-agent-settings.md](.././2026-09-14-remove-herdr-agent-settings.md)。
|
||||
|
||||
## 目标(下一位 Agent 应完成什么)
|
||||
|
||||
治理规范已完成并准备合入 `dev`;本文件保留为集成证据。
|
||||
@@ -36,9 +38,9 @@ status: closed
|
||||
|
||||
| 路径 | 说明 |
|
||||
|------|------|
|
||||
| `.doc/ops/2026-09-13-herdr-agent-roster.md` | 角色与路由 SSOT |
|
||||
| `scripts/herdr-agent-start.sh` | 免人工审批启动入口 |
|
||||
| `scripts/herdr-agent-dispatch.sh` | 主备派发与防重复策略 |
|
||||
| `.doc/archive/ops/2026-09-13-herdr-agent-roster.md` | 角色与路由 SSOT(已归档) |
|
||||
| `scripts/herdr-agent-start.sh` | 免人工审批启动入口(已删除) |
|
||||
| `scripts/herdr-agent-dispatch.sh` | 主备派发与防重复策略(已删除) |
|
||||
| `AGENTS.md` / `PROJECT.md` | 强制入口与 PI 身份边界 |
|
||||
|
||||
## 如何验证
|
||||
@@ -59,5 +61,5 @@ git diff --check
|
||||
## 相关链接
|
||||
|
||||
- CURRENT: [CURRENT.md](../CURRENT.md)
|
||||
- Task: [2026-09-13-herdr-agent-governance.md](../../archive/ops/2026-09-13-herdr-agent-governance.md)
|
||||
- Task: [2026-09-13-herdr-agent-governance.md](./2026-09-13-herdr-agent-governance.md)
|
||||
- Checklist: 任务文中的验收标准
|
||||
@@ -1,49 +0,0 @@
|
||||
---
|
||||
title: "FEATURE-MATRIX 深度测试 + 晋升部署 test"
|
||||
status: done
|
||||
created: 2026-09-16
|
||||
updated: 2026-09-16
|
||||
owner: Cursor-Auto
|
||||
branch: feature/matrix-deep-test-promote-test
|
||||
worktree: "-"
|
||||
mutex: infra
|
||||
---
|
||||
|
||||
# FEATURE-MATRIX 深度测试 + 晋升部署 test
|
||||
|
||||
## 目标
|
||||
|
||||
按 FEATURE-MATRIX 对已实现模块做分层深度回归,通过后将本地 `dev` 晋升到 `test`(`rc-v1.0.0-beta.2`)并 rebuild/冒烟 `:8081`。
|
||||
|
||||
## 范围
|
||||
|
||||
- Wave 1:vet/short/arch/npm/bundle + 模块定向 + 隔离治理 PG
|
||||
- Wave 2:dev `:8080` live API 抽检
|
||||
- Wave 3:真实 PI 抽样(失败再升格三链)
|
||||
- Wave 4:`dev` → `test` + rebuild + smoke
|
||||
- Wave 5:测试报告 + SSOT
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不实现纯软件项目自举
|
||||
- 不默认 28min 三工作流 PI;不合 `main`;不改项目 143;不启用 FAV
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 认领占槽
|
||||
2. [x] 自动化深度回归
|
||||
3. [x] live `:8080` 抽检
|
||||
4. [x] PI 抽样
|
||||
5. [x] 晋升 test 并冒烟
|
||||
6. [x] 报告与归档
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 矩阵已实现行均有 PASS 证据
|
||||
- [x] `:8081` health/ready schema=47;`test-env-smoke.sh` PASS
|
||||
- [x] tag `rc-v1.0.0-beta.2`;报告归档
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Plan: matrix_deep_test_promote
|
||||
- FEATURE-MATRIX / CURRENT / gap-matrix
|
||||
@@ -1,47 +0,0 @@
|
||||
---
|
||||
title: "发布门禁闭环 → production_ready"
|
||||
status: done
|
||||
created: 2026-09-16
|
||||
updated: 2026-09-16
|
||||
owner: Cursor-Auto
|
||||
branch: docs/production-ready-flip
|
||||
worktree: "-"
|
||||
mutex: ci
|
||||
---
|
||||
|
||||
# 发布门禁闭环 → production_ready
|
||||
|
||||
## 目标
|
||||
|
||||
按 gap-matrix 发布门禁勾选 B1–B4,对齐环境 schema 后翻 `production_ready=yes`。
|
||||
|
||||
## 范围
|
||||
|
||||
- B1 CI TEST_DATABASE_URL + 治理 PG(已完成)
|
||||
- B2 真实 PI 三工作流 E2E(已完成)
|
||||
- B3 对话全链路恢复(已完成)
|
||||
- B4 版本冲突/终止 preview(已完成)
|
||||
- B5 SSOT 翻旗 + main schema 对齐(已完成)
|
||||
|
||||
## 非目标
|
||||
|
||||
- 多意图 U9–U12、软件项目自举、FAV、完整 PI change-report 叙事
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] B1 BUG-08
|
||||
2. [x] B2 PI E2E
|
||||
3. [x] B3 chat refresh + restart
|
||||
4. [x] B4 conflict + termination-preview + envelope unwrap
|
||||
5. [x] B5 merge/smoke、main rebuild 迁库、翻旗
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] gap 门禁四框可勾(含对话与前端)
|
||||
- [x] FEATURE-MATRIX / gap / CURRENT `production_ready: yes`
|
||||
- [x] main/dev/test health schema_version=47
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Test reports: `2026-09-16-ci-governance-pg-bug08`、`pi-three-workflow-e2e`、`chat-refresh-gate`、`frontend-gate-b4`
|
||||
- gap-matrix / FEATURE-MATRIX / CURRENT
|
||||
@@ -1,48 +0,0 @@
|
||||
---
|
||||
title: "Wave 2B PU5B:nightly PI + promotion receipt"
|
||||
status: done
|
||||
created: 2026-09-16
|
||||
updated: 2026-09-16
|
||||
owner: Cursor
|
||||
branch: feature/wave2b-nightly-promotion-receipt
|
||||
worktree: "-"
|
||||
mutex: ci
|
||||
---
|
||||
|
||||
# Wave 2B PU5B:nightly PI + promotion receipt
|
||||
|
||||
## 目标
|
||||
|
||||
落地夜间真实 PI 回归入口、不可变 promotion receipt,以及晋升脚本强制校验;same-image digest 晋升本轮仅做到 same-commit + digest 可追溯。
|
||||
|
||||
## 范围
|
||||
|
||||
- promotion receipt 写/校验 + waiver
|
||||
- nightly-real-pi.yml + run-nightly-real-pi.sh
|
||||
- git-workflow-helper / promote-to-test / release-to-main 门禁钩子
|
||||
- 报告与 FEATURE-MATRIX / remediation 同步
|
||||
|
||||
## 非目标
|
||||
|
||||
- compose 按 digest pull 的同镜像晋升流水线
|
||||
- Playwright 双标签;升 MULTI_INTENT tier
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 认领 + 开分支
|
||||
2. [x] receipt 写/校验脚本
|
||||
3. [x] nightly workflow + 本机脚本
|
||||
4. [x] 晋升钩子
|
||||
5. [x] 报告 + 合入 dev
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 缺 secret/runner → infra_fail,晋升拒绝
|
||||
- [x] product_fail → 晋升拒绝
|
||||
- [x] pass receipt → 晋升可过;无 receipt → 非零退出
|
||||
- [x] 报告归档(`.doc/test-reports/2026-09-16-wave2b-nightly-promotion-receipt-test-report.md`)
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Remediation PU5B: `../../remediation/2026-09-16-feature-matrix-production-readiness-plan.md`
|
||||
- Test report: `../../test-reports/2026-09-16-wave2b-nightly-promotion-receipt-test-report.md`
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
title: "Wave 2C:同 digest 镜像晋升"
|
||||
status: done
|
||||
created: 2026-09-16
|
||||
updated: 2026-09-16
|
||||
owner: Cursor
|
||||
branch: feature/wave2c-same-image-digest
|
||||
worktree: "-"
|
||||
mutex: infra
|
||||
---
|
||||
|
||||
# Wave 2C:同 digest 镜像晋升
|
||||
|
||||
## 目标
|
||||
|
||||
候选 commit 一次构建;test/main 按 receipt digests 启动;pinned 禁止 rebuild 另造镜像。
|
||||
|
||||
## 范围
|
||||
|
||||
- candidate-images-build/apply
|
||||
- compose + env-service pinned
|
||||
- promote/release 钩子 + receipt --require-digests
|
||||
- nightly digests 对齐
|
||||
|
||||
## 非目标
|
||||
|
||||
- 远程 registry;升 tier;Playwright;U8 quality_failed(Phase 3)
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 认领 + 开分支
|
||||
2. [x] build/apply + check digests
|
||||
3. [x] compose/env-service/hooks
|
||||
4. [x] nightly align
|
||||
5. [x] 报告合入
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] PASS receipt 含 digests;apply 后 ID 一致
|
||||
- [x] pinned rebuild 不换 ID(env-service 拒绝 --build)
|
||||
- [x] 缺 digest 拒绝晋升
|
||||
@@ -1,26 +0,0 @@
|
||||
---
|
||||
title: "Wave 3 PU6–PU8 go/no-go 文档任务"
|
||||
status: done
|
||||
created: 2026-09-16
|
||||
updated: 2026-09-16
|
||||
owner: Cursor
|
||||
branch: feature/wave3-pu6-pu8-go-no-go
|
||||
worktree: "-"
|
||||
mutex: architecture-docs
|
||||
---
|
||||
|
||||
# Wave 3 PU6–PU8 go/no-go 文档任务
|
||||
|
||||
## 目标
|
||||
|
||||
完成 PU6–PU8 产品 go/no-go 记录与获批后契约;未获批不实施。
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] 调研 go/no-go 总文
|
||||
2. [x] PU6–PU8 / U9–U12 契约
|
||||
3. [x] 勾 DoD + 矩阵/CURRENT 同步 + 合入
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Research: `../research/2026-09-16-wave3-pu6-pu8-go-no-go.md`
|
||||
@@ -1,59 +0,0 @@
|
||||
---
|
||||
title: "个人工程中控台:实时项目看板与离线 HTML 快照"
|
||||
status: done
|
||||
created: 2026-09-17
|
||||
updated: 2026-09-17
|
||||
owner: Cursor-Auto
|
||||
branch: feature/engineering-dashboard
|
||||
worktree: .worktrees/feature-engineering-dashboard
|
||||
mutex: engineering-dashboard
|
||||
---
|
||||
|
||||
# 个人工程中控台:实时项目看板与离线 HTML 快照
|
||||
|
||||
## 目标
|
||||
|
||||
实现一个独立于产品后台的本地只读中控台,以同一不可变快照驱动实时页面、机器可读 JSON 与单文件 HTML 导出。
|
||||
|
||||
## 范围
|
||||
|
||||
- 聚合 `.doc`、Git/worktree、Docker/Compose、`/ready` 和晋升凭证。
|
||||
- 展示架构、模块、功能、任务、分支、验证和环境实装证据。
|
||||
- 提供 Markdown 搜索、阅读、正反向链接和证据链导航。
|
||||
- 显示来源、新鲜度、degraded 与 drift,不把声明状态当作观测状态。
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不接入产品后台、产品数据库或产品权限体系。
|
||||
- 不写文档,不操作 Git、Docker、部署或 Herdr。
|
||||
- 不隐式联网或执行 `git fetch`。
|
||||
|
||||
## 步骤
|
||||
|
||||
1. [x] U1:冻结快照、事实与四轴状态契约。
|
||||
2. [x] U2:实现文档图谱与领域解析器。
|
||||
3. [x] U3:实现 Git 与 worktree 采集。
|
||||
4. [x] U4:实现运行态与部署证据采集。
|
||||
5. [x] U5:实现对账、派生视图与新鲜度。
|
||||
6. [x] U6:实现本地服务、总览与文档导航。
|
||||
7. [x] U7:实现离线导出、脚本、浏览器验收和治理文档同步。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 实时 HTML、离线 HTML 和 JSON 引用同一 `generation_id` 与 `revision_id`。
|
||||
- [x] 计划、实施、验证、实装四轴独立展示。
|
||||
- [x] rdev、dev ahead、main events 分叉三个真实样本按方案输出。
|
||||
- [x] 单源失败时页面仍可用,且显示 stale/error/last-success。
|
||||
- [x] 默认仅监听 loopback,无写操作、凭证暴露、路径越界和远程资源执行。
|
||||
- [x] 导出 HTML 离开仓库后仍可阅读 Markdown,且不嵌入 assets。
|
||||
|
||||
## 相关链接
|
||||
|
||||
- 设计与实施方案:[../../archive/design/2026-09-17-personal-engineering-control-center-plan.md](../../archive/design/2026-09-17-personal-engineering-control-center-plan.md)
|
||||
- Test report: [../../test-reports/2026-09-17-engineering-dashboard-test-report.md](../../test-reports/2026-09-17-engineering-dashboard-test-report.md)
|
||||
|
||||
## 证据 / 备注
|
||||
|
||||
- 实现提交序列见 `feature/engineering-dashboard`(U1→U7)。
|
||||
- 启动:`./scripts/engineering-dashboard.sh serve --repo . --addr 127.0.0.1:8787`
|
||||
- 导出:`./scripts/engineering-dashboard.sh export --repo . --output /tmp/engdash.html`
|
||||
@@ -76,7 +76,7 @@ severity: high
|
||||
## 关联整改
|
||||
|
||||
- Remediation: [../remediation/2026-09-13-chat-history-refresh-remediation.md](../remediation/2026-09-13-chat-history-refresh-remediation.md)
|
||||
- Short-term: [../archive/ops/2026-09-13-chat-history-refresh-remediation.md](../archive/ops/2026-09-13-chat-history-refresh-remediation.md)
|
||||
- Short-term: [../ops/short-term/2026-09-13-chat-history-refresh-remediation.md](../ops/short-term/2026-09-13-chat-history-refresh-remediation.md)
|
||||
- Gap matrix: [../remediation/gap-matrix.md](../remediation/gap-matrix.md)
|
||||
|
||||
## 证据
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "当前受控文档改写被领域关键词改路由到另一交付物"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# 当前受控文档改写被领域关键词改路由到另一交付物
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第二轮真实 UI(schema 30)**UI-05 首个失败**:
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-06 用 overlay/p/h 选择器找不到真实文档块"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-06 用 overlay/p/h 选择器找不到真实文档块
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第六轮真实 UI(schema 30):
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-13a 用整行 option 文案误判编制负责人"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-13a 用整行 option 文案误判编制负责人
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第16轮真实 UI(schema 30,`dev@dd5671e`):UI-00 至 UI-12 PASS;分类导航修复已实证,UI-13a 已能从「我的私密」切回「流程受控」并打开 reviewer B 权限矩阵。
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "文档职责伪造与保存时重取 ETag 可覆盖并发正文"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: critical
|
||||
---
|
||||
|
||||
# 文档职责伪造与保存时重取 ETag 可覆盖并发正文
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
静态审查与 E2E UI-13 路径暴露两类产品缺陷:
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-05b 缺当前受控文档指示语被路由到 feasibility_reg"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-05b 缺当前受控文档指示语被路由到 feasibility_reg
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第五轮真实 UI(schema 30)**UI-05b 首个失败**:
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-06 编辑弹窗打开期间 hydration 换块 ID 导致保存静默丢稿"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-06 编辑弹窗打开期间 hydration 换块 ID 导致保存静默丢稿
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第十二轮真实 UI(schema 30,dev@4c465d2 基线):
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-11 快速 completed 被验收脚本误判为失败"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-11 快速 completed 被验收脚本误判为失败
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第14轮真实 UI(schema 30,`dev@339e871`)在 **UI-11** 失败:页面上传附件并发送「请将此附件归档」后,相邻助手卡片已快速处于 `completed`(文案:已收录补充材料并关联黑板)。
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-07 纯净阅读用 overlay/class*block 找不到真实块"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-07 纯净阅读用 overlay/class*block 找不到真实块
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第八轮真实 UI(schema 30):
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-07 在 CSS transition 中间帧采样纯净阅读"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-07 在 CSS transition 中间帧采样纯净阅读
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第九轮真实 UI(schema 30):
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-05a 未打开待确认报告导致确认按钮缺失"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-05a 未打开待确认报告导致确认按钮缺失
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第四轮真实 UI(schema 30)**UI-05a 首个失败**:
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "post-restart 项目名同时命中顶栏与侧栏"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# post-restart 项目名同时命中顶栏与侧栏
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第18轮真实 UI(schema 31):main **18 PASS / 0 FAIL**。宿主重启 app 后 `UI_PHASE=post-restart` 在页面**已经恢复项目**时失败,尚未走到 `revision-state`。
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-11 prelim_design 缺 output.md 导致 TASK_INTERRUPTED"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-11 prelim_design 缺 output.md 导致 TASK_INTERRUPTED
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第11轮真实 UI(schema 30,`dev@2a58674`):
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "质量门禁自污染与 auto_repair 未启用导致 quality_failed"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# 质量门禁自污染与 auto_repair 未启用导致 quality_failed
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
同一整改范围真实 run(与 SSE/幂等现场同源):
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-03 质量修复子工作区越界改写根 output.md"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-03 质量修复子工作区越界改写根 output.md
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第13轮 Antigravity 完整 UI(schema 30,dev@8b1a531 基线):UI00–02 PASS,UI-03 真实 PI 终态 `quality_failed`,页面 70 分、缺少必填章节「阻塞信息 / 非阻塞信息」。
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "行动计划表状态列「待续」被质量门禁误判为敷衍"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# 行动计划表状态列「待续」被质量门禁误判为敷衍
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第三轮真实 UI(新用户 `mtzzliz5`,新项目,真实 MiniMax):
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "项目 reviewer 未同步到受控文档职责"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: critical
|
||||
---
|
||||
|
||||
# 项目 reviewer 未同步到受控文档职责
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第17轮真实 UI(schema 30,`dev@639969f`):UI-00 至 UI-12 PASS。UI-13a 精确职责断言首次暴露产品缺陷:
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-06 全页模糊保存按钮未发出 PATCH"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-06 全页模糊保存按钮未发出 PATCH
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第七轮真实 UI(schema 30):
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-11 第二份文档路由到 intake 且 human lease 残留"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-11 第二份文档路由到 intake 且 human lease 残留
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第十轮真实 UI(schema 30):
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "任务 run SSE 超时断线后同 turn 误击 DOC_BUSY"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: critical
|
||||
---
|
||||
|
||||
# 任务 run SSE 超时断线后同 turn 误击 DOC_BUSY
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
真实 Antigravity UI-03(dev schema 30):
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
title: "UI-13a 在私密分类下打不开受控工作流文档"
|
||||
status: done
|
||||
status: in_progress
|
||||
created: 2026-09-13
|
||||
updated: 2026-09-22
|
||||
updated: 2026-09-13
|
||||
severity: high
|
||||
---
|
||||
|
||||
# UI-13a 在私密分类下打不开受控工作流文档
|
||||
|
||||
> **W3 UI-rerun 关闭(2026-09-22)**:`status=done`。真实 Playwright 账本 PASS:[`ui-acceptance-results.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results.json)(main UI-00..16)+ [`ui-acceptance-results-post-restart.json`](../test-reports/assets/2026-09-22-docrev-ui-rerun/ui-acceptance-results-post-restart.json)(UI-15)。任务 tip 已合入本地 `dev`;详见 [short-term](../ops/short-term/2026-09-22-docrev-ui-rerun.md) 与 [测试报告](../test-reports/2026-09-22-docrev-ui-rerun-test-report.md)。
|
||||
|
||||
|
||||
## 现象
|
||||
|
||||
第15轮真实 UI(schema 30,`dev@48a4dcb`):UI-00 至 UI-12 全部 PASS,UI-11 快速完成修复已实证 PASS。**UI-13a 在真正权限断言前失败**。
|
||||
|
||||
@@ -1,22 +1,20 @@
|
||||
---
|
||||
title: "arch-check U1 可重放基线"
|
||||
title: "arch-check Wave 0 基线"
|
||||
status: done
|
||||
created: 2026-09-14
|
||||
updated: 2026-09-14
|
||||
severity: medium
|
||||
---
|
||||
|
||||
# arch-check U1 可重放基线
|
||||
# arch-check Wave 0 基线
|
||||
|
||||
## 现象
|
||||
|
||||
Wave 0 的全仓 grep 会把 Goose、`*_test.go` 和路径字面量一视同仁,无法作为生产写者门禁。U1 用 `go list` + AST/正则拆成四类规则,并给每条既有债写明 owner、原因、截止里程碑和到期日。
|
||||
模块边界此前只能靠人工约定。Wave 0 用当前 `go list` 生成 import allowlist,并用目标属主扫描表名与路径字面量,得到可重复的 warn 基线。
|
||||
|
||||
## 根因分析
|
||||
|
||||
- `document_records` 的生产写者不止 `docgov`:`docrevision.projectRootPointersTX` 与 `docduty` 职责槽位仍直接 `UPDATE`。
|
||||
- `output.md` / `data/dev` / `workspaces/` 仍被 agent、bizdev、coordinator、docgov、docrevision、server、storage 用 `filepath.Join`、字符串字面量或间接常量构造。
|
||||
- Goose 与测试夹具大量出现同样表名,不能算生产写者债。
|
||||
`document_records`、`output.md`、`data/dev` 被多个包直接提及,与「单一写者 / 路径属主」目标不一致。这些不是本轮回归,而是 Wave 1+ 的收口对象。
|
||||
|
||||
## 严重度
|
||||
|
||||
@@ -26,39 +24,29 @@ Wave 0 的全仓 grep 会把 Goose、`*_test.go` 和路径字面量一视同仁
|
||||
|
||||
- ADR: [../adr/2026-09-14-modular-monolith-decoupling.md](../adr/2026-09-14-modular-monolith-decoupling.md)
|
||||
- 设计: [../system-design/2026-09-14-module-decoupling-architecture.md](../system-design/2026-09-14-module-decoupling-architecture.md)
|
||||
- 边界: [../system-design/module-boundaries.yaml](../system-design/module-boundaries.yaml)
|
||||
- 任务: [../ops/short-term/2026-09-14-document-reliability-pilot.md](../ops/short-term/2026-09-14-document-reliability-pilot.md)
|
||||
- 任务: [../ops/short-term/2026-09-14-module-decoupling-wave0.md](../ops/short-term/2026-09-14-module-decoupling-wave0.md)
|
||||
|
||||
## 证据
|
||||
|
||||
命令(2026-09-14,`refactor/document-reliability-pilot` worktree):
|
||||
命令:`./scripts/arch-check.sh --mode warn`(2026-09-14,本工作区)
|
||||
|
||||
- import 相对基线 allowlist:**0** 条新边
|
||||
- 目标属主扫描:**21** 条 warn(按包去重)
|
||||
|
||||
```
|
||||
./scripts/arch-check.sh --mode warn
|
||||
go test ./internal/archtest -count=1
|
||||
WARN R5 table document_records mentioned in authz, workspace, docduty, server, bizdev, docrevision
|
||||
WARN R5 table freeform_documents mentioned in docrevision
|
||||
WARN R5 table task_runs mentioned in server, projectinstance, docgov
|
||||
WARN R6 path output.md mentioned in coordinator, server, bizdev, docgov, docrevision, agent
|
||||
WARN R6 path data/dev mentioned in coordinator, server, bizdev, storage
|
||||
WARN R6 path workspaces/ mentioned in server
|
||||
violations=21
|
||||
arch-check warn: recorded 21 baseline findings
|
||||
```
|
||||
|
||||
可重放计数(只含生产 Go;Goose/`*_test.go` 不计):
|
||||
`--mode block` 会因这 21 条失败,故 **不得**在 warn 期满前把脚本挂进集成冒烟。
|
||||
|
||||
| 规则 | 计数 | 处理 |
|
||||
|------|------|------|
|
||||
| import | 0 | 相对 2026-09-14 production `go list` allowlist,无新边 |
|
||||
| sql_write | 5 | 例外,U3/U8 到期 |
|
||||
| path | 17 | 例外,U4/U5/U8 到期 |
|
||||
| event | 0 | `OnOutbox` 生产者属主为 docrevision,server/notification 为消费者 |
|
||||
## 后续
|
||||
|
||||
验证:
|
||||
|
||||
- `deploy/postgres/goose` 与 `*_test.go` 出现 `document_records` 不报生产写者违规。
|
||||
- 迷你仓 `internal/server/rogue_write.go` 新增 `UPDATE document_records` 时 `go test ./internal/archtest` 失败并指出文件。
|
||||
- `filepath.Join`、字符串拼接、间接常量构造 `output.md` 均可检出。
|
||||
- 无到期日例外、过期例外立即 block。
|
||||
- `baseline_counts` 锁定现有计数,只能下降。
|
||||
|
||||
`--mode block` 在例外清零前会失败,不得挂进集成冒烟。
|
||||
|
||||
## 开放问题
|
||||
|
||||
- U3 收口 `document_records` / `freeform_documents` 跨属主写。
|
||||
- U4/U5 收口 handler 与投影路径构造。
|
||||
- U8 收口 `task_runs` 终止写与 finalize `output.md`。
|
||||
- Wave 1 起按属主清零上表,再把对应规则转 block
|
||||
- 本轮不占集成槽、不 `env-service` rebuild
|
||||
|
||||
@@ -1,98 +0,0 @@
|
||||
---
|
||||
title: "模块解耦方案复核"
|
||||
status: done
|
||||
created: 2026-09-14
|
||||
updated: 2026-09-14
|
||||
scope: architecture, transactions, concurrency, authorization, events, artifact recovery
|
||||
---
|
||||
|
||||
# 模块解耦方案复核
|
||||
|
||||
## 结论
|
||||
|
||||
模块化单体、单一写者、瘦传输层和应用编排层的方向成立,但原方案不能直接批准 Wave 1–6。
|
||||
原方案把事务、事件、工作区和最终成果四条边界拆开设计,可能在包依赖减少后产生新的数据不一致、跨租户授权旁路和不可恢复投影。
|
||||
整改应先打通一条真实文档纵向链路,再按证据决定是否扩展到 chat、squad、SSE 和 PI Runner。
|
||||
|
||||
## 已确认问题
|
||||
|
||||
### A1. 单一写者拆分会破坏跨表原子性
|
||||
|
||||
`internal/docrevision/pg_mutate.go` 当前在一个事务中写版本账本并投影 `document_records` 根指针。
|
||||
原方案要求 docrevision 改调 docgov/freedoc 普通端口,却没有定义跨属主事务或命令所有权。
|
||||
如果各端口各自提交,会出现版本账本、正文 head、治理状态和 outbox 部分成功。
|
||||
|
||||
### A2. 现有 outbox 不是可泛化的可靠事件总线
|
||||
|
||||
`internal/docrevision/service.go` 在版本事务完成后调用 `OnOutbox`,并忽略回调错误。
|
||||
`outbox_events` 只有全局 `published_at`,没有逐消费者确认、租约、重试、死信和幂等收件箱。
|
||||
拟议的 `Publish(ctx, event)` 也没有事务作用域,不能兑现“与业务同事务”。
|
||||
|
||||
### A3. 工作区仍被当成事实源
|
||||
|
||||
原 `WorkspaceRef` 暴露 `Root`、`OutputDir` 和 `ManifestPath`,`OutputContract` 继续接受裸路径。
|
||||
这不能从类型上阻止路径拼接、跨工作区访问或链接逃逸。
|
||||
docquery 若继续在运行时从 `output.md` 选择正文,会保留导致历史 404/409 的 split-brain 根因。
|
||||
|
||||
### A4. 最终成果保险库未进入模块边界
|
||||
|
||||
`feature/final-artifact-vault` 已设计并实现终态归档、只读降级和 scratch 恢复,但尚未合入当前 dev 基线。
|
||||
原解耦方案没有为 artifactvault 分配端口、事件、授权和恢复边界,后续容易由 docquery 或 CLI 重建旁路。
|
||||
|
||||
### A5. contracts 可能成为新的高扇入万能包
|
||||
|
||||
原方案把内部接口、HTTP DTO、事件、错误码和共享枚举集中到一个包,并要求所有 DTO 版本化。
|
||||
这会把语义耦合搬到 `contracts` 和 `app`,使普通内部调整承担不必要的 ADR 成本。
|
||||
|
||||
### A6. 并发控制只覆盖了进程内互斥
|
||||
|
||||
当前代码同时存在 `sync.Mutex`、行锁、乐观 ETag、唯一幂等键和 `pg_advisory_xact_lock`。
|
||||
原方案没有规定哪些锁用于正确性、锁顺序、超时、重试边界和多副本行为。
|
||||
进程内锁只能优化单实例竞争,不能作为跨实例正确性条件。
|
||||
|
||||
### A7. 授权主体和后台执行边界缺失
|
||||
|
||||
“在应用层入口统一授权”没有定义可信 Principal 的来源,也没有覆盖 CLI、事件订阅者、恢复工具和后台任务。
|
||||
若端口继续接受调用方填写的 `UserID`、`ProjectID` 或裸 `DocRef`,可能形成 confused-deputy 或跨项目访问。
|
||||
|
||||
### A8. 横向 Wave 缺少最小可交付边界
|
||||
|
||||
原方案先物理搬包,再接口化,最后才处理单写者和事件语义。
|
||||
这会重复修改高扇出代码,并在真正验证边界之前冻结大量无消费者契约。
|
||||
错误信封和 PI Runner 协议与文档一致性解耦没有直接依赖,不应阻塞核心路线。
|
||||
|
||||
### A9. 迁移与回滚承诺不成立
|
||||
|
||||
可靠多消费者 outbox、FAV 集成和必要的状态字段需要增量 migration,因此“数据零迁移”不成立。
|
||||
后续里程碑会依赖前序契约,不能任意独立 revert;只能按 expand/migrate/contract 阶段和兼容窗口回退。
|
||||
|
||||
### A10. 架构检查范围会产生误报
|
||||
|
||||
表名和路径字面量合法存在于 Goose migration、fixture、测试和运维脚本。
|
||||
R5/R6 应检查生产运行时的越权写入和路径解析,不应以全仓 grep 的零出现作为完成条件。
|
||||
|
||||
## 外部规则核对
|
||||
|
||||
- PostgreSQL 行锁和事务级 advisory lock 会在事务结束时释放,适合短期业务互斥;session 级 advisory lock 不跟随回滚,不用于本方案的业务锁。[PostgreSQL explicit locking](https://www.postgresql.org/docs/17/explicit-locking.html)
|
||||
- `SKIP LOCKED` 适合多消费者队列表,不适合作为普通一致性查询语义。[PostgreSQL SELECT](https://www.postgresql.org/docs/current/sql-select.html)
|
||||
- Serializable 或 deadlock 重试必须重跑完整事务,包括决定 SQL 和参数的业务逻辑。[PostgreSQL serialization failure handling](https://www.postgresql.org/docs/16/mvcc-serialization-failure-handling.html)
|
||||
- 授权必须默认拒绝,并在每次请求或后台动作上重新校验,不能信任客户端传入的身份和资源归属。[OWASP Authorization Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html)
|
||||
|
||||
## 整改结论
|
||||
|
||||
1. 暂停批准原 Wave 1–6,保留只读架构基线。
|
||||
2. 先定义事务、锁、授权、事件和持久成果契约。
|
||||
3. 首个交付只覆盖受控文档读取与终态提交纵向链。
|
||||
4. FAV、迁移语料和完整备份作为三个互补层接入。
|
||||
5. 通过真实页面刷新、重启、并发、权限和恢复停走门后,再批准其他模块拆分。
|
||||
|
||||
## 证据入口
|
||||
|
||||
- `internal/docrevision/pg_mutate.go`
|
||||
- `internal/docrevision/service.go`
|
||||
- `internal/workspace/resolver.go`
|
||||
- `internal/docduty/revoke.go`
|
||||
- `internal/taskrun/manager.go`
|
||||
- `deploy/postgres/goose/00018_2026-09-12-outbox-notifications-stage-advance.sql`
|
||||
- `.doc/adr/2026-09-13-document-version-boundary.md`
|
||||
- `feature/final-artifact-vault` 分支中的 FAV ADR、整改方案与测试报告
|
||||
@@ -1,56 +0,0 @@
|
||||
---
|
||||
title: "planning 项目残留 active_workflow_key 异态审计"
|
||||
status: done
|
||||
created: 2026-09-14
|
||||
updated: 2026-09-14
|
||||
severity: low
|
||||
---
|
||||
|
||||
# planning 项目残留 active_workflow_key 异态审计
|
||||
|
||||
## 现象
|
||||
|
||||
dev 库存在 `lifecycle_status='planning' AND active_workflow_key <> ''` 行。评审时记为 81;本轮只读复测为 **83**(相对评审 +2)。这些行看起来像「已选工作流但未走设置激活」。
|
||||
|
||||
## 根因分析
|
||||
|
||||
关闭 `initial_workflow_key` 直通前,`CreateProject` 在键非空时会写 `lifecycle=active` + `ActiveWorkflowKey`。本异态是 **planning 却带 key**,更符合自动化测试夹具成对插入(`PROJ_MGR_*` / `TEST_PROJ_*`),而不是真实用户走创建旁路后的 active 项目。
|
||||
|
||||
本轮 **未** `UPDATE`/`DELETE`。
|
||||
|
||||
## 严重度
|
||||
|
||||
`low`
|
||||
|
||||
创建旁路已在 `fix/governance-action-level-authz` 关闭。存量 83 行全部无 live 实例、无创建人,不影响项目 143,也不阻塞 G1 鉴权矩阵。
|
||||
|
||||
## 关联整改
|
||||
|
||||
- Short-term: [2026-09-14-governance-action-level-authz](../archive/ops/2026-09-14-governance-action-level-authz.md)
|
||||
- Research: [2026-09-14-mvp-governance-rules-review](../ops/research/2026-09-14-mvp-governance-rules-review.md)
|
||||
|
||||
## 证据
|
||||
|
||||
只读查询(`shuimu-context-pg-dev` / `agent_system_dev`,2026-09-14):
|
||||
|
||||
| 指标 | 数量 |
|
||||
|------|------|
|
||||
| `lifecycle=active` | 141 |
|
||||
| `lifecycle=planning` | 209 |
|
||||
| `planning AND active_workflow_key <> ''` | **83** |
|
||||
|
||||
分类(禁止改库,仅标注):
|
||||
|
||||
| 分类 | 数量 | 判定 |
|
||||
|------|------|------|
|
||||
| 测试夹具 | **83** | `code` 为 `PROJ_MGR_YYYYMMDDHHMMSS`(名「智能微创内窥镜」)或 `TEST_PROJ_*`(名「测试内窥镜系统」);`active_workflow_key=main`;`workflow_selection_version=1`;`creator_user_id` 空;`has_live_instance=false`;时间戳成对出现于 2026-09-12~09-14 |
|
||||
| 历史直通(真实用户创建旁路) | **0** | 无非夹具命名、无创建人、无 live 实例的业务项目 |
|
||||
| 不明 | **0** | — |
|
||||
|
||||
样本 id(完整 83 行均属上表夹具模式,不逐条展开):61–62、122–128、6015–6021、6160–6161、6192/6195。项目 **143 不在此集合**。
|
||||
|
||||
相对评审 81 的 +2:`6192` / `6195`,创建于 2026-09-14 07:26 UTC,仍是同一对夹具命名。
|
||||
|
||||
## 开放问题
|
||||
|
||||
- 是否在后续专项清理夹具行(需单独任务与备份,不在本治理鉴权波次)。
|
||||
@@ -1,85 +0,0 @@
|
||||
---
|
||||
title: "前端 mock 交付物污染真实项目:幻影受控文档伪造终审已生效态与法定职责"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
severity: critical
|
||||
---
|
||||
|
||||
# 前端 mock 交付物污染真实项目:幻影受控文档伪造终审已生效态与法定职责
|
||||
|
||||
## 现象
|
||||
|
||||
用户在 **test 环境**(127.0.0.1:8081)新建测试项目「测试项目」(test 库 `projects.id=1`,唯一项目),工作台立即显示 11 份「受控文档」,其中包括与该项目毫无关系的:
|
||||
|
||||
- 《4K超高清荧光内窥镜系统立项与可行性报告》
|
||||
- 《微创外科内窥镜全球竞品技术与临床深度调研报告》
|
||||
- 神经外科双频超声吸引(NeuroPulse)系列
|
||||
- CUSA 超声手术吸引系统系列
|
||||
|
||||
这些文档:
|
||||
|
||||
1. 显示**伪造的生命周期状态**(`reviewing` / `approved`——`DeckDrawer.tsx` 将 `approved` 渲染为「**终审已生效**」),即用户所称「生效区」出现从未经过任何 docgov 生命周期流转的"已生效"文档;
|
||||
2. 带有**伪造的法定职责人**(author 张工 / reviewer 李主管 / approver 王总监——均非真实用户);
|
||||
3. 带有伪造版本号(V1.0)、伪造更新时间、伪造正文全文;
|
||||
4. 在项目成员视角按真实受控文档参与 RBAC 可见性过滤与工作流槽位合并,**与真实服务端文档混排**。
|
||||
|
||||
而 test 库 `document_records` 为 **0 行**——服务端受控文档台账完全为空,这 11 份文档**全部来自前端硬编码 mock 数据**。
|
||||
|
||||
## 根因分析
|
||||
|
||||
### 1. mock 交付物硬编码绑定 projectId 1/2/3/5201/6001–6010
|
||||
|
||||
`web/src/App.tsx:267` `INITIAL_DELIVERABLES` 硬编码 7 份 mock 交付物 `projectId: 1`(doc-001~004、doc-shared-001、doc-private-001/002);`P2_INITIAL`(projectId 2)、`CUSA_INITIAL_DELIVERABLES`(projectId 3)、`NEUROPULSE`(5201)、`TEN_PROJECTS`(6001+)同理。`ALL_INITIAL_DELIVERABLES` 聚合后作为 `loadDeliverables()` 的默认值(App.tsx:621),并经 `saveDeliverables` **写入 localStorage 持久化**。
|
||||
|
||||
### 2. 项目过滤按数字 ID 匹配,新建项目与 mock 项目 ID 撞车
|
||||
|
||||
`App.tsx:1014`:`currentProjectDeliverables = deliverables.filter(doc => doc.projectId === currentProjectId)`。
|
||||
|
||||
- test 库为全新库,用户新建的第一个项目得到 `id=1` → 与 mock 的 `projectId: 1` **精确撞车**,7 份幻影文档全部"归属"该项目;
|
||||
- 新建项目时 `createProjectTemplateDeliverables`(App.tsx:3844)再克隆 7 份模板骨架(`doc-p1-*`,`lifecycleState: 'template'`,合规)→ 7 mock + 4~7 模板/私有,构成用户看到的 11 份;
|
||||
- **dev 库同样中招**:`agent_system_dev.projects` 存在真实项目 id 1–8(智能微创内窥镜/测试内窥镜系统等),id 1/2/3 的真实项目同样被 mock 文档污染。
|
||||
|
||||
### 3. mock 正文与 mock 用户/权限无环境门控,已进生产构建产物
|
||||
|
||||
- `mockDocuments.ts` 无任何 `import.meta.env` 门控;`App.tsx` 中 `MOCK_USERS`(含伪造 `projectPermissions: {doc-001: approver...}`)作为 `loadUsers()` 默认值与 `currentUser` 初始身份兜底(App.tsx:610/617);
|
||||
- **构建产物已验证污染**:`web/dist/assets/index-DogUjae5.js` 中 grep 命中「4K超高清荧光」字符串——dev/test/main 三环境共用同一前端构建,main 生产环境同样受影响。
|
||||
|
||||
### 4. 既有防线只挡"正文请求",不挡"清单展示"
|
||||
|
||||
团队已知悉 legacy mock ID(`revisionToolbarMount.ts:24 isLegacyLocalMockDocId`:`doc-\d{3}` / `doc-shared-*` / `doc-private-*` / `doc-cusa-*`),并禁止它们发起 content/revision 请求(`controlledDocHydrate.ts:shouldLoadControlledContent` 排除)。但这只防住了「幻影文档冒充服务端正文」,**没有防住幻影文档出现在交付物清单、生命周期徽章(终审已生效)、职责栏与项目文档统计中**——用户看到的正是后者。
|
||||
|
||||
### 5. 服务端权威清单未做前端对账
|
||||
|
||||
`GET /api/v1/projects/{id}/documents`(`docgov/project_docs.go`,`WHERE project_id=$1 AND task_key<>''`,服务端已正确按项目隔离)返回空数组时,`mergeWorkflowDocumentsFromServer`(`deliverableSync.ts:41`)**直接 `return prev`,不删除本地多余项**——本地幻影文档无任何下架机制。
|
||||
|
||||
## 严重度
|
||||
|
||||
`critical`:
|
||||
|
||||
1. **治理完整性破坏**:空项目展示「终审已生效」受控文档 + 三级法定职责人,在医疗器械合规语境下(ISO 13485 / 21 CFR Part 11 电子记录可靠性)构成"记录失实";
|
||||
2. **跨环境广泛影响**:dev 真实项目 id 1–8、test 新建项目、main 生产同构建产物全部受影响;
|
||||
3. **权限视图失真**:伪造职责人/权限映射混入 RBAC 过滤链,用户对"谁可审批什么"产生错误认知;
|
||||
4. 既有防线(isLegacyLocalMockDocId)证明团队已两次踩坑(本审计为同域第三类症状),说明 mock 数据保留策略系统性不足。
|
||||
|
||||
## 关联整改
|
||||
|
||||
- Remediation: [2026-09-15-mock-deliverables-pollution-remediation.md](../remediation/2026-09-15-mock-deliverables-pollution-remediation.md)
|
||||
|
||||
## 证据
|
||||
|
||||
- test 库(`shuimu-system-pg-test`,127.0.0.1:5434):`projects` 仅 id=1「测试项目」(通用医疗器械);`document_records` 0 行;全库 87 张业务表除 projects/users/auth_sessions/chat_sessions/project_workflows 外全部为空
|
||||
- dev 库(`shuimu-context-pg-dev`,127.0.0.1:5433):真实项目 id 1–8(智能微创内窥镜 / 测试内窥镜系统)→ 与 mock projectId 1/2/3 撞车
|
||||
- `web/src/App.tsx:267-498`(INITIAL_DELIVERABLES/P2/CUSA/ALL_INITIAL_DELIVERABLES)、`621`(loadDeliverables)、`1014`(projectId 过滤)、`3844`(新建克隆模板)
|
||||
- `web/src/data/mockDocuments.ts:32-505`(mock 文档全文与伪造 lifecycleState/职责人)、`web/src/data/seeds/neuropulseSeed.json`(projectId 5201)、`tenProjectsSeed.json`(6001–6010)
|
||||
- `web/dist/assets/index-DogUjae5.js`:grep 命中「4K超高清荧光」(生产构建含 mock 数据)
|
||||
- `web/src/features/documentRevision/revisionToolbarMount.ts:24-32`(isLegacyLocalMockDocId 既有防线)
|
||||
- `web/src/lib/deliverableSync.ts:41-45`(serverDocs 空时不回收本地项)
|
||||
- `web/src/components/doc/DeckDrawer.tsx:87-103`(approved → 「终审已生效」渲染)
|
||||
- `web/src/api/projectDocuments.ts:46-58`(服务端清单 API,服务端隔离正确)
|
||||
|
||||
## 开放问题
|
||||
|
||||
- mock 数据的保留意图(demo 演示模式?)需要在整改方案中决策:彻底移除 vs 环境门控(`import.meta.env.MODE` / 构建期注入 `VITE_ENABLE_DEMO_SEEDS`)
|
||||
- localStorage 中已被 `saveDeliverables` 持久化的 mock 项,需要一次性迁移清理(对齐既有 `dropRecordKeys`/ControlledInvalidationPlan 机制)
|
||||
- main 环境是否已有真实用户看过幻影文档(`document_access_audit` 为 0 行,无服务端读取痕迹,风险主要在前端展示层)
|
||||
@@ -1,111 +0,0 @@
|
||||
---
|
||||
title: "模块解耦 Phase 2 方案审阅"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
severity: high
|
||||
---
|
||||
|
||||
# 模块解耦 Phase 2 方案审阅
|
||||
|
||||
## 结论
|
||||
|
||||
模块化单体、消费者端口、组合根和持久事件的方向成立,但原 Phase 2 方案不能直接进入实施。它把事件可靠性、结构整理和两个外部协议绑成一个完成目标,并基于数项不成立的代码事实设计切换门。修订版已把 Track E(持久事件)、Track S(结构解耦)、Track P(外部协议)拆开,Track E 必须先完成生产者与历史数据门,再启动 dispatcher。
|
||||
|
||||
## 高优先级发现
|
||||
|
||||
### A1. PG delivery 尚未形成生产闭环
|
||||
|
||||
`internal/events/pg.go` 的 `ClaimIDs` 只做 SELECT + `FOR UPDATE SKIP LOCKED`,没有在同一事务写 lease owner/token/until;也没有 PG ack/fail/retry/dead-letter 的完整生产实现。`internal/events/dispatcher_test.go` 验证的是 MemoryBus。原方案把这些能力写成“已有”,会低估 D1 的 migration、状态机和故障测试范围。
|
||||
|
||||
整改:D1 增加 additive migration、原子 lease、heartbeat、fenced side-effect/ack、retry/dead/quarantine、不可变 attempt 表和独立 `cmd/events` 进程。
|
||||
|
||||
### A2. “恰好一次投递”不可由当前算法保证
|
||||
|
||||
副作用成功后、ack 前崩溃会导致重放。Fencing 若只拦 ack,也拦不住租约过期的旧 worker 提交副作用。
|
||||
|
||||
整改:契约改为 at-least-once delivery + exactly-one visible outcome。Token 进入 consumer command 和最终提交点;数据库副作用与 inbox/token 校验同事务,projection 使用 expected version、digest 和单调 marker。
|
||||
|
||||
### A3. 原 shadow 定义会双写,且按天零差异可空跑通过
|
||||
|
||||
旧方案同时写闭包和消费者结果,却又称“不产生可见变化”;两者矛盾。三天 dev 流量也可能没有低频文档事件或失败分支。
|
||||
|
||||
整改:闭包是 shadow 期间唯一真实写者。消费者只计算 normalized intended outcome 并写 reconciliation。停走门同时要求预登记样本、分支覆盖、最短时间和零未解释 diff;生产入口未证明出事件前不开始计时。
|
||||
|
||||
### A4. 文档事件源与作用域尚不可信
|
||||
|
||||
部分生产 HTTP 路径临时构造 `docflow.Commands`,没有稳定注入 EventSink/UoW。`Environment:"dev"`、`ProjectID:0` 和 FAV stage project 0 会使跨环境/项目 delivery 失真。
|
||||
|
||||
整改:E0A 先由组合根注入唯一命令对象;领域变化、envelope、delivery 同一 UoW;缺 project/env fail closed;旧数据先 inventory。
|
||||
|
||||
### A5. AggregateVersion 不能直接当无缺口事件序号
|
||||
|
||||
当前只在部分领域转换发事件。历史文档首次事件可能从较高版本开始;按缺号等待会永久阻塞。
|
||||
|
||||
整改:D11 在独立 event sequence 与 consumer checkpoint/bootstrap 中二选一,审计现有 aggregate/version 唯一约束并迁移。未决前禁止开启 gap blocking。
|
||||
|
||||
### A6. docgov/docrevision 不是双向 import
|
||||
|
||||
生产方向为 `docgov → docrevision`,用途集中在 canonical Markdown 与 SHA helper。原方案“提升无行为类型到 vocabulary”不能承载 canonicalization 行为。
|
||||
|
||||
整改:D6 改为提取内聚 `doccontent` 行为模块和 golden vectors;D6 可独立执行,不依赖 bizdev/stageflow。
|
||||
|
||||
### A7. event allowlist 已存在
|
||||
|
||||
`module-boundaries.yaml` 已有 `event_producers`/`event_consumers`。问题是映射稀疏,且运行时注册没有与静态清单做 parity 检查。
|
||||
|
||||
整改:D10 提升到 E0A,补 payload schema/version、enabled state 与 registry parity;FAV 标记 disabled。
|
||||
|
||||
### A8. FAV、HTTP、PI 不应阻塞核心
|
||||
|
||||
FAV 分支未完成独立审计。ADR 已把 HTTP 错误信封和 PI result protocol 定义为独立工作。把三者放入 Track E DoD 会延迟最有价值的刷新恢复闭环。
|
||||
|
||||
整改:Track E 只激活 notify、workflow advance、projection。FAV 只预留 disabled 契约;D8/D9 分别另建 remediation。
|
||||
|
||||
### A9. Replay、后台权限与日志脱敏不足
|
||||
|
||||
延迟事件不能沿用历史用户权限;当前 replay 校验不足以支持生产 apply。Raw payload/error 进入 dead-letter 或 reconciliation 会泄露正文、路径或凭证。
|
||||
|
||||
整改:每 consumer 独立 service principal,处理时重读资源和当前权限。Replay 采用 capability + 精确范围 + dry-run digest/apply exact digest + 审计;多项目/批量 apply 两人批准。日志只存 ID/digest/typed code/sanitized summary。
|
||||
|
||||
### A10. 滚动切换缺少集群级权威写者
|
||||
|
||||
删除新版本 hook 不会阻止旧实例继续执行。若 dispatcher 同时 live,滚动部署会双写。
|
||||
|
||||
整改:`off|shadow|live` 使用带 revision 的集群级状态;先部署兼容代码、drain 全部旧实例、记录 backlog 水位,再原子切换。回滚先暂停 claim并核对 receipt/backlog。
|
||||
|
||||
### A11. Locator 门禁原文过宽
|
||||
|
||||
全局禁止 `*pgxpool.Pool`/`pgx.Tx` 会拦截组合根注入与登记表属主的合法 UoW unwrap。
|
||||
|
||||
整改:只禁止领域/用例 API 暴露、返回、转发 pool/tx;明确允许 app/cmd 构造注入和登记属主 unwrap。
|
||||
|
||||
## 范围修订
|
||||
|
||||
| 轨道 | 内容 | 关闭条件 |
|
||||
|---|---|---|
|
||||
| Track E | D1/D2/D3/D10/D11 | PG + browser + restart + auth/replay 证据完成后独立关闭 |
|
||||
| Track S | D4/D5/D6/D7a/D7b | 各单元独立 go/no-go 与报告 |
|
||||
| Track P | HTTP error、PI typed result | 各自独立 remediation,不阻塞 Track E/S |
|
||||
|
||||
## 关联整改
|
||||
|
||||
- [修订后的 Phase 2 计划](../remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md)
|
||||
- [修订后的现状调研](../ops/research/2026-09-15-module-decoupling-ipc-assessment.md)
|
||||
|
||||
## 审阅方法与证据
|
||||
|
||||
- 代码证据:`internal/events/pg.go`、`bus.go`、`dispatcher_test.go`、`replay.go`、`internal/app/docflow/commands.go`、`internal/docgov/lease.go`、`internal/bizdev/service.go`。
|
||||
- Schema:`deploy/postgres/goose/00035_2026-09-14-durable-event-delivery.sql`。
|
||||
- 边界:`.doc/system-design/module-boundaries.yaml`。
|
||||
- 上位决策:模块化单体 ADR 与 Phase 1 U6。
|
||||
- 审阅视角:一致性、可行性、范围、安全、产品价值、对抗失败预演;外部 reviewer 的有效结论仅用于交叉验证,不替代仓库证据。
|
||||
|
||||
## 开放问题
|
||||
|
||||
以下问题必须由 E0A 的代码/数据审计回答,不能在计划阶段猜测:
|
||||
|
||||
- projection consumer 的最终 owner 与 no-replace 提交接口。
|
||||
- event sequence 或 checkpoint/bootstrap 的选择及迁移成本。
|
||||
- 每类事件前 7 天基线流量、shadow 样本 N 和 worker 连接预算。
|
||||
- 现存错误 scope/schema delivery 的数量和 repair/quarantine/expire 分类。
|
||||
@@ -1,122 +0,0 @@
|
||||
---
|
||||
title: "多意图与 HITL 方案复核"
|
||||
status: done
|
||||
created: 2026-09-15
|
||||
updated: 2026-09-15
|
||||
severity: high
|
||||
---
|
||||
|
||||
# 多意图与 HITL 方案复核
|
||||
|
||||
## 结论
|
||||
|
||||
提案方向合理,且可复用现有 IntentFrameV2、ActionRegistry、PendingExpectation、交互卡和可靠事件骨架。但初稿不能直接实施:它会让 LLM backend 进入 `internal/intent`、把跨模块执行继续堆入 coordinator,并以不足以抵御多实例竞态的 PlanID+StepID 代替状态机和动作幂等,存在解耦回退、越权和双执行风险。
|
||||
|
||||
已按审阅结果重写[系统设计](../system-design/2026-09-15-multi-intent-hitl-plan.md)与[任务总览](../ops/short-term/2026-09-15-multi-intent-hitl.md)。本次仅修改文档,没有实施业务代码。
|
||||
|
||||
## 已确认问题
|
||||
|
||||
### P1:原 LLM 接线破坏 intent 纯模块边界
|
||||
|
||||
初稿要求在 `internal/intent/segmenter.go` 经既有 `agent.Backend` 分段;当前边界只允许 `intent -> maturity`。照此实施必然新增 intent 到 agent/coordinator 的依赖。
|
||||
|
||||
**整改:** 规则分段留在 intent;可选 LLM 仅作为 `app/intentflow` 外围 adapter,返回不可信分段建议,每段重新走确定性识别、安全扫描和 ActionRegistry。任何阶段都禁止 intent import agent、PG、storage 或 coordinator。
|
||||
|
||||
### P1:计划持久化缺少权威状态机与并发协议
|
||||
|
||||
初稿两表只有宽泛 status/payload,PlanID+StepID 只是标识,不能防重复确认、确认/取消/过期竞态、两个 worker 同时执行,也不能处理业务成功而步骤 receipt 未落库的崩溃窗口。
|
||||
|
||||
**整改:** 增加 plan revision/digest、append-only decisions、expected revision、decision nonce、步骤 CAS、lease/fencing、动作级幂等 receipt 和恢复对账。PG 是唯一权威;UserProjectContext/消息只保存 plan 引用。
|
||||
|
||||
### P1:确认未与当前授权绑定
|
||||
|
||||
持久化 user/role 或用户曾经确认都不能证明执行时仍有权。原稿没有要求恢复、读取和每步执行重新检查当前项目成员、duty、资源生命周期与版本。
|
||||
|
||||
**整改:** 确认只记录意愿;所有读取/决策验证 user/session/project 四元作用域;每步由动作 owner 按当前 principal 和 expected resource version 重新授权。失败 fail closed,不以系统身份代执行。
|
||||
|
||||
### P1:执行器方案会让 coordinator 再次成为 service locator
|
||||
|
||||
初稿拟扩展 `coordinator/action_planner.go` 的分发表来执行写动作,会把 docgov/taskrun/workflow 等具体实现重新聚集到 coordinator,抵消已完成的 chatflow/stageflow/bizdev 解耦。
|
||||
|
||||
**整改:** 新增深模块 `internal/app/intentflow` 作为计划生命周期 owner,通过消费者拥有的窄端口调用动作属主;coordinator/chat 仅保留兼容入口,组合根唯一装配。
|
||||
|
||||
### P1:事件与 SSE 被混为一条通道
|
||||
|
||||
现有 Track E 只处理注册的 PG 事件,不会自动把任意 delivery 变成 SSE。若只发 SSE,刷新丢失;若只写 outbox,浏览器不会自动得到状态。
|
||||
|
||||
**整改:** 计划状态同步落库;outbox 只发布版本化状态事实并驱动消息/read model 投影;SSE 是提交后的提示。刷新总是 GET PlanView。事件先登记 YAML、StaticContracts 和 payload allowlist。
|
||||
|
||||
### P1:不确定分段会退回单意图执行
|
||||
|
||||
“置信下降/指代补全失败就合并回单意图”与“不确定必须澄清、未确认零副作用”矛盾,仍可能执行 TopIntent 并丢弃其余任务。
|
||||
|
||||
**整改:** 只有确定为完整单意图连动时才合并;低置信、指代失败或无法证明完整一律澄清,保留候选理解但不执行。
|
||||
|
||||
### P1:数据复制与步骤传递缺少信任边界
|
||||
|
||||
初稿可能把原文、槽位、结果复制到 JSONB、日志、事件、SSE,再把查询摘要直接注入 task brief,扩大敏感数据面和提示注入路径。
|
||||
|
||||
**整改:** 计划保存消息引用/digest/allowlist display snapshot;事件和日志仅传 scope、状态与安全摘要引用;步骤间使用带 provenance/type/digest/sensitivity 的 ResultReference。结果只能进入隔离材料区,不能修改 action、target、tool 或 capability。
|
||||
|
||||
### P1:灰度开关顺序错误
|
||||
|
||||
现有 MULTI_INTENT_ENABLED 默认 true;初稿到最后一阶段才新增 tier,会让中间合入的行为缺少默认关闭门。
|
||||
|
||||
**整改:** U1 先建立默认 legacy 的新 tier;U2 只 shadow;auto_read 先维持两个查询的当前上限;确认和每个动作 adapter 分档开放。回滚必须继续支持已有计划读取/取消/收口。
|
||||
|
||||
## 重要产品修订
|
||||
|
||||
- 无活动写计划时单意图生成行为保持不变;多意图 generate 的确认/tier/adapter 能力由 intentflow BatchActionPolicy 管理,静态风险仍引用 ActionRegistry;
|
||||
- 计划卡默认显示一句摘要和主动作,详细风险/步骤折叠展开,降低认知负担;
|
||||
- 自然语言“确认”只有在当前会话恰有一个活动可见计划时才绑定;多计划或混入新任务时澄清;
|
||||
- 聚合澄清不承诺一次自由文本必然填满所有槽位;只接受可唯一映射值,槽位依赖/冲突继续追问;
|
||||
- 部分确认默认是分批批准,未选项保留待确认;只有显式排除才取消,部分完成提供重试/继续/关闭;
|
||||
- 单意图生成兼容承诺只适用于当前没有活动写计划;有活动计划时统一冲突视图,避免双任务;
|
||||
- 多意图价值必须用采用率、确认放弃率和拆单回退率证明;价值不足时停止写动作扩面,但保留“不静默丢任务”的安全改进。
|
||||
- 批量确认、tier 和 adapter 策略归 intentflow 的 BatchActionPolicy;ActionRegistry 只保留动作身份与静态风险,避免编排政策回灌 L1;
|
||||
- 计划卡折叠态仍显示目标、最高风险、不可撤销副作用和非原子语义;技术元数据才可折叠;
|
||||
|
||||
## 并发与权限检查表
|
||||
|
||||
- 同 turn 同 digest 返回原计划;同 turn 异 digest 冲突;
|
||||
- decision 带 expected revision、nonce 与 digest;
|
||||
- plan/step CAS 与单调 fencing;
|
||||
- fencing 和幂等占位必须进入动作属主事务,只锁计划行不足以阻止旧 worker 副作用;
|
||||
- confirm/cancel/expiry/edit 只有一个胜者;
|
||||
- 部分确认必须依赖闭包;
|
||||
- 双标签、双实例、worker 接管最多一次副作用;
|
||||
- 跨 user/project/session 不可读、不可确认且不泄露存在性;
|
||||
- 确认后成员/职责/资源状态变化仍会拒绝执行;
|
||||
- SSE 重复、乱序、缺失由 GET reconcile;
|
||||
- CSRF/Origin 沿用服务端认证策略,nonce 不冒充 CSRF。
|
||||
- active-plan discovery 是刷新必需入口,不能依赖消息投影中恰好保存 plan_id。
|
||||
|
||||
## 范围与任务修订
|
||||
|
||||
原 T1–T5 被重拆为核心 U1–U8、可选实验 U9 和属主扩面 U10–U12:契约门禁、纯规则 shadow、持久计划、事件投影、决策/授权、Web、只读执行、task generate 首版、LLM adapter、mutate/docgov/workflow-run 分项扩面。每个单元有独立依赖、文件范围、测试、停走门与真实 mutex。总览不长期占用 `intent`;每个 action 仍需独立 short-term。
|
||||
|
||||
## 评审覆盖
|
||||
|
||||
- 本地视角:coherence、feasibility、security、scope、product、design、adversarial;
|
||||
- 独立 cross-model:Claude Opus 5/high 的 security、product、adversarial 与 whole-document sweep;
|
||||
- cross-model 审的是初稿,其关于 LLM 输入、plan ACL、结果传递、幂等、产品价值和确认负担的有效意见已纳入修订;其余由当前代码与边界事实校正。
|
||||
|
||||
## 关联整改
|
||||
|
||||
- System design: [2026-09-15-multi-intent-hitl-plan.md](../system-design/2026-09-15-multi-intent-hitl-plan.md)
|
||||
- Short-term: [2026-09-15-multi-intent-hitl.md](../ops/short-term/2026-09-15-multi-intent-hitl.md)
|
||||
|
||||
## 证据
|
||||
|
||||
- `internal/intent/plan_builder.go`:首连接词、两段、写意图返回 nil;
|
||||
- `internal/coordinator/action_planner.go`:pending confirm 仅文字提示;
|
||||
- `internal/intent/registry.go`:task.run/adhoc 为 medium 且当前不全局 RequiresConfirm;
|
||||
- `internal/intent/flags.go`:MULTI_INTENT_ENABLED 默认 true;
|
||||
- `.doc/system-design/module-boundaries.yaml`:intent 只依赖 maturity,Track E/table owners 已登记;
|
||||
- `internal/events/registry.go`:事件须静态注册;
|
||||
- `internal/app/uow/uow.go`:不透明 TxScope;
|
||||
- `web/src/App.tsx`:现有 card action 含前端本地业务状态路径。
|
||||
|
||||
## 开放问题
|
||||
|
||||
无阻塞性架构问题。各放量阈值必须在 U2 shadow 基线形成后预注册;这属于实施期量化,不授权跳过停走门。
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
title: "BUG-11 410 兼容策略冻结"
|
||||
created: 2026-09-16
|
||||
status: done
|
||||
---
|
||||
|
||||
# BUG-11:旧 WORKFLOW_SWITCH API 410 策略
|
||||
|
||||
## 决定(2026-09-16 产品/工程冻结)
|
||||
|
||||
**保留** 治理可用时返回 `410 Gone` + `WORKFLOW_SWITCH_API_RETIRED`;治理不可用环境仍允许旧路径。
|
||||
|
||||
- 不视为能力缺口;不强制本轮删除路由。
|
||||
- 遥测若证明零流量,可另开退役任务。
|
||||
|
||||
## 证据
|
||||
|
||||
- `internal/server/project_handlers.go` Gone 分支
|
||||
- gap-matrix BUG-11 → PASS(策略冻结)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user