Phase 1

MOSS v2 验收报告

MOSS v2 验收报告

结论:通过 验收日期:2026-07-24 对应标准:09-v2-acceptance-standard.md

1. 基本信息

字段 内容
分支 feat/moss-v2-plan
基础实现 commit 5ebc166
最终源码 本报告所在 commit;可用 git rev-parse HEAD 定位
Node v24.14.0
平台 macOS / Darwin arm64
时区 America/Los_Angeles
schema PRAGMA user_version = 2
受控输入 996 条 X Bookmarks

实施前工作区没有唯一的存量 data/moss.sqlite 可直接迁移,因此没有对个人唯一数据库执行破坏性验收。真实迁移使用从同一批 996 条受控输入构造的旧 schema 副本连续演练三次;Feedback ID、外键、时间和审计回填使用独立旧库 fixture 验证。

浏览器截图包含个人书签正文,只在本地验收任务中查看,不提交到仓库。报告保留不含正文、cookie、token 或密钥的数量与结果。

2. 自动化证据

测试

npm test

结果:22 项通过,0 失败,0 跳过。覆盖:

  • 996 条 Markdown 解析与严格 X 日期。
  • URL v1 规范化和跨来源身份隔离。
  • 空库、NULL URL、JSON 边界和高版本 fail-closed。
  • 旧库字段、Feedback、Audit Event 迁移与三次重复启动。
  • 非法日期和迁移审计中途失败的整体回滚。
  • 导入、Feedback、Signal Run 与 Audit Event 的事务一致性。
  • 连续 Feedback 历史与“最新事件作为当前值”。
  • Signal 缓存、Import/Feedback 自动失效、强制刷新与最后稳定批次。
  • 规则评估失败和发布失败。
  • 五条规则的上下边界。
  • Feedback 与 Signals Route Handler 契约。
  • SQLite 在线备份完整性。

可复现迁移与性能验收

npm run verify:v2

2026-07-24 结果:

指标 结果 标准
996 条旧库迁移,3 次 11.78 / 11.28 / 10.64 ms 每次 < 60 s
迁移字段抽样 每次 20 条,全部一致 不少于 20 条
Category + Author 查询 p95 0.010 ms < 200 ms
Feedback Route Handler p95 0.147 ms < 500 ms
Today 缓存命中 p95 0.085 ms 不新增 run
Calibration 生产 SSR p95(预热 3 次,采样 10 次) 393.28 ms < 2 s
integrity ok ok
foreign key failures 0 0

查询计划分别命中:

content_items_x_category_idx
content_items_x_author_idx

生产构建

npm run build

结果:TypeScript、路由收集和生产构建通过;四个工作台路由和两个 Route Handler 均在构建清单中,无重复根路由。

3. HTTP 验收

在隔离数据库导入 996 条内容后启动 loopback 生产服务:

307 /
200 /today
200 /knowledge
200 /governance
200 /calibration
405 GET /api/feedback
405 GET /api/signals/refresh
400 malformed POST /api/feedback
404 missing content POST /api/feedback

连续 20 次真实 HTTP Feedback:

指标 结果
成功请求 20 / 20
median 1.15 ms
p95 2.52 ms
max 31.12 ms
Feedback Events 20
Feedback Audit Events 20
SQLITE_BUSY / 丢失 0

服务只监听 127.0.0.1,仓库没有反向代理、隧道或公网监听配置。

4. 浏览器与响应式验收

浏览器逐页检查以下 20 个组合:

1440 × 900  × 4 routes
1280 × 800  × 4 routes
1024 × 768  × 4 routes
768 × 1024  × 4 routes
390 × 844   × 4 routes

结果:

  • 每页恰有一个 main、Sidebar 和 Inspector DOM,不存在嵌套外壳。
  • 20 个组合均无页面级横向溢出。
  • 1440、1280、1024 显示桌面 Inspector。
  • 768 隐藏 Inspector,但“打开上下文面板”可用。
  • 390 隐藏 Sidebar,显示可打开/关闭的移动主导航和 Inspector 入口。
  • 主导航可由键盘 Escape 关闭,焦点恢复到触发按钮;点击链接后 Sheet 自动关闭。
  • / 重定向 /today;前进、后退后 pathname 与导航高亮一致。
  • Calibration 移动 Inspector 可打开,Escape 关闭并恢复焦点。
  • 所有普通链接补有统一 :focus-visible 样式;核心导航和 Feedback 不依赖鼠标。

浅色与深色关键文本对比度抽查:

主题 最低抽查值 标准
浅色 5.35:1 普通文字 ≥ 4.5:1
深色 7.72:1 普通文字 ≥ 4.5:1

浏览器和服务端未出现应用运行时 error。开发服务曾在生产构建覆盖 .next 后出现一次缺失 chunk;停止并干净重启开发服务后消失,属于运行手册已记录的“不要并行 dev/build”约束,生产构建与干净启动未复现。

5. 关键交互验收

Feedback → Today → Governance

  1. 在 Calibration 第一条内容提交“值得关注”。
  2. 卡片立即显示最新值,刷新后仍一致。
  3. SQLite 新增 1 个 Feedback Event 和 1 个 Feedback Audit Event。
  4. 打开 Today 后输入版本从 2:0 变为 2:1
  5. 旧 Signal Run 变为 superseded,新 run 成为唯一 active。
  6. 强制刷新发布第三个 run;随后普通刷新不新增 run。
  7. Governance 可读取对应 Feedback 和 Signal Run Audit Event。

刷新按钮成功显示“已发布 20 条信号”。客户端对 5xx 与网络失败均保留现有信号并显示错误文案;服务端发布失败回滚由自动化故障注入验证。

空数据库

使用独立 schema v2 空库在 390 × 844 检查四个路由:

  • Today 显示 npm run import:content 指引。
  • Knowledge 显示真实零值与导入指引。
  • Governance 显示无 Audit Event 空态。
  • Calibration 显示“尚未导入内容”与导入指引。
  • 四页均无横向溢出、404 或 500。
  • 空库 integrity_check = ok、外键错误 0、Signal Run 0。

6. 恢复验收

自动化使用 better-sqlite3 backup() 生成一致性快照,并在只读恢复副本上验证:

对象 恢复结果
Content Item 1
Feedback Event 1
active Signal Run 1
Audit Event 3
integrity ok
foreign key failures 0

运行手册同时给出 SQLite .backup、隔离恢复演练和实际恢复步骤。故障注入均使用临时副本,未覆盖有效数据库。

7. 最终数据对账

本地运行数据库在手工验收前后:

指标 验收前 验收后 解释
Content Items 996 996 无差异
(source, source_id) 唯一身份 996 996 无碰撞
Feedback Events 0 1 手工验收新增 1
Import Runs 2 2 无差异
Signal Runs 1 3 Feedback 自动失效 + 强制刷新
active Signal Run 1 1 始终唯一
Audit Events 3 6 Feedback 1 + Signal Run 2
孤儿 Feedback 0 0 无差异
孤儿 Signal 0 0 无差异
integrity ok ok 无差异

8. 验收项汇总

类别 通过 失败 未执行
构建与静态检查 5 0 0
迁移 9 0 0
身份与导入 10 0 0
Feedback 7 0 0
Signals 9 0 0
API 8 0 0
查询 8 0 0
路由与共享壳 7 0 0
Today 8 0 0
Knowledge 7 0 0
Governance 8 0 0
Calibration 8 0 0
响应式与可访问性 8 0 0
Recovery 3 0 0
Performance 5 0 0

最终无 Blocker、Major 或未登记 Minor。MOSS v2 按本轮边界验收通过。