diff --git a/docs/evidence/env-baseline.md b/docs/evidence/env-baseline.md new file mode 100644 index 0000000..293cab0 --- /dev/null +++ b/docs/evidence/env-baseline.md @@ -0,0 +1,102 @@ +# 阶段 0 环境版本基线(含 cms 只读基线与 gitignore 验证) + +- **记录日期:** 2026-10-20 17:16 (UTC+8) +- **记录人:** Task 0.1(SiteForge Plan 1 / 阶段 0+1 首个任务) +- **用途:** 后续各阶段验收"cms 仓库未被修改"的对照证据。发现任何差异只报告用户,绝不执行 restore/checkout。 + +--- + +## 1. cms-one 当前 Git 状态 + +- 分支:`main` +- 当前 commit(`git rev-parse --short HEAD`): + +``` +0ead98f +``` + +> 记录时 cms-one 工作树另有一处与本任务无关的既有未提交改动:`M docs/superpowers/plans/2026-10-20-slice-foundation-phase0-1.md`(计划文档本身,不属于本任务提交范围)。 + +## 2. 环境版本(Step 1) + +命令:`node -v && pnpm -v && docker --version && docker compose version` + +``` +v24.13.0 +10.7.1 +Docker version 29.2.1, build a5c7197 +Docker Compose version v5.0.2 +``` + +| 要求 | 实测 | 结论 | +|---|---|---| +| node ≥ v22.x | v24.13.0 | 通过 | +| pnpm ≥ 9.x | 10.7.1 | 通过 | +| docker 可用 | Docker version 29.2.1 | 通过 | +| compose 可用 | Docker Compose version v5.0.2 | 通过 | + +## 3. cms 只读基线(Step 2,验收对照用) + +对冻结仓库 `D:\project\cms` 只执行了以下两条只读命令,输出**原样**记录如下。 + +### 3.1 `git -C D:/project/cms rev-parse HEAD` + +``` +22a4377a1885983c4a2f5cdc11b06ae219cf81c0 +``` + +### 3.2 `git -C D:/project/cms status --porcelain` + +``` +(无输出,退出码 0 —— 工作树干净) +``` + +> 计划中提示"cms 工作树可能存在既有未提交改动(如 about.astro)";实测当前 porcelain 输出为空、退出码 0,即 cms 工作树干净、无未提交改动。以本记录为准:后续验收时 HEAD 应仍为 `22a4377a...`,porcelain 应仍为空。 + +## 4. gitignore 验证(Step 3) + +### 4.1 计划原命令:`git check-ignore -v storage artifacts .env` + +``` +.gitignore:12:.env .env +``` + +退出码 0。仅 `.env` 命中;`storage`、`artifacts` 无输出。原因:两者在 `.gitignore` 中为目录型规则(`storage/` 于第 10 行、`artifacts/` 于第 5 行),且这两个目录当前尚不存在——对不存在的裸路径名,git 无法判定其为目录,故目录型规则不命中。 + +### 4.2 带斜杠复验:`git check-ignore -v storage/ artifacts/ .env` + +``` +.gitignore:10:storage/ storage/ +.gitignore:5:artifacts/ artifacts/ +.gitignore:12:.env .env +``` + +退出码 0。三条路径各命中一条忽略规则,覆盖确认有效(目录一经创建即被忽略)。 + +### 4.3 `git add --dry-run .env.example` + +``` +fatal: pathspec '.env.example' did not match any files +``` + +退出码 128。原因:`.env.example` 文件当前尚不存在(属后续脚手架任务的产出),dry-run 无从执行,已如实记录。 + +### 4.4 反排除规则的等价验证:`git check-ignore -v .env.example` + +``` +.gitignore:14:!.env.example .env.example +``` + +check-ignore 按规则判定、不依赖文件存在:最终匹配的是第 14 行的否定规则 `!.env.example`,证明反排除生效——`.env.example` 一经创建即可正常 `git add`,不会被忽略。 + +### 4.5 结论 + +`.gitignore` 对 `storage/`(:10)、`artifacts/`(:5)、`.env`(:12)的忽略与 `!.env.example`(:14)的反排除均验证有效;唯一偏差是 4.3 的 dry-run 因文件不存在而无法执行,已用 4.4 等价验证补足。 + +## 5. PostgreSQL 镜像计划 + +- 使用固定 tag:**`postgres:16`**(不使用 `latest`)。 + +--- + +*本文件为验收证据,一经提交不应修改。*