浅念
|
75028e8a16
|
docs(plan): P2 Task 7 勾选 + Task 9 移交清单
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-21 13:14:35 +08:00 |
|
浅念
|
c28c1655a4
|
fix(source): DB 事务化;storageRoot 入 metadata;siteCreated 与并发测试;CLI 体验与校验小修
评审修复(4 项 Important + 8 项 Minor):
- DB 事务化:site→connection→snapshots 全部落库包进 db.transaction 单事务
("任何失败零落库"字面成立);助手改收 Pick<select|insert|execute> 结构类型
(tx 与直连 db 通用)。并发撞唯一约束不在事务内补查(语句失败后续查 25P02),
改为 registerSource 层事务级重试(≤3 次,第二次 select 命中复用分支)
- connection 并发:select-then-insert 无约束可兜底,事务内 pg_advisory_xact_lock
(siteId:name) 串行化同键登记(kind 枚举扩展推迟 REST 通道,注释注明)
- storageRoot 绝对路径固化进每条 snapshot metadata 与报告 inputs(快照不可变,
事后无法补写——永久缺口封堵)
- ensureSite 返回 created;RegisterResult.siteCreated;CLI 站点已存在时提示
--name/--locale/--origin 未生效
- 媒体复制期逐文件 sha 复核(copyAndHash 对拍清单,源中途变更 → COPY_FAILED)
- 空媒体目录拒绝(EMPTY_MEDIA_DIR)
- CLI:PATH_NOT_ALLOWED 追加 --allow 提示;--origin 经 new URL 校验(http/s)、
--locale 语言标签形状校验,fail fast;开跑打印生效白名单(审计)
- makeRunId 服务导出、CLI 复用;.tmp 残留手工清理策略写入文件头注释
- 测试 +2:并发同输入恰好一组行/双方同 id/新建标志恰一(3 次重跑稳定);
isUniqueViolation 形状单测(drizzle cause.code / 裸 code / 其他)
全套 263 绿;typecheck / lint 绿;CLI 冒烟对临时库验证事务路径、siteCreated
输出、defaults 落库(en-US / https://qa.example)、白名单打印与校验报错
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-21 13:06:48 +08:00 |
|
浅念
|
9732e1b684
|
fix(source): 中间段符号链接逃逸堵截(无条件 realpath);注释口径修正
- validateInputPath 原先只在末段是符号链接时 realpath——中间目录段含 junction
(链接在白名单内、目标在外,Windows 免特权可构造)时词法前缀判定被绕过,
会读到白名单外内容(评审 PoC 复现)。改为 lstat 存在性探测后无条件
realpath(abs),整条路径解析到物理位置再做白名单与类型判定;断链场景
realpath 抛 ENOENT 仍归入 INPUT_NOT_FOUND(语义不变)
- 回归测试:中间段 junction 逃逸用例(incoming/junc → pkg-outside/escape.xml,
断言 PATH_NOT_ALLOWED + 零落库);已对修复前代码验证为红(逃逸被接受)、
修复后绿
- 注释口径修正:registerSource 的"任何失败零落库零复制"只在校验阶段成立——
摄取中途失败不回滚已落位副本(content-addressed、幂等无害),但 DB 写入
在全部摄取完成后才开始,任何失败零落库不变
- 计划勾选:Task 7 "CLI 执行机制(钉死)"(已实现并双命令冒烟验证)
全套 261 测试绿(+1);typecheck / lint 绿
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-21 12:47:07 +08:00 |
|
浅念
|
46b823e667
|
docs(plan): P2 Task 7 勾选
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-21 12:31:31 +08:00 |
|
浅念
|
a535cde270
|
docs(plan): P2 Task 6 勾选
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-21 12:09:41 +08:00 |
|
浅念
|
15e1e51a14
|
docs(plan): P2 Task 5 勾选 + Task 6 对接清单
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-21 11:27:18 +08:00 |
|
浅念
|
8796da03f1
|
docs(plan): P2 Task 4 勾选
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-21 10:14:47 +08:00 |
|
浅念
|
f4971a943b
|
docs(plan): P2 Task 3 勾选 + 两批审查移交件并入 Task 4
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-21 09:26:49 +08:00 |
|
浅念
|
6eb5fa6dda
|
docs(plan): P2 Task 2 勾选
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-21 08:41:17 +08:00 |
|
浅念
|
ec898f6e0a
|
docs(plan): P2 Task 1 勾选;tsconfig 双链型注释(ADR-016 待记)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-21 08:16:18 +08:00 |
|
浅念
|
2d33dd17dd
|
docs(plan): Plan 2 采纳复审建议——paths 统一三方消费、commander 定根依赖
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 22:53:40 +08:00 |
|
浅念
|
5cc98c584f
|
docs(plan): Plan 2 修复评审三 Issue 与建议——CLI机制/跨包接线前置/media清单哈希定义/probe路径策略/内存采样法/报告路径/责任链续传
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 22:51:53 +08:00 |
|
浅念
|
ecff5a34af
|
docs(plan): Plan 2 实施计划——阶段2 WXR 流式适配器(9任务)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 22:46:37 +08:00 |
|