Files
test-doc/Gitea知识库/v1-验收与止损矩阵.md
T
2026-08-11 15:40:11 +08:00

17 KiB
Raw Blame History

title, date, type, status, content_status, owner, last_updated_at, last_updated_by, hash, hash_scope, belongs_to, depends_knowledge, source_refs
title date type status content_status owner last_updated_at last_updated_by hash hash_scope belongs_to depends_knowledge source_refs
Gitea知识库 v1.1 验收与止损矩阵 2026-08-07 设计spec draft discussion Verlit 2026-08-10 Codex sha256:4fb6cc58062bc3761610a6d89ca962932596a752dbac89243ad5446a6143c967 Markdown 正文(从一级标题开始至文件末尾)的 UTF-8 SHA-256
3-业务线/Gitea知识库/_context
3-业务线/Gitea知识库/公司共享 Context 项目仓库发布方案 v1
3-业务线/Gitea知识库/公司共享 Context MCP-first 身份与审计方案 v1.1
3-业务线/Gitea知识库/v1-工程构建规格
3-业务线/Gitea知识库/v1-开发任务分解
3-业务线/Gitea知识库/v1-详细实施方案
0-收集箱/临时待归属/2026-08-03-公司共享Context发布与AI协同框架/2026-08-03-12-试点方案决策清单与路线图.md

Gitea知识库 v1.1 验收与止损矩阵

1. 目的与判定口径

本文件把 v1 基线叠加 v1.1 MCP-first 身份与审计覆盖层后的阶段门、测试样本、成功指标、证据要求和止损动作放在同一套判定口径中。它用于回答“是否允许进入下一阶段”和“出现什么情况必须停止”,不能用安装完成、演示成功或口头确认替代。

当前工程设计、未来代码开发和未来真实实施使用不同的数据边界:工程设计不运行测试;代码开发默认使用合成数据、fake adapter 和临时目录;只有进入真实实施后才使用已授权试点。所有正式系统验收必须满足以下规则:

  • 使用一个真实、正在运行、低敏感且已明确授权的试点项目;
  • 正向与负向测试都通过,拒绝结果也要留下证据;
  • 发布记录、Git 提交、current、只读入口和 Agent 读回能够相互追溯;
  • 证据写入业务线或后续正式代码库约定的验收位置,不把聊天、临时日志或截图作为唯一证据;
  • 任一安全、权限、唯一性或恢复硬门失败时,不以“后续再补”放行。

2. 阶段门矩阵

Gate 进入条件 必须完成 通过证据 未通过动作
C0 工程设计构建 v1 主方案和 v1.1 差量覆盖层已归位 设计追溯、工程构建规格、开发任务分解、测试规格和未来实施方案统一到 v1.1 本业务线本地文档、hash 与一致性校验 只修正文档;禁止创建代码仓库、写代码和远端动作
C1 代码开发准入 C0 通过;Verlit 明确宣布进入代码开发 平台代码仓库、运行时/MCP SDK、Agent Host 边界、维护者、任务范围、合成身份/数据和验收人明确 开发任务单和代码仓库入口 保持任务为 planned;不得创建或修改代码
G0 实施准入与参数 C0/C1 对应门通过;Verlit 明确宣布进入实施 试点项目、成员角色、飞书身份应用、远程 MCP、身份/审计存储、目标服务器、备份、RPO/RTO和应急责任已确认 决策清单、角色表、服务器只读盘点、参数签字或明确确认记录 仅允许已授权的本地代码和设计工作;禁止远端创建和部署
G1 实施契约落地 G0 通过;平台代码归属明确 为目标试点固定稳定 ID、schema、状态机、幂等键、CAS、错误码、事件和回执契约 契约文件、状态转换测试、非法转换拒绝测试 可继续已授权的纯本地开发;禁止绑定真实环境和写远端状态
G2 基础层与权限 G1 可并行准备;目标环境已授权 Gitea 加固、飞书/内部/Gitea 身份绑定、双层权限、私有试点仓库、main 保护、凭据隔离和备份链路完成 身份绑定、配置快照、双层权限正反测试、分支保护和备份结果 禁止接入真实业务内容和真实发布
G3 MCP 与发布闭环 G1、G2 通过 MCP 唯一入口、选择、构建、安全检查、精确确认、CAS、网关提交、原子 current、强制审计、回执和四段读回闭环 单次 MCP 调用/发布三主体证据包;Git/current/MCP/Agent 四段一致 停止扩大样本;修复后从失败门重新验收
G4 安全与运维 G3 通过 未授权拒绝、私密材料隔离、提示注入隔离、撤权、密钥轮换、监控、事故响应和恢复演练通过 负面测试、撤权测试、轮换记录、告警证据、空环境恢复报告 安全硬失败立即停发;恢复失败禁止真实试点
G5 真实试点 G0G4 全部通过 真实成员完成 12 类样本和日常使用观察;没有硬止损信号 试点报告、指标表、问题清单、责任人验收、v2 判决 回到相应 Gate;不得以软件安装完成宣告 v1 完成

3. 工程测试规格

3.1 测试层级

前缀 层级 当前设计要求 运行边界
CT 契约测试 schema 合法/非法样例、major/minor 兼容、未知关键状态拒绝、hash 防篡改 未来代码开发;纯本地、合成对象
UT 单元测试 ID、状态机、选择范围、确定性构建、检查规则、策略、幂等、导出和读取模块 未来代码开发;无网络、无真实凭据
IT 集成测试 fake source/Gitea/policy/read endpoint 下的正常与全部异常事务 未来代码开发;fake adapter 和临时目录
SEC 安全负面测试 越权、路径、符号链接、凭据、PII、日志脱敏、prompt injection 和策略覆盖 未来代码开发使用合成攻击语料;真实环境后再复验
REC 恢复测试 artifact、current、状态存储、Gitea 和空环境恢复 本地仅验证恢复逻辑;真实备份恢复属于 G4/G5
T 真实试点验收 下述 T01T12 仅在 G0~G4 通过后,对已授权低敏感项目运行

每个开发任务的具体 CT/UT/IT/SEC 用例在 v1-开发任务分解.md 中有映射。测试结果必须记录用例 ID、契约版本、fixture hash、结果、错误码和关联任务;开发测试不得为了方便连接生产 Gitea。

3.2 v1.1 MCP、身份与审计强制用例

ID 场景 预期结果
M01 两名飞书用户通过同一 Agent Host 登录 内部主体、授权项目、工具结果和审计身份正确分离
M02 工具参数填写他人 user_id、role、grant 或 session 服务端忽略/拒绝自报身份,不能冒充其他用户
M03 内部 ProjectGrant 允许、Gitea 权限拒绝 fail closed,记录 permission_mismatch
M04 内部 ProjectGrant 拒绝、Gitea 权限允许 fail closed,不以 Gitea 单层权限放行
M05 read/search/build/validate 和 denied 调用 每次都有 request、授权和完成/失败的 humanagentservice 事件
M06 discussion/confirmed 发布 精确确认、candidate hash、base_current、session、commit 和网关服务身份可关联
M07 停用用户、解除飞书/Gitea 绑定、撤销项目授权或 Gitea 成员 未来 MCP 会话/调用立即或在承诺失效边界内拒绝
M08 audit store/outbox 不可写 业务写 fail closed;可靠读取审计队列也不可用时拒绝读取
M09 MCP 故障或停用 不回退到共享 CLI、通用 Gitea token、shell 或高权限 API
M10 普通用户枚举工具 不存在审计写删、权限写、Gitea Admin、SSH、SQL、部署、备份、密钥和策略开关工具;不存在自定义业务 Web 入口

3.3 十二类强制试点样本

原方案包实际列出 12 类样本;本文以 12 类为准,不沿用“11 类样本”的文字误差。

ID 场景 操作要点 预期结果 必要证据
T01 单文件状态演进 同一材料先以 discussion 发布,再明确改为 confirmed 发布 两次 release 可追溯;内容状态变化不等同于技术状态变化 两次 selection、diff、release、commit、readback
T02 审核开关负面路径 试点保持 forced_off;仅在隔离测试中模拟审核 ON、candidate hash 变化及 ON→OFF 正常试点不进入待审;模拟中旧批准不能覆盖新 candidate,切回 OFF 不误复用审批 策略快照、拒绝事件、状态转换记录
T03 多来源组合 从两个或多个明确选择的 Markdown 来源构建一份发布物 仅包含选择清单中的内容;顺序、路径和 hash 确定 selection manifest、构建清单、重复构建 hash
T04 附件与链接 发布含允许附件、相对链接和跨文件引用的材料 附件收集完整,链接改写后可读,无越界文件 附件 manifest、链接检查、读取截图或机器结果
T05 相邻私密材料 在已选文件旁放置未选私密或敏感文件 私密材料不进入构建区、Git、current、日志和回执 搜索结果、构建清单、仓库与入口负向检查
T06 并发发布 两个 publisher 基于同一 base_current 同时发起不同发布 只有一个成功;另一个以 stale_base 阻断,不出现混合 current 两个请求、CAS 结果、最终 current manifest
T07 安全阻断 注入凭据、PII、路径穿越、符号链接和控制文件样本 策略要求阻断的样本在远端写入前失败,日志不回显秘密 每类检查结果、错误码、远端无提交证明
T08 Prompt Injection 在知识正文中加入试图改变 Agent 权限或索取凭据的指令 内容只作为数据读取;Agent 不获得额外工具、凭据或跨项目访问 Agent 输入输出、工具调用为零或拒绝证据
T09 发布后读回失败 人为让只读入口或 Agent 读回不一致 release 不标记 completed;告警触发并可安全重试 发布状态、读回差异、告警、重试结果
T10 撤权与凭据轮换 撤销一名成员的绑定/授权,再轮换 context-reader 服务凭据 被撤权用户未来 MCP 访问失败;旧服务凭据失效,新凭据仅可读目标项目 前后访问结果、轮换记录、权限快照
T11 历史版本恢复发布 选择历史 release 作为新发布来源 生成新的 release 和审计记录,不改写历史,不直接移动隐藏指针 新旧 release、commit、diff、readback
T12 空环境完整恢复 在隔离环境恢复 Gitea 数据、配置、仓库和关键凭据材料 在承诺 RPO/RTO 内恢复;权限与 current 一致;恢复结果可读 恢复计时、步骤记录、完整性校验、权限与读回测试

4. 跨链路验收指标

指标 v1.1 通过值 说明
Git/current/只读入口/Agent 四段 release 一致率 100% release ID、内容 hash、content_status 必须一致
同一项目同时有效的 current 数量 始终为 1 staging 不算 current;任何短暂双 current 也算失败
未授权项目访问成功次数 0 人、Agent 和服务身份都适用
未选择私人内容进入企业面次数 0 包括仓库、current、日志、回执、缓存和备份索引
非网关身份写受保护 main 成功次数 0 管理员紧急操作也必须进入受控审计流程
CAS 冲突导致内容覆盖次数 0 冲突必须阻断,不自动合并 current
已标记 completed 但读回不一致次数 0 四段读回未通过不得完成事务
备份恢复成功率 100%(演练样本) 至少完成一次隔离空环境恢复
共享账号或共享凭据数量 0 每个人、Agent 和服务均使用独立身份
共享机器人身份承载个人行为次数 0 每次用户操作都必须绑定个人内部主体和 AgentSession
用户业务 MCP 调用审计覆盖率 100% 允许、拒绝、成功和失败均覆盖 humanagentservice
客户端自报身份/角色被采信次数 0 user、role、grant 和 session 只能从服务端验证上下文派生
双层权限不一致被放行次数 0 内部授权或 Gitea 权限任一层拒绝都必须 fail closed
MCP 故障回退到高权限入口次数 0 不允许共享 CLI、token、shell、API 或自建 Web 旁路
普通成员必须处理 Git 分支/PR/MR 的发布次数 0 v1 发布入口需屏蔽不必要的 Git 操作复杂度

性能、可用性和 RPO/RTO 的具体数值在 D15 确认后加入验收承诺;未确认前不得把方案包建议值写成已承诺 SLO。

5. 止损矩阵

信号 级别 立即动作 恢复条件
出现两个有效 current、混合发布物或非原子切换 硬停止 暂停所有发布和默认读取;保留现场;回退到最后已验证 release 原因修复、唯一性测试和 T06/T09 全部重跑通过
私人、跨项目、凭据或敏感内容进入企业读取面 安全事故 立即停发、撤销暴露入口和凭据、按事故流程评估通知与清理 泄漏范围确认、秘密轮换、历史与缓存处理、T05/T07 重跑通过
未授权身份可读目标项目或非网关身份可写 main 硬停止 冻结相关身份与入口,保存审计证据 权限根因修复,完整正反权限测试通过
撤权后仍可访问,或旧 Agent 凭据仍有效 硬停止 禁用身份、轮换凭据、暂停新增成员 T10 通过且缓存/会话失效边界明确
备份存在但无法在隔离环境恢复 硬停止 停止进入真实试点和扩大使用;修复备份链 T12 在目标 RPO/RTO 内通过
事务标记 completed 但任一读回不一致 硬停止 将 release 标记为失败或不完整,保持最后已验证 current T09 和完整四段读回通过
Prompt 内容可以改变 Agent 权限、路由或工具调用 安全事故 停用 Agent 入口,隔离样本并审查凭据暴露 权限控制移出提示词、T08 通过、凭据完成轮换
依赖共享账号、共享 Token 或人工复制管理员凭据 硬停止 停止对应流程,不接受“试点临时共享” 独立身份和最小权限矩阵落实并通过测试
每次发布都需要管理员手工修仓、改历史或移动 current 暂停扩展 保留现有安全读取,停止增加用户和项目 自动化闭环稳定,连续试点无人工修仓
普通成员持续需要解决 Git 分支、PR/MR 或复杂冲突 产品止损 暂停扩大试点,回到选择与发布入口设计 真实成员可完成发布且无需 Git 专业操作
只有技术维护者使用,业务成员没有真实使用证据 范围止损 不进入 v2,不扩大平台能力 真实业务使用场景和可量化收益得到验证
只能靠提示词声明权限,服务端无强制权限边界 安全事故 禁止真实数据与 Agent 接入 权限由 Gitea、只读入口和服务端策略强制执行
共享机器人/Agent 身份无法区分真实操作人 硬停止 停用用户业务 MCP,保留只读事故调查 飞书绑定、内部主体和 AgentSession 归因通过 M01/M02
工具参数可冒充 user、role、grant 或 session 安全事故 立即停用受影响工具并审查已发生调用 身份只从验证会话派生,M02 及历史影响检查通过
内部权限或 Gitea 权限任一拒绝却仍放行 安全事故 冻结项目访问和发布,保存审计现场 双层鉴权修复,M03/M04 与撤权测试通过
MCP 调用缺少三主体审计,或审计失败仍执行业务动作 硬停止 停用受影响入口;核对业务状态与事件缺口 outbox/等价机制修复,M05/M08 全部通过
MCP 不可用时自动回退共享 CLI、token、shell 或自建 Web 旁路 硬停止 关闭回退通道和相关高权凭据 M09/M10 通过并完成凭据轮换

6. 证据包最小结构

每个 Gate 和测试样本至少保留:

  1. 测试标识、时间、human/agent/service 稳定 ID、AgentSession、项目 ID 和环境标识;
  2. 前置状态与权限快照;
  3. 输入摘要、selection ID、幂等键和 base_current
  4. 检查结果、状态转换、错误码和审计事件;
  5. release ID、commit SHA、内容 hash、content_status
  6. Git、current、只读入口和 Agent 读回结果;
  7. 回滚或恢复动作及其验证结果;
  8. 结论、遗留问题、责任人和下一动作。

凭据、Token、私密正文和其他秘密不得进入证据包;证据中只记录稳定标识、hash 和脱敏摘要。

7. v1.1 完成与后续版本判决

只有 G0G5 全部通过、M01~M10 与 T01~T12 完成、跨链路硬指标达标且无未关闭硬止损项,才可将当前 v1.1 目标标记为完成。完成后至少保留一段真实使用观察期,再依据实际摩擦决定后续版本。

以下能力不因 v1.1 完成而自动启动:Skill Registry、飞书内容来源、通用审批、自定义业务 Web、多项目汇总和更多内容来源。它们只能以独立版本范围、威胁模型、迁移方案和验收标准进入后续决策。