Skip to content

Commit eda6ba1

Browse files
authored
Merge pull request #7 from sopify-ai/feature/plan-b1-regression-smoke
chore: close plan B1 with smoke coverage and release-readme polishchore: close plan B1 with smoke coverage and release-readme polish
2 parents 711384f + a1f4ce3 commit eda6ba1

13 files changed

Lines changed: 340 additions & 69 deletions

File tree

.sopify-skills/plan/20260326_5-plan-20260326-phase1-2-3-plan-plan-20260326-ph/tasks.md

Lines changed: 39 additions & 29 deletions
Large diffs are not rendered by default.

.sopify-skills/plan/20260326_phase1-2-3-plan/tasks.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ archive_ready: false
2727

2828
## 3. 后续子 plan 入口
2929
- [x] 3.1 先完成 `20260327_hotfix`,作为状态机一致性前置门禁
30-
- [ ] 3.2 在 3.1 解除状态链路阻塞后继续 `20260326_5-plan-20260326-phase1-2-3-plan-plan-20260326-ph`,作为升级版 Plan B1(global bundle + thin stub/pin + ignore + compatibility)
30+
- [x] 3.2 在 3.1 解除状态链路阻塞后继续 `20260326_5-plan-20260326-phase1-2-3-plan-plan-20260326-ph`,作为升级版 Plan B1(global bundle + thin stub/pin + ignore + compatibility)
31+
收口记录:升级版 Plan B1 已完成 `global bundle + thin stub/pin + ignore + compatibility` 主线收口,并按“关键诊断出口可读、可定位、可给下一步,同时保留 JSON 机器契约”的口径接受 CLI 渲染层功能性完成;剩余 `workspace_hint / runtime_notes` 文本 polish 已降级为 post-B1 backlog。
3132
- [ ] 3.3 在 3.2 的 control-plane contract 稳定后推进 Plan A 子 plan
3233
- [ ] 3.4 在 Plan A 与 3.2 的对外语义都稳定后推进 Plan D 子 plan
3334
- [ ] 3.5 在 control-plane decoupling 稳定后,再评估是否需要推进 Plan B2
@@ -38,7 +39,8 @@ archive_ready: false
3839
- [ ] 4.1 为每个后续子 plan 显式写出 non-goals,避免范围滑移
3940
- [ ] 4.2 为每个后续子 plan 显式写出 acceptance gate
4041
- [x] 4.3 在 `20260327_hotfix` 中冻结 `snapshot-only resolver / proposal session-only / state_conflict + abort / unique handoff exit`
41-
- [ ] 4.4 在升级版 Plan B1 中将 thin stub 校验、dual-host host-aware、payload index、ignore 默认值、legacy fallback reason code 作为硬门禁
42+
- [x] 4.4 在升级版 Plan B1 中将 thin stub 校验、dual-host host-aware、payload index、ignore 默认值、legacy fallback reason code 作为硬门禁
43+
验收记录:上述硬门禁已在 B1 子 plan 中通过实现、回归与 smoke 验证收口;program plan 与 child plan 现已同步该验收结论,后续只保留 post-B1 polish,不再回流到 B1 主线。
4244
- [ ] 4.5 在 Plan A 子 plan 启动前登记 carry-over recall debt 与明确 non-goals,明确挂住 2026-03-31 这轮 `A-1 / A-3 / A-4 / A-5` 追溯样本(如“还剩什么需要你确认”“为啥被网关卡住”“不要建包,只做确认项分析”“取消这个 proposal checkpoint”),避免把 Plan H correctness hotfix 与后续语义召回增强混做一轮
4345
- [ ] 4.6 为 Plan A 子 plan 明确启动触发条件(真实漏判样本 / 用户反馈阈值),并要求先补齐 `A-1 / A-3 / A-4 / A-5` 的正反例矩阵与状态不变量断言(`required_host_action / checkpoint_id / current_plan_proposal / current_decision / plan/` 副作用),避免长期后延或提前侵入 B1 窗口
4446
- [ ] 4.7 在 Plan A 中冻结 `ExecutionGate` 核心字段名与 `gate_status` 值集

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,31 @@ This changelog is maintained manually (not auto-generated).
66

77
## [Unreleased]
88

9+
## [2026-04-02.224459] - 2026-04-02
10+
11+
### Docs
12+
13+
- Refined public documentation:
14+
- `README.md`
15+
- `README.zh-CN.md`
16+
17+
### Scripts
18+
19+
- Adjusted maintenance scripts:
20+
- `scripts/check-install-payload-bundle-smoke.py`
21+
- `scripts/release-preflight.sh`
22+
23+
### Tests
24+
25+
- Updated automated coverage:
26+
- `tests/test_bundle_smoke.py`
27+
- `tests/test_distribution.py`
28+
29+
### Changed
30+
31+
- Updated project files:
32+
- `.sopify-skills/plan/20260326_5-plan-20260326-phase1-2-3-plan-plan-20260326-ph/tasks.md`
33+
934
## [2026-04-02.162241] - 2026-04-02
1035

1136
### Runtime

Claude/Skills/CN/CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!-- bootstrap: lang=zh-CN; encoding=UTF-8 -->
2-
<!-- SOPIFY_VERSION: 2026-04-02.162241 -->
2+
<!-- SOPIFY_VERSION: 2026-04-02.224459 -->
33
<!-- ARCHITECTURE: Adaptive Workflow + Layered Rules -->
44

55
# Sopify - 自适应 AI 编程助手

Claude/Skills/EN/CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!-- bootstrap: lang=en-US; encoding=UTF-8 -->
2-
<!-- SOPIFY_VERSION: 2026-04-02.162241 -->
2+
<!-- SOPIFY_VERSION: 2026-04-02.224459 -->
33
<!-- ARCHITECTURE: Adaptive Workflow + Layered Rules -->
44

55
# Sopify - Adaptive AI Programming Assistant

Codex/Skills/CN/AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!-- bootstrap: lang=zh-CN; encoding=UTF-8 -->
2-
<!-- SOPIFY_VERSION: 2026-04-02.162241 -->
2+
<!-- SOPIFY_VERSION: 2026-04-02.224459 -->
33
<!-- ARCHITECTURE: Adaptive Workflow + Layered Rules -->
44

55
# Sopify - 自适应 AI 编程助手

Codex/Skills/EN/AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!-- bootstrap: lang=en-US; encoding=UTF-8 -->
2-
<!-- SOPIFY_VERSION: 2026-04-02.162241 -->
2+
<!-- SOPIFY_VERSION: 2026-04-02.224459 -->
33
<!-- ARCHITECTURE: Adaptive Workflow + Layered Rules -->
44

55
# Sopify - Adaptive AI Programming Assistant

README.md

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](./LICENSE)
1010
[![Docs](https://img.shields.io/badge/docs-CC%20BY%204.0-green.svg)](./LICENSE-docs)
11-
[![Version](https://img.shields.io/badge/version-2026--04--02.162241-orange.svg)](#version-history)
11+
[![Version](https://img.shields.io/badge/version-2026--04--02.224459-orange.svg)](#version-history)
1212
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](./CONTRIBUTING.md)
1313

1414
English · [简体中文](./README.zh-CN.md) · [Quick Start](#quick-start) · [Configuration](#configuration) · [Contributors](./CONTRIBUTORS.md)
@@ -35,6 +35,15 @@ Sopify uses machine-readable protocols to make critical steps visible: when fact
3535
- Multi-stage work that keeps moving in the same repository instead of one-off edits
3636
- You're willing to manage progress with plan / blueprint artifacts and close out each stage
3737

38+
## What You Get After Install
39+
40+
- Your host is ready to run Sopify after install.
41+
- The first time you trigger Sopify in a project, it prepares the local `.sopify-runtime/`.
42+
- `status` shows the current host / workspace state.
43+
- `doctor` shows deeper installation and runtime diagnostics and repair guidance.
44+
45+
This guide focuses on install visibility, verification, and stable first use; repository cleanup flows are intentionally out of scope here.
46+
3847
## Quick Start
3948

4049
### Installation
@@ -87,11 +96,20 @@ Notes:
8796
Installer behavior:
8897

8998
- Installs the selected host prompt layer and the Sopify payload
90-
- When `--workspace` is omitted, this is still a complete install; Sopify bootstraps `.sopify-runtime/` on the first project trigger
91-
- Prewarms `.sopify-runtime/` when `--workspace` is provided
92-
- Use `python3 scripts/sopify_status.py --format text` to inspect the support matrix and current workspace state
93-
- Use `python3 scripts/sopify_doctor.py --format text` to inspect payload, bundle, and smoke diagnostics
94-
- `status` / `doctor` surface the current path directly: `payload bundle: source_kind=global_active|legacy_layout|unresolved`, `payload outcome: ...`, and `workspace outcome: stub_selected [continue]` when a workspace stub is healthy
99+
- A standard install makes your host ready to run Sopify; most users do not need `--workspace`
100+
- Sopify prepares `.sopify-runtime/` the first time you trigger it in a project workspace
101+
- `--workspace` is an advanced prewarm path for maintainers, CI, or explicit repository setup
102+
103+
### Verify Your Install
104+
105+
```bash
106+
python3 scripts/sopify_status.py --format text
107+
python3 scripts/sopify_doctor.py --format text
108+
```
109+
110+
- `will bootstrap on first project trigger`: the host install is ready and the project-local runtime has not been prepared yet
111+
- `workspace outcome: stub_selected [continue]`: the workspace runtime entry is healthy
112+
- Payload or bundle corruption errors (for example `global_bundle_missing`, `global_bundle_incompatible`, or `global_index_corrupted`): repair the install and retry
95113

96114
### Choose an Entry by Task Size
97115

@@ -103,6 +121,8 @@ Installer behavior:
103121

104122
### First Use
105123

124+
After install, open Codex or Claude inside a repository and paste one of the prompts below.
125+
106126
```bash
107127
# Simple task
108128
"Fix the typo on line 42 in src/utils.ts"
@@ -301,14 +321,6 @@ Use `--workspace` only for maintainer validation, CI, or when you explicitly wan
301321
python3 scripts/install_sopify.py --target codex:en-US --workspace /path/to/project
302322
```
303323

304-
### Q: How do I migrate existing repositories?
305-
306-
Use `python3 scripts/sopify_status.py --format text` first, then `python3 scripts/sopify_doctor.py --format text` if the workspace still looks suspicious.
307-
308-
- New repositories: no manual migration is needed. A normal install is already complete, and Sopify bootstraps `.sopify-runtime/` on the first project trigger.
309-
- Already bootstrapped repositories: keep the existing `.sopify-runtime/`. A healthy thin-stub workspace should show `workspace outcome: stub_selected [continue]`.
310-
- Old vendored repositories: still supported, but no one-click migrator is provided in this release. If `status` / `doctor` show `legacy_fallback_selected [warn]`, refresh the local install and trigger Sopify in that repository again. If the surface instead shows `global_bundle_missing`, `global_bundle_incompatible`, or `global_index_corrupted`, repair the installed payload first and retry.
311-
312324
### Q: How do I reset learned preferences?
313325

314326
Delete or clear `.sopify-skills/user/preferences.md`; keep `feedback.jsonl` only if you still want the audit trail.

README.zh-CN.md

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
[![许可证](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](./LICENSE)
1010
[![文档](https://img.shields.io/badge/docs-CC%20BY%204.0-green.svg)](./LICENSE-docs)
11-
[![版本](https://img.shields.io/badge/version-2026--04--02.162241-orange.svg)](#版本历史)
11+
[![版本](https://img.shields.io/badge/version-2026--04--02.224459-orange.svg)](#版本历史)
1212
[![欢迎PR](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](./CONTRIBUTING_CN.md)
1313

1414
[English](./README.md) · 简体中文 · [快速开始](#快速开始) · [配置说明](#配置说明) · [贡献者](./CONTRIBUTORS.md)
@@ -35,12 +35,21 @@ Sopify 用机器可读协议把关键节点变成可见流程:缺事实时停
3535
- 在同一仓库中持续推进多阶段工作,而不是一次性改动
3636
- 愿意用 plan / blueprint 管理进展,并在阶段完成后持续做收口
3737

38+
## 安装后你会得到什么
39+
40+
- 安装后,你的宿主已可运行 Sopify。
41+
- 首次在项目仓库里触发 Sopify 时,才会准备本地 `.sopify-runtime/`
42+
- `status` 用来看当前 host / workspace 状态。
43+
- `doctor` 用来看更深的安装与运行时诊断及修复建议。
44+
45+
本文只聚焦安装可见性、自检与首次使用路径,不展开仓库清理流程。
46+
3847
## 快速开始
3948

4049
### 安装
4150

4251
```bash
43-
# 推荐:official stable one-liner
52+
# 推荐:稳定版一行安装
4453
curl -fsSL https://github.com/sopify-ai/sopify/releases/latest/download/install.sh | bash -s -- --target codex:zh-CN
4554

4655
# 两步安装:先下载,确认后再执行
@@ -61,7 +70,7 @@ Get-Content sopify-install.ps1 -TotalCount 40
6170

6271
```bash
6372
bash scripts/install-sopify.sh --target codex:zh-CN
64-
python3 scripts/install_sopify.py --target claude:en-US --workspace /path/to/project
73+
python3 scripts/install_sopify.py --target claude:zh-CN --workspace /path/to/project
6574
```
6675

6776
支持的 `target`
@@ -87,11 +96,20 @@ python3 scripts/install_sopify.py --target claude:en-US --workspace /path/to/pro
8796
安装后行为:
8897

8998
- installer 会安装宿主提示层,并在宿主根目录安装 Sopify payload
90-
- 不传 `--workspace` 时,这仍是完整安装;后续首次在项目仓库触发 Sopify 会自动 bootstrap `.sopify-runtime/`
91-
- 传入 `--workspace` 时,会额外预热目标仓库的 `.sopify-runtime/`
92-
- 可用 `python3 scripts/sopify_status.py --format text` 查看支持矩阵与当前 workspace 状态
93-
- 可用 `python3 scripts/sopify_doctor.py --format text` 查看 payload / bundle / smoke 诊断结果
94-
- `status` / `doctor` 会直接展示当前路径:`payload bundle: source_kind=global_active|legacy_layout|unresolved`,以及 `payload outcome``workspace outcome: stub_selected [continue]` 这类结果行
99+
- 默认安装后,宿主已可运行 Sopify;大多数用户不需要 `--workspace`
100+
- 首次在项目仓库里触发 Sopify 时,才会准备 `.sopify-runtime/`
101+
- `--workspace` 适用于维护者、CI 或显式预热仓库的高级路径
102+
103+
### 安装后怎么确认正常
104+
105+
```bash
106+
python3 scripts/sopify_status.py --format text
107+
python3 scripts/sopify_doctor.py --format text
108+
```
109+
110+
- `will bootstrap on first project trigger`:宿主安装已就绪,项目侧 runtime 还未准备,这是正常状态
111+
- `workspace outcome: stub_selected [continue]`:workspace runtime 入口健康
112+
- 如果 doctor 报出 payload 或 bundle 损坏类错误(例如 `global_bundle_missing``global_bundle_incompatible``global_index_corrupted`),先修复安装,再重试
95113

96114
### 根据任务规模选入口
97115

@@ -103,6 +121,8 @@ python3 scripts/install_sopify.py --target claude:en-US --workspace /path/to/pro
103121

104122
### 首次使用
105123

124+
安装完成后,在仓库目录中打开 Codex 或 Claude,直接粘贴下面任一条提示即可开始。
125+
106126
```bash
107127
# 简单任务
108128
"修复 src/utils.ts 第 42 行的 typo"
@@ -301,14 +321,6 @@ plan:
301321
python3 scripts/install_sopify.py --target codex:zh-CN --workspace /path/to/project
302322
```
303323

304-
### Q: 已有仓库怎么迁移?
305-
306-
先跑 `python3 scripts/sopify_status.py --format text`,如果现场仍然可疑,再跑 `python3 scripts/sopify_doctor.py --format text`。
307-
308-
- 新仓库:不需要手动迁移。默认安装已经完整,首次在项目里触发 Sopify 时会自动 bootstrap `.sopify-runtime/`。
309-
- 已经 bootstrap 过的仓库:保留现有 `.sopify-runtime/` 即可。健康的 thin stub workspace 应显示 `workspace outcome: stub_selected [continue]`。
310-
- 旧的 vendored 仓库:当前版本仍兼容,但不提供一键迁移器。如果 `status` / `doctor` 出现 `legacy_fallback_selected [warn]`,先刷新本地安装,再回到该仓库重新触发 Sopify;如果出现的是 `global_bundle_missing`、`global_bundle_incompatible` 或 `global_index_corrupted`,则先修复已安装 payload,再重试。
311-
312324
### Q: 用户偏好如何重置?
313325

314326
删除或清空 `.sopify-skills/user/preferences.md` 即可;`feedback.jsonl` 可按需保留用于审计。

0 commit comments

Comments
 (0)