浅念
|
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 |
|
浅念
|
494beadf94
|
chore: 终审 Minor 清理——@types/node 钉 22、contracts 构建排除测试、helpers 盲区注记、计划收口注记
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 21:08:34 +08:00 |
|
浅念
|
c128ebf5a0
|
docs(plan): Task 14 勾选——Plan 1 全部任务完成;修注释笔误
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 20:59:58 +08:00 |
|
浅念
|
622c2b09d8
|
docs(plan): Task 13 勾选——阶段 1 验收:globalSetup 临时库 + 空库一键迁移
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 20:43:24 +08:00 |
|
浅念
|
9e0b49885b
|
docs(plan): Task 12 勾选——七域迁移收官,21 表齐
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 20:28:07 +08:00 |
|
浅念
|
c09a9b31f6
|
docs(plan): Task 11 勾选
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 20:19:00 +08:00 |
|
浅念
|
de415e7301
|
docs(plan): Task 10 勾选
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 20:08:24 +08:00 |
|
浅念
|
cb959c905d
|
docs(plan): Task 9 勾选
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 19:52:01 +08:00 |
|
浅念
|
60581047ef
|
docs(plan): Task 8 勾选
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 19:42:46 +08:00 |
|
浅念
|
7636a81bd2
|
docs(plan): Task 7 勾选
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 19:31:25 +08:00 |
|
浅念
|
5da883cd40
|
docs(plan): Task 6 勾选;schema 注释编号对齐
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 19:19:54 +08:00 |
|
浅念
|
7720d66630
|
docs(plan): Task 5 勾选 + Step3 验证命令对齐现实
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 19:14:17 +08:00 |
|
浅念
|
6725bf0024
|
docs(plan): Task 4 勾选;Task 13 沉淀 KINDS 复用注记
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 18:50:18 +08:00 |
|
浅念
|
33517065f6
|
docs(plan): Task 3 勾选 + 阶段2责任清单
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 18:30:43 +08:00 |
|
浅念
|
5e4524e2fb
|
docs(plan): Task 2 勾选
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 18:12:37 +08:00 |
|
浅念
|
b538c21e78
|
docs(plan): Task 1 勾选;Task 14 沉淀质量审查建议(type:module/.gitattributes/engines)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 17:43:25 +08:00 |
|
浅念
|
7d1ccd3dd8
|
docs: 阶段0收尾——Task 0.3/0.4 勾选、基数文档措辞修正
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 17:34:28 +08:00 |
|
浅念
|
2f1d594034
|
fix(fixtures): 修正 wppop_sections PHP 序列化长度前缀(审查发现);记录悬空图库引用为有意设计
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 17:30:25 +08:00 |
|
浅念
|
2b1130c92c
|
docs: Task 0.1 收尾——cms 基线降级为信息性记录(发现 cms 为活跃仓库)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 17:23:28 +08:00 |
|
浅念
|
277523fa2c
|
docs(plan): Task 0.2 标记用户暂缓(待备份目标盘)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 17:18:02 +08:00 |
|
浅念
|
0ead98fcee
|
docs(plan): 复审残留两修补——getDb 测试库优先接线、Task0.1 步骤重编号
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 16:53:07 +08:00 |
|
浅念
|
8da5fa5a23
|
docs(plan): 修复计划评审两卡点+六建议
- cms 验收改为与只读基线逐字节一致(防 agent 误 restore cms)
- .gitignore 反排除 .env.example(否则 git add 失败)
- Task0.1 补 cms 基线记录与 gitignore 验证步骤
- Task0.2 补数据授权确认;Task5 补 test 脚本
- Task12 七值改八值;Task10 复选框笔误;Task13 helpers 机制具体化
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 16:50:01 +08:00 |
|
浅念
|
e6c771151d
|
docs(plan): Plan 1 实施计划——阶段0+1(基线备份/工程骨架/21表契约冻结)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 16:45:05 +08:00 |
|
浅念
|
80dcc8378f
|
docs(spec): 采纳复审六条建议——G5措辞、附件页默认规则、NULLS NOT DISTINCT、verify.ts分工、incoming目录、周期对齐
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 16:40:10 +08:00 |
|
浅念
|
255b166513
|
docs(spec): 采纳 V2 设计为基线并落实四项修订
- V2 规格取代 V1(V1 文件头标注作废与原因)
- 修订①:§1.2 列明资产移植白名单与重写边界
- 修订②:Tag/Product Tag 默认 301 主列表(不生成 Tag 页)
- 修订③:ZIP 输入移出切片(媒体只接受已解包目录)
- 修订④:?p= 查询路由降级为 excluded 登记,SP3 再实现
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 16:35:36 +08:00 |
|
浅念
|
2f4110f856
|
docs(spec): 采纳复审三条建议——字段重命名显式化、storage/sitemap 入目录树、媒体tier2与redirect目标测试用例
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 16:19:49 +08:00 |
|
浅念
|
2922bb2e10
|
docs(spec): 按评审意见修复规格五项问题
- 媒体缺失两级处置(悬空引用=构建失败;文件缺失=门禁🔴)
- 发布=条目级状态指针更新,修订不可变性不受影响
- 路由表补 /products/ /news/ 主列表页;门禁查 redirect 目标存在性
- 作废引用清理(V1.0→V2.0/V3.0 §2.1);scripts 补 publish.ts
- 采纳建议:sitemap 改手动文件输入(零服务端抓取)、保留设备名检查、
报告持久化 artifacts/jobs/、悬空外键重映射
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 16:17:38 +08:00 |
|
浅念
|
d60123ba41
|
docs: SiteForge 规划文档基线 + 纵向切片设计规格 V1
- V3.0 总体方案、主题与板块设计、实施计划
- cms 现状差距分析 V2.0(V1.0 已标注作废)与复用评估 V1.0
- 纵向切片设计规格(路线 C:全新架构 + 白名单资产移植)
- .gitignore 先行(storage/artifacts/env 永不入库)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 16:10:34 +08:00 |
|