release-skill 0.9.17 → 0.9.19

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 (266) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +2 -2
  4. package/.cursor-plugin/plugin.json +10 -0
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/.qoder-plugin/plugin.json +1 -1
  7. package/CHANGELOG.md +70 -2
  8. package/INSTALL.md +66 -9
  9. package/INSTALL.zh-CN.md +49 -8
  10. package/README.md +41 -20
  11. package/README.zh-CN.md +31 -19
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/consumer-contract-vectors.json +7 -7
  14. package/adapters/claude/bin/error-codes.json +1 -1
  15. package/adapters/claude/bin/foundation-resource-binding.json +1 -1
  16. package/adapters/claude/bin/prebuild-manifest.json +8 -4
  17. package/adapters/claude/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  18. package/adapters/claude/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  19. package/adapters/claude/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  20. package/adapters/claude/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  21. package/adapters/claude/bin/registry.json +1 -1
  22. package/adapters/claude/bin/release-skill.bundle.mjs +4425 -1519
  23. package/adapters/claude/bin/rules.json +1 -1
  24. package/adapters/claude/data/hosts/cursor/host-descriptor.json +34 -0
  25. package/adapters/claude/data/hosts/registry.json +1 -0
  26. package/adapters/claude/schemas/release-plan.schema.json +255 -25
  27. package/adapters/claude/schemas/release-project.schema.json +228 -26
  28. package/adapters/claude/skills/release-finish/SKILL.md +46 -7
  29. package/adapters/claude/skills/release-help/SKILL.md +47 -103
  30. package/adapters/claude/skills/release-verify/SKILL.md +2 -2
  31. package/adapters/claude/src/schemas/host-descriptor.schema.json +9 -2
  32. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  33. package/adapters/codex/bin/consumer-contract-vectors.json +7 -7
  34. package/adapters/codex/bin/error-codes.json +1 -1
  35. package/adapters/codex/bin/foundation-resource-binding.json +1 -1
  36. package/adapters/codex/bin/prebuild-manifest.json +8 -4
  37. package/adapters/codex/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  38. package/adapters/codex/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  39. package/adapters/codex/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  40. package/adapters/codex/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  41. package/adapters/codex/bin/registry.json +1 -1
  42. package/adapters/codex/bin/release-skill.bundle.mjs +4425 -1519
  43. package/adapters/codex/bin/rules.json +1 -1
  44. package/adapters/codex/data/hosts/cursor/host-descriptor.json +34 -0
  45. package/adapters/codex/data/hosts/registry.json +1 -0
  46. package/adapters/codex/schemas/release-plan.schema.json +255 -25
  47. package/adapters/codex/schemas/release-project.schema.json +228 -26
  48. package/adapters/codex/skills/release-finish/SKILL.md +46 -7
  49. package/adapters/codex/skills/release-help/SKILL.md +49 -105
  50. package/adapters/codex/skills/release-verify/SKILL.md +2 -2
  51. package/adapters/codex/src/schemas/host-descriptor.schema.json +9 -2
  52. package/adapters/cursor/.cursor-plugin/plugin.json +10 -0
  53. package/adapters/cursor/bin/consumer-contract-vectors.json +110 -0
  54. package/adapters/cursor/bin/error-codes.json +161 -0
  55. package/adapters/cursor/bin/foundation-legal/skill-family-contracts/LICENSE +202 -0
  56. package/adapters/cursor/bin/foundation-legal/skill-family-contracts/NOTICE +10 -0
  57. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/LICENSE +202 -0
  58. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/NOTICE +10 -0
  59. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/THIRD_PARTY_NOTICES +142 -0
  60. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/LICENSE +202 -0
  61. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/NOTICE +10 -0
  62. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/native-NOTICE +2 -0
  63. package/adapters/cursor/bin/foundation-resource-binding.json +1 -0
  64. package/adapters/cursor/bin/kernel-protocol.json +60 -0
  65. package/adapters/cursor/bin/license-texts/Apache-2.0.txt +201 -0
  66. package/adapters/cursor/bin/license-texts/MIT.txt +21 -0
  67. package/adapters/cursor/bin/prebuild-manifest.json +83 -0
  68. package/adapters/cursor/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  69. package/adapters/cursor/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  70. package/adapters/cursor/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  71. package/adapters/cursor/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  72. package/adapters/cursor/bin/registry.json +347 -0
  73. package/adapters/cursor/bin/release-skill-local-finish.mjs +4 -0
  74. package/adapters/cursor/bin/release-skill.bundle.mjs +152352 -0
  75. package/adapters/cursor/bin/release-skill.mjs +54 -0
  76. package/adapters/cursor/bin/rules.json +104 -0
  77. package/adapters/cursor/bin/schemas/consumer-contract-vector.schema.json +149 -0
  78. package/adapters/cursor/data/hosts/claude/host-descriptor.json +45 -0
  79. package/adapters/cursor/data/hosts/codebuddy/host-descriptor.json +26 -0
  80. package/adapters/cursor/data/hosts/codex/host-descriptor.json +45 -0
  81. package/adapters/cursor/data/hosts/cursor/host-descriptor.json +34 -0
  82. package/adapters/cursor/data/hosts/deepseek-harness/host-descriptor.json +23 -0
  83. package/adapters/cursor/data/hosts/kimi-code/host-descriptor.json +36 -0
  84. package/adapters/cursor/data/hosts/qoder/host-descriptor.json +26 -0
  85. package/adapters/cursor/data/hosts/registry.json +14 -0
  86. package/adapters/cursor/data/hosts/workbuddy/host-descriptor.json +34 -0
  87. package/adapters/cursor/data/licensing/registry.json +211 -0
  88. package/adapters/cursor/data/licensing/schema.json +207 -0
  89. package/adapters/cursor/native/safe-write/binding.gyp +41 -0
  90. package/adapters/cursor/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
  91. package/adapters/cursor/native/safe-write/prebuilds.json +24 -0
  92. package/adapters/cursor/native/safe-write/src/safe_write.cc +2032 -0
  93. package/adapters/cursor/schemas/.render-manifest.json +41 -0
  94. package/adapters/cursor/schemas/approval-record.schema.json +115 -0
  95. package/adapters/cursor/schemas/artifact-lock.schema.json +111 -0
  96. package/adapters/cursor/schemas/artifact-plan.schema.json +52 -0
  97. package/adapters/cursor/schemas/artifact-policy.schema.json +76 -0
  98. package/adapters/cursor/schemas/evidence-event-v2.schema.json +164 -0
  99. package/adapters/cursor/schemas/evidence-event.schema.json +89 -0
  100. package/adapters/cursor/schemas/postpublish-approval-record.schema.json +47 -0
  101. package/adapters/cursor/schemas/release-plan.schema.json +2226 -0
  102. package/adapters/cursor/schemas/release-project.schema.json +1815 -0
  103. package/adapters/cursor/schemas/release-run.schema.json +777 -0
  104. package/adapters/cursor/skills/release-assess/SKILL.md +61 -0
  105. package/adapters/cursor/skills/release-config/SKILL.md +151 -0
  106. package/adapters/cursor/skills/release-docs/SKILL.md +120 -0
  107. package/adapters/cursor/skills/release-finish/SKILL.md +181 -0
  108. package/adapters/cursor/skills/release-help/SKILL.md +98 -0
  109. package/adapters/cursor/skills/release-marketplace/SKILL.md +157 -0
  110. package/adapters/cursor/skills/release-prepare/SKILL.md +136 -0
  111. package/adapters/cursor/skills/release-publish/SKILL.md +92 -0
  112. package/adapters/cursor/skills/release-reconcile/SKILL.md +81 -0
  113. package/adapters/cursor/skills/release-setup/SKILL.md +132 -0
  114. package/adapters/cursor/skills/release-verify/SKILL.md +110 -0
  115. package/adapters/cursor/src/schemas/adapter-build-manifest.schema.json +41 -0
  116. package/adapters/cursor/src/schemas/adapter-peer-verification-request.schema.json +54 -0
  117. package/adapters/cursor/src/schemas/adapter-peer-verification-result.schema.json +54 -0
  118. package/adapters/cursor/src/schemas/adapter-source.schema.json +47 -0
  119. package/adapters/cursor/src/schemas/audit-baseline-pin.schema.json +163 -0
  120. package/adapters/cursor/src/schemas/declared-read-surface-result.schema.json +61 -0
  121. package/adapters/cursor/src/schemas/engineering-baseline.schema.json +77 -0
  122. package/adapters/cursor/src/schemas/executable-identity-observation.schema.json +162 -0
  123. package/adapters/cursor/src/schemas/filesystem-root-binding.schema.json +14 -0
  124. package/adapters/cursor/src/schemas/filesystem-tree-observation.schema.json +71 -0
  125. package/adapters/cursor/src/schemas/fixed-set-publication-manifest.schema.json +108 -0
  126. package/adapters/cursor/src/schemas/fixed-set-publication-receipt.schema.json +148 -0
  127. package/adapters/cursor/src/schemas/host-capability-fact.schema.json +31 -0
  128. package/adapters/cursor/src/schemas/host-descriptor.schema.json +144 -0
  129. package/adapters/cursor/src/schemas/host-operation-plan.schema.json +57 -0
  130. package/adapters/cursor/src/schemas/host-operation-receipt.schema.json +81 -0
  131. package/adapters/cursor/src/schemas/host-probe-result.schema.json +30 -0
  132. package/adapters/cursor/src/schemas/host-registry.schema.json +18 -0
  133. package/adapters/cursor/src/schemas/host-verification-request.schema.json +67 -0
  134. package/adapters/cursor/src/schemas/host-verification-result.schema.json +149 -0
  135. package/adapters/cursor/src/schemas/managed-file-lock.schema.json +77 -0
  136. package/adapters/cursor/src/schemas/migration-manifest.schema.json +412 -0
  137. package/adapters/cursor/src/schemas/observation-scope.schema.json +91 -0
  138. package/adapters/cursor/src/schemas/operation-request.schema.json +58 -0
  139. package/adapters/cursor/src/schemas/operation-result.schema.json +130 -0
  140. package/adapters/cursor/src/schemas/platform-difference-registry.schema.json +110 -0
  141. package/adapters/cursor/src/schemas/plugin-verification-request.schema.json +499 -0
  142. package/adapters/cursor/src/schemas/plugin-verification-result.schema.json +1217 -0
  143. package/adapters/cursor/src/schemas/profile-adoption-declaration.schema.json +111 -0
  144. package/adapters/cursor/src/schemas/profile-descriptor.schema.json +99 -0
  145. package/adapters/cursor/src/schemas/project-manifest.schema.json +67 -0
  146. package/adapters/cursor/src/schemas/project-profile.schema.json +25 -0
  147. package/adapters/cursor/src/schemas/public-boundary-declaration.schema.json +73 -0
  148. package/adapters/cursor/src/schemas/report-binding.schema.json +42 -0
  149. package/adapters/cursor/src/schemas/report-model.schema.json +308 -0
  150. package/adapters/cursor/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  151. package/adapters/cursor/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
  152. package/adapters/cursor/src/schemas/source-authority-receipt.schema.json +31 -0
  153. package/adapters/cursor/src/schemas/state-event-envelope.schema.json +38 -0
  154. package/adapters/cursor/src/schemas/state-snapshot-metadata.schema.json +25 -0
  155. package/adapters/cursor/src/schemas/structured-scan-policy.schema.json +97 -0
  156. package/adapters/cursor/src/schemas/surface-scan-policy.schema.json +42 -0
  157. package/adapters/cursor/src/schemas/timeout-policy.schema.json +24 -0
  158. package/adapters/cursor/src/schemas/token-estimate-record.schema.json +75 -0
  159. package/adapters/cursor/src/schemas/token-estimate-result.schema.json +43 -0
  160. package/adapters/cursor/src/schemas/watchdog-termination-envelope.schema.json +156 -0
  161. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  162. package/adapters/kimi/bin/consumer-contract-vectors.json +7 -7
  163. package/adapters/kimi/bin/error-codes.json +1 -1
  164. package/adapters/kimi/bin/foundation-resource-binding.json +1 -1
  165. package/adapters/kimi/bin/prebuild-manifest.json +8 -4
  166. package/adapters/kimi/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  167. package/adapters/kimi/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  168. package/adapters/kimi/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  169. package/adapters/kimi/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  170. package/adapters/kimi/bin/registry.json +1 -1
  171. package/adapters/kimi/bin/release-skill.bundle.mjs +4425 -1519
  172. package/adapters/kimi/bin/rules.json +1 -1
  173. package/adapters/kimi/data/hosts/cursor/host-descriptor.json +34 -0
  174. package/adapters/kimi/data/hosts/registry.json +1 -0
  175. package/adapters/kimi/schemas/release-plan.schema.json +255 -25
  176. package/adapters/kimi/schemas/release-project.schema.json +228 -26
  177. package/adapters/kimi/skills/release-finish/SKILL.md +46 -7
  178. package/adapters/kimi/skills/release-help/SKILL.md +49 -105
  179. package/adapters/kimi/skills/release-verify/SKILL.md +2 -2
  180. package/adapters/kimi/src/schemas/host-descriptor.schema.json +9 -2
  181. package/adapters/qoder/.qoder-plugin/plugin.json +1 -1
  182. package/adapters/qoder/bin/consumer-contract-vectors.json +7 -7
  183. package/adapters/qoder/bin/error-codes.json +1 -1
  184. package/adapters/qoder/bin/foundation-resource-binding.json +1 -1
  185. package/adapters/qoder/bin/prebuild-manifest.json +8 -4
  186. package/adapters/qoder/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  187. package/adapters/qoder/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  188. package/adapters/qoder/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  189. package/adapters/qoder/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  190. package/adapters/qoder/bin/registry.json +1 -1
  191. package/adapters/qoder/bin/release-skill.bundle.mjs +4425 -1519
  192. package/adapters/qoder/bin/rules.json +1 -1
  193. package/adapters/qoder/data/hosts/cursor/host-descriptor.json +34 -0
  194. package/adapters/qoder/data/hosts/registry.json +1 -0
  195. package/adapters/qoder/schemas/release-plan.schema.json +255 -25
  196. package/adapters/qoder/schemas/release-project.schema.json +228 -26
  197. package/adapters/qoder/skills/release-finish/SKILL.md +46 -7
  198. package/adapters/qoder/skills/release-help/SKILL.md +49 -105
  199. package/adapters/qoder/skills/release-verify/SKILL.md +2 -2
  200. package/adapters/qoder/src/schemas/host-descriptor.schema.json +9 -2
  201. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  202. package/adapters/workbuddy/bin/consumer-contract-vectors.json +7 -7
  203. package/adapters/workbuddy/bin/error-codes.json +1 -1
  204. package/adapters/workbuddy/bin/foundation-resource-binding.json +1 -1
  205. package/adapters/workbuddy/bin/prebuild-manifest.json +8 -4
  206. package/adapters/workbuddy/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  207. package/adapters/workbuddy/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  208. package/adapters/workbuddy/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  209. package/adapters/workbuddy/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  210. package/adapters/workbuddy/bin/registry.json +1 -1
  211. package/adapters/workbuddy/bin/release-skill.bundle.mjs +4425 -1519
  212. package/adapters/workbuddy/bin/rules.json +1 -1
  213. package/adapters/workbuddy/data/hosts/cursor/host-descriptor.json +34 -0
  214. package/adapters/workbuddy/data/hosts/registry.json +1 -0
  215. package/adapters/workbuddy/schemas/release-plan.schema.json +255 -25
  216. package/adapters/workbuddy/schemas/release-project.schema.json +228 -26
  217. package/adapters/workbuddy/skills/release-finish/SKILL.md +46 -7
  218. package/adapters/workbuddy/skills/release-help/SKILL.md +47 -103
  219. package/adapters/workbuddy/skills/release-verify/SKILL.md +2 -2
  220. package/adapters/workbuddy/src/schemas/host-descriptor.schema.json +9 -2
  221. package/bin/consumer-contract-vectors.json +7 -7
  222. package/bin/error-codes.json +1 -1
  223. package/bin/foundation-resource-binding.json +1 -1
  224. package/bin/prebuild-manifest.json +8 -4
  225. package/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  226. package/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  227. package/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  228. package/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  229. package/bin/registry.json +1 -1
  230. package/bin/release-skill-cli.mjs +115 -15
  231. package/bin/release-skill.bundle.mjs +4425 -1519
  232. package/bin/rules.json +1 -1
  233. package/data/hosts/cursor/host-descriptor.json +34 -0
  234. package/data/hosts/registry.json +1 -0
  235. package/package.json +7 -5
  236. package/platform-manifest.json +75 -9
  237. package/references/02-project-config.md +4 -0
  238. package/schemas/release-plan.schema.json +255 -25
  239. package/schemas/release-project.schema.json +228 -26
  240. package/scripts/sync-public-files.mjs +3 -22
  241. package/skills/release-finish/SKILL.md +46 -7
  242. package/skills/release-help/SKILL.md +47 -103
  243. package/skills/release-verify/SKILL.md +2 -2
  244. package/skills-src/release-finish/SKILL.md +46 -7
  245. package/skills-src/release-help/SKILL.md +47 -103
  246. package/skills-src/release-verify/SKILL.md +2 -2
  247. package/src/adapters/contract.mjs +1 -0
  248. package/src/adapters/plugin-marketplace.mjs +201 -9
  249. package/src/commands/post-release-finish.mjs +448 -0
  250. package/src/commands/post-release-local.mjs +312 -36
  251. package/src/commands/prepare.mjs +74 -9
  252. package/src/commands/publish.mjs +4 -1
  253. package/src/commands/ship.mjs +3 -0
  254. package/src/commands/verify.mjs +73 -0
  255. package/src/core/checkpoints.mjs +5 -2
  256. package/src/core/config.mjs +1 -1
  257. package/src/core/foundation-host-verification.mjs +168 -0
  258. package/src/core/plan.mjs +19 -1
  259. package/src/core/postpublish.mjs +9 -1
  260. package/src/core/run-retention.mjs +1 -1
  261. package/src/core/surface-host-bindings.mjs +1 -0
  262. package/src/core/verification-gates.mjs +1 -1
  263. package/src/platforms/registry.mjs +225 -16
  264. package/src/producers/build-adapters.mjs +21 -26
  265. package/src/producers/foundation-resource-projection.mjs +3 -3
  266. package/src/schemas/host-descriptor.schema.json +9 -2
@@ -0,0 +1,41 @@
1
+ {
2
+ "source": "schemas",
3
+ "files": {
4
+ "approval-record.schema.json": {
5
+ "digest": "05b5a16d58372e4fdda625a472a4bb71439aa5db4e9813bf7f3d3cf2d39d144e",
6
+ "bytes": 3357
7
+ },
8
+ "artifact-lock.schema.json": {
9
+ "digest": "6a5f4c826540b849571f173118bcbd778dfaceb4133034036ae565c3e9e353e5",
10
+ "bytes": 2729
11
+ },
12
+ "artifact-plan.schema.json": {
13
+ "digest": "f2166b1ec48a99135c0d55e5bacf8d74ed80d0b8cb46837819e295fa310979df",
14
+ "bytes": 1546
15
+ },
16
+ "artifact-policy.schema.json": {
17
+ "digest": "86c9cab024ebe9c7f8ec3358fcc12d05b8ed246ab59da2b0acc6a517f31274ea",
18
+ "bytes": 2488
19
+ },
20
+ "evidence-event.schema.json": {
21
+ "digest": "b7e14522a5aba818cab191545f23d2323be0e4c80566e9d3e4da576103a00490",
22
+ "bytes": 2390
23
+ },
24
+ "postpublish-approval-record.schema.json": {
25
+ "digest": "e365c9e9f5aa189ca6788e68dbedfa718aa120f2c197534417c21e019b9a29a4",
26
+ "bytes": 1744
27
+ },
28
+ "release-plan.schema.json": {
29
+ "digest": "3d24cb908cdfbfd5d89551b7c6fed5140f6f1448b9920f114264291ca4cf1c52",
30
+ "bytes": 55905
31
+ },
32
+ "release-project.schema.json": {
33
+ "digest": "b0ba3c46692622f734a80d3f4e3904180bbfd1096ca2d9b6d6fd957917e96f73",
34
+ "bytes": 47688
35
+ },
36
+ "release-run.schema.json": {
37
+ "digest": "4a041b8f6488e7d61b7eb271ebdbc2e043731df41c4437783ef63e77f664c192",
38
+ "bytes": 19002
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,115 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://release-skill.dev/schemas/approval-record/v1",
4
+ "title": "Approval Record",
5
+ "description": "Schema for human approval record bound to a frozen release plan",
6
+ "type": "object",
7
+ "required": [
8
+ "planDigest",
9
+ "approvedActions",
10
+ "actor",
11
+ "approvedAt",
12
+ "expiresAt"
13
+ ],
14
+ "anyOf": [
15
+ { "required": ["targetVersion"] },
16
+ { "required": ["unitVersions"] }
17
+ ],
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "planDigest": {
21
+ "type": "string",
22
+ "minLength": 1,
23
+ "description": "SHA-256 digest of the frozen release plan"
24
+ },
25
+ "baseline": {
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
+ "required": ["gitTreeHash"],
29
+ "additionalProperties": false,
30
+ "properties": {
31
+ "gitTreeHash": {
32
+ "type": "string",
33
+ "minLength": 1,
34
+ "description": "Git tree hash at plan freeze time"
35
+ },
36
+ "workspaceDigest": {
37
+ "type": "string",
38
+ "minLength": 1,
39
+ "description": "Deterministic digest of workspace file state at plan freeze time"
40
+ },
41
+ "workspaceDigestAlgorithm": {
42
+ "type": "string",
43
+ "const": "git-workspace-v2",
44
+ "description": "Versioned algorithm authority for workspaceDigest"
45
+ }
46
+ }
47
+ },
48
+ "targetVersion": {
49
+ "type": "string",
50
+ "minLength": 1,
51
+ "description": "Target release version approved"
52
+ },
53
+ "unitVersions": {
54
+ "type": "object",
55
+ "minProperties": 1,
56
+ "additionalProperties": {
57
+ "type": "string",
58
+ "minLength": 1
59
+ },
60
+ "description": "Exact unit-id to target-version authority for multi-unit releases"
61
+ },
62
+ "approvedActions": {
63
+ "type": "array",
64
+ "minItems": 1,
65
+ "items": {
66
+ "type": "string",
67
+ "minLength": 1
68
+ },
69
+ "uniqueItems": true,
70
+ "description": "List of approved external actions (no wildcards)"
71
+ },
72
+ "actor": {
73
+ "type": "string",
74
+ "minLength": 1,
75
+ "description": "Identity of the approver"
76
+ },
77
+ "approvedAt": {
78
+ "type": "string",
79
+ "format": "date-time",
80
+ "description": "ISO 8601 timestamp when approval was granted"
81
+ },
82
+ "expiresAt": {
83
+ "type": "string",
84
+ "format": "date-time",
85
+ "description": "ISO 8601 timestamp when approval expires (max 24h after approvedAt)"
86
+ },
87
+ "exceptions": {
88
+ "type": "array",
89
+ "items": {
90
+ "type": "object",
91
+ "required": ["rule", "reason", "responsible", "expiresAt"],
92
+ "additionalProperties": false,
93
+ "properties": {
94
+ "rule": {
95
+ "type": "string",
96
+ "minLength": 1
97
+ },
98
+ "reason": {
99
+ "type": "string",
100
+ "minLength": 1
101
+ },
102
+ "responsible": {
103
+ "type": "string",
104
+ "minLength": 1
105
+ },
106
+ "expiresAt": {
107
+ "type": "string",
108
+ "format": "date-time"
109
+ }
110
+ }
111
+ },
112
+ "description": "Exception waivers with reason, responsible person, and expiration"
113
+ }
114
+ }
115
+ }
@@ -0,0 +1,111 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://release-skill.dev/artifact-lock.schema.json",
4
+ "title": "ArtifactLock",
5
+ "description": "Reachable accepted artifact manifest. Absolute repository paths are never authoritative.",
6
+ "type": "object",
7
+ "required": [
8
+ "lockVersion",
9
+ "repositoryId",
10
+ "repositoryIdentity",
11
+ "policyDigest",
12
+ "acceptanceId",
13
+ "acceptedArtifactManifestDigest",
14
+ "entries",
15
+ "acceptedAt",
16
+ "acceptedBy"
17
+ ],
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "apiVersion": {
21
+ "type": "string",
22
+ "const": "release-skill.dev/artifact-lock/v1"
23
+ },
24
+ "lockVersion": {
25
+ "type": "integer",
26
+ "const": 1
27
+ },
28
+ "repositoryId": {
29
+ "type": "string",
30
+ "minLength": 1
31
+ },
32
+ "repositoryIdentity": {
33
+ "type": "object",
34
+ "required": ["remoteUrlHash"],
35
+ "additionalProperties": false,
36
+ "properties": {
37
+ "remoteUrlHash": {
38
+ "type": "string",
39
+ "pattern": "^sha256:[a-f0-9]{64}$"
40
+ }
41
+ }
42
+ },
43
+ "policyDigest": {
44
+ "type": "string",
45
+ "pattern": "^sha256:[a-f0-9]{64}$"
46
+ },
47
+ "acceptanceId": {
48
+ "type": "string",
49
+ "minLength": 1
50
+ },
51
+ "acceptedArtifactManifestDigest": {
52
+ "type": "string",
53
+ "pattern": "^sha256:[a-f0-9]{64}$"
54
+ },
55
+ "entries": {
56
+ "type": "object",
57
+ "minProperties": 1,
58
+ "additionalProperties": {
59
+ "type": "object",
60
+ "required": ["path", "type", "mode", "gitOid", "sha256"],
61
+ "additionalProperties": false,
62
+ "properties": {
63
+ "path": {
64
+ "type": "string",
65
+ "minLength": 1
66
+ },
67
+ "type": {
68
+ "type": "string",
69
+ "enum": ["blob", "tree"]
70
+ },
71
+ "mode": {
72
+ "type": "string",
73
+ "pattern": "^(100644|100755|040000)$"
74
+ },
75
+ "gitOid": {
76
+ "type": "string",
77
+ "pattern": "^[a-f0-9]{40,64}$"
78
+ },
79
+ "sha256": {
80
+ "type": "string",
81
+ "pattern": "^(sha256:)?[a-f0-9]{64}$"
82
+ },
83
+ "size": {
84
+ "type": "integer",
85
+ "minimum": 0
86
+ },
87
+ "manifestDigest": {
88
+ "type": "string",
89
+ "pattern": "^sha256:[a-f0-9]{64}$"
90
+ },
91
+ "ownership": {
92
+ "type": "string",
93
+ "enum": ["human", "generated", "mixed"]
94
+ },
95
+ "mergeDriver": {
96
+ "type": "string",
97
+ "minLength": 1
98
+ }
99
+ }
100
+ }
101
+ },
102
+ "acceptedAt": {
103
+ "type": "string",
104
+ "format": "date-time"
105
+ },
106
+ "acceptedBy": {
107
+ "type": "string",
108
+ "minLength": 1
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://release-skill.dev/artifact-plan.schema.json",
4
+ "title": "ArtifactPlan",
5
+ "description": "Read-only inspection plan for artifact state and next action.",
6
+ "type": "object",
7
+ "required": [
8
+ "apiVersion",
9
+ "operation",
10
+ "bindings",
11
+ "artifacts",
12
+ "safeToWrite",
13
+ "targetUnchanged",
14
+ "nextAction",
15
+ "planDigest"
16
+ ],
17
+ "additionalProperties": false,
18
+ "properties": {
19
+ "apiVersion": { "type": "string", "const": "release-skill.dev/artifact-plan/v1" },
20
+ "operation": { "type": "string", "enum": ["inspect", "init", "status"] },
21
+ "bindings": {
22
+ "type": "object",
23
+ "required": [
24
+ "repositoryIdentity",
25
+ "policyDigest",
26
+ "baseManifestDigest",
27
+ "currentManifestDigest",
28
+ "producerClosureDigest"
29
+ ],
30
+ "additionalProperties": false,
31
+ "properties": {
32
+ "repositoryIdentity": { "type": "string" },
33
+ "policyDigest": { "type": "string" },
34
+ "baseManifestDigest": { "type": "string" },
35
+ "currentManifestDigest": { "type": "string" },
36
+ "producerClosureDigest": { "type": "string" }
37
+ }
38
+ },
39
+ "artifacts": { "type": "array" },
40
+ "safeToWrite": { "type": "boolean" },
41
+ "targetUnchanged": { "type": "boolean" },
42
+ "nextAction": {
43
+ "type": "object",
44
+ "required": ["command"],
45
+ "additionalProperties": false,
46
+ "properties": {
47
+ "command": { "type": "string" }
48
+ }
49
+ },
50
+ "planDigest": { "type": "string" }
51
+ }
52
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://release-skill.dev/artifact-policy.schema.json",
4
+ "title": "ArtifactPolicy",
5
+ "description": "Closed-world artifact policy defining repository identity, inventory, and artifact definitions.",
6
+ "type": "object",
7
+ "required": ["repository", "inventory", "artifacts"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "repository": {
11
+ "type": "object",
12
+ "required": ["id"],
13
+ "additionalProperties": false,
14
+ "properties": {
15
+ "id": { "type": "string", "minLength": 1 }
16
+ }
17
+ },
18
+ "inventory": {
19
+ "type": "object",
20
+ "required": ["roots", "defaultOwnership"],
21
+ "additionalProperties": false,
22
+ "properties": {
23
+ "roots": {
24
+ "type": "array",
25
+ "items": { "type": "string", "minLength": 1 },
26
+ "minItems": 1
27
+ },
28
+ "defaultOwnership": { "type": "string", "enum": ["human", "generated"] }
29
+ }
30
+ },
31
+ "artifacts": {
32
+ "type": "array",
33
+ "minItems": 1,
34
+ "items": {
35
+ "type": "object",
36
+ "required": ["id", "type"],
37
+ "properties": {
38
+ "id": { "type": "string", "minLength": 1 },
39
+ "type": { "type": "string", "enum": ["declared", "generated"] },
40
+ "sourcePath": { "type": "string" },
41
+ "ownership": { "type": "string", "enum": ["human", "generated"] },
42
+ "producer": { "type": "string", "minLength": 1 },
43
+ "sourceArtifacts": {
44
+ "type": "array",
45
+ "items": { "type": "string", "minLength": 1 },
46
+ "minItems": 1
47
+ },
48
+ "adoptionRoutes": {
49
+ "type": "array",
50
+ "items": {
51
+ "type": "object",
52
+ "required": ["target", "sourceArtifact", "mode"],
53
+ "additionalProperties": false,
54
+ "properties": {
55
+ "target": { "type": "string", "minLength": 1 },
56
+ "sourceArtifact": { "type": "string", "minLength": 1 },
57
+ "mode": { "type": "string", "enum": ["exact-copy"] }
58
+ }
59
+ },
60
+ "minItems": 1
61
+ }
62
+ },
63
+ "oneOf": [
64
+ {
65
+ "properties": { "type": { "const": "declared" } },
66
+ "required": ["sourcePath"]
67
+ },
68
+ {
69
+ "properties": { "type": { "const": "generated" } },
70
+ "required": ["producer", "sourceArtifacts", "adoptionRoutes"]
71
+ }
72
+ ]
73
+ }
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,164 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://release-skill.dev/schemas/evidence-event/v2",
4
+ "title": "Evidence Event v2",
5
+ "description": "Unified schema for JSONL evidence events produced by release-skill 0.8.0+. The v1 schema (evidence-event.schema.json) was too strict for the real event vocabulary (closed command/status/error enums, additionalProperties:false over phase-specific fields) and is retained only for legacy reads; v1 files are never rewritten. v2 freezes the stable envelope (identity, producer, command, phase, status, error, duration) with additionalProperties closed at the top level: every phase-specific detail field (unitId, gate, hookName, actionId, step, hookId, tagCommit, cached, testSelection, cacheKey, durationMs, exitCode, findingCount, ...) lives inside details. Declared location fields are type-constrained; the remaining details vocabulary stays open and producer-versioned. The evidence writer is the single choke point: it relocates any unknown top-level extension key into details and validates the event against this schema before writing (fail closed).",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "runId",
10
+ "sequence",
11
+ "timestamp",
12
+ "command",
13
+ "phase",
14
+ "status",
15
+ "producer"
16
+ ],
17
+ "properties": {
18
+ "schemaVersion": {
19
+ "type": "integer",
20
+ "const": 2,
21
+ "description": "Event format version (envelope field; never overridable by callers)"
22
+ },
23
+ "runId": {
24
+ "type": "string",
25
+ "minLength": 1,
26
+ "description": "Unique identifier for the run (directory name)"
27
+ },
28
+ "sequence": {
29
+ "type": "integer",
30
+ "minimum": 1,
31
+ "description": "Real monotonic sequence number assigned by the writer, starting from 1"
32
+ },
33
+ "timestamp": {
34
+ "type": "string",
35
+ "format": "date-time",
36
+ "description": "ISO 8601 UTC timestamp of the event"
37
+ },
38
+ "command": {
39
+ "type": "string",
40
+ "enum": [
41
+ "assess",
42
+ "prepare",
43
+ "publish",
44
+ "reconcile",
45
+ "verify",
46
+ "distribute",
47
+ "postverify",
48
+ "hooks-validate"
49
+ ],
50
+ "description": "The command that triggered this event"
51
+ },
52
+ "phase": {
53
+ "type": "string",
54
+ "minLength": 1,
55
+ "description": "Current execution phase identifier (producer-versioned vocabulary)"
56
+ },
57
+ "status": {
58
+ "type": "string",
59
+ "minLength": 1,
60
+ "description": "Status value of this event (started/completed/passed/failed/skipped/warning/blocking/... — producer-versioned vocabulary)"
61
+ },
62
+ "producer": {
63
+ "type": "object",
64
+ "required": ["name", "version"],
65
+ "additionalProperties": false,
66
+ "properties": {
67
+ "name": {
68
+ "type": "string",
69
+ "const": "release-skill",
70
+ "description": "Producer name; attribution only, never an authority"
71
+ },
72
+ "version": {
73
+ "type": "string",
74
+ "minLength": 1,
75
+ "description": "Producer version; attribution only, never an authority"
76
+ }
77
+ },
78
+ "description": "Producer identity for attribution (R-06B). Old v1 runs have no producer field."
79
+ },
80
+ "error": {
81
+ "type": ["object", "null"],
82
+ "description": "Error details when the event reports a failure. The writer normalizes diagnostic fields before validation (numeric child-process exit codes such as Git 128 are preserved as EXIT_<n>; free string errors become UNKNOWN_ERROR), so the real cause is never replaced by a schema failure.",
83
+ "additionalProperties": false,
84
+ "properties": {
85
+ "code": {
86
+ "type": "string",
87
+ "minLength": 1,
88
+ "description": "Stable error code (open string: error codes are producer-versioned and grow over time)"
89
+ },
90
+ "message": {
91
+ "type": "string",
92
+ "description": "Human-readable error message"
93
+ }
94
+ }
95
+ },
96
+ "duration": {
97
+ "type": "integer",
98
+ "minimum": 0,
99
+ "description": "Phase duration in milliseconds"
100
+ },
101
+ "details": {
102
+ "type": "object",
103
+ "description": "Phase-specific supplementary information. Declared location fields are type-constrained; the remaining phase-specific vocabulary stays open.",
104
+ "properties": {
105
+ "unitId": {
106
+ "type": "string",
107
+ "description": "Release unit the event refers to"
108
+ },
109
+ "gate": {
110
+ "type": "string",
111
+ "description": "Safety gate the event refers to"
112
+ },
113
+ "hookName": {
114
+ "type": "string",
115
+ "description": "Declared hook the event refers to"
116
+ },
117
+ "actionId": {
118
+ "type": "string",
119
+ "description": "External action the event refers to"
120
+ },
121
+ "step": {
122
+ "type": "string",
123
+ "description": "Verification or execution step the event refers to"
124
+ },
125
+ "hookId": {
126
+ "type": "string",
127
+ "description": "Post-publish hook the event refers to"
128
+ },
129
+ "tagCommit": {
130
+ "type": "string",
131
+ "description": "Frozen tag commit the event refers to"
132
+ },
133
+ "cached": {
134
+ "type": "boolean",
135
+ "description": "Whether a hook completion was a cache hit"
136
+ },
137
+ "testSelection": {
138
+ "type": "string",
139
+ "description": "Test hook selection (full or incremental)"
140
+ },
141
+ "cacheKey": {
142
+ "type": "string",
143
+ "description": "Hook cache fingerprint"
144
+ },
145
+ "durationMs": {
146
+ "type": ["integer", "null"],
147
+ "minimum": 0,
148
+ "description": "Observed duration in milliseconds (null when unobserved)"
149
+ },
150
+ "exitCode": {
151
+ "type": "integer",
152
+ "description": "Child process exit code"
153
+ },
154
+ "findingCount": {
155
+ "type": "integer",
156
+ "minimum": 0,
157
+ "description": "Number of findings reported by a gate"
158
+ }
159
+ },
160
+ "additionalProperties": true
161
+ }
162
+ },
163
+ "additionalProperties": false
164
+ }
@@ -0,0 +1,89 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://release-skill.dev/schemas/evidence-event/v1",
4
+ "title": "Evidence Event",
5
+ "description": "Schema for JSONL evidence events produced during release execution",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "runId",
10
+ "sequence",
11
+ "timestamp",
12
+ "command",
13
+ "phase",
14
+ "status"
15
+ ],
16
+ "additionalProperties": false,
17
+ "properties": {
18
+ "schemaVersion": {
19
+ "type": "integer",
20
+ "const": 1,
21
+ "description": "Event format version"
22
+ },
23
+ "runId": {
24
+ "type": "string",
25
+ "minLength": 1,
26
+ "description": "Unique identifier for the run (UUID)"
27
+ },
28
+ "sequence": {
29
+ "type": "integer",
30
+ "minimum": 1,
31
+ "description": "Event sequence number within the run, starting from 1"
32
+ },
33
+ "timestamp": {
34
+ "type": "string",
35
+ "format": "date-time",
36
+ "description": "ISO 8601 UTC timestamp of the event"
37
+ },
38
+ "command": {
39
+ "type": "string",
40
+ "enum": ["assess", "prepare", "publish", "reconcile", "verify"],
41
+ "description": "The command that triggered this event"
42
+ },
43
+ "phase": {
44
+ "type": "string",
45
+ "minLength": 1,
46
+ "description": "Current execution phase identifier"
47
+ },
48
+ "status": {
49
+ "type": "string",
50
+ "enum": ["started", "succeeded", "failed", "skipped"],
51
+ "description": "Status value of this event"
52
+ },
53
+ "error": {
54
+ "type": ["object", "null"],
55
+ "description": "Error details when status is failed",
56
+ "additionalProperties": false,
57
+ "properties": {
58
+ "code": {
59
+ "type": "string",
60
+ "enum": [
61
+ "CONFIG_INVALID",
62
+ "BASELINE_CHANGED",
63
+ "DIRTY_SCOPE_CONFLICT",
64
+ "GATE_FAILED",
65
+ "AUTH_MISSING",
66
+ "REMOTE_CONFLICT",
67
+ "HOOK_TIMEOUT",
68
+ "PARTIAL_RELEASE",
69
+ "POST_PUBLISH_VERIFY_FAILED"
70
+ ],
71
+ "description": "Stable error code"
72
+ },
73
+ "message": {
74
+ "type": "string",
75
+ "description": "Human-readable error message"
76
+ }
77
+ }
78
+ },
79
+ "duration": {
80
+ "type": "integer",
81
+ "minimum": 0,
82
+ "description": "Phase duration in milliseconds"
83
+ },
84
+ "details": {
85
+ "type": "object",
86
+ "description": "Phase-specific supplementary information"
87
+ }
88
+ }
89
+ }