release-skill 0.1.10 → 0.2.0
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/.kimi-plugin/plugin.json +1 -1
- package/CHANGELOG.md +19 -0
- package/INSTALL.md +4 -4
- package/INSTALL.zh-CN.md +4 -4
- package/README.md +17 -32
- package/README.zh-CN.md +17 -25
- package/adapters/claude/.claude-plugin/marketplace.json +1 -1
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +2721 -1843
- package/adapters/claude/schemas/.render-manifest.json +8 -8
- package/adapters/claude/schemas/approval-record.schema.json +1 -1
- package/adapters/claude/schemas/release-plan.schema.json +6 -2
- package/adapters/claude/schemas/release-project.schema.json +14 -0
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/release-skill.bundle.mjs +2721 -1843
- package/adapters/codex/schemas/.render-manifest.json +8 -8
- package/adapters/codex/schemas/approval-record.schema.json +1 -1
- package/adapters/codex/schemas/release-plan.schema.json +6 -2
- package/adapters/codex/schemas/release-project.schema.json +14 -0
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +2721 -1843
- package/adapters/kimi/schemas/.render-manifest.json +8 -8
- package/adapters/kimi/schemas/approval-record.schema.json +1 -1
- package/adapters/kimi/schemas/release-plan.schema.json +6 -2
- package/adapters/kimi/schemas/release-project.schema.json +14 -0
- package/bin/release-skill-cli.mjs +3 -0
- package/bin/release-skill.bundle.mjs +2721 -1843
- package/package.json +8 -2
- package/references/.render-manifest.json +8 -8
- package/references/01-state-machine.md +5 -5
- package/references/02-project-config.md +1 -1
- package/references/05-evidence-and-errors.md +1 -1
- package/references/06-adapter-contract.md +41 -1
- package/schemas/.render-manifest.json +8 -8
- package/schemas/approval-record.schema.json +1 -1
- package/schemas/release-plan.schema.json +6 -2
- package/schemas/release-project.schema.json +14 -0
- package/scripts/sync-public-files.mjs +462 -0
- package/src/adapters/contract.mjs +60 -0
- package/src/adapters/plugin-marketplace.mjs +289 -736
- package/src/commands/prepare.mjs +195 -182
- package/src/commands/publish.mjs +438 -122
- package/src/commands/reconcile.mjs +369 -191
- package/src/commands/verify.mjs +13 -2
- package/src/core/approval.mjs +72 -45
- package/src/core/baseline.mjs +5 -0
- package/src/core/checkpoints.mjs +143 -0
- package/src/core/evidence.mjs +30 -3
- package/src/core/hook-cache.mjs +254 -0
- package/src/core/hooks.mjs +37 -1
- package/src/core/observe-retry.mjs +223 -0
- package/src/core/plan.mjs +162 -253
- package/src/platforms/kimi.mjs +514 -0
- package/src/platforms/registry.mjs +393 -0
- package/src/producers/build-adapters.mjs +14 -22
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "release-skill",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
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.
|
|
22
|
+
"Prepare a release plan for version 0.2.0.",
|
|
23
23
|
"Help me understand the release workflow."
|
|
24
24
|
]
|
|
25
25
|
}
|
package/.kimi-plugin/plugin.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
<!-- release-skill:changelog:start version=0.2.0 locale=en baseline=sha256:cc9236e620cdb2d9eef6fede00c54095bf0cc0ccdfeb9c1e584f063ff3af7e23 -->
|
|
4
|
+
## [0.2.0] - 2026-07-25
|
|
5
|
+
|
|
6
|
+
v0.2.0 is a hardening release that improves publish reliability, digest reproducibility, version management, and platform registry data-driven architecture. Nine hardening tasks are completed: observe retry backoff, digest decoupling with planVersion 2, declared-manifest payload contract, single-source versioning, real CLI contract tests, incremental hook caching, tiered parallel checkpoint execution, observe-before-execute idempotent skip, and platform registry data-driven architecture. The npm package name (`release-skill`), publishing identity (`publisher: mzdbxqh`), public repository (`ifoohoo/release-skill`), and corporate maintainer remain unchanged.
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- **Observe retry backoff (`observeWithRetry`)**: post-execute observe in publish/reconcile now uses bounded exponential backoff for transient failures. Transient classification is propagating — retries only on transient errors (network timeouts, 5xx); CONFLICTING errors are never retried. Marketplace retry window is clamped to action `timeoutMs`. This resolves intermittent PARTIAL failures caused by transient observe timeouts on real networks.
|
|
11
|
+
- **Digest decoupling with planVersion 2**: plan fields split into binding layer (frozen artifacts, actions, versions, config) vs record layer (baseline, createdAt, status). Frozen commit timestamp derived from `headCommit` for reproducible digests. Approval no longer invalidated by tree/workspace digest drift (v2 plans); baseline check demoted to evidence warning. v1 legacy behavior preserved byte-for-byte (golden-value tested).
|
|
12
|
+
- **Declared-manifest payload contract for marketplace installs**: replace whole-tree byte equality with declared-manifest comparison. Authority entries must exist and match byte-for-byte in the install dir; host-added files are recorded (`extraInstalledPaths`, capped) instead of failing. Legacy plans without `payloadContract` keep exact whole-tree semantics. `consumerTransportExclusions` deprecated (legacy path only).
|
|
13
|
+
- **Single-source versioning with `sync-version` script**: `package.json` version is now the sole handwritten source. New `sync-version.mjs` propagates it to plugin manifests, marketplace.json, README boundary lines, and INSTALL docs (idempotent, `--check` mode, defensive whitelist). `smokeExpectedJson.version` is injected at runtime from `targetVersion`, ending the bump-invalidates-plan loop. docs hook now runs `check-docs-drift.mjs` (render check + sync-version check). Hardcoded version literals in tests replaced with dynamic reads.
|
|
14
|
+
- **Real CLI contract tests for claude/codex/kimi adapters**: isolated-HOME contract tests asserting adapter assumptions against real CLI protocol shapes (`list --json` output forms, subcommand existence), gated by `RELEASE_SKILL_LIVE_CLI=1` with skip-not-fail semantics. Static contract locks in 'kimi has no scriptable install' to prevent fabricated CLI commands from regressing silently.
|
|
15
|
+
- **Incremental hook caching for prepare**: hooks can declare `cacheable`+`cacheInputs`; results cached under `.release-skill/cache/hooks/<name>/<key>.json` keyed by hook config and input content hashes. Failures never cached; hits skip execution but not authorization gates; `--no-hook-cache` escape hatch. Cache dir registered in baseline control-plane exclusions and gitignore. test/typecheck hooks cached in this project: second prepare drops to ~2s with test hook served from cache.
|
|
16
|
+
- **Tiered parallel checkpoint execution for publish**: publish checkpoints grouped into hard-coded `TIER_TABLE` layers. Layers run sequentially, actions within a layer run concurrently with `allSettled` semantics (no fail-fast, successes preserved). State persistence moves to per-layer snapshots keeping the appendRunState hash chain intact; crash recovery verified via SIGKILL-mid-tier integration test. Evidence appends serialized through a mutex chain with sequence starting at 1 and tier info in `details.tier`.
|
|
17
|
+
- **Observe-before-execute idempotent skip**: publish each checkpoint execute now has a single read-only pre-observe. Four-way classification: CONSISTENT→SKIPPED / MISSING→execute / CONFLICTING→FAILED / not observable→execute. Two-layer preflight shares `classifyPreObservation` single source (global Safety Gate 10 arbitration). SKIPPED downstream adaptation: layer folding recognizes success, three `every` checks expanded to SUCCEEDED||SKIPPED, `buildPersistedState` maps skipped, TOCTOU as usual.
|
|
18
|
+
- **Platform registry data-driven architecture**: new `src/platforms/registry.mjs` with `PLATFORMS`/`getPlatform`/`assertRegistry` module self-validation. Three platforms complete description (§3.4 matrix full dimensions) + pure strategy functions. Golden tests 12 cases solidify three platforms execute/observe/list current behavior. `src/producers/build-adapters.mjs` PLATFORMS now derived from registry; `scripts/build-adapters.mjs` duplicate platform table removed for single-source. `build:adapters:check` byte-zero diff (zero behavior change strong evidence).
|
|
19
|
+
<!-- release-skill:changelog:end version=0.2.0 locale=en -->
|
|
20
|
+
|
|
21
|
+
|
|
3
22
|
<!-- release-skill:changelog:start version=0.1.10 locale=en baseline=sha256:ec4dbf3f44f1295d9af20e0fbf1ced4341d9b65d0c93598104e228244e33fa2b -->
|
|
4
23
|
## [0.1.10] - 2026-07-24
|
|
5
24
|
|
package/INSTALL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[简体中文](INSTALL.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.
|
|
5
|
+
<!-- release-skill:release-version: 0.2.0 -->
|
|
6
6
|
## Prerequisites
|
|
7
7
|
|
|
8
8
|
- Node.js 22.0.0 or later
|
|
@@ -68,7 +68,7 @@ as a version-pinned **manual** install plus trusted observation/attestation:
|
|
|
68
68
|
default branch), confirm the trust prompt, then reload:
|
|
69
69
|
|
|
70
70
|
```
|
|
71
|
-
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.
|
|
71
|
+
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.0
|
|
72
72
|
/plugins reload
|
|
73
73
|
```
|
|
74
74
|
|
|
@@ -83,10 +83,10 @@ as a version-pinned **manual** install plus trusted observation/attestation:
|
|
|
83
83
|
{
|
|
84
84
|
"consumer": "kimi",
|
|
85
85
|
"plugin": "release-skill",
|
|
86
|
-
"version": "0.
|
|
86
|
+
"version": "0.2.0",
|
|
87
87
|
"entrySkill": "release-help",
|
|
88
88
|
"repo": "ifoohoo/release-skill",
|
|
89
|
-
"ref": "release-skill-v0.
|
|
89
|
+
"ref": "release-skill-v0.2.0",
|
|
90
90
|
"installPath": "<kimiCodeHome>/plugins/managed/release-skill",
|
|
91
91
|
"planDigest": "<64-hex frozen plan digest>",
|
|
92
92
|
"payloadDigest": "<64-hex frozen snapshot payload digest>",
|
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.
|
|
5
|
+
<!-- release-skill:release-version: 0.2.0 -->
|
|
6
6
|
## 前置条件
|
|
7
7
|
|
|
8
8
|
- Node.js 22.0.0 或更高版本
|
|
@@ -62,7 +62,7 @@ release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观
|
|
|
62
62
|
它会安装最新 release 或默认分支),确认信任提示后重新加载:
|
|
63
63
|
|
|
64
64
|
```
|
|
65
|
-
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.
|
|
65
|
+
/plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.2.0
|
|
66
66
|
/plugins reload
|
|
67
67
|
```
|
|
68
68
|
|
|
@@ -76,10 +76,10 @@ release-skill 把 Kimi 安装建模为“版本钉死的手动安装 + 可信观
|
|
|
76
76
|
{
|
|
77
77
|
"consumer": "kimi",
|
|
78
78
|
"plugin": "release-skill",
|
|
79
|
-
"version": "0.
|
|
79
|
+
"version": "0.2.0",
|
|
80
80
|
"entrySkill": "release-help",
|
|
81
81
|
"repo": "ifoohoo/release-skill",
|
|
82
|
-
"ref": "release-skill-v0.
|
|
82
|
+
"ref": "release-skill-v0.2.0",
|
|
83
83
|
"installPath": "<kimiCodeHome>/plugins/managed/release-skill",
|
|
84
84
|
"planDigest": "<64 位十六进制冻结计划摘要>",
|
|
85
85
|
"payloadDigest": "<64 位十六进制冻结快照载荷摘要>",
|
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.
|
|
5
|
+
<!-- release-skill:release-version: 0.2.0 -->
|
|
6
6
|
Release preparation for Claude Code, 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,
|
|
@@ -11,40 +11,25 @@ reviewed artifacts first and publishes those same artifacts later; it does not
|
|
|
11
11
|
regenerate a README or re-pack the live workspace at the last step.
|
|
12
12
|
|
|
13
13
|
<!-- release-skill:managed:start id=latest-release -->
|
|
14
|
-
**0.
|
|
15
|
-
|
|
16
|
-
v0.
|
|
17
|
-
|
|
18
|
-
**
|
|
19
|
-
|
|
20
|
-
- **
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
against a real flow-architect install: the installed tree is byte-identical
|
|
30
|
-
to the frozen snapshot except for the migrated-command-skills directory.
|
|
31
|
-
Already-frozen plans reconcile unchanged because the sealed digest, plan
|
|
32
|
-
schema, and prepare-side freezing are untouched.
|
|
33
|
-
- **Multi-segment snapshot exclusions, fail-closed**:
|
|
34
|
-
`computeFrozenSnapshot`'s `excludeRootEntries` now accepts multi-segment
|
|
35
|
-
relative path prefixes naming an exact excluded subtree (required for the
|
|
36
|
-
`.codex-plugin/migrated-command-skills` exemption); single-segment entries
|
|
37
|
-
keep the historical root-only matching. Malformed entries (non-string,
|
|
38
|
-
absolute, `..`, backslash) fail closed: a bad exclusion list is a caller
|
|
39
|
-
bug, not transport metadata.
|
|
40
|
-
- **Regression coverage**: new protocol-level tests cover the root-layout
|
|
41
|
-
codex execute→observe→verify cycle with the CLI-generated
|
|
42
|
-
migrated-command-skills tree present, including byte-tamper and extra-file
|
|
43
|
-
negatives that must still fail closed.
|
|
14
|
+
**0.2.0** (2026-07-25)
|
|
15
|
+
|
|
16
|
+
v0.2.0 is a hardening release that improves publish reliability, digest reproducibility, version management, and platform registry data-driven architecture. Nine hardening tasks are completed: observe retry backoff, digest decoupling with planVersion 2, declared-manifest payload contract, single-source versioning, real CLI contract tests, incremental hook caching, tiered parallel checkpoint execution, observe-before-execute idempotent skip, and platform registry data-driven architecture. The npm package name (`release-skill`), publishing identity (`publisher: mzdbxqh`), public repository (`ifoohoo/release-skill`), and corporate maintainer remain unchanged.
|
|
17
|
+
|
|
18
|
+
**Added**
|
|
19
|
+
|
|
20
|
+
- **Observe retry backoff (`observeWithRetry`)**: post-execute observe in publish/reconcile now uses bounded exponential backoff for transient failures. Transient classification is propagating — retries only on transient errors (network timeouts, 5xx); CONFLICTING errors are never retried. Marketplace retry window is clamped to action `timeoutMs`. This resolves intermittent PARTIAL failures caused by transient observe timeouts on real networks.
|
|
21
|
+
- **Digest decoupling with planVersion 2**: plan fields split into binding layer (frozen artifacts, actions, versions, config) vs record layer (baseline, createdAt, status). Frozen commit timestamp derived from `headCommit` for reproducible digests. Approval no longer invalidated by tree/workspace digest drift (v2 plans); baseline check demoted to evidence warning. v1 legacy behavior preserved byte-for-byte (golden-value tested).
|
|
22
|
+
- **Declared-manifest payload contract for marketplace installs**: replace whole-tree byte equality with declared-manifest comparison. Authority entries must exist and match byte-for-byte in the install dir; host-added files are recorded (`extraInstalledPaths`, capped) instead of failing. Legacy plans without `payloadContract` keep exact whole-tree semantics. `consumerTransportExclusions` deprecated (legacy path only).
|
|
23
|
+
- **Single-source versioning with `sync-version` script**: `package.json` version is now the sole handwritten source. New `sync-version.mjs` propagates it to plugin manifests, marketplace.json, README boundary lines, and INSTALL docs (idempotent, `--check` mode, defensive whitelist). `smokeExpectedJson.version` is injected at runtime from `targetVersion`, ending the bump-invalidates-plan loop. docs hook now runs `check-docs-drift.mjs` (render check + sync-version check). Hardcoded version literals in tests replaced with dynamic reads.
|
|
24
|
+
- **Real CLI contract tests for claude/codex/kimi adapters**: isolated-HOME contract tests asserting adapter assumptions against real CLI protocol shapes (`list --json` output forms, subcommand existence), gated by `RELEASE_SKILL_LIVE_CLI=1` with skip-not-fail semantics. Static contract locks in 'kimi has no scriptable install' to prevent fabricated CLI commands from regressing silently.
|
|
25
|
+
- **Incremental hook caching for prepare**: hooks can declare `cacheable`+`cacheInputs`; results cached under `.release-skill/cache/hooks/<name>/<key>.json` keyed by hook config and input content hashes. Failures never cached; hits skip execution but not authorization gates; `--no-hook-cache` escape hatch. Cache dir registered in baseline control-plane exclusions and gitignore. test/typecheck hooks cached in this project: second prepare drops to ~2s with test hook served from cache.
|
|
26
|
+
- **Tiered parallel checkpoint execution for publish**: publish checkpoints grouped into hard-coded `TIER_TABLE` layers. Layers run sequentially, actions within a layer run concurrently with `allSettled` semantics (no fail-fast, successes preserved). State persistence moves to per-layer snapshots keeping the appendRunState hash chain intact; crash recovery verified via SIGKILL-mid-tier integration test. Evidence appends serialized through a mutex chain with sequence starting at 1 and tier info in `details.tier`.
|
|
27
|
+
- **Observe-before-execute idempotent skip**: publish each checkpoint execute now has a single read-only pre-observe. Four-way classification: CONSISTENT→SKIPPED / MISSING→execute / CONFLICTING→FAILED / not observable→execute. Two-layer preflight shares `classifyPreObservation` single source (global Safety Gate 10 arbitration). SKIPPED downstream adaptation: layer folding recognizes success, three `every` checks expanded to SUCCEEDED||SKIPPED, `buildPersistedState` maps skipped, TOCTOU as usual.
|
|
28
|
+
- **Platform registry data-driven architecture**: new `src/platforms/registry.mjs` with `PLATFORMS`/`getPlatform`/`assertRegistry` module self-validation. Three platforms complete description (§3.4 matrix full dimensions) + pure strategy functions. Golden tests 12 cases solidify three platforms execute/observe/list current behavior. `src/producers/build-adapters.mjs` PLATFORMS now derived from registry; `scripts/build-adapters.mjs` duplicate platform table removed for single-source. `build:adapters:check` byte-zero diff (zero behavior change strong evidence).
|
|
44
29
|
<!-- release-skill:managed:end id=latest-release -->
|
|
45
30
|
|
|
46
31
|
<!-- release-skill:capability:external-write-boundary -->
|
|
47
|
-
> **Current boundary:** v0.
|
|
32
|
+
> **Current boundary:** v0.2.0 is the current release (v0.1.9 previously held
|
|
48
33
|
> published status before the codex migrated-command-skills fix was added).
|
|
49
34
|
> v0.1.1 completed a real production release to GitHub and npm — the first
|
|
50
35
|
> production-verified milestone — followed by
|
package/README.zh-CN.md
CHANGED
|
@@ -2,39 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) · 安装指南:[中文](INSTALL.zh-CN.md) / [English](INSTALL.md)
|
|
4
4
|
|
|
5
|
-
<!-- release-skill:release-version: 0.
|
|
5
|
+
<!-- release-skill:release-version: 0.2.0 -->
|
|
6
6
|
面向 Claude Code、Codex 和 Kimi Code 的发布准备工具,完整保留人工维护的文件内容。
|
|
7
7
|
|
|
8
8
|
release-skill 帮助维护者回答三个问题:准备发布什么、还有哪些检查未通过、最终发布的内容是什么。它先冻结并供人工审阅,再从同一份冻结产物发布,不会在最后一步重新生成 README、重新打包当前工作区或覆盖人工内容。
|
|
9
9
|
|
|
10
10
|
<!-- release-skill:managed:start id=latest-release -->
|
|
11
|
-
**0.
|
|
12
|
-
|
|
13
|
-
v0.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- **多段快照排除,失败关闭**:`computeFrozenSnapshot` 的
|
|
27
|
-
`excludeRootEntries` 现在接受多段相对路径前缀,命名一个精确排除的子树
|
|
28
|
-
(`.codex-plugin/migrated-command-skills` 豁免所必需);单段条目保持历史
|
|
29
|
-
的根直接子项匹配。畸形条目(非字符串、绝对路径、`..`、反斜杠)失败关闭:
|
|
30
|
-
错误的排除清单是调用方 bug,不是传输元数据。
|
|
31
|
-
- **回归覆盖**:新增协议级测试覆盖带 CLI 生成 migrated-command-skills 树的
|
|
32
|
-
根布局 codex execute→observe→verify 完整链路,包含必须仍然失败关闭的字节
|
|
33
|
-
篡改与多余文件负例。
|
|
11
|
+
**0.2.0** (2026-07-25)
|
|
12
|
+
|
|
13
|
+
v0.2.0 是一个硬化发布,提升发布可靠性、摘要可复现性、版本管理和平台注册表数据驱动架构。完成九个硬化任务:暂态重试退避、摘要解耦 planVersion 2、声明式清单载荷契约、版本单源、真实 CLI 契约测试、增量 hooks 缓存、分层并行检查点执行、observe-before-execute 幂等跳过、平台注册表数据化。npm 包名(`release-skill`)、发布身份(`publisher: mzdbxqh`)、公开仓库(`ifoohoo/release-skill`)与公司维护主体保持不变。
|
|
14
|
+
|
|
15
|
+
**新增**
|
|
16
|
+
|
|
17
|
+
- **暂态重试退避(`observeWithRetry`)**:publish/reconcile 的 execute 后 observe 现在对暂态失败使用有界指数退避。暂态分类具有传播性——仅对暂态错误(网络超时、5xx)重试;CONFLICTING 错误永不重试。市场重试窗口钳制到动作 `timeoutMs`。这解决了真实网络上因暂态 observe 超时导致的间歇性 PARTIAL 失败。
|
|
18
|
+
- **摘要解耦 planVersion 2**:计划字段拆分为绑定层(冻结制品、动作、版本、配置)与记录层(基线、创建时间、状态)。冻结提交时间戳从 `headCommit` 派生,确保摘要可复现。审批不再因树/工作区摘要漂移而失效(v2 计划);基线检查降级为证据警告。v1 遗留行为逐字节保留(黄金值测试)。
|
|
19
|
+
- **声明式清单载荷契约**:用声明式清单比较替换整树字节相等性。权威条目必须存在且在安装目录中逐字节匹配;主机添加的文件记录(`extraInstalledPaths`,有上限)而非失败。缺少 `payloadContract` 的遗留计划保持精确整树语义。`consumerTransportExclusions` 已弃用(仅遗留路径)。
|
|
20
|
+
- **版本单源 `sync-version` 脚本**:`package.json` 版本现在是唯一手写来源。新的 `sync-version.mjs` 将其传播到插件清单、marketplace.json、README 边界行和 INSTALL 文档(幂等、`--check` 模式、防御性白名单)。`smokeExpectedJson.version` 在运行时从 `targetVersion` 注入,结束 bump-invalidates-plan 循环。docs 钩子现在运行 `check-docs-drift.mjs`(render 检查 + sync-version 检查)。测试中的硬编码版本字面量替换为动态读取。
|
|
21
|
+
- **真实 CLI 契约测试**:隔离 HOME 的契约测试,针对真实 CLI 协议形状(`list --json` 输出形式、子命令存在性)断言适配器假设,由 `RELEASE_SKILL_LIVE_CLI=1` 门控,skip-not-fail 语义。静态契约锁定 'kimi 无脚本化安装',防止伪造的 CLI 命令静默回归。
|
|
22
|
+
- **增量 hooks 缓存**:hooks 可声明 `cacheable`+`cacheInputs`;结果缓存在 `.release-skill/cache/hooks/<name>/<key>.json`,按 hook 配置和输入内容哈希键控。失败永不缓存;命中跳过执行但不跳过授权门;`--no-hook-cache` 逃生舱。缓存目录注册到基线控制面排除和 gitignore。本项目的 test/typecheck hooks 已缓存:第二次 prepare 降至约 2 秒(test hook 从缓存服务)。
|
|
23
|
+
- **分层并行检查点执行**:publish 检查点分组为硬编码 `TIER_TABLE` 层。层顺序执行,层内动作并发执行,`allSettled` 语义(不快速失败,成功保留)。状态持久化移至每层快照,保持 appendRunState 哈希链完整;通过 SIGKILL-层中集成测试验证崩溃恢复。证据追加通过互斥链序列化,序列从 1 开始,`details.tier` 包含层信息。
|
|
24
|
+
- **observe-before-execute 幂等跳过**:publish 每个检查点 execute 前增加单发只读 pre-observe。四分类:CONSISTENT→SKIPPED / MISSING→execute / CONFLICTING→FAILED / 不可观察→execute。两层 preflight 共用 `classifyPreObservation` 单源(全局 Safety Gate 10 占用仲裁)。SKIPPED 下游适配:层折叠认成功、三处 `every` 扩展为 SUCCEEDED||SKIPPED、`buildPersistedState` 映射 skipped、TOCTOU 照常。
|
|
25
|
+
- **平台注册表数据驱动架构**:新增 `src/platforms/registry.mjs`,包含 `PLATFORMS`/`getPlatform`/`assertRegistry` 模块自校验。三平台完整描述(§3.4 矩阵全维度)+ 纯策略函数。黄金测试 12 用例固化三平台 execute/observe/list 现状行为。`src/producers/build-adapters.mjs` PLATFORMS 改从注册表派生;`scripts/build-adapters.mjs` 重复平台表删除同源导入。`build:adapters:check` 逐字节零 diff(行为零变化强证据)。
|
|
34
26
|
<!-- release-skill:managed:end id=latest-release -->
|
|
35
27
|
|
|
36
28
|
<!-- release-skill:capability:external-write-boundary -->
|
|
37
|
-
> **当前边界:** v0.
|
|
29
|
+
> **当前边界:** v0.2.0 是当前发布版本(v0.1.9 曾处于已发布、待独立验证状态)。
|
|
38
30
|
> v0.1.1 已完成 GitHub 与 npm 的
|
|
39
31
|
> 真实生产发布,是首次生产验证的历史里程碑,并从冻结 Git ref 完成精确 npm
|
|
40
32
|
> 安装及 Claude/Codex 消费者安装验证;“当前发布版本”与“首次生产验证里程碑”
|