Files

105 lines
3.9 KiB
Markdown
Raw Permalink Normal View History

# 阶段 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 工作树干净、无未提交改动。
>
> **⚠️ 2026-10-20 17:25 更新(规格审查期间发现)**:cms 是**活跃开发中的仓库**——审查期间 HEAD 已由 `22a4377` 前进到 `c8c2aa2`(并行会话提交"关于页员工横排网格")。因此本节基线降级为**信息性记录**(记录我们开始工作时的快照),不再作为"逐字节一致"的验收断言。对本项目真正不变的不变量是:**SiteForge 项目自身绝不向 cms 执行任何写操作**(流程纪律);阶段验收时另外记录当时所见 cms HEAD 供参考,发现任何异常只报告用户。
## 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`)。
---
*本文件为验收证据,一经提交不应修改。*