# Memind 103 收口方案（2026-06-26）

## 当前判断

`Memind` 已经接近“可以收口”的状态，但 `103` 当前运行目录已经不是一个可依赖 Git 的干净工作树。

已确认：

1. `103` 运行目录：`/Users/john/Project/Memind`
2. `103` 当前目录存在 `.release-manifest.txt`，说明至少已有发布包切换痕迹。
3. `103` 上当前 **无法直接把 `Memind` 当成 Git 工作树使用**。
4. 本地 `test-memind` 是后续唯一应保留的源码主线。

## 这意味着什么

1. 以后不能再依赖“线上 `git rev-parse` 一致”来判断是否对齐。
2. `103` 只能作为运行事实来源与只读基线来源。
3. 真正要收口的动作，必须发生在本地仓库里。

## 当前差异判断

本地与 `103` 只读基线相比：

1. 业务主文件大体已经一致。
2. 本地多出了规则文档、审计脚本、运行资源、历史备份文件。
3. 这批差异里，大多数不是“线上独有必须回收”的功能逻辑。

## 收口目标

把 `Memind` 从“本地和线上都可能被手改”收口成：

1. 本地 `test-memind` 是唯一源码真相。
2. `103` 只接收发布包，不再手改源码。
3. 发布后通过 manifest、健康检查、业务验收确认版本一致。

## 具体执行步骤

### 第一步：冻结线上直改

1. 不再在 `/Users/john/Project/Memind` 直接改源码。
2. 不再把 `103` 当作可直接修代码的工作目录。

### 第二步：只保留只读基线

当前只读基线目录：

- `/Users/john/PycharmProjects/test/_103_baselines/Memind`

用途：

1. 对账
2. 取证
3. 回收必要热修

禁止：

1. 用它覆盖本地主开发目录
2. 把它误当主仓库继续开发

### 第三步：清理本地“非源码差异”

优先处理：

1. 历史 `.bak` 文件
2. 明显的临时日志与运行输出
3. 不应该长期存在于主仓库的临时资源

注意：

1. 先分类，再清理
2. 不要误删正在使用的真实业务资源

### 第四步：做第一次收口发布

1. 本地把必须保留的改动整理成 commit。
2. 用 `bash scripts/release-prod.sh` 生成发布包并发布到 `103`。
3. 发布后保留 `.release-manifest.txt`、备份包路径、健康检查结果。

### 第五步：建立后续一致性

以后每次发布必须满足：

1. 本地先 commit
2. 从 commit 打包
3. `103` 只收包
4. 发布后验证
5. 出问题回滚

## 何时算收口完成

满足以下条件即可视为完成：

1. `103` 上不再直接改源码
2. 本地变更都能追溯到 commit
3. 最近一次线上版本来自 `scripts/release-prod.sh`
4. 业务验收结果与 manifest 能对应到同一发布编号
