release-skill 0.9.0 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codebuddy-plugin/plugin.json +1 -1
  4. package/.codex-plugin/plugin.json +2 -2
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/CHANGELOG.md +81 -0
  7. package/INSTALL.md +22 -9
  8. package/INSTALL.zh-CN.md +15 -8
  9. package/README.md +40 -35
  10. package/README.zh-CN.md +31 -29
  11. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/consumer-contract-vectors.json +110 -0
  14. package/adapters/claude/bin/error-codes.json +8 -1
  15. package/adapters/claude/bin/foundation-resource-binding.json +1 -1
  16. package/adapters/claude/bin/registry.json +22 -1
  17. package/adapters/claude/bin/release-skill.bundle.mjs +4772 -2238
  18. package/adapters/claude/bin/rules.json +1 -1
  19. package/adapters/claude/bin/schemas/consumer-contract-vector.schema.json +149 -0
  20. package/adapters/claude/schemas/release-project.schema.json +4 -0
  21. package/adapters/claude/schemas/release-run.schema.json +41 -1
  22. package/adapters/claude/skills/release-config/SKILL.md +5 -3
  23. package/adapters/claude/skills/release-docs/SKILL.md +4 -2
  24. package/adapters/claude/skills/release-finish/SKILL.md +6 -4
  25. package/adapters/claude/skills/release-help/SKILL.md +14 -5
  26. package/adapters/claude/skills/release-marketplace/SKILL.md +3 -1
  27. package/adapters/claude/skills/release-prepare/SKILL.md +4 -2
  28. package/adapters/claude/skills/release-publish/SKILL.md +19 -10
  29. package/adapters/claude/skills/release-verify/SKILL.md +2 -0
  30. package/adapters/claude/src/schemas/executable-identity-observation.schema.json +162 -0
  31. package/adapters/claude/src/schemas/filesystem-tree-observation.schema.json +18 -2
  32. package/adapters/claude/src/schemas/migration-manifest.schema.json +271 -7
  33. package/adapters/claude/src/schemas/plugin-verification-request.schema.json +147 -22
  34. package/adapters/claude/src/schemas/plugin-verification-result.schema.json +436 -18
  35. package/adapters/claude/src/schemas/profile-adoption-declaration.schema.json +8 -0
  36. package/adapters/claude/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  37. package/adapters/claude/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
  38. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  39. package/adapters/codex/bin/consumer-contract-vectors.json +110 -0
  40. package/adapters/codex/bin/error-codes.json +8 -1
  41. package/adapters/codex/bin/foundation-resource-binding.json +1 -1
  42. package/adapters/codex/bin/registry.json +22 -1
  43. package/adapters/codex/bin/release-skill.bundle.mjs +4772 -2238
  44. package/adapters/codex/bin/rules.json +1 -1
  45. package/adapters/codex/bin/schemas/consumer-contract-vector.schema.json +149 -0
  46. package/adapters/codex/schemas/release-project.schema.json +4 -0
  47. package/adapters/codex/schemas/release-run.schema.json +41 -1
  48. package/adapters/codex/skills/release-config/SKILL.md +5 -3
  49. package/adapters/codex/skills/release-docs/SKILL.md +4 -2
  50. package/adapters/codex/skills/release-finish/SKILL.md +6 -4
  51. package/adapters/codex/skills/release-help/SKILL.md +14 -5
  52. package/adapters/codex/skills/release-marketplace/SKILL.md +3 -1
  53. package/adapters/codex/skills/release-prepare/SKILL.md +4 -2
  54. package/adapters/codex/skills/release-publish/SKILL.md +19 -10
  55. package/adapters/codex/skills/release-verify/SKILL.md +2 -0
  56. package/adapters/codex/src/schemas/executable-identity-observation.schema.json +162 -0
  57. package/adapters/codex/src/schemas/filesystem-tree-observation.schema.json +18 -2
  58. package/adapters/codex/src/schemas/migration-manifest.schema.json +271 -7
  59. package/adapters/codex/src/schemas/plugin-verification-request.schema.json +147 -22
  60. package/adapters/codex/src/schemas/plugin-verification-result.schema.json +436 -18
  61. package/adapters/codex/src/schemas/profile-adoption-declaration.schema.json +8 -0
  62. package/adapters/codex/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  63. package/adapters/codex/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
  64. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  65. package/adapters/kimi/bin/consumer-contract-vectors.json +110 -0
  66. package/adapters/kimi/bin/error-codes.json +8 -1
  67. package/adapters/kimi/bin/foundation-resource-binding.json +1 -1
  68. package/adapters/kimi/bin/registry.json +22 -1
  69. package/adapters/kimi/bin/release-skill.bundle.mjs +4772 -2238
  70. package/adapters/kimi/bin/rules.json +1 -1
  71. package/adapters/kimi/bin/schemas/consumer-contract-vector.schema.json +149 -0
  72. package/adapters/kimi/schemas/release-project.schema.json +4 -0
  73. package/adapters/kimi/schemas/release-run.schema.json +41 -1
  74. package/adapters/kimi/skills/release-config/SKILL.md +5 -3
  75. package/adapters/kimi/skills/release-docs/SKILL.md +4 -2
  76. package/adapters/kimi/skills/release-finish/SKILL.md +6 -4
  77. package/adapters/kimi/skills/release-help/SKILL.md +14 -5
  78. package/adapters/kimi/skills/release-marketplace/SKILL.md +3 -1
  79. package/adapters/kimi/skills/release-prepare/SKILL.md +4 -2
  80. package/adapters/kimi/skills/release-publish/SKILL.md +19 -10
  81. package/adapters/kimi/skills/release-verify/SKILL.md +2 -0
  82. package/adapters/kimi/src/schemas/executable-identity-observation.schema.json +162 -0
  83. package/adapters/kimi/src/schemas/filesystem-tree-observation.schema.json +18 -2
  84. package/adapters/kimi/src/schemas/migration-manifest.schema.json +271 -7
  85. package/adapters/kimi/src/schemas/plugin-verification-request.schema.json +147 -22
  86. package/adapters/kimi/src/schemas/plugin-verification-result.schema.json +436 -18
  87. package/adapters/kimi/src/schemas/profile-adoption-declaration.schema.json +8 -0
  88. package/adapters/kimi/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  89. package/adapters/kimi/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
  90. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  91. package/adapters/workbuddy/bin/consumer-contract-vectors.json +110 -0
  92. package/adapters/workbuddy/bin/error-codes.json +8 -1
  93. package/adapters/workbuddy/bin/foundation-resource-binding.json +1 -1
  94. package/adapters/workbuddy/bin/registry.json +22 -1
  95. package/adapters/workbuddy/bin/release-skill.bundle.mjs +4772 -2238
  96. package/adapters/workbuddy/bin/rules.json +1 -1
  97. package/adapters/workbuddy/bin/schemas/consumer-contract-vector.schema.json +149 -0
  98. package/adapters/workbuddy/schemas/release-project.schema.json +4 -0
  99. package/adapters/workbuddy/schemas/release-run.schema.json +41 -1
  100. package/adapters/workbuddy/skills/release-config/SKILL.md +5 -3
  101. package/adapters/workbuddy/skills/release-docs/SKILL.md +4 -2
  102. package/adapters/workbuddy/skills/release-finish/SKILL.md +6 -4
  103. package/adapters/workbuddy/skills/release-help/SKILL.md +14 -5
  104. package/adapters/workbuddy/skills/release-marketplace/SKILL.md +3 -1
  105. package/adapters/workbuddy/skills/release-prepare/SKILL.md +4 -2
  106. package/adapters/workbuddy/skills/release-publish/SKILL.md +19 -10
  107. package/adapters/workbuddy/skills/release-verify/SKILL.md +2 -0
  108. package/adapters/workbuddy/src/schemas/executable-identity-observation.schema.json +162 -0
  109. package/adapters/workbuddy/src/schemas/filesystem-tree-observation.schema.json +18 -2
  110. package/adapters/workbuddy/src/schemas/migration-manifest.schema.json +271 -7
  111. package/adapters/workbuddy/src/schemas/plugin-verification-request.schema.json +147 -22
  112. package/adapters/workbuddy/src/schemas/plugin-verification-result.schema.json +436 -18
  113. package/adapters/workbuddy/src/schemas/profile-adoption-declaration.schema.json +8 -0
  114. package/adapters/workbuddy/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  115. package/adapters/workbuddy/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
  116. package/bin/consumer-contract-vectors.json +110 -0
  117. package/bin/error-codes.json +8 -1
  118. package/bin/foundation-resource-binding.json +1 -1
  119. package/bin/registry.json +22 -1
  120. package/bin/release-skill-cli.mjs +72 -4
  121. package/bin/release-skill.bundle.mjs +4772 -2238
  122. package/bin/rules.json +1 -1
  123. package/bin/schemas/consumer-contract-vector.schema.json +149 -0
  124. package/package.json +5 -5
  125. package/platform-manifest.json +5 -5
  126. package/references/01-state-machine.md +16 -1
  127. package/references/05-evidence-and-errors.md +2 -2
  128. package/schemas/release-project.schema.json +4 -0
  129. package/schemas/release-run.schema.json +41 -1
  130. package/skills/release-config/SKILL.md +5 -3
  131. package/skills/release-docs/SKILL.md +4 -2
  132. package/skills/release-finish/SKILL.md +6 -4
  133. package/skills/release-help/SKILL.md +14 -5
  134. package/skills/release-marketplace/SKILL.md +3 -1
  135. package/skills/release-prepare/SKILL.md +4 -2
  136. package/skills/release-publish/SKILL.md +19 -10
  137. package/skills/release-verify/SKILL.md +2 -0
  138. package/skills-src/release-config/SKILL.md +5 -3
  139. package/skills-src/release-docs/SKILL.md +4 -2
  140. package/skills-src/release-finish/SKILL.md +6 -4
  141. package/skills-src/release-help/SKILL.md +14 -5
  142. package/skills-src/release-marketplace/SKILL.md +3 -1
  143. package/skills-src/release-prepare/SKILL.md +4 -2
  144. package/skills-src/release-publish/SKILL.md +19 -10
  145. package/skills-src/release-verify/SKILL.md +2 -0
  146. package/src/commands/post-release-local.mjs +249 -58
  147. package/src/commands/prepare.mjs +178 -9
  148. package/src/commands/route.mjs +597 -18
  149. package/src/commands/setup.mjs +2 -0
  150. package/src/commands/ship.mjs +143 -16
  151. package/src/commands/verify.mjs +21 -0
  152. package/src/core/adoption-assessment.mjs +59 -0
  153. package/src/core/derived-artifact-gates.mjs +32 -5
  154. package/src/core/foundation-plugin-verification.mjs +213 -1
  155. package/src/core/hook-cache.mjs +318 -26
  156. package/src/core/hooks.mjs +8 -1
  157. package/src/producers/foundation-resource-projection.mjs +16 -3
  158. package/src/schemas/executable-identity-observation.schema.json +162 -0
  159. package/src/schemas/filesystem-tree-observation.schema.json +18 -2
  160. package/src/schemas/migration-manifest.schema.json +271 -7
  161. package/src/schemas/plugin-verification-request.schema.json +147 -22
  162. package/src/schemas/plugin-verification-result.schema.json +436 -18
  163. package/src/schemas/profile-adoption-declaration.schema.json +8 -0
  164. package/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  165. package/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.9.0",
12
+ "version": "0.9.3",
13
13
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
14
14
  "author": {
15
15
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.0",
3
+ "version": "0.9.3",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.0",
3
+ "version": "0.9.3",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.0",
3
+ "version": "0.9.3",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -19,7 +19,7 @@
19
19
  ],
20
20
  "defaultPrompt": [
21
21
  "Assess this project for release readiness.",
22
- "Prepare a release plan for version 0.9.0.",
22
+ "Prepare a release plan for version 0.9.3.",
23
23
  "Help me understand the release workflow."
24
24
  ]
25
25
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.0",
3
+ "version": "0.9.3",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
package/CHANGELOG.md CHANGED
@@ -1,5 +1,86 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.9.3 locale=en baseline=sha256:96e5f9167abb13203ba308ebacbb081452f8c23e26ff0b377514556338ebdfff -->
4
+ ## [0.9.3] - 2026-08-31
5
+
6
+ 0.9.3 is a local source candidate for the four workflow safeguards and the narrow Hook cache v2 and isolated-install-tree integrations. It consumes the three Foundation packages at the exact 0.15.0 release. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
7
+
8
+ ### Security
9
+
10
+ - Unknown, corrupt, non-stable, or unsupported observations remain fail-closed. A cache hit never replaces a Hook execution when the authority or identity evidence is unavailable, and no TTL or ambient PATH inference is used.
11
+ - Any host plan remains a qualified frozen-plan path and requires a VERIFIED-run before host acceptance; this source candidate does not provide that acceptance.
12
+
13
+ ### Added
14
+
15
+ - Add the opt-in pre-hook public-surface check, ship help and target-version conflict guard, verify lineage guidance, and evidence-based adoption suggestions without adding a new command, state, or approval authority.
16
+ - Add the narrow Hook cache v2 consumer path: absolute-path and validated cwd-relative executable identity, closed input and environment binding, no TTL, and fail-closed cache reuse for bare PATH, PATHEXT, Windows, and unavailable observations while Hooks still execute cold.
17
+ - Add the narrow isolated install-tree record path after a completed host command, recording host-added links without following them and rejecting declared-payload symlinks while preserving legacy full-tree semantics.
18
+
19
+ ### Changed
20
+
21
+ - Consume skill-family-contracts, skill-family-harness-node, and skill-family-engineering-kit at the exact 0.15.0 release through their public package-root APIs.
22
+ - Keep the 0.9.2 production plan PREPARED and immutable as an unpublished historical record now replaced by the 0.9.3 candidate; with an explicit target, only unfinished records that pass complete run, plan, digest/binding, and lineage validation and whose plan target matches participate in current recovery, while all other history remains diagnostics. Without a target, route still shows full-history diagnostics, but workflow selection remains based on the current diff and baseline.
23
+ - The CodeBuddy plugin explicitly declares marketplace: release-skill, and both release-finish local-finish examples pass --root <project-root>.
24
+
25
+ ### Upgrade Notes
26
+
27
+ Real-host acceptance can begin only after 0.9.3 is officially published and VERIFIED; the official 0.9.3 entry must be installed or reloaded first. A source candidate, an older installed entry, or the mere existence of plan and run files cannot complete real-host acceptance. Each selected host must complete a first successful update. On the second run, Claude, Kimi, CodeBuddy, and WorkBuddy must report `ALREADY_CURRENT`; Codex may report `UPDATED` only when it reinstalls the same exact 0.9.3 frozen reference, payload validation passes, and `restartRequired=true` is declared. The 0.9.2 plan was never published and remains an immutable historical record. With an explicit target, only unfinished records that pass complete run, plan, digest/binding, and lineage validation and whose plan target matches participate in current recovery; all other history remains diagnostics. Without a target, route still shows full-history diagnostics, but workflow selection remains based on the current diff and baseline.
28
+ <!-- release-skill:changelog:end version=0.9.3 locale=en -->
29
+
30
+
31
+ <!-- release-skill:changelog:start version=0.9.2 locale=en baseline=sha256:748e2f51de3ee9b773ddc2f0f2ffccb3756065c814ec218dffc738364ad25630 -->
32
+ ## [0.9.2] - 2026-08-30
33
+
34
+ 0.9.2 is a local source candidate for two release-finish maintenance updates and a route recovery maintenance update. Foundation remains pinned to 0.14.0, whose public temporary-workspace and raw-output APIs pass the default Node.js 22 macOS consumer composition. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
35
+
36
+ ### Security
37
+
38
+ - The release-finish maintenance keeps the qualified frozen-plan boundary and the VERIFIED-run requirement; the consumer test combines the public withTemporaryWorkspace and superviseProcess.rawSink APIs under the default Node.js 22 macOS temporary directory.
39
+
40
+ ### Changed
41
+
42
+ - Self-bootstrap now declares marketplace: release-skill explicitly for the CodeBuddy plugin.
43
+ - Both release-finish local-finish examples now pass --root <project-root> explicitly.
44
+ - Route recovery now skips only failed publish attempts that the current evidence-v2 writer contract proves never acquired release authority; unknown or corrupt history remains blocking DIAGNOSE with an exact path and formal next action.
45
+
46
+ ### Upgrade Notes
47
+
48
+ Real-host acceptance can begin only after 0.9.2 is officially published and VERIFIED; the official 0.9.2 entry must be installed or reloaded first. A source candidate, an older installed entry, or the mere existence of plan and run files cannot complete real-host acceptance. Each selected host must complete a first successful update. On the second run, Claude, Kimi, CodeBuddy, and WorkBuddy must report `ALREADY_CURRENT`; Codex may report `UPDATED` only when it reinstalls the same exact 0.9.2 frozen reference, payload validation passes, and `restartRequired=true` is declared. In the current workspace, route still reports 63 DIAGNOSE records and 2 VERIFY records; the first UNKNOWN legacy record has no automatic safe recovery entry and requires the formal diagnostic action.
49
+ <!-- release-skill:changelog:end version=0.9.2 locale=en -->
50
+
51
+
52
+ <!-- release-skill:changelog:start version=0.9.1 locale=en baseline=sha256:71720f2bbde891ebccda25baf35ef03593d1f6aee1077aeccb3b4af4d2eddfc0 -->
53
+ ## [0.9.1] - 2026-08-28
54
+
55
+ 0.9.1 is a local source candidate for safer post-release host finishing. It now pins Foundation 0.14.0, whose public temporary-workspace and raw-output APIs pass the default Node.js 22 macOS consumer composition. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
56
+
57
+ ### Security
58
+
59
+ - Real-host acceptance requires a qualified frozen release plan and a VERIFIED run from the same release lineage. The workflow confirms the exact plan digest and selected hosts before any host write. release-skill's optional local finishing never changes the terminal release state.
60
+
61
+ ### Changed
62
+
63
+ - Pin skill-family-contracts, skill-family-harness-node, and skill-family-engineering-kit together at 0.14.0. A consumer test now combines the public withTemporaryWorkspace and superviseProcess.rawSink APIs under the default Node.js 22 macOS temporary directory.
64
+ - Derive platform-manifest.json version ownership from package.json.version and check manifest freshness before prepare runs hooks, including docs-only and config-only workflows.
65
+ - Expand ship's plan-approval summary from the frozen plan so reviewers can see public repositories, branch strategies, tags, npm targets, GitHub Releases, external action targets, waivers, and separately gated postPublish hooks.
66
+ - Claude now re-observes the installed plugin after marketplace rebinding before deciding whether a plugin update is still required. Codex keeps the formal frozen-marketplace reinstall path.
67
+ - Kimi accepts a managed installation without a .git directory when the package name, version, release tag, installed revision, managed root, and real payload all match. Legacy local-path entries are removed and reinstalled from the pinned release tag in one controlled TUI session.
68
+ - CodeBuddy/WorkBuddy can update an existing bundled-family entry only when one remote query proves that the frozen tag and mutable marketplace branch both resolve to the frozen commit. The final installed list must contain exactly one entry with the expected marketplace, version, and revision.
69
+
70
+ ### Fixed
71
+
72
+ - Prevent prepare from freezing a stale platform manifest into the public snapshot or npm tarball.
73
+ - Remove the misleading claim that plan approval includes a requiresApproval postPublish checkpoint. Plan approval remains the single normal release-level approval; each gated postPublish hook needs its own approval record, bound to the plan digest and hook id for at most 24 hours.
74
+ - Avoid a redundant Claude plugin update after marketplace rebinding has already removed or replaced the old installed entry.
75
+ - Classify legacy Kimi local-path installations before managed-root checks so they can follow the explicit migration path.
76
+ - Keep CodeBuddy/WorkBuddy host state unchanged when the target is absent, standalone, inaccessible, ambiguous, or inconsistent with the frozen release identity.
77
+
78
+ ### Upgrade Notes
79
+
80
+ Real-host acceptance can begin only after 0.9.1 is officially published and VERIFIED; the official 0.9.1 entry must be installed or reloaded first. A source candidate, an older installed entry, or the mere existence of plan and run files cannot complete real-host acceptance. Each selected host must complete a first successful update and a second run that reports `ALREADY_CURRENT`.
81
+ <!-- release-skill:changelog:end version=0.9.1 locale=en -->
82
+
83
+
3
84
  <!-- release-skill:changelog:start version=0.9.0 locale=en baseline=sha256:80f51046ce63386f75ed1a2b869cf3245732e9a1b040e11eb8942dba5f7c8fed -->
4
85
  ## [0.9.0] - 2026-08-28
5
86
 
package/INSTALL.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [简体中文](INSTALL.zh-CN.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.0 -->
5
+ <!-- release-skill:release-version: 0.9.3 -->
6
6
  ## Prerequisites
7
7
 
8
8
  - Node.js 22.0.0 or later
@@ -114,15 +114,23 @@ tag pinned to the exact version (never the bare repository URL, which installs
114
114
  the latest release or default branch), confirm the trust prompt, then reload:
115
115
 
116
116
  ```
117
- /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.0
117
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.3
118
118
  /plugins reload
119
119
  ```
120
120
 
121
121
  After the release has reached `VERIFIED`, the optional `release-finish` workflow
122
122
  can perform the same TUI interaction only after explicit user confirmation. It
123
- then re-reads Kimi's managed installation root and requires the version, tag,
124
- revision, and Git commit to match the frozen plan. This local check is not part
125
- of `verify` and does not alter the `VERIFIED` release state.
123
+ requires the package name, version, release tag, installed revision, and managed
124
+ root to match the frozen plan. An exact current installation is checked before
125
+ returning `ALREADY_CURRENT`. When an installation or migration occurs, the
126
+ resulting managed installation is checked only after the operation. A `.git`
127
+ directory is optional diagnostic evidence, not a success requirement. After an
128
+ installation or migration, release-finish re-reads Kimi's managed installation root
129
+ rather than reusing the pre-operation observation, then verifies the final identity
130
+ and actual payload. If the existing entry is a legacy local-path
131
+ install, release-finish removes it and installs the pinned release tag in the
132
+ same TUI session before accepting the trust prompt and reloading. This local
133
+ check is not part of `verify` and does not alter the `VERIFIED` release state.
126
134
 
127
135
  No receipt or attestation is required. The `attest` command remains available
128
136
  only for frozen plans created by older versions that lack the
@@ -152,10 +160,15 @@ reports `verifiedBySystem: false`. Install from the bundled-family marketplace
152
160
  for new plans; `attest` exists only for old frozen-plan compatibility.
153
161
 
154
162
  The optional `release-finish` workflow can inspect the CodeBuddy/WorkBuddy list
155
- after explicit confirmation. It reports `ALREADY_CURRENT` only when the listed
156
- marketplace, version, and frozen commit all match. Because the CLI cannot pin a
157
- ref, a mismatch remains `MANUAL_REQUIRED`; release-finish does not update to an
158
- unbound latest version.
163
+ after explicit confirmation. It reports `ALREADY_CURRENT` only when one listed
164
+ entry already matches the marketplace, version, and frozen commit. A matching
165
+ bundled-family entry can be updated through the official marketplace and plugin
166
+ update commands only after one remote query proves that both the frozen tag and
167
+ the plan's mutable marketplace branch resolve to that same frozen commit. The
168
+ final list must contain exactly one matching entry with the expected marketplace,
169
+ version, and revision. Missing installations, standalone sources, inaccessible
170
+ or conflicting refs, and any identity mismatch return `MANUAL_REQUIRED` without
171
+ modifying the host.
159
172
 
160
173
  For a single session from a source checkout you can also point CodeBuddy at the
161
174
  generated plugin directory with `--plugin-dir <path>/adapters/workbuddy`; the
package/INSTALL.zh-CN.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.0 -->
5
+ <!-- release-skill:release-version: 0.9.3 -->
6
6
  ## 前置条件
7
7
 
8
8
  - Node.js 22.0.0 或更高版本
@@ -104,14 +104,18 @@ Kimi Code 有交互式插件市场,但**没有可脚本化的非交互安装
104
104
  (切勿使用裸仓库地址,它会安装最新 release 或默认分支),确认信任提示后重新加载:
105
105
 
106
106
  ```
107
- /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.0
107
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.3
108
108
  /plugins reload
109
109
  ```
110
110
 
111
111
  发布达到 `VERIFIED` 后,可选的 `release-finish` 工作流可以在用户明确同意后执行
112
- 同一套 TUI 操作。随后它会重新读取 Kimi 的受管安装根,并要求版本、标签、修订号和
113
- Git 提交与冻结计划一致。这个本机检查不属于 `verify`,也不会改变已经完成的
114
- `VERIFIED` 发布状态。
112
+ 同一套 TUI 操作。包名、版本、发布标签、已安装修订号和受管安装根都必须与冻结计划
113
+ 一致。精确当前安装会在返回 `ALREADY_CURRENT` 前核对;发生安装或迁移时,只在操作
114
+ 完成后核对结果。`.git` 目录只提供附加诊断,不是通过条件。发生安装或迁移后,
115
+ release-finish 会重新读取 Kimi 的受管安装根,不复用操作前的观察;随后核对最终身份与
116
+ 真实载荷。若现有条目来自旧的本地路径安装,release-finish 会在同一个 TUI 会话中先
117
+ 移除,再按发布标签安装、确认信任并重新加载。这个本机检查不属于 `verify`,也不会改变
118
+ 已经完成的 `VERIFIED` 发布状态。
115
119
 
116
120
  新计划无需收据或人工证明。`attest` 命令仅兼容缺少
117
121
  `humanConsumersStrategy: manualFollowUps` 标记的旧冻结计划。
@@ -135,9 +139,12 @@ codebuddy CLI 可以添加市场并安装插件,但 **`plugin marketplace add`
135
139
  `ifoohoo/release-skill` 安装即可。新计划无需收据或人工证明;`attest` 只兼容旧冻结计划。
136
140
 
137
141
  可选的 `release-finish` 工作流会在用户明确同意后读取 CodeBuddy/WorkBuddy 的安装
138
- 列表。只有市场、版本和冻结提交全部一致时才报告 `ALREADY_CURRENT`。由于 CLI 无法
139
- 钉死 ref,不匹配时仍返回 `MANUAL_REQUIRED`;release-finish 不会改装到一个未绑定的
140
- latest 版本。
142
+ 列表。只有唯一条目的市场、版本和冻结提交全部一致时,才报告 `ALREADY_CURRENT`。
143
+ 对于同一 bundled-family 插件和市场,release-finish 只在一次远端查询证明冻结标签与
144
+ 计划声明的可变市场分支都解析到同一冻结提交后,调用正式的市场更新和插件更新命令。
145
+ 更新完成后,它会重新读取列表,并精确核对唯一条目的市场、版本和修订号。目标未安装、
146
+ 使用 standalone 来源、远端引用不可访问或冲突、身份不一致时,均返回
147
+ `MANUAL_REQUIRED`,不修改宿主。
141
148
 
142
149
  源码检出后也可以用 `--plugin-dir <path>/adapters/workbuddy` 把 CodeBuddy 指向
143
150
  生成的插件目录做单会话使用;适配器不引用自身目录之外的任何文件。
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [简体中文](README.zh-CN.md) · Installation: [English](INSTALL.md) / [简体中文](INSTALL.zh-CN.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.0 -->
5
+ <!-- release-skill:release-version: 0.9.3 -->
6
6
  Release preparation for Claude Code, CodeBuddy, WorkBuddy, Codex, and Kimi Code, with human-edited files kept intact.
7
7
 
8
8
  release-skill helps a maintainer answer three questions: what will be released,
@@ -14,37 +14,34 @@ Setup surfaces only the deterministic `compactSummary` review view; the full
14
14
  report stays in a temporary session directory.
15
15
 
16
16
  <!-- release-skill:managed:start id=latest-release -->
17
- **0.9.0** (2026-08-28)
17
+ **0.9.3** (2026-08-31)
18
18
 
19
- 0.9.0 is a local source candidate for multi-unit postPublish plans and optional post-release local finishing. This note records the intended scope and verification boundaries; it is not evidence of publication, consumer-installation verification, or independent acceptance. Release availability must be established from the corresponding release records and post-publish verification results.
19
+ 0.9.3 is a local source candidate for the four workflow safeguards and the narrow Hook cache v2 and isolated-install-tree integrations. It consumes the three Foundation packages at the exact 0.15.0 release. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
20
20
 
21
21
  **Security**
22
22
 
23
- - release-finish requires a plan-digest confirmation and a VERIFIED run from the same release lineage before any host command. Host updates use a restricted environment; Claude/Codex exact results are bound to the real installed payload, and every host fails closed when the identity evidence its protocol can provide is insufficient.
23
+ - Unknown, corrupt, non-stable, or unsupported observations remain fail-closed. A cache hit never replaces a Hook execution when the authority or identity evidence is unavailable, and no TTL or ambient PATH inference is used.
24
+ - Any host plan remains a qualified frozen-plan path and requires a VERIFIED-run before host acceptance; this source candidate does not provide that acceptance.
24
25
 
25
26
  **Added**
26
27
 
27
- - Plan version 3 freezes postPublish declarations per release unit as an ordered array. Each declaration carries its own targets, hooks, approval binding, execution bundle, checkpoints, and postVerify continuation while explicit plan versions 1 and 2 retain their established single-declaration behavior.
28
- - A new release-finish workflow derives a read-only local checklist from the frozen plan and VERIFIED run. After explicit user confirmation it can update Claude and Codex, drive the Kimi TUI and verify the resulting installation, or confirm that CodeBuddy/WorkBuddy already matches the frozen identity; CodeBuddy/WorkBuddy updates that cannot pin the frozen ref remain manual. None of these local actions changes the published release terminal state.
28
+ - Add the opt-in pre-hook public-surface check, ship help and target-version conflict guard, verify lineage guidance, and evidence-based adoption suggestions without adding a new command, state, or approval authority.
29
+ - Add the narrow Hook cache v2 consumer path: absolute-path and validated cwd-relative executable identity, closed input and environment binding, no TTL, and fail-closed cache reuse for bare PATH, PATHEXT, Windows, and unavailable observations while Hooks still execute cold.
30
+ - Add the narrow isolated install-tree record path after a completed host command, recording host-added links without following them and rejecting declared-payload symlinks while preserving legacy full-tree semantics.
29
31
 
30
32
  **Changed**
31
33
 
32
- - The distribute and postVerify phases preflight every declaration before the first external write, then re-observe mutable remote proposal state during execution. Checkpoint identifiers are namespaced by release unit, and an earlier hook failure skips all later-unit work.
33
- - PostPublish hook identifiers are unique across the complete plan. Prepare, setup, approval, distribute, and postVerify consume the same validation rule before side effects.
34
-
35
- **Fixed**
36
-
37
- - Prevent a later unit's missing bundle or deterministic proposal conflict from being discovered only after an earlier unit has already written remotely.
38
- - Preserve PARTIAL when a checkpoint has succeeded before a later failure, and preserve BLOCKED when no external checkpoint succeeded.
39
- - Prevent duplicate target names and duplicate hook identifiers from collapsing evidence or approval identity across release units.
34
+ - Consume skill-family-contracts, skill-family-harness-node, and skill-family-engineering-kit at the exact 0.15.0 release through their public package-root APIs.
35
+ - Keep the 0.9.2 production plan PREPARED and immutable as an unpublished historical record now replaced by the 0.9.3 candidate; with an explicit target, only unfinished records that pass complete run, plan, digest/binding, and lineage validation and whose plan target matches participate in current recovery, while all other history remains diagnostics. Without a target, route still shows full-history diagnostics, but workflow selection remains based on the current diff and baseline.
36
+ - The CodeBuddy plugin explicitly declares marketplace: release-skill, and both release-finish local-finish examples pass --root <project-root>.
40
37
 
41
38
  **Upgrade Notes**
42
39
 
43
- Prepare a new 0.9.0 plan to use plan version 3; do not edit or upgrade frozen older plans. Plan versions 1 and 2 remain readable only through their explicit compatibility path. release-finish is optional local follow-up, not publication evidence: branch merges, Kimi trust prompts, and local host changes still require explicit user consent, and unsupported exact-ref updates remain manual. Hook cache v2, safe full-tree inventory, the Audit offline release-record verifier, and mandatory public-marketplace host invocation gates remain outside this version.
40
+ Real-host acceptance can begin only after 0.9.3 is officially published and VERIFIED; the official 0.9.3 entry must be installed or reloaded first. A source candidate, an older installed entry, or the mere existence of plan and run files cannot complete real-host acceptance. Each selected host must complete a first successful update. On the second run, Claude, Kimi, CodeBuddy, and WorkBuddy must report `ALREADY_CURRENT`; Codex may report `UPDATED` only when it reinstalls the same exact 0.9.3 frozen reference, payload validation passes, and `restartRequired=true` is declared. The 0.9.2 plan was never published and remains an immutable historical record. With an explicit target, only unfinished records that pass complete run, plan, digest/binding, and lineage validation and whose plan target matches participate in current recovery; all other history remains diagnostics. Without a target, route still shows full-history diagnostics, but workflow selection remains based on the current diff and baseline.
44
41
  <!-- release-skill:managed:end id=latest-release -->
45
42
 
46
43
  <!-- release-skill:capability:external-write-boundary -->
47
- > **Current boundary:** v0.9.0 is the current source candidate. This README
44
+ > **Current boundary:** v0.9.3 is the current source candidate. This README
48
45
  > records intended scope and verification boundaries; it is not evidence of
49
46
  > publication, consumer-installation verification, or independent acceptance.
50
47
  > Release availability must be established from the corresponding release records
@@ -68,7 +65,7 @@ Prepare a new 0.9.0 plan to use plan version 3; do not edit or upgrade frozen ol
68
65
  > publish global preflight.
69
66
 
70
67
  <!-- release-skill:capability:safe-first-command -->
71
- > **Production path verified since the v0.1.1 milestone; v0.9.0 is the current
68
+ > **Production path verified since the v0.1.1 milestone; v0.9.3 is the current
72
69
  > source candidate. Its README does not establish publication,
73
70
  > consumer-installation verification, or independent acceptance.**
74
71
  > The npm-installed CLI is the supported user entry. Source checkout
@@ -97,11 +94,12 @@ checkpoints remain intact and use matching-version recovery. Evidence v1 stays
97
94
  read-only; v2 uses a closed top level with phase extensions in `details`.
98
95
  Summaries and recovery suggestions are diagnostic, never publication authority.
99
96
 
100
- This version excludes R-02 safe full-tree inventory, R-05 Hook cache v2,
101
- R-10 historical-release verification implementation, real Kimi/WorkBuddy
102
- public-marketplace installation and invocation gates, and an Audit public
103
- offline release-record verifier.
104
- Foundation dependencies are pinned to the three released 0.13.0 packages.
97
+ The current 0.9.3 candidate includes the narrow R-05 Hook cache v2 consumer
98
+ path and the stable isolated install-tree record path (A2/A3). It still
99
+ excludes R-02 safe full-tree inventory, R-10 historical-release verification
100
+ implementation, real Kimi/WorkBuddy public-marketplace installation and
101
+ invocation gates, and an Audit public offline release-record verifier.
102
+ Foundation dependencies are pinned to the three released 0.15.0 packages.
105
103
  For new bundled-family Kimi/CodeBuddy plans, verify calls the released
106
104
  `runPluginVerification` entry with the complete frozen payload and records a
107
105
  minimal `install-only` observation receipt. Kimi maps to `kimi-code`; CodeBuddy
@@ -172,7 +170,10 @@ This scope summary is not a remote publication record or a consumer upgrade inst
172
170
  > Treat `prepare` as local-only only when those processes are absent or separately
173
171
  > audited and explicitly acknowledged. Production publishing uses
174
172
  > `ship --target-version <ver> → ship --approve --actor <name>`.
175
- > The `ship` command runs hooks and gates automatically; the only human gate is plan approval.
173
+ > Frozen-plan approval is the only normal release-level human gate.
174
+ > Here, “only human gate” means the only normal release-level approval. A postPublish hook whose effective
175
+ > `requiresApproval` is true still needs a separate checkpoint approval bound
176
+ > to the plan digest and hook id; that approval expires after at most 24 hours.
176
177
  > For bundled-family Kimi/CodeBuddy releases, Foundation first observes the
177
178
  > complete frozen payload in a fresh local installation. Real marketplace
178
179
  > installation and host invocation remain non-blocking manual follow-up tasks.
@@ -230,9 +231,10 @@ See [INSTALL.md](INSTALL.md) for CodeBuddy, Codex, and Kimi Code commands.
230
231
  ### Main workflow
231
232
 
232
233
  For routine releases, use the durable fast path. It persists authoritative
233
- paths and resumes safely, so a normal run needs at most one human gate: the
234
- frozen plan approval. `ship` runs configured hooks and verification gates
235
- automatically. For bundled-family Kimi/CodeBuddy releases, Foundation first
234
+ paths and resumes safely. Frozen plan approval is the only normal
235
+ release-level approval. `ship` runs configured hooks and verification gates
236
+ automatically. A gated postPublish hook still needs its independent checkpoint
237
+ approval; plan approval does not include it. For bundled-family Kimi/CodeBuddy releases, Foundation first
236
238
  observes the complete frozen payload in a fresh local installation. Real
237
239
  marketplace installation and host invocation remain non-blocking post-release
238
240
  manual tasks; the system does not verify their completion.
@@ -365,6 +367,7 @@ ACTOR=your-name
365
367
  --plan "$PLAN_PATH" --approval "$APPROVAL_PATH" --json)
366
368
  PUBLISH_RUN_PATH=$(printf '%s\n' "$PUBLISH_JSON" | jq -r '.runPath')
367
369
  ```
370
+ A valid approved production plan may enter `publish` directly; `route` is only a workflow suggestion. `publish` still requires the plan, approval, frozen digest and artifact identity, remote preflight, and fail-closed `PARTIAL` checkpoint rules.
368
371
  `PUBLISHED` is **not** the terminal state.
369
372
  9. **verify** — consumer install check:
370
373
  ```bash
@@ -686,7 +689,8 @@ postPublish:
686
689
 
687
690
  A hook with `requiresApproval: true` parks at `AWAITING_APPROVAL` until a
688
691
  checkpoint approval is minted and consumed. The approval record is bound to
689
- the plan digest and the hook id, and expires after 24 hours:
692
+ the plan digest and the hook id, and expires after 24 hours. Frozen plan
693
+ approval never includes this checkpoint approval:
690
694
 
691
695
  ```bash
692
696
  release-skill approve --plan "$PLAN_PATH" --hook hub-entry-proposal --actor "$ACTOR" --json
@@ -729,11 +733,12 @@ verification is automated. Kimi Code and CodeBuddy/WorkBuddy are returned as
729
733
  condition for the automated release to reach `VERIFIED`.
730
734
 
731
735
  After `VERIFIED`, the optional `release-finish` workflow can update Claude and
732
- Codex from the frozen marketplace identity, drive Kimi's TUI and re-check its
733
- managed installation, or confirm an already exact CodeBuddy/WorkBuddy entry.
734
- It requires explicit user confirmation, does not change release status, and
735
- leaves CodeBuddy/WorkBuddy mismatches for manual handling because that CLI
736
- cannot pin the frozen ref.
736
+ Codex from the frozen marketplace identity, migrate or update Kimi through one
737
+ controlled TUI session and verify its real managed payload, or update an existing
738
+ bundled-family CodeBuddy/WorkBuddy entry when the frozen tag and mutable branch
739
+ both resolve to the frozen commit. It requires explicit user confirmation and
740
+ does not change release status. Missing, standalone, inaccessible, or ambiguous
741
+ CodeBuddy/WorkBuddy targets remain manual and receive no host mutation.
737
742
 
738
743
  A `codebuddy-plugin` distribution may optionally declare `marketplace` (and
739
744
  `marketplaceSource`, the URL consumers use to add the marketplace) to override
@@ -751,7 +756,7 @@ the first minimal semantic boundary, so the static gate fails closed until the
751
756
  declaration is narrowed to concrete targets.
752
757
 
753
758
  <!-- release-skill:capability:unsupported-scope -->
754
- - **not in the current version:** Hook cache v2 (executor-identity receipts, R-05) — the current version keeps the v1 content-bound hook cache and never imports old run evidence; full consumer install-tree scanning (R-02) — only declared files are verified byte-for-byte; and a real-host (Kimi/WorkBuddy) verification gate — host verification stays a design and can never produce `PASS`/`VERIFIED` in this version;
759
+ - **not in the current version:** full consumer install-tree scanning (R-02) — the current implementation handles only the declared public surface and the stable isolated install-tree record; and a real-host (Kimi/WorkBuddy) verification gate — host verification stays a non-blocking manual follow-up and does not produce `PASS`/`VERIFIED` evidence;
755
760
  - no automatic README generation or source-file overwrite;
756
761
  - no automatic conflict merge or rollback workflow;
757
762
  - no claim that a real production canary has run for marketplace verification;
@@ -762,8 +767,8 @@ declaration is narrowed to concrete targets.
762
767
  the ref is absent, while existing branches use an ordinary non-force push;
763
768
  - no Kimi or CodeBuddy/WorkBuddy marketplace install checkpoint in the release
764
769
  state machine — optional release-finish can drive and re-check Kimi locally,
765
- or confirm an already exact CodeBuddy/WorkBuddy entry, but those results do
766
- not become publication evidence;
770
+ or update an existing CodeBuddy/WorkBuddy entry under strict frozen-identity
771
+ checks, but those results do not become publication evidence;
767
772
  - no promise of Windows or broad multi-platform native write support;
768
773
  - no hidden commit, push, tag, release, or package publication.
769
774
 
package/README.zh-CN.md CHANGED
@@ -2,43 +2,40 @@
2
2
 
3
3
  [English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.0 -->
5
+ <!-- release-skill:release-version: 0.9.3 -->
6
6
  面向 Claude Code、CodeBuddy、WorkBuddy、Codex 和 Kimi Code 的发布准备工具,完整保留人工维护的文件内容。
7
7
 
8
8
  release-skill 帮助维护者回答三个问题:准备发布什么、还有哪些检查未通过、最终发布的内容是什么。它不重新生成、也不回写项目源文件。`prepare` 把每个配置的公开文件复制到隔离快照并验证字节——先冻结并供人工审阅,再从同一份冻结产物发布。`setup` 只显示确定性的 `compactSummary` 审阅视图,完整报告保留在临时会话目录中。
9
9
 
10
10
  <!-- release-skill:managed:start id=latest-release -->
11
- **0.9.0** (2026-08-28)
11
+ **0.9.3** (2026-08-31)
12
12
 
13
- 0.9.0 是多发布单元 postPublish 计划和可选发布后本机收尾能力的本地源码候选。本说明记录预期范围与验证边界,不代表已经发布、完成消费者安装验证或通过独立验收。版本是否可用,须以对应的生产发布记录和发布后验证结果为准。
13
+ 0.9.3 是四项工作流安全修补、Hook cache v2 窄接线和稳定隔离安装树记录接线的本地源码候选。三项 Foundation 依赖均精确消费已发布的 0.15.0。本说明不代表已经发布、完成真实宿主验收、完成消费者安装验证或通过独立验收。
14
14
 
15
15
  **安全**
16
16
 
17
- - release-finish 在执行宿主命令前,要求确认计划摘要,并核对同一发布血缘的 VERIFIED run。宿主更新只传入受限环境;Claude/Codex 的精确结果绑定真实安装载荷,各宿主在自身协议能够提供的身份依据不足时都会失败关闭。
17
+ - 未知、损坏、非稳定或不支持的观察结果继续失败关闭。权威或身份证据不足时,缓存命中不能替代 Hook 执行;不使用 TTL,也不从环境 PATH 推断可执行文件身份。
18
+ - 任何宿主计划都必须是合格冻结计划,且宿主验收要求 VERIFIED run;本源码候选不提供该验收。
18
19
 
19
20
  **新增**
20
21
 
21
- - 计划版本 3 按发布单元冻结有序的 postPublish 声明数组。每项声明分别绑定目标、Hook、批准、执行包、检查点和 postVerify 后续动作;显式的计划版本 1、2 继续保持既有单声明语义。
22
- - 新增 release-finish 工作流。它从冻结计划和同一血缘的 VERIFIED run 派生只读本机收尾清单;用户明确同意后,可更新 Claude Codex、驱动 Kimi TUI 并复验安装结果,或确认 CodeBuddy/WorkBuddy 已经精确匹配冻结身份。CodeBuddy/WorkBuddy 无法钉死冻结 ref 时仍转人工处理;这些本机动作都不改变已经完成的发布终态。
22
+ - 新增可选的 Hook 前公开表面检查、ship 帮助与目标版本冲突保护、verify 血缘提示和基于证据的接入建议,不增加新命令、状态或批准权威。
23
+ - 新增窄范围 Hook cache v2 消费路径:支持绝对路径和经真实 cwd 校验的 cwd-relative executable identity,绑定封闭输入与环境,无 TTL;裸 PATH、PATHEXT、Windows 或观察不可用时仅禁止缓存复用,Hook 仍正常冷执行。
24
+ - 新增宿主命令完成后的稳定隔离安装树记录路径:记录宿主附加链接但不跟随;声明载荷中的 symlink 仍失败关闭,同时保留 legacy 全树语义。
23
25
 
24
26
  **变更**
25
27
 
26
- - distribute postVerify 在首次外部写入前预检全部声明,执行时重新观察可能变化的远端 proposal 状态。检查点 ID 按发布单元区分;前一项 Hook 失败后,后续单元全部跳过。
27
- - 整份计划中的 postPublish Hook ID 必须唯一。preparesetup、批准、distributepostVerify 在副作用发生前复用同一条校验规则。
28
-
29
- **修复**
30
-
31
- - 修复后续单元缺执行包或存在确定性 proposal 冲突时,前序单元已经写入远端的问题。
32
- - 任一检查点成功后发生后续失败时保留 PARTIAL;没有外部检查点成功时保持 BLOCKED。
33
- - 避免不同发布单元使用同名 target 或重复 Hook ID 时,证据与批准身份发生碰撞。
28
+ - 通过公开包根 API 精确消费 skill-family-contracts、skill-family-harness-node skill-family-engineering-kit 0.15.0。
29
+ - 保留从未发布的 0.9.2 production plan 作为不可变历史记录;它已由 0.9.3 候选取代。显式传入目标时,只有完整通过 runplan、digest/bindinglineage 校验且计划目标匹配的未完成记录,才参与当前恢复;其他历史仅保留为 diagnostics。未传目标时仍展示全历史 diagnostics,但 workflow 始终按当前 diff 和 baseline 选择,历史不能覆盖工作流。
30
+ - CodeBuddy plugin 显式声明 marketplace: release-skill,两个 release-finish local-finish 示例都显式传入 --root <project-root>。
34
31
 
35
32
  **升级说明**
36
33
 
37
- 使用计划版本 3 时须重新生成 0.9.0 计划,禁止修改或升级已经冻结的旧计划。计划版本 1、2 只通过显式兼容路径读取。release-finish 是可选的本机后续动作,不构成发布证据:分支合并、Kimi 信任提示和本机宿主修改仍须用户明确同意;宿主不支持精确 ref 更新时继续转人工处理。本版不包含 Hook cache v2、安全整树盘点、Audit 离线发布记录验证器或强制的公开市场宿主调用门禁。
34
+ 只有 0.9.3 正式发布并达到 VERIFIED,且先安装或重载正式的 0.9.3 入口,才能开始真实宿主验收。源码候选、旧的已安装入口或仅存在计划和运行文件都不能完成真实宿主验收。每个选定宿主都须首次成功更新。第二次运行时,Claude、Kimi、CodeBuddy 和 WorkBuddy 必须返回 `ALREADY_CURRENT`;Codex 可以返回 `UPDATED`,但仅当再次安装同一精确 0.9.3 冻结引用、载荷验证通过且声明 `restartRequired=true`。0.9.2 计划从未发布,作为不可变历史记录保留并已由 0.9.3 候选取代。显式传入目标时,只有完整通过 run、plan、digest/binding lineage 校验且计划目标匹配的未完成记录,才参与当前恢复;其他历史仅保留为 diagnostics。未传目标时仍展示全历史 diagnostics,但 workflow 始终按当前 diff 和 baseline 选择,历史不能覆盖工作流。
38
35
  <!-- release-skill:managed:end id=latest-release -->
39
36
 
40
37
  <!-- release-skill:capability:external-write-boundary -->
41
- > **当前边界:** v0.9.0 只是当前源码候选。本 README 记录预期范围与验证边界,
38
+ > **当前边界:** v0.9.3 只是当前源码候选。本 README 记录预期范围与验证边界,
42
39
  > 不代表已经发布、完成消费者安装验证或通过独立验收。
43
40
  > 版本可用性以对应发布记录及发布后验证结果为准。
44
41
  > v0.4.1 是更早的已发布里程碑(v0.2.2 曾处于已发布状态,后因平台验证收敛修复而更新)。
@@ -54,7 +51,7 @@ release-skill 帮助维护者回答三个问题:准备发布什么、还有哪
54
51
  > 远端唯一性检查在 `publish` 全局预检执行。
55
52
 
56
53
  <!-- release-skill:capability:safe-first-command -->
57
- > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.0 是当前源码候选,本 README 不证明该候选已经发布、完成消费者安装验证或通过独立验收。**
54
+ > **生产路径自 v0.1.1 里程碑起已完成真实生产验证;v0.9.3 是当前源码候选,本 README 不证明该候选已经发布、完成消费者安装验证或通过独立验收。**
58
55
  > npm 安装的 CLI 是受支持的用户入口;源码 checkout 保留为开发/贡献者路径。
59
56
  >
60
57
  > **第一条命令:**
@@ -72,9 +69,9 @@ marketplace 委托目标工作区发布的边界不变。
72
69
 
73
70
  旧 production 计划缺少 `sourceAuthority` 时,在外部写入前拒绝。未发生外部写入的计划必须重新 prepare 并批准新摘要,不能补写旧计划或迁移批准。已有 `PARTIAL` 保留检查点,走匹配版本的恢复路径。evidence v1 只读;v2 顶层封闭,阶段扩展放在 `details`。摘要和恢复建议只作诊断,不构成发布权威。
74
71
 
75
- 本版不包含 R-02 安全整树盘点、R-05 Hook cache v2R-10 历史发布验证的产品实现、真实 Kimi/WorkBuddy 公开市场安装与调用门禁或 Audit 公开离线发布记录验证器。本范围说明不构成远端发布记录或消费者升级指引。
72
+ 当前 0.9.3 候选包含窄范围的 R-05 Hook cache v2 消费路径和稳定隔离安装树记录路径(A2/A3)。当前仍不包含 R-02 安全整树盘点、R-10 历史发布验证的产品实现、真实 Kimi/WorkBuddy 公开市场安装与调用门禁或 Audit 公开离线发布记录验证器。本范围说明不构成远端发布记录或消费者升级指引。
76
73
 
77
- Foundation 三包精确依赖已发布的 0.13.0。新生成的 Kimi/CodeBuddy 同仓计划在 verify 阶段调用正式 `runPluginVerification`,把完整冻结载荷交给 Foundation,并记录最小的 `install-only` 观察收据。Kimi 映射为 `kimi-code`,CodeBuddy 映射为兼容的 `workbuddy`。`observed` 与 `payloadMatches` 只表示机制观察结果,不代表远端已发布或 release-skill 已完成领域验证。独立市场来源、真实市场安装和宿主调用仍是人工后续任务。
74
+ Foundation 三包精确依赖已发布的 0.15.0。新生成的 Kimi/CodeBuddy 同仓计划在 verify 阶段调用正式 `runPluginVerification`,把完整冻结载荷交给 Foundation,并记录最小的 `install-only` 观察收据。Kimi 映射为 `kimi-code`,CodeBuddy 映射为兼容的 `workbuddy`。`observed` 与 `payloadMatches` 只表示机制观察结果,不代表远端已发布或 release-skill 已完成领域验证。独立市场来源、真实市场安装和宿主调用仍是人工后续任务。
78
75
 
79
76
  <!-- release-skill:maturity:distribute-v1 -->
80
77
  <!-- release-skill:capability:distribute -->
@@ -128,7 +125,10 @@ Foundation 三包精确依赖已发布的 0.13.0。新生成的 Kimi/CodeBuddy
128
125
  > 可以写出项目目录、访问凭据、发起网络请求或执行远端发布。只有未配置这些进程,或已单独审计并
129
126
  > 显式确认其副作用时,才可以把 `prepare` 视为”仅本地”。生产发布使用
130
127
  > `ship --target-version <ver> → ship --approve --actor <name>`。
131
- > `ship` 自动执行 hooks 和门禁,唯一的人工门禁是计划批准。
128
+ > 正常发布级流程只有一次人工批准:批准冻结计划。
129
+ > 这里的“唯一”仅指正常发布级流程。
130
+ > 有效 `requiresApproval: true` 的 postPublish hook 仍须等待独立 checkpoint 批准;
131
+ > 该批准绑定计划摘要与 hook id,有效期最长 24 小时。
132
132
  > Kimi/CodeBuddy 的同仓发布先由 Foundation 在新鲜本地目录观察完整冻结载荷。
133
133
  > 真实市场安装和宿主调用仍是非阻塞的人工后续任务。
134
134
 
@@ -184,9 +184,9 @@ CodeBuddy、Codex 和 Kimi Code 的完整命令见 [INSTALL.zh-CN.md](INSTALL.zh
184
184
 
185
185
  ### 主流程
186
186
 
187
- 日常发布优先使用可恢复的快速路径。它会持久化所有权威文件路径,正常流程只需
188
- 一次可读的冻结计划批准。`ship` 自动执行配置中的 hooks 和验证门禁,不进入
189
- hook 授权等待态。Kimi/CodeBuddy 的同仓发布先由 Foundation 在新鲜本地目录
187
+ 日常发布优先使用可恢复的快速路径。它会持久化所有权威文件路径。
188
+ 冻结计划批准是正常发布级流程的唯一批准门。`ship` 自动执行配置中的 hooks 和验证门禁,不进入
189
+ hook 授权等待态。受限的 postPublish hook 仍须独立批准,计划批准不包含该 checkpoint。Kimi/CodeBuddy 的同仓发布先由 Foundation 在新鲜本地目录
190
190
  观察完整冻结载荷。真实市场安装和宿主调用仍是发布完成后的非阻塞人工后续任务,
191
191
  系统不核验其完成结果。
192
192
 
@@ -306,6 +306,7 @@ ACTOR=your-name
306
306
  --plan "$PLAN_PATH" --approval "$APPROVAL_PATH" --json)
307
307
  PUBLISH_RUN_PATH=$(printf '%s\n' "$PUBLISH_JSON" | jq -r '.runPath')
308
308
  ```
309
+ 持有合法批准的 production plan 时可以直接进入 `publish`;`route` 只是工作流建议。`publish` 仍要求计划、批准、冻结摘要与制品身份、远端预检,并在检查点失败时保持 fail-closed 的 `PARTIAL` 规则。
309
310
  `PUBLISHED` **不是**终态。
310
311
  9. **verify** — 消费者安装检查:
311
312
  ```bash
@@ -587,7 +588,7 @@ postPublish:
587
588
  envAllowlist: [CI]
588
589
  ```
589
590
 
590
- `requiresApproval: true` 的 hook 停留在 `AWAITING_APPROVAL`,直到 checkpoint 批准被铸造并消费。批准记录绑定 plan digest 与 hook id,24 小时后过期:
591
+ `requiresApproval: true` 的 hook 停留在 `AWAITING_APPROVAL`,直到 checkpoint 批准被铸造并消费。批准记录绑定 plan digest 与 hook id,24 小时后过期。冻结计划批准不包含该 checkpoint 批准:
591
592
 
592
593
  ```bash
593
594
  release-skill approve --plan "$PLAN_PATH" --hook hub-entry-proposal --actor "$ACTOR" --json
@@ -621,9 +622,10 @@ release-skill ship --root "$PROJECT" --hook-approval "$HOOK_APPROVAL_PATH" --jso
621
622
  每个适配器闭包都自带 CLI、skills 和 schemas 副本,安装后无需外部依赖即可运行。Claude/Codex 验证是自动化的;Kimi Code 和 CodeBuddy/WorkBuddy 以 `manualFollowUps` 返回并标记 `verifiedBySystem: false`,其完成情况不阻塞自动发布进入 `VERIFIED`。
622
623
 
623
624
  发布达到 `VERIFIED` 后,可选的 `release-finish` 工作流可以按冻结市场身份更新 Claude
624
- 和 Codex、驱动 Kimi TUI 并复查受管安装,或确认 CodeBuddy/WorkBuddy 已经精确匹配。
625
- 它要求用户明确同意,不改变发布状态;由于 CodeBuddy/WorkBuddy CLI 无法钉死冻结
626
- ref,不匹配时仍转人工处理。
625
+ 和 Codex,也可以在同一个受控 TUI 会话中迁移或更新 Kimi,并核对真实受管载荷。
626
+ 对于已有的 bundled-family CodeBuddy/WorkBuddy 条目,只有冻结标签与可变分支都解析到
627
+ 冻结提交时才允许更新。该流程要求用户明确同意,且不改变发布状态。目标缺失、使用
628
+ standalone 来源、远端不可访问或身份含糊时仍转人工处理,不修改宿主。
627
629
 
628
630
  `codebuddy-plugin` 分发可以可选地声明 `marketplace`(以及 `marketplaceSource`,即消费者添加市场所用的 URL)来覆盖默认统一市场 `artifact-skill-set`;未声明的分发保持默认值,冻结计划字节不变。
629
631
 
@@ -635,13 +637,13 @@ ref,不匹配时仍转人工处理。
635
637
  静态门禁会阻断,直到入口声明收窄为具体目标。
636
638
 
637
639
  <!-- release-skill:capability:unsupported-scope -->
638
- - **当前版本不含:** Hook cache v2(执行器身份收据,R-05)——当前版本保持 v1 内容绑定缓存,且从不导入旧运行证据;消费者安装整树盘点(R-02)——只对声明文件做逐字节核对;真实宿主(Kimi/WorkBuddy)验证门禁——宿主验证仍是设计,本版本中不能产生 `PASS` 或 `VERIFIED`;
640
+ - **当前版本不含:** 消费者安装整树盘点(R-02)——当前版本只处理声明的公开表面和稳定隔离安装树记录;真实宿主(Kimi/WorkBuddy)验证门禁——宿主验证仍是非阻断的人工后续任务,不产生 `PASS` 或 `VERIFIED` 证据;
639
641
  - 不自动生成 README,不覆盖项目源文件;
640
642
  - 不自动合并冲突,也不要求回滚工作流;
641
643
  - 不声称已经替项目完成真实生产 canary,不声称已完成真实插件市场验证;
642
644
  - `prepare --online` 只观察 bound 前序基线;目标唯一性由 publish 全局预检完成;
643
645
  - 不覆盖已有 branch/tag/Release,不 unpublish npm;
644
- - 发布状态机不提供 Kimi 或 CodeBuddy/WorkBuddy marketplace 安装检查点——可选的 release-finish 可以在本机驱动并复查 Kimi,或确认 CodeBuddy/WorkBuddy 已经精确匹配,但这些结果不构成发布证据;
646
+ - 发布状态机不提供 Kimi 或 CodeBuddy/WorkBuddy marketplace 安装检查点——可选的 release-finish 可以在本机驱动并复查 Kimi,也可以在严格核对冻结身份后更新已有 CodeBuddy/WorkBuddy 条目,但这些结果不构成发布证据;
645
647
  - 不承诺 Windows 或广泛的跨平台原生写入;
646
648
  - 不会隐藏地 commit、push、打 tag、创建 Release 或发布包。
647
649
 
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "release-skill",
11
11
  "source": "./",
12
- "version": "0.9.0",
12
+ "version": "0.9.3",
13
13
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
14
14
  "author": {
15
15
  "name": "广州市风荷科技有限公司"