From bdccb4dbfeb998c4e91c84eaf7d5be425d84a9cc Mon Sep 17 00:00:00 2001 From: weichen Date: Tue, 15 Sep 2026 16:19:12 +0000 Subject: [PATCH] docs(ops): claim U1 multi-intent HITL contract freeze Register the independent U1 short-term, checklist, and CURRENT mutex so architecture-docs and events stay serial while contracts land. Co-authored-by: Cursor --- .doc/ops/CURRENT.md | 3 +- .../2026-09-15-multi-intent-u1-contracts.md | 22 ++++++ .../2026-09-15-multi-intent-hitl.md | 6 +- .../2026-09-15-multi-intent-u1-contracts.md | 73 +++++++++++++++++++ 4 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 .doc/ops/checklists/2026-09-15-multi-intent-u1-contracts.md create mode 100644 .doc/ops/short-term/2026-09-15-multi-intent-u1-contracts.md diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index 50212938..6a1c19a5 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -5,7 +5,7 @@ ## 焦点 -1. **MULTI-INTENT HITL**:方案已复核,U1 契约未开工([设计](../system-design/2026-09-15-multi-intent-hitl-plan.md);[short-term](./short-term/2026-09-15-multi-intent-hitl.md)) +1. **MULTI-INTENT HITL**:U1 契约冻结进行中([设计](../system-design/2026-09-15-multi-intent-hitl-plan.md);[U1](./short-term/2026-09-15-multi-intent-u1-contracts.md);[总览](./short-term/2026-09-15-multi-intent-hitl.md)) 2. **发布门禁**:CI `TEST_DATABASE_URL`、真实 PI 三工作流 E2E、前端人工抽检仍开放([gap-matrix](../remediation/gap-matrix.md)) 3. **CHAT-INTENT**:双标签 busy 已签(项目 **6275**);不删 `sess-p143-u9`;项目 143 只读 @@ -13,6 +13,7 @@ | owner | task | branch | worktree | mutex | status | |-------|------|--------|----------|-------|--------| +| Cursor | 2026-09-15-multi-intent-u1-contracts | feature/multi-intent-u1-contracts | - | architecture-docs | in_progress | | 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 | diff --git a/.doc/ops/checklists/2026-09-15-multi-intent-u1-contracts.md b/.doc/ops/checklists/2026-09-15-multi-intent-u1-contracts.md new file mode 100644 index 00000000..1560f682 --- /dev/null +++ b/.doc/ops/checklists/2026-09-15-multi-intent-u1-contracts.md @@ -0,0 +1,22 @@ +--- +title: "多意图 HITL U1 契约冻结 checklist" +status: in_progress +created: 2026-09-15 +updated: 2026-09-15 +related_task: "2026-09-15-multi-intent-u1-contracts" +--- + +# 多意图 HITL U1 契约冻结 checklist + +## Wave 0 + +- [ ] YAML `app/intentflow` allowlist + 三表 owner + unwrap_owners — 证据:`.doc/system-design/module-boundaries.yaml` +- [ ] 三条 `intent.plan.*` YAML ↔ StaticContracts parity — 证据:`go test ./internal/events -run RegistryParity` +- [ ] archtest 扫描 `intent.plan.*` — 证据:`go test ./internal/archtest` +- [ ] intentflow 状态/错误码/Service/政策/legacy tier — 证据:`go test ./internal/app/intentflow` +- [ ] CSRF/Bearer 结论落盘 — 证据:U1 short-term +- [ ] `go test -short ./...` — 证据:U1 test-report + +## 完成定义 + +- [ ] 全部勾选且有证据链接 diff --git a/.doc/ops/short-term/2026-09-15-multi-intent-hitl.md b/.doc/ops/short-term/2026-09-15-multi-intent-hitl.md index 7c0cd10a..6cfeca4e 100644 --- a/.doc/ops/short-term/2026-09-15-multi-intent-hitl.md +++ b/.doc/ops/short-term/2026-09-15-multi-intent-hitl.md @@ -1,9 +1,9 @@ --- title: "多意图持久计划与 HITL(核心 U1–U8,扩面 U9–U12)" -status: planned +status: in_progress created: 2026-09-15 updated: 2026-09-15 -owner: "-(待逐单元认领)" +owner: Cursor(U1);其余单元待认领 branch: feature/multi-intent-u1-contracts worktree: "-" mutex: architecture-docs @@ -51,7 +51,7 @@ mutex: architecture-docs ## 步骤 -1. [ ] U1 冻结边界、状态机、批量策略、错误码、事件和默认 legacy tier; +1. [ ] U1 冻结边界、状态机、批量策略、错误码、事件和默认 legacy tier([独立任务](./2026-09-15-multi-intent-u1-contracts.md)); 2. [ ] U2 characterization-first 建 golden/hard-negative 与 shadow 基线; 3. [ ] U3 建 intentflow owner、PG schema、CAS/lease/fencing/retention; 4. [ ] U4 接 Track E outbox/dispatcher,只投影状态事实; diff --git a/.doc/ops/short-term/2026-09-15-multi-intent-u1-contracts.md b/.doc/ops/short-term/2026-09-15-multi-intent-u1-contracts.md new file mode 100644 index 00000000..4a34a750 --- /dev/null +++ b/.doc/ops/short-term/2026-09-15-multi-intent-u1-contracts.md @@ -0,0 +1,73 @@ +--- +title: "多意图 HITL U1:契约冻结" +status: in_progress +created: 2026-09-15 +updated: 2026-09-15 +owner: Cursor +branch: feature/multi-intent-u1-contracts +worktree: "-" +mutex: architecture-docs +--- + +# 多意图 HITL U1:契约冻结 + +## 目标 + +冻结 `app/intentflow` 边界、状态机、BatchActionPolicy、错误码、事件契约与默认 `legacy` tier;不改识别路由、不建表、不接 HTTP。 + +## 范围 + +- `module-boundaries.yaml`:`app/intentflow` allowlist、三表 owner、`unwrap_owners`、三条 `intent.plan.*` 事件 +- `events.StaticContracts` 与 YAML 对等;archtest 扫描 `intent.plan.*` +- `internal/app/intentflow` 骨架:状态、错误码、Service 端口、政策、tier 开关 +- CSRF/认证结论:现有 Bearer + CORS 对 U5 足够,不是 blocker + +## 非目标 + +- 不修改 `internal/intent` 业务类型或 `MULTI_INTENT_ENABLED` +- 不建 Goose 表、不接线 `app.Assemble`、不改 chat/coordinator/Web +- 不 Append 事件、不实施 U2–U12 + +## REST(U5 再挂路由) + +- `GET /api/v1/intent-plans/active` +- `GET /api/v1/intent-plans/{plan_id}` +- `POST /api/v1/intent-plans/{plan_id}/decisions` + - body:`expected_revision`、`decision_nonce`、`decision_digest`、`kind`、步骤选择 + +## CSRF / 认证(U5 前置结论,非 blocker) + +现有认证是 `Authorization: Bearer` 或 `X-Session-Token` 请求头(`internal/server/auth_handlers.go`),无 cookie 会话,无独立 CSRF 中间件;另有 Origin allowlist CORS。 + +- 自定义头不会被浏览器跨站表单自动带上,现有模式对 U5 足够 +- `decision_nonce` / 幂等键只防重放与并发,**不替代** CSRF 或身份认证 +- U5 必须 `requireAuthenticatedUser` + 四元作用域(environment/project/session/user) +- **禁止**为计划 API 改成 cookie 自动提交 +- 若未来改 cookie 认证,另立 auth 任务,不得在 intent-plan 端点发明弱 CSRF + +## 步骤 + +1. [x] 从最新 `dev` 检出 `feature/multi-intent-u1-contracts` 并认领 CURRENT +2. [ ] 登记边界 YAML、事件契约、archtest regex +3. [ ] 落地 intentflow 骨架与 BatchActionPolicy +4. [ ] arch/parity/short 测试与 U1 报告 + +## 验收标准 + +- [ ] `intent -> maturity` 保持;server/chat 不直写计划表 +- [ ] YAML ↔ StaticContracts parity 绿 +- [ ] 未知 action/policy key fail closed;ActionRegistry 无 batch/tier 字段 +- [ ] 默认 `MULTI_INTENT_PLAN_TIER=legacy` +- [ ] 单意图生成策略不变(本单元无运行时改动) + +## 相关链接 + +- 总览: [2026-09-15-multi-intent-hitl.md](./2026-09-15-multi-intent-hitl.md) +- 设计: [../../system-design/2026-09-15-multi-intent-hitl-plan.md](../../system-design/2026-09-15-multi-intent-hitl-plan.md) +- Checklist: [../checklists/2026-09-15-multi-intent-u1-contracts.md](../checklists/2026-09-15-multi-intent-u1-contracts.md) +- Test report: [../../test-reports/2026-09-15-multi-intent-u1-contracts-test-report.md](../../test-reports/2026-09-15-multi-intent-u1-contracts-test-report.md) + +## 证据 / 备注 + +- 事件登记窗口同时占用 `events` mutex;U1 不改 intent 代码。 +- 生产者含 `events`:StaticContracts 字面量落在 `internal/events/registry.go`,与现有 document.* 先例一致。