---
date: 2026-04-22 22:45
slug: keep-shipyard
title: 归档列表 8 → 7：shipyard 保留并改 Python 栈
status: active
tags: [autonomy-experiment, shipyard, tech-stack]
---

# 归档列表 8 → 7：shipyard 保留并改 Python 栈

## 场景

xiangqin 立项时（`decisions/2026-04-22-1800-commence-xiangqin.md`）列了 8 个归档候选项目：
membership / cashier / backup / **shipyard** / host / oss / hitch / matchmaker。

M4 发布链路验证（canary 真发 pypi + ClawHub）后，老板重新评估 shipyard 的价值：它是个人生态里"对外发布"的统一工坊，M3 已经 e2e 生产就绪（`@acong-tech/canary` npm + `acong-tech-canary` pypi 都跑过），**不想归档**。

## 选项

- A) 归档 shipyard（原方案）
- **B) 保留 shipyard 当前 TS 栈**
- **C) 保留 shipyard 但改 Python 栈**（采纳）
- D) 保留 shipyard + 强制业务团队都走它（违背自治实验精神，否决）

## 选 C，因为

- **保留价值**：M3 实战验证过的流程不白费；对外发布要长期做，统一工坊比每个业务自己写 publish 脚本更合算
- **改栈理由**（老板偏好）：个人生态向 Python 倾斜（vault 也是 Python + Click），一个技术栈好维护
- **不冲突自治实验**：shipyard 作为可选工具继续存在，xiangqin 仍自己搞 publish（`scripts/publish-pypi.sh`）证明"不强制依赖"

## 代价 / 放弃了

- **改栈工作量**：TS 重写成 Python 约 3-4h（detect / vault / publish / cleanup 4 模块 + e2e）
- 旧 TS 版本归档到 `.archived/shipyard-ts-20260422/`（不硬删，保留回滚路径）
- 改栈期间发布能力短时中断（xiangqin canary 已发完，本阶段无其它发布需求）

## 原本列 8 → 改 7 的影响范围

文档更新：
- `decisions/2026-04-22-1800-commence-xiangqin.md` 对齐结论里"8 项目"→"7 项目"
- `objectives/INDEX.md` 北极星段的 CLI 不依赖列表去掉 shipyard
- `objectives/O2-autonomy-validate.md` KR2.4 文案
- `CLAUDE.md` 自治单体实验段
- `DELIVERABLES.md` 首段
- `.claude/skills/xiangqin/SKILL.md` 不用清单
- `plan/backlog.md`

## 记录源

老板 2026-04-22 22:40 对话原话："'/Users/yarnb/shipyard'这个其实我觉得也可以留着 你觉得呢 改为 python 技术栈可以吗？"

## 后续动作

- shipyard 项目内部 TS→Python 重写（详见 shipyard 项目的 plan 和 decisions）
- e2e 8 步 canary cycle 验证
- hitch 注册新的 Python 版 `ship` 命令
