Skip to content

Commit cf5b5e2

Browse files
authored
Merge pull request #62 from stack-wuh/chore/20261012-chore-cli-pin-v160
chore(distribution): cliVersion pin v1.5.0 → v1.6.0,对齐 PR 必填门与 --body-file 能力
2 parents 53fd228 + bc606bc commit cf5b5e2

3 files changed

Lines changed: 111 additions & 1 deletion

File tree

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"check:version": "node scripts/bump-version.mjs --check",
1616
"ci": "npm run check:version && npm run check:requires:strict && npm run check:knowledge && npm run check:brief && npm run check:smoke && npm test"
1717
},
18-
"cliVersion": "v1.5.0",
18+
"cliVersion": "v1.6.0",
1919
"requiresCommands": [
2020
"archive.execute",
2121
"archive.plan",

‎shadow-docs/INDEX.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
| 20261010-refactor-domain-driven-workflow | committed | shadow-docs/changes/20261010-refactor-domain-driven-workflow/brief.md |
2727
| 20261011-refactor-kill-tdd-verification | ✅ 完成 | shadow-docs/changes/archive/20261011-refactor-kill-tdd-verification/brief.md |
2828
| 20261012-build-gate-reproducibility | ✅ 完成 | shadow-docs/changes/archive/20261012-build-gate-reproducibility/brief.md |
29+
| 20261012-chore-cli-pin-v160 | published | shadow-docs/changes/20261012-chore-cli-pin-v160/brief.md |
2930
| 20261012-chore-release-v7.0.0 | ✅ 完成 | shadow-docs/changes/archive/20261012-chore-release-v7.0.0/brief.md |
3031
| 20261012-chore-release-v7.0.1 | ✅ 完成 | shadow-docs/changes/archive/20261012-chore-release-v7.0.1/brief.md |
3132
| 20261012-docs-pr-message-norms | ✅ 完成 | shadow-docs/changes/archive/20261012-docs-pr-message-norms/brief.md |
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
---
2+
{
3+
"schema": "shadow-dev/v1",
4+
"name": "20261012-chore-cli-pin-v160",
5+
"type": "chore",
6+
"scope": "distribution",
7+
"status": "published",
8+
"baseBranch": "main",
9+
"branch": "chore/20261012-chore-cli-pin-v160",
10+
"files": [
11+
"package.json",
12+
"shadow-docs/changes/20261012-chore-cli-pin-v160/brief.md"
13+
],
14+
"github": {
15+
"repository": "stack-wuh/shadow-dev-workflow",
16+
"issue": 61,
17+
"issueUrl": "https://github.com/stack-wuh/shadow-dev-workflow/issues/61",
18+
"pullRequest": 62,
19+
"pullRequestUrl": "https://github.com/stack-wuh/shadow-dev-workflow/pull/62"
20+
},
21+
"review": {
22+
"conclusion": "passed",
23+
"verifiedCommit": "53fd228b82afa6fbe5cacf19a6daa6601e19a41b",
24+
"verifiedAt": "2026-10-12T11:26:28.839Z"
25+
},
26+
"workflow": {
27+
"operation": null,
28+
"checkpoint": "pr:62",
29+
"planHash": "3a1dce3ab2d822ed9c6d1b723c930bc787fa4c5413a1b5f8513870940bb58bb0",
30+
"updatedAt": null,
31+
"lastError": null,
32+
"issuePlan": {
33+
"title": "[chore] cliVersion pin v1.5.0 → v1.6.0(对齐 PR 必填门与 --body-file 能力)",
34+
"titleRaw": "[chore] cliVersion pin v1.5.0 → v1.6.0(对齐 PR 必填门与 --body-file 能力)",
35+
"supplement": "",
36+
"body": "## 动机\n插件的 `norms/pr-message.md`(已随 #60 合并)规定了「`release/publish plan` 必须显式传 `--title` 与 `--body`/`--body-file`」,而这两个能力(硬门 `PR_PARAMS_REQUIRED`、`--body-file` 参数)是 shadow-dev-cli 的 `fix(release)` #56 与 `chore(scripts)` 引入、由 **v1.6.0** 首次对外交付。当前产物仍 pin `v1.5.0`,等于规范要求宿主用旧 CLI 去传一个旧 CLI 不认的参数。\n\n## 引用规范\n- `knowledge/distribution-capability-contract.md`\n - 当前结论: 能力不齐即 `ARTIFACT_INCOMPATIBLE`,判定发生在任何落盘之前;pin 是能力契约不是版本装饰\n - 适用 scope: `package.json.cliVersion`、`requiresCommands`\n\n## 决策\n- 只 bump pin,不 bump 产物版本:混在一起会让 tag 指向的 tree 与实际发布内容分裂(发版版本权威由 publish 阶段独占)。\n- **合并时序硬约束(非协商)**:本 PR 必须在 shadow-dev-cli 的 `v1.6.0` tag 与 GitHub Release **落地之后**才能合。提前合并会让按 release 轨解析的宿主拿到一个指向不存在版本的 pin。\n- 备选「等下次发版一起 bump」被否:规范已进 main,pin 与规范之间的空窗越长,宿主越容易按新规范传参却撞上旧 CLI 的未知参数。\n\n## 任务\n- [ ] task-1 — `package.json` — `cliVersion` bump 到 v1.6.0,且不动 `requiresCommands` 与三份 manifest 的 `version`\n- [ ] task-2 — 门与观察点 — `check:requires`/`check:version` 绿,pin 与 #60 规范所需能力逐条对照\n\n完整 brief:shadow-docs/changes/20261012-chore-cli-pin-v160/brief.md\n\n<!-- shadow-dev:issue-metadata {\"name\":\"20261012-chore-cli-pin-v160\",\"type\":\"chore\",\"scope\":\"distribution\",\"status\":\"proposed\",\"branch\":null,\"baseBranch\":\"main\",\"briefPath\":\"shadow-docs/changes/20261012-chore-cli-pin-v160/brief.md\",\"cliVersion\":\"1.6.0\",\"prUrl\":null,\"issueNumber\":null} -->\n",
37+
"labels": [
38+
"chore"
39+
]
40+
},
41+
"release": {
42+
"files": [
43+
"package.json",
44+
"shadow-docs/INDEX.md",
45+
"shadow-docs/changes/20261012-chore-cli-pin-v160/brief.md"
46+
],
47+
"message": "chore(distribution): cliVersion pin v1.5.0 → v1.6.0,对齐 PR 必填门与 --body-file 能力",
48+
"title": "chore(distribution): cliVersion pin v1.5.0 → v1.6.0,对齐 PR 必填门与 --body-file 能力",
49+
"body": "## 变更\n- `package.json`:`cliVersion` `v1.5.0` → `v1.6.0`。仅此一个字段;`version`(7.0.2)与 `requiresCommands`(29 条)不动。\n\n## 影响\n- 行为/触发面变化:产物声明的最低 CLI 能力抬到 v1.6.0 —— 即 `norms/pr-message.md`(已随 #60 合并)要求的 `release/publish plan` 必填 `--title`/`--body`、以及 `--body-file` 参数,在 v1.6.0 才存在。此前 pin 停在 v1.5.0,等于规范要求宿主用不认这些参数的旧 CLI 去传参。\n- 明确不受影响的范围:`requiresCommands` 判定集不变(本次无新增命令键),能力不齐仍是 `ARTIFACT_INCOMPATIBLE` 在任何落盘之前判红;三份 manifest 的 `version` 不变,发版 bump 属 `shadow-dev-publish` 独占。\n- **合并时序硬约束**:必须在 CLI 的 `v1.6.0` tag 与 GitHub Release 落地之后才能合。实测 `git tag` 当前**尚无 v1.6.0**,所以本 PR 现在不能合。\n- 回滚方式:revert 即把 pin 退回 v1.5.0,无其它副作用。\n\n## 验证\n- 命令与结果:`check:requires` → `✓ skills ⊆ requiresCommands ⊆ CLI 命令目录`;`check:version` → `✓ 三处 manifest 版本同源: 7.0.2`(证明没误碰发版版本)。\n- 能力对照(取自 shadow-dev-cli main):`--body-file` 在命令目录出现 2 次;`PR_PARAMS_REQUIRED` 存在:true;`lib/domains/release.mjs` 调用 `prParams(`:true;CLI `package.json.version = 1.6.0`,与本 pin 目标一致。\n- 时序证据:`git tag` 无 `v1.6.0` → 本 PR 保持 open 待发版,非疏漏。\n- 未覆盖项(明说):未跑 `workflow plan --release v1.6.0` 验证 release 轨解析(tag 不存在时按设计应 `RELEASE_NOT_FOUND`,要发版后才能验);最终判定交 Actions 三平台矩阵。\n\n## 关联\n- Closes #61\n- 依赖:CLI tag `v1.6.0`(由 https://github.com/stack-wuh/shadow-dev-cli/pull/61 的 main 承载,待打 tag)\n- brief: shadow-docs/changes/20261012-chore-cli-pin-v160/brief.md"
50+
},
51+
"commit": {
52+
"files": [
53+
"shadow-docs/changes/20261012-chore-cli-pin-v160/brief.md"
54+
],
55+
"message": "chore(distribution): 结果段回填 quality-gate 的 404 实测依据(pin 前置条件显形)"
56+
}
57+
},
58+
"knowledge": {
59+
"action": "无需变更",
60+
"target": "knowledge/distribution-capability-contract.md",
61+
"reason": "pin 与能力的对应关系已由该卡承载,本次只是把取值往前推一个 CLI 版本,无新增长期事实"
62+
}
63+
}
64+
---
65+
66+
# 20261012-chore-cli-pin-v160
67+
68+
## 复杂度评级
69+
- **评级:** S
70+
- **理由:** 单一声明式字段 bump(`package.json.cliVersion`),不改代码与命令面;风险在合并时序而非内容。
71+
- **期望验证深度:** code-read
72+
73+
## 领域模型
74+
- **限界上下文:** `distribution` — 产物与 CLI 的能力契约对齐。上游 `shadow-dev-cli`(新门 `PR_PARAMS_REQUIRED` 与 `--body-file` 自 v1.6.0 起提供);下游三宿主。
75+
- **被触及既有不变量:** `cliVersion` 随能力变化单独走变更,不与发版 bump 混交(`norms`/`knowledge` 既有约定)。
76+
77+
## 引用规范
78+
- `knowledge/distribution-capability-contract.md`
79+
- 当前结论: 能力不齐即 `ARTIFACT_INCOMPATIBLE`,判定发生在任何落盘之前;pin 是能力契约不是版本装饰
80+
- 适用 scope: `package.json.cliVersion`、`requiresCommands`
81+
82+
## 动机
83+
84+
插件的 `norms/pr-message.md`(已随 #60 合并)规定了「`release/publish plan` 必须显式传 `--title` 与 `--body`/`--body-file`」,而这两个能力(硬门 `PR_PARAMS_REQUIRED`、`--body-file` 参数)是 shadow-dev-cli 的 `fix(release)` #56 与 `chore(scripts)` 引入、由 **v1.6.0** 首次对外交付。当前产物仍 pin `v1.5.0`,等于规范要求宿主用旧 CLI 去传一个旧 CLI 不认的参数。
85+
86+
## 覆盖范围
87+
88+
- `package.json`:`cliVersion` `v1.5.0` → `v1.6.0`(仅此一个字段;三份 manifest 的 `version` 不动,那属发版载体)。
89+
- `requiresCommands` 不变:本次没有新增命令键,能力判定集不受影响。
90+
91+
## 决策
92+
93+
- 只 bump pin,不 bump 产物版本:混在一起会让 tag 指向的 tree 与实际发布内容分裂(发版版本权威由 publish 阶段独占)。
94+
- **合并时序硬约束(非协商)**:本 PR 必须在 shadow-dev-cli 的 `v1.6.0` tag 与 GitHub Release **落地之后**才能合。提前合并会让按 release 轨解析的宿主拿到一个指向不存在版本的 pin。
95+
- 备选「等下次发版一起 bump」被否:规范已进 main,pin 与规范之间的空窗越长,宿主越容易按新规范传参却撞上旧 CLI 的未知参数。
96+
97+
## 任务
98+
99+
- [x] task-1 — `package.json` — `cliVersion` bump 到 v1.6.0,且不动 `requiresCommands` 与三份 manifest 的 `version`
100+
- [x] task-2 — 门与观察点 — `check:requires`/`check:version` 绿,pin 与 #60 规范所需能力逐条对照
101+
102+
## 结果
103+
104+
评级 S:声明字段 bump,取证为 pin 与能力的逐条对照 + 门绿。
105+
106+
- pin 落值:`package.json.cliVersion = v1.6.0`;同文件 `version` 仍 7.0.2、`requiresCommands` 仍 29 条未动(`check:requires` → `✓ skills ⊆ requiresCommands ⊆ CLI 命令目录`;`check:version` → `✓ 三处 manifest 版本同源: 7.0.2`)。
107+
- 能力对照(取自 shadow-dev-cli 的 main,非发布产物):`--body-file` 在命令目录出现 2 次;`PR_PARAMS_REQUIRED` 存在于 `lib/input.mjs` 或 `lib/i18n.mjs`:true;`lib/domains/release.mjs` 调用 `prParams(`:true;CLI `package.json.version = 1.6.0`(与本次 pin 目标一致)。
108+
- **时序观察点(已被机器证实)**:本 PR 的 Actions `quality-gate` 在六个矩阵上同一步失败——步骤名 `Install pinned shadow-dev CLI`,日志尾部 `curl: (22) The requested URL returned error: 404`(run 38242986751)。原因正是 pin 指向的 `v1.6.0` 尚未打 tag:门在装不存在的版本。**这不是代码回归,是本 PR 的合并前置条件显形**——打 tag 后复跑即绿。
109+
- 未覆盖项:未在本机跑 `workflow plan --release v1.6.0` 验证 release 轨解析(tag 不存在时它按设计应报 `RELEASE_NOT_FOUND`,验证要等发版后);Actions 三平台矩阵为最终判定处。

0 commit comments

Comments
 (0)