release-skill 0.9.17 → 0.9.18

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 (257) 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 +36 -2
  8. package/INSTALL.md +56 -9
  9. package/INSTALL.zh-CN.md +41 -7
  10. package/README.md +31 -20
  11. package/README.zh-CN.md +29 -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 +3560 -1200
  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 +17 -4
  29. package/adapters/claude/skills/release-help/SKILL.md +40 -39
  30. package/adapters/claude/src/schemas/host-descriptor.schema.json +9 -2
  31. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  32. package/adapters/codex/bin/consumer-contract-vectors.json +7 -7
  33. package/adapters/codex/bin/error-codes.json +1 -1
  34. package/adapters/codex/bin/foundation-resource-binding.json +1 -1
  35. package/adapters/codex/bin/prebuild-manifest.json +8 -4
  36. package/adapters/codex/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  37. package/adapters/codex/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  38. package/adapters/codex/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  39. package/adapters/codex/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  40. package/adapters/codex/bin/registry.json +1 -1
  41. package/adapters/codex/bin/release-skill.bundle.mjs +3560 -1200
  42. package/adapters/codex/bin/rules.json +1 -1
  43. package/adapters/codex/data/hosts/cursor/host-descriptor.json +34 -0
  44. package/adapters/codex/data/hosts/registry.json +1 -0
  45. package/adapters/codex/schemas/release-plan.schema.json +255 -25
  46. package/adapters/codex/schemas/release-project.schema.json +228 -26
  47. package/adapters/codex/skills/release-finish/SKILL.md +17 -4
  48. package/adapters/codex/skills/release-help/SKILL.md +40 -39
  49. package/adapters/codex/src/schemas/host-descriptor.schema.json +9 -2
  50. package/adapters/cursor/.cursor-plugin/plugin.json +10 -0
  51. package/adapters/cursor/bin/consumer-contract-vectors.json +110 -0
  52. package/adapters/cursor/bin/error-codes.json +161 -0
  53. package/adapters/cursor/bin/foundation-legal/skill-family-contracts/LICENSE +202 -0
  54. package/adapters/cursor/bin/foundation-legal/skill-family-contracts/NOTICE +10 -0
  55. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/LICENSE +202 -0
  56. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/NOTICE +10 -0
  57. package/adapters/cursor/bin/foundation-legal/skill-family-engineering-kit/THIRD_PARTY_NOTICES +142 -0
  58. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/LICENSE +202 -0
  59. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/NOTICE +10 -0
  60. package/adapters/cursor/bin/foundation-legal/skill-family-harness-node/native-NOTICE +2 -0
  61. package/adapters/cursor/bin/foundation-resource-binding.json +1 -0
  62. package/adapters/cursor/bin/kernel-protocol.json +60 -0
  63. package/adapters/cursor/bin/license-texts/Apache-2.0.txt +201 -0
  64. package/adapters/cursor/bin/license-texts/MIT.txt +21 -0
  65. package/adapters/cursor/bin/prebuild-manifest.json +83 -0
  66. package/adapters/cursor/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  67. package/adapters/cursor/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  68. package/adapters/cursor/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  69. package/adapters/cursor/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  70. package/adapters/cursor/bin/registry.json +347 -0
  71. package/adapters/cursor/bin/release-skill-local-finish.mjs +4 -0
  72. package/adapters/cursor/bin/release-skill.bundle.mjs +151806 -0
  73. package/adapters/cursor/bin/release-skill.mjs +54 -0
  74. package/adapters/cursor/bin/rules.json +104 -0
  75. package/adapters/cursor/bin/schemas/consumer-contract-vector.schema.json +149 -0
  76. package/adapters/cursor/data/hosts/claude/host-descriptor.json +45 -0
  77. package/adapters/cursor/data/hosts/codebuddy/host-descriptor.json +26 -0
  78. package/adapters/cursor/data/hosts/codex/host-descriptor.json +45 -0
  79. package/adapters/cursor/data/hosts/cursor/host-descriptor.json +34 -0
  80. package/adapters/cursor/data/hosts/deepseek-harness/host-descriptor.json +23 -0
  81. package/adapters/cursor/data/hosts/kimi-code/host-descriptor.json +36 -0
  82. package/adapters/cursor/data/hosts/qoder/host-descriptor.json +26 -0
  83. package/adapters/cursor/data/hosts/registry.json +14 -0
  84. package/adapters/cursor/data/hosts/workbuddy/host-descriptor.json +34 -0
  85. package/adapters/cursor/data/licensing/registry.json +211 -0
  86. package/adapters/cursor/data/licensing/schema.json +207 -0
  87. package/adapters/cursor/native/safe-write/binding.gyp +41 -0
  88. package/adapters/cursor/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
  89. package/adapters/cursor/native/safe-write/prebuilds.json +24 -0
  90. package/adapters/cursor/native/safe-write/src/safe_write.cc +2032 -0
  91. package/adapters/cursor/schemas/.render-manifest.json +41 -0
  92. package/adapters/cursor/schemas/approval-record.schema.json +115 -0
  93. package/adapters/cursor/schemas/artifact-lock.schema.json +111 -0
  94. package/adapters/cursor/schemas/artifact-plan.schema.json +52 -0
  95. package/adapters/cursor/schemas/artifact-policy.schema.json +76 -0
  96. package/adapters/cursor/schemas/evidence-event-v2.schema.json +164 -0
  97. package/adapters/cursor/schemas/evidence-event.schema.json +89 -0
  98. package/adapters/cursor/schemas/postpublish-approval-record.schema.json +47 -0
  99. package/adapters/cursor/schemas/release-plan.schema.json +2226 -0
  100. package/adapters/cursor/schemas/release-project.schema.json +1815 -0
  101. package/adapters/cursor/schemas/release-run.schema.json +777 -0
  102. package/adapters/cursor/skills/release-assess/SKILL.md +61 -0
  103. package/adapters/cursor/skills/release-config/SKILL.md +151 -0
  104. package/adapters/cursor/skills/release-docs/SKILL.md +120 -0
  105. package/adapters/cursor/skills/release-finish/SKILL.md +155 -0
  106. package/adapters/cursor/skills/release-help/SKILL.md +155 -0
  107. package/adapters/cursor/skills/release-marketplace/SKILL.md +157 -0
  108. package/adapters/cursor/skills/release-prepare/SKILL.md +136 -0
  109. package/adapters/cursor/skills/release-publish/SKILL.md +92 -0
  110. package/adapters/cursor/skills/release-reconcile/SKILL.md +81 -0
  111. package/adapters/cursor/skills/release-setup/SKILL.md +132 -0
  112. package/adapters/cursor/skills/release-verify/SKILL.md +110 -0
  113. package/adapters/cursor/src/schemas/adapter-build-manifest.schema.json +41 -0
  114. package/adapters/cursor/src/schemas/adapter-peer-verification-request.schema.json +54 -0
  115. package/adapters/cursor/src/schemas/adapter-peer-verification-result.schema.json +54 -0
  116. package/adapters/cursor/src/schemas/adapter-source.schema.json +47 -0
  117. package/adapters/cursor/src/schemas/audit-baseline-pin.schema.json +163 -0
  118. package/adapters/cursor/src/schemas/declared-read-surface-result.schema.json +61 -0
  119. package/adapters/cursor/src/schemas/engineering-baseline.schema.json +77 -0
  120. package/adapters/cursor/src/schemas/executable-identity-observation.schema.json +162 -0
  121. package/adapters/cursor/src/schemas/filesystem-root-binding.schema.json +14 -0
  122. package/adapters/cursor/src/schemas/filesystem-tree-observation.schema.json +71 -0
  123. package/adapters/cursor/src/schemas/fixed-set-publication-manifest.schema.json +108 -0
  124. package/adapters/cursor/src/schemas/fixed-set-publication-receipt.schema.json +148 -0
  125. package/adapters/cursor/src/schemas/host-capability-fact.schema.json +31 -0
  126. package/adapters/cursor/src/schemas/host-descriptor.schema.json +144 -0
  127. package/adapters/cursor/src/schemas/host-operation-plan.schema.json +57 -0
  128. package/adapters/cursor/src/schemas/host-operation-receipt.schema.json +81 -0
  129. package/adapters/cursor/src/schemas/host-probe-result.schema.json +30 -0
  130. package/adapters/cursor/src/schemas/host-registry.schema.json +18 -0
  131. package/adapters/cursor/src/schemas/host-verification-request.schema.json +67 -0
  132. package/adapters/cursor/src/schemas/host-verification-result.schema.json +149 -0
  133. package/adapters/cursor/src/schemas/managed-file-lock.schema.json +77 -0
  134. package/adapters/cursor/src/schemas/migration-manifest.schema.json +412 -0
  135. package/adapters/cursor/src/schemas/observation-scope.schema.json +91 -0
  136. package/adapters/cursor/src/schemas/operation-request.schema.json +58 -0
  137. package/adapters/cursor/src/schemas/operation-result.schema.json +130 -0
  138. package/adapters/cursor/src/schemas/platform-difference-registry.schema.json +110 -0
  139. package/adapters/cursor/src/schemas/plugin-verification-request.schema.json +499 -0
  140. package/adapters/cursor/src/schemas/plugin-verification-result.schema.json +1217 -0
  141. package/adapters/cursor/src/schemas/profile-adoption-declaration.schema.json +111 -0
  142. package/adapters/cursor/src/schemas/profile-descriptor.schema.json +99 -0
  143. package/adapters/cursor/src/schemas/project-manifest.schema.json +67 -0
  144. package/adapters/cursor/src/schemas/project-profile.schema.json +25 -0
  145. package/adapters/cursor/src/schemas/public-boundary-declaration.schema.json +73 -0
  146. package/adapters/cursor/src/schemas/report-binding.schema.json +42 -0
  147. package/adapters/cursor/src/schemas/report-model.schema.json +308 -0
  148. package/adapters/cursor/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  149. package/adapters/cursor/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
  150. package/adapters/cursor/src/schemas/source-authority-receipt.schema.json +31 -0
  151. package/adapters/cursor/src/schemas/state-event-envelope.schema.json +38 -0
  152. package/adapters/cursor/src/schemas/state-snapshot-metadata.schema.json +25 -0
  153. package/adapters/cursor/src/schemas/structured-scan-policy.schema.json +97 -0
  154. package/adapters/cursor/src/schemas/surface-scan-policy.schema.json +42 -0
  155. package/adapters/cursor/src/schemas/timeout-policy.schema.json +24 -0
  156. package/adapters/cursor/src/schemas/token-estimate-record.schema.json +75 -0
  157. package/adapters/cursor/src/schemas/token-estimate-result.schema.json +43 -0
  158. package/adapters/cursor/src/schemas/watchdog-termination-envelope.schema.json +156 -0
  159. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  160. package/adapters/kimi/bin/consumer-contract-vectors.json +7 -7
  161. package/adapters/kimi/bin/error-codes.json +1 -1
  162. package/adapters/kimi/bin/foundation-resource-binding.json +1 -1
  163. package/adapters/kimi/bin/prebuild-manifest.json +8 -4
  164. package/adapters/kimi/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  165. package/adapters/kimi/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  166. package/adapters/kimi/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  167. package/adapters/kimi/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  168. package/adapters/kimi/bin/registry.json +1 -1
  169. package/adapters/kimi/bin/release-skill.bundle.mjs +3560 -1200
  170. package/adapters/kimi/bin/rules.json +1 -1
  171. package/adapters/kimi/data/hosts/cursor/host-descriptor.json +34 -0
  172. package/adapters/kimi/data/hosts/registry.json +1 -0
  173. package/adapters/kimi/schemas/release-plan.schema.json +255 -25
  174. package/adapters/kimi/schemas/release-project.schema.json +228 -26
  175. package/adapters/kimi/skills/release-finish/SKILL.md +17 -4
  176. package/adapters/kimi/skills/release-help/SKILL.md +40 -39
  177. package/adapters/kimi/src/schemas/host-descriptor.schema.json +9 -2
  178. package/adapters/qoder/.qoder-plugin/plugin.json +1 -1
  179. package/adapters/qoder/bin/consumer-contract-vectors.json +7 -7
  180. package/adapters/qoder/bin/error-codes.json +1 -1
  181. package/adapters/qoder/bin/foundation-resource-binding.json +1 -1
  182. package/adapters/qoder/bin/prebuild-manifest.json +8 -4
  183. package/adapters/qoder/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  184. package/adapters/qoder/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  185. package/adapters/qoder/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  186. package/adapters/qoder/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  187. package/adapters/qoder/bin/registry.json +1 -1
  188. package/adapters/qoder/bin/release-skill.bundle.mjs +3560 -1200
  189. package/adapters/qoder/bin/rules.json +1 -1
  190. package/adapters/qoder/data/hosts/cursor/host-descriptor.json +34 -0
  191. package/adapters/qoder/data/hosts/registry.json +1 -0
  192. package/adapters/qoder/schemas/release-plan.schema.json +255 -25
  193. package/adapters/qoder/schemas/release-project.schema.json +228 -26
  194. package/adapters/qoder/skills/release-finish/SKILL.md +17 -4
  195. package/adapters/qoder/skills/release-help/SKILL.md +40 -39
  196. package/adapters/qoder/src/schemas/host-descriptor.schema.json +9 -2
  197. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  198. package/adapters/workbuddy/bin/consumer-contract-vectors.json +7 -7
  199. package/adapters/workbuddy/bin/error-codes.json +1 -1
  200. package/adapters/workbuddy/bin/foundation-resource-binding.json +1 -1
  201. package/adapters/workbuddy/bin/prebuild-manifest.json +8 -4
  202. package/adapters/workbuddy/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  203. package/adapters/workbuddy/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  204. package/adapters/workbuddy/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  205. package/adapters/workbuddy/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  206. package/adapters/workbuddy/bin/registry.json +1 -1
  207. package/adapters/workbuddy/bin/release-skill.bundle.mjs +3560 -1200
  208. package/adapters/workbuddy/bin/rules.json +1 -1
  209. package/adapters/workbuddy/data/hosts/cursor/host-descriptor.json +34 -0
  210. package/adapters/workbuddy/data/hosts/registry.json +1 -0
  211. package/adapters/workbuddy/schemas/release-plan.schema.json +255 -25
  212. package/adapters/workbuddy/schemas/release-project.schema.json +228 -26
  213. package/adapters/workbuddy/skills/release-finish/SKILL.md +17 -4
  214. package/adapters/workbuddy/skills/release-help/SKILL.md +40 -39
  215. package/adapters/workbuddy/src/schemas/host-descriptor.schema.json +9 -2
  216. package/bin/consumer-contract-vectors.json +7 -7
  217. package/bin/error-codes.json +1 -1
  218. package/bin/foundation-resource-binding.json +1 -1
  219. package/bin/prebuild-manifest.json +8 -4
  220. package/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  221. package/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  222. package/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  223. package/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  224. package/bin/registry.json +1 -1
  225. package/bin/release-skill-cli.mjs +25 -1
  226. package/bin/release-skill.bundle.mjs +3560 -1200
  227. package/bin/rules.json +1 -1
  228. package/data/hosts/cursor/host-descriptor.json +34 -0
  229. package/data/hosts/registry.json +1 -0
  230. package/package.json +7 -5
  231. package/platform-manifest.json +75 -9
  232. package/schemas/release-plan.schema.json +255 -25
  233. package/schemas/release-project.schema.json +228 -26
  234. package/scripts/sync-public-files.mjs +3 -22
  235. package/skills/release-finish/SKILL.md +17 -4
  236. package/skills/release-help/SKILL.md +40 -39
  237. package/skills-src/release-finish/SKILL.md +17 -4
  238. package/skills-src/release-help/SKILL.md +40 -39
  239. package/src/adapters/contract.mjs +1 -0
  240. package/src/adapters/plugin-marketplace.mjs +201 -9
  241. package/src/commands/post-release-local.mjs +290 -34
  242. package/src/commands/prepare.mjs +74 -9
  243. package/src/commands/publish.mjs +4 -1
  244. package/src/commands/ship.mjs +2 -0
  245. package/src/commands/verify.mjs +73 -0
  246. package/src/core/checkpoints.mjs +5 -2
  247. package/src/core/config.mjs +1 -1
  248. package/src/core/foundation-host-verification.mjs +168 -0
  249. package/src/core/plan.mjs +19 -1
  250. package/src/core/postpublish.mjs +9 -1
  251. package/src/core/run-retention.mjs +1 -1
  252. package/src/core/surface-host-bindings.mjs +1 -0
  253. package/src/core/verification-gates.mjs +1 -1
  254. package/src/platforms/registry.mjs +225 -16
  255. package/src/producers/build-adapters.mjs +21 -26
  256. package/src/producers/foundation-resource-projection.mjs +3 -3
  257. package/src/schemas/host-descriptor.schema.json +9 -2
@@ -0,0 +1,111 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.skill-family.example/v1/profile-adoption-declaration.json",
4
+ "title": "ProfileAdoptionDeclaration",
5
+ "description": "Profile adoption and override declaration (audit remediation D-6/D-8, SPI v3). Stand-alone contract form of the optional adoption and overrides sections of a provider descriptor and the required sections of a project profile: the adoption block carries the lightweight adoption proof (adopted Foundation profile identity plus the three-package Foundation pin with real-file sha256 digests), and the overrides block carries self-tightening rule declarations that reuse existing rule ids with project-level numeric values. The SPI layer forwards to these definitions and verifies tightening direction against the frozen rule baseline catalog.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["schemaVersion", "kind", "adoption"],
9
+ "properties": {
10
+ "schemaVersion": { "const": 1 },
11
+ "kind": { "const": "skill-family.profile-adoption-declaration" },
12
+ "adoption": { "$ref": "#/$defs/adoption" },
13
+ "overrides": { "$ref": "#/$defs/overrides" },
14
+ "note": {
15
+ "type": "string",
16
+ "description": "Optional human rationale; not consumed mechanically."
17
+ }
18
+ },
19
+ "$defs": {
20
+ "pinnedPackage": {
21
+ "type": "object",
22
+ "additionalProperties": false,
23
+ "required": ["version", "path", "sha256"],
24
+ "properties": {
25
+ "version": {
26
+ "type": "string",
27
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
28
+ },
29
+ "path": {
30
+ "type": "string",
31
+ "pattern": "^[A-Za-z0-9._-]+(/[A-Za-z0-9._-]+)*$"
32
+ },
33
+ "sha256": {
34
+ "type": "string",
35
+ "pattern": "^[0-9a-f]{64}$"
36
+ }
37
+ }
38
+ },
39
+ "adoption": {
40
+ "type": "object",
41
+ "additionalProperties": false,
42
+ "required": ["foundation_profile", "foundation_pin", "adopted_at"],
43
+ "properties": {
44
+ "foundation_profile": {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "required": ["id", "version", "stability"],
48
+ "properties": {
49
+ "id": {
50
+ "type": "string",
51
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$"
52
+ },
53
+ "version": { "type": "integer", "minimum": 1 },
54
+ "stability": { "enum": ["stable", "candidate-only"] }
55
+ }
56
+ },
57
+ "capabilities": {
58
+ "type": "array",
59
+ "uniqueItems": true,
60
+ "items": {
61
+ "type": "string",
62
+ "pattern": "^foundation\\.[a-z0-9\\-]+(?:\\.[a-z0-9\\-]+)+$"
63
+ }
64
+ },
65
+ "foundation_pin": {
66
+ "type": "object",
67
+ "additionalProperties": false,
68
+ "required": ["algorithm", "packages"],
69
+ "properties": {
70
+ "algorithm": { "const": "sha256" },
71
+ "packages": {
72
+ "type": "object",
73
+ "additionalProperties": false,
74
+ "required": [
75
+ "skill-family-contracts",
76
+ "skill-family-harness-node",
77
+ "skill-family-engineering-kit"
78
+ ],
79
+ "properties": {
80
+ "skill-family-contracts": { "$ref": "#/$defs/pinnedPackage" },
81
+ "skill-family-harness-node": { "$ref": "#/$defs/pinnedPackage" },
82
+ "skill-family-engineering-kit": { "$ref": "#/$defs/pinnedPackage" }
83
+ }
84
+ }
85
+ }
86
+ },
87
+ "adopted_at": { "type": "string", "format": "date-time" }
88
+ }
89
+ },
90
+ "overrides": {
91
+ "type": "array",
92
+ "items": {
93
+ "type": "object",
94
+ "additionalProperties": false,
95
+ "required": ["ruleId", "parameter", "value"],
96
+ "properties": {
97
+ "ruleId": {
98
+ "type": "string",
99
+ "pattern": "^SFA-[A-Z0-9]+-[0-9]{3}$"
100
+ },
101
+ "parameter": {
102
+ "type": "string",
103
+ "pattern": "^[a-zA-Z][a-zA-Z0-9]*$"
104
+ },
105
+ "value": { "type": "number" },
106
+ "note": { "type": "string" }
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.skill-family.example/v1/profile-descriptor.json",
4
+ "title": "ProfileDescriptor",
5
+ "description": "Declares one profile: identity, the contracts base it extends, its finite declared differences from the base, and the stable SPI implementations it provides. The common core must not depend on concrete profiles.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["schemaVersion", "kind", "profile", "base"],
9
+ "properties": {
10
+ "schemaVersion": {
11
+ "const": 1
12
+ },
13
+ "kind": {
14
+ "const": "skill-family.profile-descriptor"
15
+ },
16
+ "profile": {
17
+ "type": "object",
18
+ "additionalProperties": false,
19
+ "required": ["id", "name", "version"],
20
+ "properties": {
21
+ "id": {
22
+ "type": "string",
23
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
24
+ "description": "Stable kebab-case profile identifier."
25
+ },
26
+ "name": {
27
+ "type": "string",
28
+ "minLength": 1
29
+ },
30
+ "version": {
31
+ "type": "string",
32
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
33
+ }
34
+ }
35
+ },
36
+ "base": {
37
+ "type": "object",
38
+ "additionalProperties": false,
39
+ "required": ["contractsVersion"],
40
+ "properties": {
41
+ "contractsVersion": {
42
+ "type": "string",
43
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
44
+ "description": "Contracts version this profile extends."
45
+ }
46
+ }
47
+ },
48
+ "differences": {
49
+ "type": "array",
50
+ "description": "Finite declared differences from the base contracts.",
51
+ "items": {
52
+ "type": "object",
53
+ "additionalProperties": false,
54
+ "required": ["id", "kind", "target"],
55
+ "properties": {
56
+ "id": {
57
+ "type": "string",
58
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$"
59
+ },
60
+ "kind": {
61
+ "enum": ["adds", "overrides", "removes"]
62
+ },
63
+ "target": {
64
+ "type": "string",
65
+ "minLength": 1,
66
+ "description": "What the difference applies to (structure name, file role, or extension point)."
67
+ },
68
+ "note": {
69
+ "type": "string"
70
+ }
71
+ }
72
+ }
73
+ },
74
+ "spi": {
75
+ "type": "array",
76
+ "description": "Stable SPI implementations provided by this profile.",
77
+ "items": {
78
+ "type": "object",
79
+ "additionalProperties": false,
80
+ "required": ["id", "version", "entrypoint"],
81
+ "properties": {
82
+ "id": {
83
+ "type": "string",
84
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$"
85
+ },
86
+ "version": {
87
+ "type": "integer",
88
+ "minimum": 1
89
+ },
90
+ "entrypoint": {
91
+ "type": "string",
92
+ "pattern": "^[A-Za-z0-9._-]+(/[A-Za-z0-9._-]+)*$",
93
+ "description": "Relative POSIX path of the SPI entrypoint module."
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.skill-family.example/v1/project-manifest.json",
4
+ "title": "ProjectManifest",
5
+ "description": "Declares one Skill Family project adopting the contracts: stable identity, the contracts version and profile it uses, and the managed files owned by generators.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["schemaVersion", "kind", "project", "contracts"],
9
+ "properties": {
10
+ "schemaVersion": {
11
+ "const": 1
12
+ },
13
+ "kind": {
14
+ "const": "skill-family.project-manifest"
15
+ },
16
+ "project": {
17
+ "type": "object",
18
+ "additionalProperties": false,
19
+ "required": ["id", "name"],
20
+ "properties": {
21
+ "id": {
22
+ "type": "string",
23
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
24
+ "description": "Stable kebab-case project identifier."
25
+ },
26
+ "name": {
27
+ "type": "string",
28
+ "minLength": 1,
29
+ "description": "Human-readable project name."
30
+ },
31
+ "description": {
32
+ "type": "string"
33
+ }
34
+ }
35
+ },
36
+ "contracts": {
37
+ "type": "object",
38
+ "additionalProperties": false,
39
+ "required": ["version", "profile"],
40
+ "properties": {
41
+ "version": {
42
+ "type": "string",
43
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
44
+ "description": "Contracts version the project adopts."
45
+ },
46
+ "profile": {
47
+ "type": "string",
48
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
49
+ "description": "Identifier of the profile the project uses."
50
+ }
51
+ }
52
+ },
53
+ "managedFiles": {
54
+ "type": "array",
55
+ "description": "Relative POSIX paths of managed files owned by generators. Path containment beyond shape (escape, traversal) is a mechanism concern owned by the harness.",
56
+ "items": {
57
+ "type": "string",
58
+ "pattern": "^[A-Za-z0-9._-]+(/[A-Za-z0-9._-]+)*$"
59
+ }
60
+ },
61
+ "updatedAt": {
62
+ "type": "string",
63
+ "format": "date-time",
64
+ "description": "RFC 3339 date-time of the last manifest update; format enforcement is part of the contracts dialect support."
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.skill-family.example/v1/project-profile.json",
4
+ "title": "ProjectProfile",
5
+ "description": "Declares a project's Skill Family adoption and tightening overrides.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["schemaVersion", "kind", "project", "adoption", "overrides"],
9
+ "properties": {
10
+ "schemaVersion": { "const": 1 },
11
+ "kind": { "const": "skill-family.project-profile" },
12
+ "project": {
13
+ "type": "object",
14
+ "additionalProperties": false,
15
+ "required": ["id", "workspace"],
16
+ "properties": {
17
+ "id": { "type": "string", "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$" },
18
+ "workspace": { "type": "string", "minLength": 1 }
19
+ }
20
+ },
21
+ "adoption": { "$ref": "https://contracts.skill-family.example/v1/profile-adoption-declaration.json#/$defs/adoption" },
22
+ "overrides": { "$ref": "https://contracts.skill-family.example/v1/profile-adoption-declaration.json#/$defs/overrides" },
23
+ "note": { "type": "string" }
24
+ }
25
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.skill-family.example/v1/public-boundary-declaration.json",
4
+ "title": "PublicBoundaryDeclaration",
5
+ "description": "Public release boundary declaration (audit SG-17). Declares the boundary between the public release file set and the internal working set of a project: the public roots under which public files may live, the files that are explicitly public, the paths that must be present in the release set, and the paths that must never enter it. Mechanical verification (required paths present, forbidden paths absent, no undeclared file under a public root) is performed by the engineering-kit public-boundary check against the actual file set; this contract freezes only the declaration shape.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schemaVersion",
10
+ "kind",
11
+ "declarationId",
12
+ "declaredVersion",
13
+ "publicRoots",
14
+ "requiredPaths",
15
+ "forbiddenPaths",
16
+ "publicFiles"
17
+ ],
18
+ "properties": {
19
+ "schemaVersion": { "const": 1 },
20
+ "kind": { "const": "skill-family.public-boundary-declaration" },
21
+ "declarationId": {
22
+ "type": "string",
23
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
24
+ "description": "Stable kebab-case identifier of this boundary declaration."
25
+ },
26
+ "declaredVersion": {
27
+ "type": "string",
28
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
29
+ "description": "Release version this boundary declaration applies to."
30
+ },
31
+ "publicRoots": {
32
+ "type": "array",
33
+ "minItems": 1,
34
+ "uniqueItems": true,
35
+ "items": {
36
+ "type": "string",
37
+ "pattern": "^[A-Za-z0-9._-]+(/[A-Za-z0-9._-]+)*$"
38
+ },
39
+ "description": "Project-root-relative POSIX directory roots; only files under these roots may belong to the public release set."
40
+ },
41
+ "requiredPaths": {
42
+ "type": "array",
43
+ "uniqueItems": true,
44
+ "items": {
45
+ "type": "string",
46
+ "pattern": "^[A-Za-z0-9._-]+(/[A-Za-z0-9._-]+)*$"
47
+ },
48
+ "description": "Paths that must exist in the release set; a missing required path is a boundary violation."
49
+ },
50
+ "forbiddenPaths": {
51
+ "type": "array",
52
+ "uniqueItems": true,
53
+ "items": {
54
+ "type": "string",
55
+ "pattern": "^[A-Za-z0-9._-]+(/[A-Za-z0-9._-]+)*$"
56
+ },
57
+ "description": "Paths that must never enter the public release set; presence of a forbidden path is a boundary violation."
58
+ },
59
+ "publicFiles": {
60
+ "type": "array",
61
+ "uniqueItems": true,
62
+ "items": {
63
+ "type": "string",
64
+ "pattern": "^[A-Za-z0-9._-]+(/[A-Za-z0-9._-]+)*$"
65
+ },
66
+ "description": "Explicit enumeration of the public files. Any file under a public root that is not listed here is an undeclared leak."
67
+ },
68
+ "note": {
69
+ "type": "string",
70
+ "description": "Optional human rationale; not consumed mechanically."
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.skill-family.example/v1/report-binding.json",
4
+ "title": "ReportBinding",
5
+ "description": "Binds one canonical rendered report to its report model and source machine result: the run identity, sha256 digests of the model, result, and report bytes, and the exact renderer version. Verification requires all three documents, re-renders the model, and recomputes every digest; any mismatch is SFC3001. A binding carries no prose and no facts of its own.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["schemaVersion", "kind", "runId", "modelDigest", "resultDigest", "reportDigest", "rendererVersion"],
9
+ "properties": {
10
+ "schemaVersion": {
11
+ "const": 1
12
+ },
13
+ "kind": {
14
+ "const": "skill-family.report-binding"
15
+ },
16
+ "runId": {
17
+ "type": "string",
18
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$",
19
+ "description": "The run identity the bound report and machine result share; a mismatch with either side is never a valid binding."
20
+ },
21
+ "resultDigest": {
22
+ "type": "string",
23
+ "pattern": "^[0-9a-f]{64}$",
24
+ "description": "sha256 hex digest over the canonical JSON of the bound machine result document."
25
+ },
26
+ "modelDigest": {
27
+ "type": "string",
28
+ "pattern": "^[0-9a-f]{64}$",
29
+ "description": "sha256 hex digest over the canonical JSON of the bound report-model document."
30
+ },
31
+ "reportDigest": {
32
+ "type": "string",
33
+ "pattern": "^[0-9a-f]{64}$",
34
+ "description": "sha256 hex digest over the exact rendered report bytes."
35
+ },
36
+ "rendererVersion": {
37
+ "type": "string",
38
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
39
+ "description": "Exact semver of the renderer that produced the bound report; no ranges."
40
+ }
41
+ }
42
+ }