From c09331c4963f47e79d17c80012206a881547a6bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=B0=92=E7=BA=A2?= <724132485@qq.com> Date: Fri, 9 Oct 2026 22:10:46 +0800 Subject: [PATCH 1/4] =?UTF-8?q?chore(release):=20v1.5.0=E2=80=94=E2=80=94?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=B7=E4=B8=8E=20bootstrap=20TAG=E3=80=81?= =?UTF-8?q?README=20=E5=AE=89=E8=A3=85=20URL=20=E4=B8=89=E5=A4=84=E5=90=8C?= =?UTF-8?q?=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- package.json | 2 +- scripts/bootstrap.sh | 2 +- .../20261009-chore-release-v150/brief.md | 87 +++++++++++++++++++ 4 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 shadow-docs/changes/20261009-chore-release-v150/brief.md diff --git a/README.md b/README.md index 8c45403..8c1fc06 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ CLI 有两类用途,本文档按此组织: ### 新机器:一条命令装好整个生态 ```bash -curl -fsSL https://raw.githubusercontent.com/stack-wuh/shadow-dev-cli/v1.4.0/scripts/bootstrap.sh | bash -s claude-code +curl -fsSL https://raw.githubusercontent.com/stack-wuh/shadow-dev-cli/v1.5.0/scripts/bootstrap.sh | bash -s claude-code ``` 这条命令做三件事: diff --git a/package.json b/package.json index 1c2e310..cc52ca7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "shadow-dev-cli", - "version": "1.4.0", + "version": "1.5.0", "description": "Deterministic scaffolding CLI for the Shadow dev workflow: brief lifecycle, plan/execute with plan hashes, git and GitHub operations.", "type": "module", "engines": { diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index 494906b..c644649 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -11,7 +11,7 @@ # SHADOW_WORKFLOW_HOME 宿主 home 根(bind 域,~/.claude/skills 等由此解析) set -euo pipefail -TAG="v1.4.0" +TAG="v1.5.0" HOST="${1:-claude-code}" BIN="${SD_BIN:-$HOME/.local/bin}" TMP="$(mktemp -d)" diff --git a/shadow-docs/changes/20261009-chore-release-v150/brief.md b/shadow-docs/changes/20261009-chore-release-v150/brief.md new file mode 100644 index 0000000..fab1753 --- /dev/null +++ b/shadow-docs/changes/20261009-chore-release-v150/brief.md @@ -0,0 +1,87 @@ +--- +{ + "schema": "shadow-dev/v1", + "name": "20261009-chore-release-v150", + "type": "chore", + "scope": "packaging,install", + "status": "branched", + "baseBranch": "main", + "branch": "chore/20261009-chore-release-v150", + "files": [ + "README.md", + "package.json", + "scripts/bootstrap.sh" + ], + "github": { + "repository": null, + "issue": null, + "issueUrl": null, + "pullRequest": null, + "pullRequestUrl": null + }, + "review": { + "conclusion": "pending", + "verifiedCommit": null, + "verifiedAt": null + }, + "workflow": { + "operation": null, + "checkpoint": null, + "planHash": "84d2f51109394ba4522e501f2748d99f3c09c30c78a59a185510c04c78059b43", + "updatedAt": null, + "lastError": null, + "release": { + "files": [ + "README.md", + "package.json", + "scripts/bootstrap.sh", + "shadow-docs/changes/20261009-chore-release-v150/brief.md" + ], + "message": "chore(release): v1.5.0——版本号与 bootstrap TAG、README 安装 URL 三处同源", + "title": "chore(release): v1.5.0 发版准备(版本号三处同源 bump)", + "body": "" + } + } +} +--- + +# 发版准备:v1.5.0 版本号与安装面三处同源 bump + +## 动机 +PR #47 已把「产物能力契约(requiresCommands 落盘前断言)+ worktree 域 + `.shadow-dev` 配置域 + blog publish 域」合入 main,但最新 release 仍是 v1.4.0——用户侧与 workflow 仓 pin 拿不到这些能力,change 2(workflow 仓删 `cliVersion` pin / SessionStart hook)也就没有地基。本 change 只做发版前的版本号同步,发布动作本身按 release 第 4 步委托执行。 + +## 复杂度评级 +- **评级:** S +- **理由:** 三要素——①契约变更:无(版本号与安装 URL/标签字符串,行为已由 PR #47 定稿并有 CI 9/9 背书);②触及面:纯声明式资产(package.json、README 安装段、bootstrap.sh 的 TAG);③可发现性:装错版本立刻可见。 +- **期望验证深度:** code-read(diff 走查 + 结构/残留扫描 + 两条冒烟) + +## 引用规范 +- `shadow-docs/knowledge/install-distribution.md` + - 当前结论: 命令面/options/退出码与布局在两处同源登记,改行为必须同步改注释;bootstrap.sh 编排三段装机(CLI → workflow → bind);跨仓演进顺序=消费方先行兼容、生产方随后声明(本 change 正是「发布」这一环)。 + - 适用 scope: package.json, README.md, scripts/bootstrap.sh +- `norms/tdd-verification.md` + - 当前结论: S 级不创建测试,验证=diff 走查 + 结构/引用/残留扫描;进度可见性仍适用。 + - 适用 scope: 全流程 + +## 决策 +- **选型:** 三处一起 bump(`1.4.0 → 1.5.0`),不留版本号分裂面。 +- **对比方案:** 只改 package.json、让 bootstrap 的 `TAG` 继续指 v1.4.0——未选,那会让「一键装机」永远装到旧版,正是本项目反复出现的漂移形状;把 tag/release 也塞进本 change——未选,release 不作为 brief task(既有教训:会造成机械门禁死锁),且发布执行权在用户/CI。 +- **理由:** 版本号唯一事实源是 package.json,README 安装 URL 与 bootstrap TAG 是它的两处投影,必须在同一提交里同步。 + +## 任务 +### Phase 1 +- [x] 版本号三处同源 bump — `package.json`, `README.md`, `scripts/bootstrap.sh` — 1.4.0→1.5.0;随后 grep 扫描全仓(排除 changes/archive 历史记录)确认无 v1.4.0 残留 +- [x] 冒烟与结构验证 — `scripts/bootstrap.sh` — `bash -n` 语法过;`node cli.mjs version --json` 回 1.5.0;`node cli.mjs workflow status --json` 与 `help workflow --json` 结构正常 + +## 非目标 +- 不执行 `git tag` / `gh release create`(合并后由用户按 release 第 4 步执行) +- 不动 workflow 仓(删 pin/hook/vendored installer、`adapters/codex.json`、`requiresCommands` 声明)——下一个 change + +## 结果 +- 实际耗时: — +- 验证: — + +## 知识评估 +- **预期影响:** 无需变更 +- **候选卡片:** 无 +- **理由:** 版本号与安装 URL 属一次性发布事实,卡片承载的是稳定机制(双轨/断言/同源登记),已在 PR #47 更新到位;把「v1.5.0 已发布」写进 Knowledge 就是把变更历史塞进执行真相源。 From 0be15e953ca8a8bc943667e3e860470f0382e2ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=B0=92=E7=BA=A2?= <724132485@qq.com> Date: Fri, 9 Oct 2026 22:10:55 +0800 Subject: [PATCH 2/4] =?UTF-8?q?docs(shadow):=20brief=20=E6=9C=80=E7=BB=88?= =?UTF-8?q?=E6=80=81=E2=80=94=E2=80=94published,=20PR=20#48?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shadow-docs/changes/20261009-chore-release-v150/brief.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shadow-docs/changes/20261009-chore-release-v150/brief.md b/shadow-docs/changes/20261009-chore-release-v150/brief.md index fab1753..f1fd7ea 100644 --- a/shadow-docs/changes/20261009-chore-release-v150/brief.md +++ b/shadow-docs/changes/20261009-chore-release-v150/brief.md @@ -4,7 +4,7 @@ "name": "20261009-chore-release-v150", "type": "chore", "scope": "packaging,install", - "status": "branched", + "status": "published", "baseBranch": "main", "branch": "chore/20261009-chore-release-v150", "files": [ @@ -16,8 +16,8 @@ "repository": null, "issue": null, "issueUrl": null, - "pullRequest": null, - "pullRequestUrl": null + "pullRequest": 48, + "pullRequestUrl": "https://github.com/stack-wuh/shadow-dev-cli/pull/48" }, "review": { "conclusion": "pending", @@ -26,7 +26,7 @@ }, "workflow": { "operation": null, - "checkpoint": null, + "checkpoint": "pr:48", "planHash": "84d2f51109394ba4522e501f2748d99f3c09c30c78a59a185510c04c78059b43", "updatedAt": null, "lastError": null, From 78cc57685aee195b276c68baa51b633cbb47e03d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=B0=92=E7=BA=A2?= <724132485@qq.com> Date: Fri, 9 Oct 2026 22:11:38 +0800 Subject: [PATCH 3/4] =?UTF-8?q?docs(shadow):=20review=20passed=EF=BC=88S?= =?UTF-8?q?=20=E7=BA=A7=EF=BC=9Adiff=20=E8=B5=B0=E6=9F=A5=20+=20=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E6=89=AB=E6=8F=8F=20+=20version=20=E5=86=92=E7=83=9F?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20261009-chore-release-v150/brief.md | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/shadow-docs/changes/20261009-chore-release-v150/brief.md b/shadow-docs/changes/20261009-chore-release-v150/brief.md index f1fd7ea..73e9d73 100644 --- a/shadow-docs/changes/20261009-chore-release-v150/brief.md +++ b/shadow-docs/changes/20261009-chore-release-v150/brief.md @@ -4,7 +4,7 @@ "name": "20261009-chore-release-v150", "type": "chore", "scope": "packaging,install", - "status": "published", + "status": "reviewed", "baseBranch": "main", "branch": "chore/20261009-chore-release-v150", "files": [ @@ -20,27 +20,29 @@ "pullRequestUrl": "https://github.com/stack-wuh/shadow-dev-cli/pull/48" }, "review": { - "conclusion": "pending", - "verifiedCommit": null, - "verifiedAt": null + "conclusion": "passed", + "verifiedCommit": "0be15e953ca8a8bc943667e3e860470f0382e2ec", + "verifiedAt": "2026-10-09T14:11:37.246Z" }, "workflow": { "operation": null, "checkpoint": "pr:48", - "planHash": "84d2f51109394ba4522e501f2748d99f3c09c30c78a59a185510c04c78059b43", + "planHash": "1ad4d8dcd1b91d0179f0a924dd70d5a0f5fdbe1e3419050ebce7f663a8272762", "updatedAt": null, "lastError": null, "release": { "files": [ - "README.md", - "package.json", - "scripts/bootstrap.sh", "shadow-docs/changes/20261009-chore-release-v150/brief.md" ], - "message": "chore(release): v1.5.0——版本号与 bootstrap TAG、README 安装 URL 三处同源", + "message": "docs(shadow): review passed(S 级:diff 走查 + 结构扫描 + version 冒烟)", "title": "chore(release): v1.5.0 发版准备(版本号三处同源 bump)", "body": "" } + }, + "knowledge": { + "action": "无需变更", + "target": null, + "reason": "纯版本号与安装 URL/TAG 三处同源同步,未产生新的长期事实;发布动作按 release 第 4 步委托用户/CI" } } --- From 6859eb5abb823f77ce1e01017fed86bd684c97f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=B0=92=E7=BA=A2?= <724132485@qq.com> Date: Fri, 9 Oct 2026 22:11:45 +0800 Subject: [PATCH 4/4] =?UTF-8?q?docs(shadow):=20brief=20=E6=9C=80=E7=BB=88?= =?UTF-8?q?=E6=80=81=E2=80=94=E2=80=94published,=20PR=20#48?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shadow-docs/changes/20261009-chore-release-v150/brief.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shadow-docs/changes/20261009-chore-release-v150/brief.md b/shadow-docs/changes/20261009-chore-release-v150/brief.md index 73e9d73..938b534 100644 --- a/shadow-docs/changes/20261009-chore-release-v150/brief.md +++ b/shadow-docs/changes/20261009-chore-release-v150/brief.md @@ -4,7 +4,7 @@ "name": "20261009-chore-release-v150", "type": "chore", "scope": "packaging,install", - "status": "reviewed", + "status": "published", "baseBranch": "main", "branch": "chore/20261009-chore-release-v150", "files": [