# Changelog — xiangqin

所有重要变化记在这。格式基于 [Keep a Changelog](https://keepachangelog.com/)，版本号遵循 [SemVer](https://semver.org/)。

## [Unreleased]

### Added
- 2026-04-22 项目骨架（new-team skill 产出）
- 2026-04-22 立项 ADR：付费置顶商业模式 + 自治单体实验
- 2026-04-22 objectives O1 (0.1 闭环) / O2 (自治假设验证) 定义
- 2026-04-22 plan M1..M4 四个里程碑拆分
- 2026-04-22 vault 分配 epsilon (112.124.27.213) 给 xiangqin，gamma 从 matchmaker 释放
- 2026-04-22 **M1 通关**：epsilon 上 FastAPI + uvicorn + nginx + systemd，全链路 `xq health` 绿
- 2026-04-22 **M2 通关**：注册 / verify / profile / query / 买曝光完整闭环
  - 6 张 sqlite 表（users / profiles / exposure_orders / exposure_usage / sessions / auth_requests）+ WAL + 索引
  - 受限 WHERE DSL（字段 + 操作符 + 值三重白名单，禁 OR/JOIN/子查询）
  - query `ORDER BY exposure_remaining>0 DESC`，被命中原子扣 1
  - mock 买曝光（paid=1 + 事务充值）
  - `xq` CLI 完整：register / verify / logout / me / profile / query / expose
  - 66 单测全绿，含手机号永不落明文 red-line
  - 三用户 end-to-end demo 实证（A 查到 B🔥置顶 + C 普通；B 余额 100→99）
- 2026-04-22 **M3 通关**：sqlite → OSS 每日备份 + 恢复演练
  - OSS 桶 `agentaily-backup-xiangqin-prod` 创建（vault resource 入库）
  - aliyun cli `xiangqin` profile 装在 epsilon（AK/SK 从 vault 取）
  - 首次备份 `daily/xiangqin-20260422.db.gz` 成功
  - `/etc/cron.d/xiangqin-backup` 02:00 daily（明日 02:00 自动跑）
  - `scripts/restore.sh` 恢复演练通过（integrity_check=ok，3 users + 1 order 对得上）

### Security
- 2026-04-22 **SG 端口收窄**：epsilon 阿里云安全组关闭老 openclaw 遗留端口（7000 / 9876 / 22000-22999 / 内网 5432），只保留 22 / 80 / 443
- 2026-04-22 **服务降权**：systemd unit `User=root` → `User=xiangqin`（system user，nologin shell），加 ProtectSystem/ProtectHome/NoNewPrivileges/PrivateTmp 沙箱
- 2026-04-22 uv 管理的 Python 装到 `/opt/uv-python`（原 `/root/.local/share/uv/python` 非 xiangqin 用户可读路径），provision.sh + deploy.sh 已适配

### Changed
- 2026-04-22 **M4 方向调整**：从"1 对 1 真人访谈"改为"skill 发布 + 视频宣传 + agent 自助提示付费"（详见 [decisions/2026-04-22-2230-m4-switch-to-skill-distribution.md](./decisions/2026-04-22-2230-m4-switch-to-skill-distribution.md)）
- 2026-04-22 **pypi 包命名统一**：pyproject `name` 从 `xiangqin` 改为 `acong-tech-xiangqin`（对齐 shipyard 命名空间约定；CLI 二进制 `xq` 不变）

### Publish
- 2026-04-22 **M4 发布骨架就绪**：
  - `scripts/publish-pypi.sh` dry-run / --live / --canary，从 vault 取 PyPI token（自治单体，不依赖 shipyard）
  - `scripts/publish-skill.sh` 包装 `skill-publish-cli publish`
  - pypi build dry-run 通过（22KB wheel + 80KB sdist）
  - README.md 对外用户版（装 / 上手 / 心智模型）
  - 视频台词 scenarios/promo-video-script.md（2:30-3:00 8 分镜）

（首版开发中；0.1 闭环 M4 剩下 = canary 金丝雀发 + 录屏 + 正式发）
