Files
Agent-System/.doc/remediation/2026-09-16-feature-matrix-production-readiness-plan.md

38 KiB
Raw Permalink Blame History

title, type, date, deepened, status, artifact_contract, product_contract_source, execution, wave0
title type date deepened status artifact_contract product_contract_source execution wave0
FEATURE-MATRIX Production-Ready Continuity - Plan refactor 2026-09-16 2026-09-16 in_progress ce-unified-plan/v1 ce-plan-bootstrap code done

FEATURE-MATRIX Production-Ready Continuity - Plan

Goal Capsule

  • Objective: 让维护者能够从 FEATURE-MATRIX.md 准确判断当前发布基线、真实剩余工作和每项工作的关闭条件,同时保持已经签署的 production-ready 状态不被文档整理或后续增强误伤。
  • Means: 将能力成熟度与发布门禁拆成两个正交维度,先校准证据和状态,再按“补证、基建加固、可选增强”分波实施(KTD1、KTD2)。
  • Authority: gap-matrix.md 决定发布 blocker;FEATURE-MATRIX.md 决定能力成熟度;CURRENT.md 记录协作与环境快照。
  • Execution profile: verification-first;文档校准不改业务行为;新能力默认 off、legacy 或 shadow;跨环境先以 receipt 绑定同一 commit 和 digest,PU5B 完成后只晋升同一已验证 image。
  • Stop conditions: 任一波发现授权旁路、持久化丢失、双写者、跨用户泄漏、当前 B1–B4 回归或 main/prod fail-open 时,停止扩面并将该问题写入 gap-matrix.md。

Product Contract

Summary

当前系统按仓库 SSOT 已达到 production_ready=yes。本计划不重新定义首发范围,而是修正矩阵漂移,补上可判定的关闭条件,并把剩余工作排成不会改变当前默认路径的独立波次。

Problem Frame

FEATURE-MATRIX.md 目前把五类状态都写成 partial:已完成但文档未收口、实现完成但真实证据未签、首发后增强、实验性能力和刻意关闭能力。结果是维护者无法从矩阵判断哪些事项会影响发布,也无法知道某行何时能转为 done。

矩阵还存在已确认的事实漂移:schema 45 与当前 schema 47 冲突,语义摘要编号误写为 D5,IAM 仍列出已经闭环的历史读取授权缺口,可靠事件核心被 FAV 的 off 状态拖成 partial。这些问题需要先在文档层纠正,再决定是否立业务实现任务。

Requirements

Status and ownership

ID Requirement
R1 production_ready 只由 gap-matrix.md 的发布门禁决定;能力行不是“全部 done 才能发布”的总开关。
R2 每行必须声明既定能力边界、能力状态、发布关系、剩余工作、关闭条件、owner/mutex 和当前证据。
R3 done 表示本行声明能力已达到生产验收,不表示该领域没有后续;新增增强应拆行或进入 backlog。
R4 补证、修复、增强、实验和 deferred 能力必须分开,不能共用一个模糊的“后续”。

Evidence and release safety

ID Requirement
R5 状态提升必须同时核对源码、迁移、部署 artifact、API/runtime 和适用测试层级;单独改文档不得提升能力状态。
R6 证据必须记录或可追到 commit、环境、schema、镜像、runner/model/protocol、日期和测试类型。
R7 代码、schema、compose、flag、runner 协议或环境晋升触发受影响行重验;历史报告保留但不得证明新 artifact。
R8 新功能先使用 additive migration 和兼容读取,再以 off/legacy/shadow 上线;任何放量都要有独立回滚点。
R9 回滚必须能读取、取消和收口已持久化的 plan/run/event;禁止回滚 schema 或让旧 app/worker 不认识新状态。

Authorization and agent behavior

ID Requirement
R10 UI、API、聊天和产品 PI Agent Runner 必须进入同一 owner service,并共享即时授权、资源版本、幂等、审计和错误语义。
R11 正文、计数、摘要、搜索、计划卡、RAG 和 Agent tools 必须从同一授权后可见集合派生。
R12 产品 PI Runner 只生成建议、内容或解释;权限判断、状态迁移、版本提交和法定审批由服务端及已认证用户完成。
R13 所有真实 PI 路径必须共享最小化出站、tenant/project 绑定、敏感字段脱敏、凭证最小权限、日志/产物留存和泄漏负例;夜间验收只使用隔离的合成数据。

Actors

  • A1. 文档维护者:更新矩阵、证据链接和历史 superseded 指针。
  • A2. 发布负责人:决定 blocker、环境晋升、回滚和 production-ready 翻旗。
  • A3. 模块 owner:实现或验证单个 action,不跨 mutex 批量扩面。
  • A4. 最终用户:通过 UI、API 或聊天使用同一服务端能力。
  • A5. 产品 PI Agent Runner:受控生成或解释,不承担 authority。

Key Flows

  • F1. 矩阵状态更新
    • Trigger: 新实现、补证或环境晋升完成。
    • Actors: A1、A2、A3。
    • Steps: 核对行边界 → 匹配证据 → 评估发布关系 → 更新矩阵 → 仅在 blocker 变化时更新 gap-matrix。
    • Outcome: 能力状态和发布状态不互相污染。
  • F2. 增强能力上线
    • Trigger: 一个 deferred/partial 子能力获批实施。
    • Actors: A2、A3、A4、A5。
    • Steps: additive migration → 默认关闭 → 隔离验证 → dev 灰度 → test 晋升 → main 晋升或独立回滚。
    • Outcome: 当前路径持续可用,新能力只在证据完整后放量。

Acceptance Examples

  • AE1. Covers R1–R4. 前端工作台现有范围证据完整时,该行可改 done;未来其他 409 消费方优化进入独立 backlog,不把该行退回 partial。
  • AE2. Covers R5–R9. multi-intent U8 adapter 已合入但真实 PI 为 SKIP 时,矩阵写“代码与默认 legacy 基线完成、真实生成闭环未签”,tier 不升到 confirm/full。
  • AE3. Covers R10–R12. full 文档由真实 PI 生成后由独立用户完成审核/批准;none 文档生成后无审批动作且不阻塞阶段。
  • AE4. Covers R5–R8. PI change-report 超时或返回非法 schema 时,用户仍看到明确标记的 deterministic fallback,候选版本和正文不被 PI 输出修改。
  • AE5. Covers R1、R6、R7. 夜间真实 PI 因 runner 不可用失败时,结果记为 infrastructure failure 并阻止下一次晋升;已发布版本不会被自动改写为未就绪。

Scope Boundaries

In scope

  • 整改 FEATURE-MATRIX.md 的状态契约、行边界、证据和关闭条件。
  • 同步仍作为活 SSOT 的 CURRENT、gap-matrix、remediation index 和历史文档指针。
  • 安排 IAM、补证、CI、语义摘要、PI change-report、多意图扩面的后续工作。
  • 为每个波次定义回归、部署、证据和回滚门。

Deferred to Follow-Up Work

  • Final Artifact Vault:独立审计,保持 FAV_DEGRADED_READ=false,禁止整支合入 feature/final-artifact-vault。
  • 多意图 U9 LLM 分段实验:仅在预注册真实 PI eval 阈值通过且安全错误为 0 后考虑放量。
  • 多意图 U10–U12:每个 action 独立任务、flag、owner、授权负例和回滚点。
  • D7 对话留存与敏感字段加密:独立安全治理项;先完成数据分类、当前数据库/备份/日志控制盘点和合规口径,再设计迁移、回滚与验收。若盘点确认当前基线违反已确认的安全或合规要求,必须立即写入 gap-matrix.md,不能继续作为普通 backlog。

Out of scope

  • 纯软件项目自举。
  • 将 Herdr、context_pi、Cursor、Codex 或其他工程协作 Agent 作为产品 PI Agent Runner 的验收证据。
  • 在本次方案编制和 Wave 0 阶段修改业务代码、启用 dormant flag、合并 dev 或操作共享容器。

Success Criteria

  1. 维护者能在一行内判断“当前能力是否完成、是否影响发布、还差什么、用什么证据关闭”。
  2. 已确认的 L1、前端工作台和可靠事件核心不再因无关 backlog 永久 partial。
  3. IAM、multi-intent U8、full/none、CI、语义摘要和 PI 叙事都有独立的关闭条件,不再用 stub、SKIP 或 fallback 冒充完整验收。
  4. 后续任一波失败都可回到当前默认路径,B1–B4 和 schema 47 基线不被破坏。

Planning Contract

Key Technical Decisions

  • KTD1. 能力状态与发布状态正交。 FEATURE-MATRIX.md 记录能力成熟度,gap-matrix.md 记录发布 blocker;仅当前生产契约被证据推翻时回退 production_ready。Governs R1–R4。
  • KTD2. 按冻结的能力边界关闭行。 已完成范围转 done,新增增强拆成新行或 backlog,避免永久 partial。任何边界变更都要保留 before/after、逐项迁移去向和原边界已满足的证据,禁止靠缩小口径制造 done。Governs R2–R4。
  • KTD3. 证据按变化触发重验。 不设机械 TTL;按代码、schema、artifact、flag、runner/protocol 和环境晋升触发重验。Governs R5–R7。
  • KTD4. 补证和修复分离。 full/none 与 multi-intent U8 先执行真实验收;只有验收失败并定位为产品缺陷后才开修复分支,修复后必须重验。Governs R5、R8。
  • KTD5. 逐能力安全放量。 migration 只 expand,新能力默认 off/legacy/shadow,app/worker 保持向后读取和收口能力。Governs R8、R9。
  • KTD6. 共享 command 与共享 authorized view。 所有入口调用同一 owner port,读模型从同一授权集合派生。Governs R10、R11。
  • KTD7. PI 叙事不成为事实源。 diff、lineage、risk floor、版本和审批由服务端确定;PI 失败时保留显式 fallback。Governs R12。
  • KTD8. 同一 artifact 晋升是独立发布加固。 在不可变镜像流水线落地前,dev/test/main 至少记录同一候选 commit、各环境 image digest 和构建证明,不得声称已实现 same-image promotion;落地后 test/main 只引用候选 commit 一次构建出的 digest。Governs R5、R7–R9。

High-Level Technical Design

Status decision

flowchart TB
  A[Read declared capability boundary] --> B{Current evidence satisfies boundary?}
  B -->|No| C{Is capability active in release path?}
  C -->|Yes and contract regressed| D[Mark blocked and update gap-matrix]
  C -->|No| E[Keep partial, planned, or deferred]
  B -->|Yes| F{Remaining work belongs to same boundary?}
  F -->|Yes| G[Keep partial with explicit exit gate]
  F -->|No| H[Mark current row done]
  H --> I[Create separate enhancement or deferred row]

Safe rollout and rollback

flowchart TB
  A[Expand schema and compatible readers] --> B[Deploy flag off or legacy]
  B --> C[Unit and isolated PG evidence]
  C --> D[Dev shadow or targeted live]
  D --> E{Stop gate passes?}
  E -->|No| F[Disable new writes and drain]
  F --> G[Keep read, cancel, and finalize compatibility]
  E -->|Yes| H[Test promotion with receipt]
  H --> I[Main promotion with same commit and proven digest]
  I --> J[Update evidence and matrix]

Current Residual Work Map

Area Baseline now Required closure Current classification / transition
Intent L1 18 类、三分支、读写分流、busy 已签 从本行移除 U9–U12,确认纯依赖门禁仍在 done
Multi-intent baseline U1–U8 code/default legacy + Wave2 real PI Playwright 双标签仍 gated;升 tier 另开 done
Multi-intent expansion U9–U12 未进入首发 U9 eval;U10–U12 per-action 当前 deferred;获批 short-term 开始后转 partial
Chat / ctxmgr baseline 刷新恢复与授权同集已签 修正文档状态;新摘要另列 done
Semantic summary (D3) deterministic summary 已有 产品 go/no-go;授权输入、shadow、fallback 当前 deferred;获批 short-term 开始后转 partial
Chat data governance (D7) 当前生产控制待盘点 数据分类、留存删除、数据库/备份/日志控制与敏感字段加密边界 deferred;确认违规时升级 blocker
Workflow governance 正式工作流、鉴权、三工作流 PI、full/none 长链已签 纯软件自举仍 planned done
IAM / authz 已知历史读取缺口已闭环 全路由 inventory、PG fail-closed、410 决策 partial
Document revision baseline 账本、确定性 diff/lineage 与 UI 已签 修正文档状态;PI 叙事另列 done
PI change-report narrative deterministic report 已有 产品 go/no-go;只读 narrative、fallback 永久保留 当前 deferred;获批 short-term 开始后转 partial
Frontend workbench 当前声明范围均有证据 修正文档状态;增强另列 done
CI / E2E PR CI、PG、backup、web 已有 nightly real PI;TempDir race flake partial
Artifact promotion 同 commit + receipt digests + 单机 same-image pin 已落地 远程 registry 不可变推送另立 当前 done(Wave 2C;单机 retag)
Reliable events 核心 live 且旧 hook 退出 与 FAV 拆行 done
FAV 明确 off 独立审计与 go/no-go deferred

Phased Delivery

Wave Units Release behavior Exit gate
Wave 0: SSOT calibration PU1–PU2 只改文档,不改代码或 flag;先只读核对已部署 IAM store 选择和缺表行为 三份 SSOT 无矛盾;历史指针可追溯;若发现当前发布契约回归,先更新 gap-matrix 再退出本波
Wave 1: Safety guardrails PU3、PU5A IAM fail-closed 与 race 修复独立交付 当前 B1–B4 全绿;授权用户 happy path 不变;新增 fail-closed 负例通过
Wave 2: Evidence closure PU4 补真实 PI/browser/restart 证据;产品缺陷另开原子修复任务后重验 目标场景 PASS,或以明确 FAIL/blocker 退出;不得用“已分类”冒充关闭
Wave 2B: Release hardening PU5B 夜间 PI、promotion receipt、不可变 artifact 分阶段落地 gate 可执行、可审计、可人工豁免且不改变已发布版本状态
Wave 3: Optional capability selection PU6–PU8 只做逐能力 go/no-go 和独立任务设计;未获批不实施 有用户信号、收益、维护成本、owner 和预注册阈值;否则保持 deferred

System-Wide Impact

  • Authorization: IAM inventory 覆盖 list/detail/search/export/count/SSE/RAG/Agent tools;任何 unavailable/error 路径 fail closed。
  • Data lifecycle: 新状态采用 additive migration;回滚继续读取和收口已有 plan/run/event。
  • Agent parity: UI、API、聊天和产品 PI Runner 共享 owner command 与 authorized view;Herdr 不进入产品验收。
  • PI data boundary: 真实 PI 只接收 allowlist 后的最小输入,并绑定 tenant/project;服务端脱敏,凭证最小权限且可轮换,日志和测试产物有访问与保留边界。
  • Operations: worktree 只做静态、单元和隔离 PG;合入、rebuild、共享容器和环境晋升占唯一集成槽。
  • Documentation: 历史证据不删除;过时文档增加 superseded/implemented 指针。

Risks and Mitigations

Risk Consequence Mitigation
文档修改直接把 partial 改 done 状态提升没有新证据 PU1 定义证据门;PU2 只对已满足冻结边界的行收口
main 缺 IAM 表时回退内存 store 权限和会话失去持久权威 PU3 改为 dev/test 显式双门 opt-in;空值、未知环境和 main/prod 一律 fail closed
multi-intent U8 code-complete 被写成 real-PI-complete 误升 tier 后出现双执行或不可恢复 PU4 独立补真实 PI、撤权、刷新和重启证据
full/none 语义混淆 none 被错误要求审批或阻塞阶段 PU4 分别验证 full 人工审批与 none 免审批负例
PI narrative 覆盖确定性事实 报告失真或阻断版本流程 PU7 只消费只读 diff+lineage,任何 schema 偏差全量降级
夜间 PI 偶发失败污染发布状态 无法区分供应商故障和产品回归 PU5B 分类 infra/product failure,以 commit/digest receipt 阻止下一次晋升并保留审计豁免
多 action 共用开关 无法单独回滚 PU8 只产出独立 short-term、flag、owner 和证据契约,不在本计划批量实现
FAV 整支合入 带入旧实现或启用 degraded read 保持 deferred;未来只摘取已审计的原子提交

Implementation Units

PU1. Define the matrix contract

  • Goal: 为 FEATURE-MATRIX.md 建立能力状态、发布关系、关闭条件和证据字段的稳定契约。
  • Requirements: R1–R7。
  • Dependencies: 无。
  • Files: .doc/status/FEATURE-MATRIX.md、.doc/ops/templates/feature-matrix-row.md、.doc/status/README.md。
  • Approach:
    1. 在矩阵说明中定义 done|partial|planned|deferred|blocked 的判定和 production_ready 的独立来源。
    2. 将当前单一表改为可扫描的字段集合:声明范围、能力状态、发布关系、剩余工作、关闭条件、证据、owner/mutex。
    3. 定义证据 provenance 与重验触发器;不要把环境瞬时健康等同于代码已部署。
  • Patterns to follow: gap-matrix.md 的 blocker SSOT、CURRENT.md 的环境快照、feature-matrix-row.md 模板。
  • Test scenarios: Test expectation: none — 文档契约变更,不改变运行行为。
  • Verification: 模板和矩阵字段一致;每个状态都能由文档规则唯一解释;链接和 Markdown 校验通过。

PU2. Reconcile current rows and historical pointers

  • Goal: 修复已确认漂移,并将已完成基线与独立增强拆行。
  • Requirements: R1–R7。
  • Dependencies: PU1。
  • Files: .doc/status/FEATURE-MATRIX.md、.doc/ops/CURRENT.md、.doc/remediation/gap-matrix.md、.doc/remediation/INDEX.md、.doc/system-design/2026-09-15-multi-intent-hitl-plan.md、.doc/remediation/2026-09-15-module-decoupling-ipc-phase2-remediation-plan.md、.doc/remediation/2026-09-15-http-error-envelope-remediation.md、.doc/ops/research/2026-09-15-track-e-retrospective.md。
  • Approach:
    1. 把 schema 45 改为当前 schema 47,纠正 D3/D5,移除 IAM 已关闭缺口。
    2. 将 L1、Chat/ctxmgr baseline、Document revision baseline、前端工作台、可靠事件核心按冻结范围评估为 done;把语义摘要、PI 叙事、多意图扩面和 FAV 分成独立行。
    3. 给被后续报告取代的历史文档增加 implemented/superseded 指针,不删除历史证据。
    4. 在任何状态收口前,只读核对已部署环境的 IAM store 选择、schema 47 IAM 表和缺表行为;确认 fallback 不可达才保持 production_ready=yes。若发现当前发布契约回归,立即更新 gap-matrix blocker,不等待后续波次。
    5. 每个拆行保留 before/after 边界、原义务的新去向和原边界已满足的证据,禁止仅通过缩小描述把行改为 done。
  • Patterns to follow: .doc/archive/ 的历史保留纪律、现有测试报告回链。
  • Test scenarios: Test expectation: none — 这是证据对账和 SSOT 修订。
  • Verification: FEATURE-MATRIX、CURRENT、gap-matrix 对 schema、门禁和非 blocker 列表的叙事一致;不存在失效链接或相互矛盾状态。

PU3. Close IAM inventory and production fail-closed gaps

  • Goal: 用全路由证据替代旧抽样矩阵,并禁止 main/prod 在 IAM 表未就绪时回退内存 authority。
  • Requirements: R5–R12。
  • Dependencies: PU1;PU2 已完成部署事实核对。
  • Files: .doc/audit/authorization-matrix-v2.md、internal/server/server.go、internal/server/auth_helpers.go、internal/server/chat_history_auth.go、internal/auth/store_factory.go、internal/auth/store_factory_test.go、internal/server/security_p0_test.go、internal/server/*_authz*_test.go。
  • Approach:
    1. 从注册路由生成或维护 resource/action/owner/authn/ReBAC/ABAC/duty/negative-test inventory。
    2. 先验证 list/detail/search/export/count/SSE/RAG/Agent tools 是否共享授权集合;只修复确认的旁路。
    3. 只有环境明确为 dev/test 且 ALLOW_IN_MEMORY=true 时才允许测试 fallback;环境空值、未知值、main/prod、pool 缺失、IAM 表缺失或授权依赖不可用时一律启动失败或请求 fail closed。
    4. 先验证 schema 47 的 IAM 表在目标环境确实存在;缺迁移则以 additive migration 修复后再启用 fail-closed,禁止让保护措施把环境永久变成不可部署。
    5. 已建立 session 的请求也在授权依赖不可用时 fail closed;依赖恢复后按既有健康检查/重连路径恢复,不沿用缓存的旧授权。
    6. 将旧 API 410 视为兼容策略,依据遥测决定长期保留或退役,不再把“存在 410”本身写成能力缺口。
  • Execution note: 先添加 characterization 和负例,再修改 store selection 或路由授权。
  • Test scenarios:
    • main 配置下 IAM 表缺失时,应用不得创建 MemoryStore 管理员并继续服务。
    • 非成员、非 session owner、错误 stage、错误 duty 读取正文、计数、搜索、导出、SSE、RAG 和 Agent tool 时均拒绝且不泄漏资源存在性。
    • 管理员例外只通过服务端 IsSystemAdmin,请求体/header 不能伪造。
    • 权限在确认后撤销时,执行前重新授权并保持零副作用。
    • 仅 dev/test 加显式 opt-in 时内存 fixture 可用;环境未设置、拼错或 opt-in 为 false 均 fail closed。
    • IAM 依赖在 session 建立后中断时,正文、计数、搜索、SSE、RAG 和 Agent tools 均拒绝;恢复后重新取权,不沿用旧权限。
  • Verification: 全路由 inventory 每项有 owner 和负例;PG 集成与安全套件证明 fail closed;若发现 active bypass,先更新 gap-matrix 再继续其他波次。

PU4. Close real-PI evidence gaps without pre-authorizing fixes

  • Goal: 补齐 multi-intent U8 与工作流 full/none 的真实 PI、浏览器、持久化和恢复证据。
  • Requirements: R5–R13;Covers AE2、AE3。
  • Dependencies: PU1–PU2;测试设计可与 PU3 inventory 并行,最终证据必须基于 PU3 完成后的同一候选 artifact,且共享环境验收串行。
  • Files: .doc/ops/checklists/ 下新增验收清单、.doc/test-reports/ 下新增报告、internal/server/workflow_governance_piagent_pg_test.go、internal/app/intentflow/ 相关测试、web/ 对应 browser 测试与 assets。
  • Approach:
    1. multi-intent U8 验证真实 PI generate、PG plan/step/receipt、确认前零副作用、重复提交、撤权、双标签、刷新/重登/app+worker restart。
    2. full 文档走真实生成、author submit、独立 reviewer、独立 approver 和阶段门禁。
    3. none 文档走真实生成、版本账本、审批动作不适用和阶段不阻塞;禁止写成“none 审批通过”。
    4. 失败先归类为环境、验收脚本或产品缺陷;产品缺陷创建独立 fix/* 任务,修复后的同一场景必须重验,不能以“已分类”关闭证据缺口。
    5. 所有场景通过共享 PI 数据安全门:最小字段 allowlist、服务端脱敏、tenant/project 绑定、最小权限测试凭证和受限日志/产物;只使用隔离合成数据,并执行泄漏负例。
  • Test scenarios:
    • multi-intent U8 在无确认、确认、重复确认、活动计划冲突、权限撤销和 receipt 丢失下符合单一终态与幂等要求。
    • UI、直接 API 和聊天指令最终产生相同领域状态、actor、版本和可见结果。
    • full 文档跨三个真实用户完成职责分离;每次运行使用隔离 project/workspace 和命名空间,错误职责用户的每个动作均拒绝。
    • none 文档没有 submit/review/approve,可刷新和重启恢复,且不阻塞 advance。
    • runner/model 不可用时验收明确失败或 SKIP,不得记为产品 PASS。
  • Verification: 真实 PI、PG、browser、restart、cross-user 证据分栏归档;通过后只关闭对应证据缺口,不自动启用更高 tier。

PU5A. Eliminate the repository race flake

  • Goal: 独立关闭全仓 race 的 TempDir 清理竞态,不让外部模型可用性阻塞正确性修复。
  • Requirements: R5–R9。
  • Dependencies: PU1。
  • Files: .github/workflows/ci.yml、internal/server/task_run_handlers_test.go 或对应 TestCreateTaskRun_PreActivationAcceptedNot409 fixture、.doc/test-reports/。
  • Approach:
    1. 定位并修复异步 worker 未收口导致的 TempDir 清理竞态;不能用跳过或忽略让全仓 race 假绿。
    2. 保留可重复的最小回归,并执行全仓 race 多轮验证。
  • Test scenarios:
    • 全仓 race 多次运行不再出现 TempDir RemoveAll,并能证明 worker 已退出。
  • Verification: 全仓 race 不再依赖已知 flake 豁免;PR CI 仍不依赖外部模型。

PU5B. Add nightly PI and enforce auditable promotion receipts

  • Goal: 增加夜间真实 PI 回归和可执行的下一次晋升门,同时逐步实现一次构建、按 digest 晋升。
  • Requirements: R5–R9、R13;Covers AE5。
  • Dependencies: PU1、PU4 的稳定场景;不阻塞 PU5A。
  • Files: .github/workflows/nightly-real-pi.yml、.github/workflows/ci.yml、scripts/promote-to-test.sh、scripts/release-to-main.sh、docker-compose*.yml、.doc/test-reports/。
  • Approach:
    1. 夜间 job 使用最小权限且可轮换的 secrets、隔离合成 project/session、真实 PI 标识、受限产物留存、并发取消和有限重试。
    2. 为被测 commit 生成不可变 promotion receipt,记录结论、时间、runner/model/protocol、commit 和 image digest;所有晋升入口必须验证目标 commit 的最新有效 receipt。
    3. 将 runner/credential/network failure 与产品断言失败分开。产品失败拒绝晋升;基础设施连续失败冻结下一次晋升,但允许发布负责人在确认外部故障、最近成功结果仍有效、PR/PG 门禁全绿后做带理由和时限的审计豁免。
    4. CI 从候选 commit 一次构建 app/events/PI Runner 镜像并记录 digest;test/main 最终只引用该 digest。在此能力完成前只可声称 same-commit 加各环境 digest 可追溯,不得声称 same-image promotion。
  • Test scenarios:
    • 缺 secret 或 runner 不可达时 job 为 infrastructure failure,不生成 PASS 报告。
    • 产品断言失败时保留脱敏后的 typed result、schema 和测试证据,告警到明确 owner,晋升脚本拒绝目标 commit。
    • 两次调度重叠时旧 run 被取消,不污染同一 fixture。
    • receipt 过期、commit/digest 不匹配、产品失败或未经审计的 infra failure 均拒绝晋升;有效时限内的人工豁免可追到发布负责人和理由。
  • Verification: nightly 具有 schedule/manual 入口、失败分类、owner、retention 和 promotion-gate receipt;test/main 能证明引用候选构建的同一 digest。

PU6. Decide semantic-summary go/no-go and prepare its task contract

  • Goal: 决定 D3 语义摘要是否值得实施;若获批,只创建独立 short-term 和完整执行契约,不在本计划直接改业务代码。
  • Requirements: R5–R13。
  • Dependencies: PU3 的授权 inventory;PU1–PU2 的独立行;独立产品 go/no-go。
  • Files: 本计划只更新 .doc/backlog/chat-agent-p6-backlog.md 和新 short-term;下列代码与测试路径属于获批任务契约:internal/ctxmgr/summarizer.go、internal/app/chatflow/、internal/server/chat_digest_api.go、对应 Go/PG 测试、web/src/ 摘要消费组件与测试。
  • Approach:
    1. 实施前冻结当前用户痛点/使用信号、预期收益、维护成本、owner、最小样本、质量阈值和零容忍安全失败;未通过 go/no-go 则保持 deferred,本计划不实施。
    2. 获批任务必须只向无工具权限的摘要器提供 authorized view 和最小化输入,保存来源引用、输入版本、模型/协议和 freshness,并应用 R13 的共享 PI 数据安全门。
    3. 先 shadow 评估质量和泄漏负例,再决定是否替换 deterministic summary。
    4. 模型失败、超时或输出不安全时保留旧摘要或确定性 fallback,并明确 freshness。
  • Test scenarios:
    • 被撤权或跨阶段消息不进入新摘要、计数和引用。
    • prompt injection 只能作为材料,不能改变摘要权限或系统动作。
    • 新消息增量更新不重复旧内容;并发生成只提交一个当前版本。
    • 模型失败后刷新、重登和重启仍返回可解释 fallback。
  • Verification: 本计划验证 go/no-go 记录、预注册门和 short-term 契约完整;获批任务必须在 shadow、权限负例、PG 持久化和真实 browser 恢复通过后才更新 rollout tier。

PU7. Decide PI-narrative go/no-go and prepare its task contract

  • Goal: 决定可选 PI 叙事是否值得实施;若获批,只创建独立 short-term 和完整执行契约,不在本计划直接改业务代码。
  • Requirements: R5–R13;Covers AE4。
  • Dependencies: PU3 的授权边界;现有 typed-result-v1;独立产品 go/no-go。
  • Files: 本计划只创建独立 short-term;下列代码与测试路径属于获批任务契约:internal/docrevision/service.go、internal/docrevision/risk.go、internal/taskrun/finalize.go、deploy/pi-agent/ typed result/schema、web/src/components/doc/ChangeReportPanel.tsx 及对应测试。
  • Approach:
    1. 实施前冻结当前用户痛点/使用信号、预期收益、维护成本、owner、最小样本、质量阈值和零容忍安全失败;未通过 go/no-go 则保持 deferred,本计划不实施。
    2. 获批任务中的 PI 必须在无写工具环境中只读消费经过 R13 安全门的 immutable input snapshot、diff、lineage 和服务端计算的 impact/risk floor。
    3. 输出使用版本化 typed schema,并绑定文档版本与输入 digest。
    4. partial/malformed、timeout、cancel、unknown schema、提示注入或 digest mismatch 一律全量降级到显式 fallback,不混合呈现部分 PI 字段。
    5. fallback 继续支持查看、确认/拒绝、刷新和重启恢复。
  • Test scenarios:
    • 合法 PI narrative 与对应 snapshot/version/digest 一致并在 UI 标出分析状态。
    • PI 试图降低风险、修改 hunk 或更改审批结论时,服务端忽略或拒绝。
    • malformed/timeout/cancel/retry 不产生第二份 candidate 或第二个终态。
    • 非授权用户不能从叙事、引用或计数推断不可见文档。
  • Verification: 本计划验证 go/no-go 记录、预注册门和 short-term 契约完整;获批任务必须证明 deterministic fallback 全量回归通过,且真实 PI/browser/restart 报告明确区分 narrative 与事实字段。

PU8. Prepare independent multi-intent follow-up tasks

  • Goal: 在 multi-intent U8 真实证据签署后,只形成 U9 实验和 U10–U12 单 action 的独立候选任务;不在本计划实施扩面。
  • Requirements: R5–R13。
  • Dependencies: PU3–PU4;独立产品 go/no-go;U9 实验不作为 U10–U12 的默认前置。
  • Files: internal/app/intentflow/、各 owner module 的 adapter/port/tests、internal/events/registry.go、web/src/components/chat/InteractiveCard.tsx 及对应测试、.doc/ops/short-term/ 独立任务。
  • Approach:
    1. 每个候选项先冻结用户信号、预期收益、维护成本、owner、最小样本、晋级阈值和零容忍安全错误;未获批则保持 deferred。
    2. U9 候选仅提供规则无法判断时的 segment proposal;固定 schema/digest、最小输入、R13 安全门、护栏优先、超时 fail closed。
    3. U10 mutate、U11 docgov、U12 workflow/run-control 各自形成独立 short-term、flag、owner mutex、授权负例、回滚点和是否依赖 U9 的明确声明。
    4. 任务契约要求高风险动作绑定 expected revision 和显式确认,确认后执行前重新授权;按钮和自然语言进入同一 owner command。
    5. 任一 action 出现授权旁路、持久状态丢失、双 writer、跨用户泄漏或 B1–B4 回归时,停止全部剩余扩面并更新 gap-matrix;普通质量失败只回滚该 action。
  • Test scenarios:
    • U9 malformed/timeout、span 越界、风险降级和红线拆分逃逸全部 fail closed;敏感内容不出站。
    • 每个 action 在未确认、越权、stale revision、重复提交和部分完成时保持零越界副作用与可恢复状态。
    • 双标签确认/取消只有一个成功;投影停机时权威 GET 仍正确。
    • 旧版本回滚后已有计划仍可读取、取消和 finalize,新建保持关闭。
  • Verification: 本计划只验证每个候选任务边界、go/no-go、预注册门、独立 flag/rollback 和全局安全 stop gate 完整;后续获批任务各自通过真实证据后才可加入更高 tier。

Verification Contract

Layer Applies to Required evidence Done signal
Documentation PU1–PU2 Markdown/link check、git diff --check、三份 SSOT 人工对账、before/after 边界与义务迁移表 无矛盾、无断链、无无证据状态提升或缩口径假完成
Authorization inventory PU3 注册路由全集与 resource/action/owner/authn/ReBAC/ABAC/duty/negative-test 映射 无未认领路由;每项有服务端门和负例
Static/unit PU3、PU5A–PU8 go vet ./...、相关 Go tests、cd web && npm test && npm run build、arch-check --mode block 所有受影响包通过
PostgreSQL PU3–PU8 隔离 TEST_DATABASE_URL、迁移、并发、幂等、fail-closed 负例 无 skip 冒充 PASS,数据可重启恢复
Race PU3、PU5A、后续 multi-intent action 相关包 race;PU5A 关闭全仓 TempDir flake 无 data race、无异步清理残留
Real PI PU4、获批后的 PU6–PU8 真实产品 PI Agent Runner、记录 model/protocol/typed result 和 R13 数据安全门 不使用 stub 或 Herdr 代替;无敏感数据泄漏
Browser PU4、获批后的 PU6–PU8 真实登录、UI 操作、双用户/职责负例、刷新/重登/restart 页面可见结果与 PG/账本一致
Deployment 所有运行时波次 占集成槽 rebuild、/ready、promotion receipt;PU5B 完成后按不可变 digest 晋升 当前阶段可追到同一 commit 和各环境 digest;加固后 test/main 引用同一候选 digest
Rollback PU3–PU8 disable/drain、旧版本兼容读取、cancel/finalize、无双 writer;上一版本二进制针对 expanded schema 的兼容演练 当前基线恢复且无孤儿状态;旧 app/worker 能识别并安全收口新状态

夜间真实 PI 的外部依赖失败和产品回归必须分栏。PR CI 不依赖外部模型;夜间 job 稳定前不提升为合并必需检查。


Definition of Done

  • PU1–PU2 完成后,矩阵能明确区分当前完成范围、发布关系、剩余工作和关闭条件,并保留拆行前后的义务 lineage。
  • schema 45、D3/D5、IAM 历史缺口、前端状态和事件/FAV 混行均已纠正。
  • L1、Chat/ctxmgr baseline、Document revision baseline、前端工作台和可靠事件核心的状态调整有现有证据支持;语义摘要、PI 叙事、多意图扩面与 FAV 已拆成独立 deferred 行。
  • PU3 形成全路由授权 inventory,并证明只有 dev/test 显式双门才允许内存 fixture,其他环境与既有 session 均 fail closed。 (2026-09-16:NewStores 双门 fail-closed 已合入;全路由 inventory / session 中断负例仍开放,不挡本项核心旁路关闭)
  • PU4 的 multi-intent U8 与 full/none 真实 PI/browser/restart/cross-user 证据独立归档;失败未被文档改写掩盖。 (2026-09-16:Wave2 报告已签;Playwright 双标签仍 gated,API 刷新/重启已签;不升 tier)
  • PU5A 的 TempDir race flake 被真正关闭;PU5B 的 nightly job、promotion receipt 和人工豁免链能区分 infrastructure/product failure。 (2026-09-16:PU5A 已关闭;PU5B nightly+receipt+晋升钩子已交付——见 Wave2B 报告。同镜像 digest 晋升已由 Wave2C 单机 pin 关闭;远程 registry 另立。)
  • PU6–PU8 已分别完成产品 go/no-go;未获批项保持 deferred,获批项另建 short-term 后才进入实现与 rollout DoD。 (2026-09-16:全部 no-go / deferred——见 Wave3 go/no-go 与 .doc/ops/long-term/2026-09-16-pu6-* / pu7-* / pu8-* 契约;禁止实施与升 tier。)
  • 任何真实 PI 工作均满足 R13 的最小出站、租户绑定、脱敏、凭证、留存和泄漏负例。 (2026-09-16:nightly/receipt 路径使用隔离合成 DB、脱敏 evidence_refs、凭证不入库;完整 R13 矩阵审计见 Phase3 handoff 开放项,不挡本勾选的运行时门。)
  • deterministic summary/change-report、legacy 单意图、B1–B4 和三环境隔离均无回归。 (合入冒烟 go vet + go test -short;三环境 schema 47 快照保持;未升 MULTI_INTENT tier。)
  • gap-matrix.md 只在真实 blocker 出现或关闭时变化,production_ready 不因普通 backlog 自动翻转。(Wave 0:仅增加 IAM 只读核验注记,未翻转)
  • 放弃的实验代码、临时 flag、诊断 fixture 和测试数据已清理;历史失败证据保留且有正确指针。 (promotion-receipt fixtures 为门禁故意保留;FAV 旁支不合入;见 Phase3 handoff。)

Appendix

Source paths

  • .doc/audit/2026-09-16-feature-matrix-production-readiness-audit.md
  • .doc/status/FEATURE-MATRIX.md
  • .doc/remediation/gap-matrix.md
  • .doc/ops/CURRENT.md
  • .doc/archive/ops/short-term/2026-09-16-production-ready-gates.md
  • .doc/system-design/2026-09-15-multi-intent-hitl-plan.md
  • .doc/test-reports/2026-09-16-multi-intent-u8-task-generate-test-report.md
  • .doc/test-reports/2026-09-16-chat-refresh-gate-test-report.md
  • .doc/test-reports/2026-09-14-workflow-plan-409-frozen-and-optional-duties-test-report.md
  • .doc/test-reports/2026-09-14-document-revision-runtime-ui-test-report.md
  • .doc/test-reports/2026-09-15-phase2-closeout-test-report.md
  • .doc/test-reports/2026-09-12-phase1-iam-authz-test-report.md
  • .doc/backlog/chat-agent-p6-backlog.md

Current decision summary

  • 当前没有新增 production-ready blocker。
  • 当前首发范围可关闭的状态漂移:Intent L1、前端工作台、可靠事件核心。
  • 当前应保持 partial:多意图基线、工作流治理、IAM、CI/E2E;artifact promotion 作为独立发布加固跟踪。
  • 当前可按冻结范围收口并把增强拆行:Chat/ctxmgr baseline、Document revision baseline。
  • 当前应独立 deferred:语义摘要、PI change-report narrative、FAV、多意图未获批扩面、D7 合规治理;纯软件项目自举不在本计划范围。