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.
Files changed (58) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +2 -2
  4. package/.kimi-plugin/plugin.json +1 -1
  5. package/CHANGELOG.md +19 -0
  6. package/INSTALL.md +4 -4
  7. package/INSTALL.zh-CN.md +4 -4
  8. package/README.md +17 -32
  9. package/README.zh-CN.md +17 -25
  10. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  11. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  12. package/adapters/claude/bin/release-skill.bundle.mjs +2721 -1843
  13. package/adapters/claude/schemas/.render-manifest.json +8 -8
  14. package/adapters/claude/schemas/approval-record.schema.json +1 -1
  15. package/adapters/claude/schemas/release-plan.schema.json +6 -2
  16. package/adapters/claude/schemas/release-project.schema.json +14 -0
  17. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  18. package/adapters/codex/bin/release-skill.bundle.mjs +2721 -1843
  19. package/adapters/codex/schemas/.render-manifest.json +8 -8
  20. package/adapters/codex/schemas/approval-record.schema.json +1 -1
  21. package/adapters/codex/schemas/release-plan.schema.json +6 -2
  22. package/adapters/codex/schemas/release-project.schema.json +14 -0
  23. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  24. package/adapters/kimi/bin/release-skill.bundle.mjs +2721 -1843
  25. package/adapters/kimi/schemas/.render-manifest.json +8 -8
  26. package/adapters/kimi/schemas/approval-record.schema.json +1 -1
  27. package/adapters/kimi/schemas/release-plan.schema.json +6 -2
  28. package/adapters/kimi/schemas/release-project.schema.json +14 -0
  29. package/bin/release-skill-cli.mjs +3 -0
  30. package/bin/release-skill.bundle.mjs +2721 -1843
  31. package/package.json +8 -2
  32. package/references/.render-manifest.json +8 -8
  33. package/references/01-state-machine.md +5 -5
  34. package/references/02-project-config.md +1 -1
  35. package/references/05-evidence-and-errors.md +1 -1
  36. package/references/06-adapter-contract.md +41 -1
  37. package/schemas/.render-manifest.json +8 -8
  38. package/schemas/approval-record.schema.json +1 -1
  39. package/schemas/release-plan.schema.json +6 -2
  40. package/schemas/release-project.schema.json +14 -0
  41. package/scripts/sync-public-files.mjs +462 -0
  42. package/src/adapters/contract.mjs +60 -0
  43. package/src/adapters/plugin-marketplace.mjs +289 -736
  44. package/src/commands/prepare.mjs +195 -182
  45. package/src/commands/publish.mjs +438 -122
  46. package/src/commands/reconcile.mjs +369 -191
  47. package/src/commands/verify.mjs +13 -2
  48. package/src/core/approval.mjs +72 -45
  49. package/src/core/baseline.mjs +5 -0
  50. package/src/core/checkpoints.mjs +143 -0
  51. package/src/core/evidence.mjs +30 -3
  52. package/src/core/hook-cache.mjs +254 -0
  53. package/src/core/hooks.mjs +37 -1
  54. package/src/core/observe-retry.mjs +223 -0
  55. package/src/core/plan.mjs +162 -253
  56. package/src/platforms/kimi.mjs +514 -0
  57. package/src/platforms/registry.mjs +393 -0
  58. package/src/producers/build-adapters.mjs +14 -22
@@ -2,8 +2,8 @@
2
2
  "source": "schemas",
3
3
  "files": {
4
4
  "approval-record.schema.json": {
5
- "digest": "2ddac883435110e2c036cfadb00ce0c4d347a97d674b2c4ea9fcda3d72f81b8b",
6
- "bytes": 3135
5
+ "digest": "05b5a16d58372e4fdda625a472a4bb71439aa5db4e9813bf7f3d3cf2d39d144e",
6
+ "bytes": 3357
7
7
  },
8
8
  "artifact-lock.schema.json": {
9
9
  "digest": "6a5f4c826540b849571f173118bcbd778dfaceb4133034036ae565c3e9e353e5",
@@ -22,16 +22,16 @@
22
22
  "bytes": 2390
23
23
  },
24
24
  "release-plan.schema.json": {
25
- "digest": "69feff34b2fee517fd9ae89f576840c0abf331df9e9537f2798f62fab9a6720f",
26
- "bytes": 23091
25
+ "digest": "d7869cdb335618754eb787fe352c4c1775c799900f3bb926197c51359699a648",
26
+ "bytes": 24088
27
27
  },
28
28
  "release-project.schema.json": {
29
- "digest": "e9e3d090ee9c7a963e7346250328e30bf91a16a0962e5bc85deeab7c756c9e95",
30
- "bytes": 24329
29
+ "digest": "53efe202fc5e2bf63c8d846cf4d50648991163b270536c1450c4be44e45d4b93",
30
+ "bytes": 25761
31
31
  },
32
32
  "release-run.schema.json": {
33
- "digest": "74f087f8815f00997c6ad3bac033660b9b69de226a6f5c48a96194dba0fa872c",
34
- "bytes": 8917
33
+ "digest": "f453845fd2aab02c7b0812b1f62fd1ab7fa37104b8e752914906551c0e8c2637",
34
+ "bytes": 8959
35
35
  }
36
36
  }
37
37
  }
@@ -6,7 +6,6 @@
6
6
  "type": "object",
7
7
  "required": [
8
8
  "planDigest",
9
- "baseline",
10
9
  "approvedActions",
11
10
  "actor",
12
11
  "approvedAt",
@@ -25,6 +24,7 @@
25
24
  },
26
25
  "baseline": {
27
26
  "type": "object",
27
+ "description": "Workspace baseline captured at approval time. Optional record-layer audit data since planVersion 2 (validated structurally when present, never an approval binding); still required for v1 plans by validateApproval.",
28
28
  "required": ["gitTreeHash"],
29
29
  "additionalProperties": false,
30
30
  "properties": {
@@ -15,7 +15,11 @@
15
15
  "properties": {
16
16
  "planVersion": {
17
17
  "type": "integer",
18
- "const": 1
18
+ "enum": [
19
+ 1,
20
+ 2
21
+ ],
22
+ "description": "Plan format and digest-scoping version. 1: legacy (every field except the top-level digest binds; commitTimestamp must equal createdAt). 2: T1.2 digest layering (record-layer fields status/createdAt/baseline/per-action status are excluded from the plan digest; commitTimestamp is derived from the HEAD commit committer date)."
19
23
  },
20
24
  "status": {
21
25
  "type": "string",
@@ -242,7 +246,7 @@
242
246
  "commitTimestamp": {
243
247
  "type": "string",
244
248
  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+00:00$",
245
- "description": "Plan freeze timestamp sampled exactly once during production prepare, in canonical UTC second precision. Written verbatim to GIT_AUTHOR_DATE and GIT_COMMITTER_DATE of the frozen release commit, so it always equals the commit's %aI and %cI byte-for-byte, and must equal the plan's createdAt."
249
+ "description": "Frozen release commit timestamp in canonical UTC second precision. Written verbatim to GIT_AUTHOR_DATE and GIT_COMMITTER_DATE of the frozen release commit, so it always equals the commit's %aI and %cI byte-for-byte. v1 plans: the freeze timestamp sampled exactly once during production prepare, equal to the plan's createdAt. planVersion 2 plans: derived deterministically from the baseline headCommit's committer date, so identical sources freeze identical commits (not equal to createdAt, which remains the record-layer real clock)."
246
250
  },
247
251
  "parentCommit": {
248
252
  "type": "string",
@@ -651,6 +651,20 @@
651
651
  "pattern": "^[A-Z_][A-Z0-9_]*$"
652
652
  },
653
653
  "uniqueItems": true
654
+ },
655
+ "cacheable": {
656
+ "type": "boolean",
657
+ "description": "Opt this hook into the incremental result cache: when its cacheInputs fingerprint is unchanged and the last run succeeded, prepare replays the cached outcome instead of re-executing. Absence means the hook always runs in full. cacheable=true requires a non-empty cacheInputs (enforced at runtime)."
658
+ },
659
+ "cacheInputs": {
660
+ "type": "array",
661
+ "minItems": 1,
662
+ "items": {
663
+ "type": "string",
664
+ "minLength": 1
665
+ },
666
+ "uniqueItems": true,
667
+ "description": "Root-relative globs declaring the hook's full input set (source, scripts, config, lockfiles). The cache key fingerprints the content of every matched file; a glob that matches nothing fails closed. Must cover ALL inputs or the cache can return a false hit."
654
668
  }
655
669
  }
656
670
  },
@@ -205,6 +205,7 @@ Options:
205
205
  --ack-local-document-write Acknowledge the explicit local release-document write (docs refresh --write)
206
206
  --acknowledge-hook-side-effects Acknowledge unsandboxed legacy hook execution
207
207
  --acknowledge-gate-side-effects Acknowledge unsandboxed local verification gate execution
208
+ --no-hook-cache Force every prepare hook to run in full; neither read nor write the hook cache
208
209
  --json Output results as JSON
209
210
  --version Show version and exit
210
211
  -h, --help Show this help message and exit
@@ -476,6 +477,7 @@ if (command === 'prepare') {
476
477
 
477
478
  const hooksAuthorized = args.includes('--acknowledge-hook-side-effects');
478
479
  const verificationGatesAuthorized = args.includes('--acknowledge-gate-side-effects');
480
+ const hookCache = !args.includes('--no-hook-cache');
479
481
  const production = args.includes('--production');
480
482
  const outputIdx = args.indexOf('--output');
481
483
  const output = outputIdx !== -1 && args[outputIdx + 1] ? resolve(args[outputIdx + 1]) : undefined;
@@ -491,6 +493,7 @@ if (command === 'prepare') {
491
493
  offline,
492
494
  hooksAuthorized,
493
495
  verificationGatesAuthorized,
496
+ hookCache,
494
497
  production,
495
498
  output,
496
499
  runDir,