Files
Agent-System/.doc/remediation/gap-matrix.md
T
weichenandCursor 54c8a3d107 docs(design): specify stage backtrack and impact loop
Record how later materials can affect earlier stages without hard gates, and split the implementation into planned slices.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:09:06 +00:00

15 KiB
Raw Blame History

整改缺口复核矩阵(SSOT)

更新: 2026-09-17 分支: test @ rc-v1.0.0-beta.3 production_ready: yes(发布门禁 B1–B4 已签;dev/test schema_version=48;main schema_version=47。U9–U12 / 软件自举 / FAV / D7 不挡首发;FAV live 与 D7 删除仍非本门禁范围) 协作焦点: ../ops/CURRENT.md Agent 手册: AGENTS.md · PROJECT.md 能力矩阵: ../status/FEATURE-MATRIX.md(Wave 0 校准;与本文件正交)

Codex 2026-09-12 再审计项与本轮回环证据见下表「Codex 再审计」区段。 Wave 0(2026-09-16)对 dev/test/main 做 IAM 只读核验:schema 47、user_credentials 与 IAM 表齐全、ALLOW_IN_MEMORY=false,未发现 MemoryStore 旁路;不新增 blocker。代码 fail-closed 归 Wave 1(见 continuity plan)。


Phase A/B/C 原审计项

ID 审计描述 状态 证据 计划动作
BUG-01 完成后 lifecycle 未更新 PASS stage_remediation_test.go;scripts/fix-completed-instance-lifecycle.sql;dev 执行 UPDATE 47 已完成
BUG-02 推进强制批文档 PASS AdvanceStage 无 doc UPDATE 已完成
BUG-03 无 skipped_disabled PASS memStore skipped_disabled 已完成
BUG-04 对话走旧 bizdev PASS engine.go live 门控 已完成
BUG-05 拒绝逻辑分散 PASS document_access.go + stage_access_helpers.go 已完成
BUG-06 token 明文/重放 PASS activation_token_test.go 已完成
BUG-07 完成后下一流程 PASS 同 BUG-01 已完成
BUG-08 测试库隔离 PASS db/testdb.go Require/Skip;CI TEST_DATABASE_URL + governance PG 步骤;report 已完成
BUG-09 版本冲突自动重试 PASS StageAdvanceBanner reload 已完成
BUG-10 无审计视图 PASS settings + UI 已完成
BUG-11 旧 API 未下线 PASS 治理开启时 410;策略冻结 保留兼容层,不强制删路由
BUG-12 前端名称硬编码 PASS catalog API 已完成
MISSING-01 上下文快照 PASS ctxmgr.CollectProjectDialogue 已完成
MISSING-02 终止 PASS GetTerminationPreview 已完成
MISSING-04 E2E PASS 三正式工作流 PG+PI E2E 已完成

Codex 2026-09-12 再审计

ID 描述 状态 证据
AUTH-TASK-RUN /tasks/run 缺项目鉴权 PASS handlers.go RequireProjectAccess;task_run_authz_pg_test.go
AUTH-TASK-SSE /tasks/run/stream 鉴权在 Flush 前 PASS sse.go;同上测试
DB-USERS-SEQ 种子 users_id_seq 冷启动冲突 PASS 00025_...-sync-seed-sequences.sql;dev/test setval
DATA-LIFECYCLE-DEV completed 实例对应 active 项目 PASS dev dry-run 47 → fix SQL → 0
DATA-TEST-WF test 污染 active 工作流定义 PASS retire-nonofficial-workflow-definitions.sql;test UPDATE 5
DEMO-DB-SEED goose 00011/00012 演示项目污染列表 PASS 00046 retire projects + 00047 retire chat_sessions;ListProjects* / ListChatSessions 过滤 demo_retired;dev migrate schema 47;抽检项目列表无 6001–6010、user1/2/3 无 sess-wangjing*、新建项目 6357 documents=0
DEMO-STUB-API main/prod 仍可请求 stub Agent PASS ResolveBackendInEnv;TestResolveBackendInEnv_RejectsStubInMain
DEMO-WEB-SEEDS 前端 mock/seed 进生产包并撞 projectId PASS @demo-seeds 默认关闭;check-prod-bundle.sh PASS;report
TEST-ADVISOR-BRIEF 多意图 AdvisorBrief 丢失 PASS action_planner.go enrich;action_planner_test.go
TEST-V05-ARTIFACTS V0.5 断言 3 vs 5 PASS types_test.go / full_link_e2e_test.go → 5
TEST-CHAT-MEMORY 语义记忆 sleep 竞态 PASS session_test.go deadline 轮询
TEST-EMBEDDING-GATE 默认打真实 embedding PASS kb/integration_test.go Short + RUN_KB_INTEGRATION=1
HEALTH-SCHEMA-CACHE health schema 启动缓存 PASS LiveSchemaVersion + health 实时读
GO-VET-ASSET asset handler resp before err PASS asset_handlers_test.go err-first
ENV-TEST-STALE test 旧镜像/schema 漂移 PASS rebuild app;health schema_version=25
ENV-DEV-STALE dev 二进制/schema 漂移 PASS docker app 重建;schema_version=25
ENV-MAIN-MISSING main 未部署验收 PASS docker 创建 data/main;compose 注入 ADMIN/KB 密码;health/ready schema 25
DOC-SSOT 文档叙事漂移 PASS 本矩阵 + superseded 标记 + ops
OPS-AGENTS 多 Agent 协作规范 PASS AGENTS.md / PROJECT.md / .doc/ops

2026-09-13 现场问题

ID 描述 状态 证据 计划动作
WORKFLOW-PLAN-FROZEN-OPTIONAL-DUTIES active 项目仍展示可编辑职责表单,409 提示在长表单视口外;现有规划又不支持非必需文档“三权全空”,且后端缺少职责人在任成员复核 PASS(设置页) audit;test-report。项目 143 只读 frozen、A full+none 激活、B partial 不发 PUT、C 零治理拒绝、双标签转 frozen、成员无配置入口、刷新后 143 仍 frozen 设置页矩阵 PASS;真实 PI full/none 长链已另签 Wave2 报告
DOC-CONTENT-CANONICAL-HASH-DRIFT 旧受控文档 bootstrap 裁剪 Markdown 双空格硬换行并将 canonical SHA 写入账本/DocGov,但未同步文件;正文读取把完整性冲突误报 404,lease/list sync 又放大并制造刷新后加载死锁 PASS(真实 UI) audit;UI report。代码已合 dev、schema 32、项目 143 定向 migration_repair;项目 143 clean-run3 与新项目 full-chain-final 主链及 restart 全部纯页面 PASS,目标 404=0 remediation。Wave 3(2026-09-18)已在隔离 docker PG(5436)执行 TestReconcile_LegacyRepair_PG 一次并 PASS,工程测试债关闭,见 test-report
CHAT-HISTORY-REFRESH 工作流激活后刷新,对话正文被阶段过滤器清空,但分类数量与锚点仍按全量返回 PASS test-report;活验 live.json(项目 6252,window=categories=2,guest 403);代码:message_scope.go、chat_history_auth.go、goose 00026/00027 闲聊刷新已补。发布门禁「激活后文档任务 + 重登/重启」仍开放,不回退本 gap
CHAT-INTENT-STATE 真实会话被诊断探针污染;只读查询误启动文档写任务;错误动作与编辑状态刷新后丢失 PASS audit;test-report;双标签活验项目 6275 / sess-p6275-u10(live.json + Docker 截图)。不删除 sess-p143-u9 历史探针 remediation。Wave 3–4 浏览器门已签;诊断污染消息仍不擅自删除
ENV-RESTART-SOURCE docker compose restart 只重启旧镜像,健康检查无法证明合入代码已部署 PASS env-service.sh rebuild + 真实摘要重测 集成冒烟统一使用 dev rebuild
DOCREV-RUNTIME-404 revision-state 404;账本内存丢失;块保存/overlay 无效;agent 假报告 PASS Round20 报告;audit 运行时 UI 已闭环。change report 仍为 fallback,不冒充 PI。历史失败目录不删
DOCREV-PG-ID-REMAP 首次生成 PG 已写 snapshot/candidate,commit 因内存误删 baseline 而 not found PASS audit;Round19 归档 schema31-round19-ui03-advisor-briefing-docrevision-not-found(candidate id=175 / output snapshot 250,禁止写成 candidate 250);Round20 UI-03 V2/r0 已合入 dev@b258ab8;不忽略 ErrNotFound;不删证据
DOCREV-UI03-CLIENT-SYNC 小队完成后右栏仍模板;UI-03 选择器误命中 Banner;pending_author_confirmation 撞 chk;重试重复建 run PASS audit;Round20 UI-03 历史失败不删;勿把 stub 当验收
DOCREV-SSE-IDEM-BUSY SSE WriteTimeout 断线后同 turn 再 POST 误 409 DOC_BUSY + 重复聊天 PASS audit;Round20 真实小队 202 不删证据
DOCREV-QUALITY-SELF-POLLUTE 自检表引用禁词致 score=40 quality_failed;auto_repair 未启用;UI 映射 completed PASS audit;Round20 UI-03 完成 不删证据;不删禁词
DOCREV-ACTIVE-DOC-ROUTING UI-05「当前受控文档」被法规关键词改路由到 feasibility_reg,intake 无 pending PASS audit;Round20 UI-05 pending 停在 intake V2 不改弱 E2E;不删证据
DOCREV-QUALITY-STATUS-FP 行动计划表状态列「待续」被门禁当敷衍,两轮 repair 后 quality_failed 80 PASS audit;Round20 UI-03 不删禁词、不放宽正文;不删证据
GOVERNANCE-ACTION-AUTHZ 文档动作按职责鉴权;未激活 202-blocked;关闭创建直通 PASS test-report;audit 异态 不改 83 条 planning+key 夹具;none 长 PI 审批链另开
DOC-RELIABILITY-PILOT 受控文档写路径与 PG 事件交付尚未形成生产闭环;闭包副作用在崩溃/重启后不可重试审计,错误 scope 或 projection 缺失仍可能导致刷新失败 PASS 初审;Phase 1;Phase 2 复核;Phase 2 修订;U11–U12 报告;E1A;E1B;E1C;E2;复盘;notify live;advance live;projection live 共享 notify/workflow_advance/projection 已 live;生产不再注册 OnOutbox= / AddOnApprovedHook(。FAV 仍 off。HTTP/PI 实施不纳入本行。项目 143 只读

发布门禁(test → main)

☑ go vet ./... 全绿
☑ go test -short ./... 全绿
☑ TEST_DATABASE_URL 下治理 PG 集成全绿(CI)
☑ 真实 PI Agent 三工作流治理 E2E 实录([test-report](../test-reports/2026-09-16-pi-three-workflow-e2e-test-report.md))
☑ 对话刷新恢复:激活前聊天 + 激活后文档任务 + 刷新/重登/重启可恢复,双用户负例通过([test-report](../test-reports/2026-09-16-chat-refresh-gate-test-report.md);项目 6359)
☑ lifecycle fix SQL 已在 dev 执行
☑ test/dev health schema_version=47
☑ main 环境部署冒烟(本地 8000;schema 对齐见 CURRENT)
☑ 前端:版本冲突刷新、终止 preview 人工抽检([test-report](../test-reports/2026-09-16-frontend-gate-b4-test-report.md);项目 6363)

结论: 发布门禁四框已签。文档账本运行时 UI Round20 PASS;CHAT-INTENT-STATE 双标签 busy PASS;DEMO-DB-SEED PASS;BUG-08 PASS。-race TempDir flake 与 U9–U12 / 软件自举 / FAV / 完整 PI change-report 叙事不挡首发。不得把 fallback change report 写成完整 PI 叙事。


2026-09-20 P0 现场问题(同日收口)

ID 描述 状态 证据
P0-MIG 00054 空洞 + chat_summaries 静默失败 PASS 重编号 00058;dev/main health schema=58;报告
P0-IDOR 偏好写 / session 项目读 / 重分类越权 PASS 单元 + 真实 curl 403/400;同上报告
P0-PANIC-RACE taskrun closed-channel panic + 同步 chat 无锁 PASS 持锁 fanout;WithExecLock;-race Subscribe 测试
P0-XSS math 错误分支未转义 PASS BlockEditorModal/MathBlockView + escapeHtml 单测
P0-CRED backup 硬编码口令 + push URL token + 生产口令轮换 PASS 脚本无硬编码;docker 网旧口令 FATAL、新口令 OK;main health ok

不改 production_ready。main git 分支对齐仍为 backlog(T20-I7);环境库已随 rebuild 至 schema 58。


2026-09-20 追踪留存分类(不改发布门禁)

ID 描述 状态 证据 计划动作
D7-TRACE 项目追踪索引与阶段回溯记录的留存类别 已分类,未授权删除 设计 §9。project_trace_*、stage_reopen_requests、stage_recheck_marks 为 record。源文档依法清除时条目 tombstone,边与决议保留 不签 D7 对话 ADR。禁止物理删除,禁止把追踪表当可丢缓存重建。实施见 T2,不挡首发