release-skill 0.8.1 → 0.9.1

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 (126) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codebuddy-plugin/plugin.json +1 -1
  4. package/.codex-plugin/plugin.json +2 -2
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/CHANGELOG.md +63 -0
  7. package/INSTALL.md +27 -2
  8. package/INSTALL.zh-CN.md +19 -2
  9. package/README.md +41 -22
  10. package/README.zh-CN.md +34 -20
  11. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/consumer-contract-vectors.json +110 -0
  14. package/adapters/claude/bin/error-codes.json +8 -1
  15. package/adapters/claude/bin/foundation-resource-binding.json +1 -1
  16. package/adapters/claude/bin/registry.json +1 -1
  17. package/adapters/claude/bin/release-skill-local-finish.mjs +4 -0
  18. package/adapters/claude/bin/release-skill.bundle.mjs +3955 -2431
  19. package/adapters/claude/bin/rules.json +1 -1
  20. package/adapters/claude/bin/schemas/consumer-contract-vector.schema.json +149 -0
  21. package/adapters/claude/schemas/release-plan.schema.json +40 -3
  22. package/adapters/claude/skills/release-finish/SKILL.md +65 -0
  23. package/adapters/claude/skills/release-help/SKILL.md +3 -2
  24. package/adapters/claude/skills/release-prepare/SKILL.md +2 -2
  25. package/adapters/claude/skills/release-publish/SKILL.md +3 -1
  26. package/adapters/claude/skills/release-verify/SKILL.md +6 -1
  27. package/adapters/claude/src/schemas/migration-manifest.schema.json +271 -7
  28. package/adapters/claude/src/schemas/profile-adoption-declaration.schema.json +8 -0
  29. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  30. package/adapters/codex/bin/consumer-contract-vectors.json +110 -0
  31. package/adapters/codex/bin/error-codes.json +8 -1
  32. package/adapters/codex/bin/foundation-resource-binding.json +1 -1
  33. package/adapters/codex/bin/registry.json +1 -1
  34. package/adapters/codex/bin/release-skill-local-finish.mjs +4 -0
  35. package/adapters/codex/bin/release-skill.bundle.mjs +3955 -2431
  36. package/adapters/codex/bin/rules.json +1 -1
  37. package/adapters/codex/bin/schemas/consumer-contract-vector.schema.json +149 -0
  38. package/adapters/codex/schemas/release-plan.schema.json +40 -3
  39. package/adapters/codex/skills/release-finish/SKILL.md +72 -0
  40. package/adapters/codex/skills/release-help/SKILL.md +3 -2
  41. package/adapters/codex/skills/release-prepare/SKILL.md +2 -2
  42. package/adapters/codex/skills/release-publish/SKILL.md +3 -1
  43. package/adapters/codex/skills/release-verify/SKILL.md +6 -1
  44. package/adapters/codex/src/schemas/migration-manifest.schema.json +271 -7
  45. package/adapters/codex/src/schemas/profile-adoption-declaration.schema.json +8 -0
  46. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  47. package/adapters/kimi/bin/consumer-contract-vectors.json +110 -0
  48. package/adapters/kimi/bin/error-codes.json +8 -1
  49. package/adapters/kimi/bin/foundation-resource-binding.json +1 -1
  50. package/adapters/kimi/bin/registry.json +1 -1
  51. package/adapters/kimi/bin/release-skill-local-finish.mjs +4 -0
  52. package/adapters/kimi/bin/release-skill.bundle.mjs +3955 -2431
  53. package/adapters/kimi/bin/rules.json +1 -1
  54. package/adapters/kimi/bin/schemas/consumer-contract-vector.schema.json +149 -0
  55. package/adapters/kimi/schemas/release-plan.schema.json +40 -3
  56. package/adapters/kimi/skills/release-finish/SKILL.md +72 -0
  57. package/adapters/kimi/skills/release-help/SKILL.md +3 -2
  58. package/adapters/kimi/skills/release-prepare/SKILL.md +2 -2
  59. package/adapters/kimi/skills/release-publish/SKILL.md +3 -1
  60. package/adapters/kimi/skills/release-verify/SKILL.md +6 -1
  61. package/adapters/kimi/src/schemas/migration-manifest.schema.json +271 -7
  62. package/adapters/kimi/src/schemas/profile-adoption-declaration.schema.json +8 -0
  63. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  64. package/adapters/workbuddy/bin/consumer-contract-vectors.json +110 -0
  65. package/adapters/workbuddy/bin/error-codes.json +8 -1
  66. package/adapters/workbuddy/bin/foundation-resource-binding.json +1 -1
  67. package/adapters/workbuddy/bin/registry.json +1 -1
  68. package/adapters/workbuddy/bin/release-skill-local-finish.mjs +4 -0
  69. package/adapters/workbuddy/bin/release-skill.bundle.mjs +3955 -2431
  70. package/adapters/workbuddy/bin/rules.json +1 -1
  71. package/adapters/workbuddy/bin/schemas/consumer-contract-vector.schema.json +149 -0
  72. package/adapters/workbuddy/schemas/release-plan.schema.json +40 -3
  73. package/adapters/workbuddy/skills/release-finish/SKILL.md +65 -0
  74. package/adapters/workbuddy/skills/release-help/SKILL.md +3 -2
  75. package/adapters/workbuddy/skills/release-prepare/SKILL.md +2 -2
  76. package/adapters/workbuddy/skills/release-publish/SKILL.md +3 -1
  77. package/adapters/workbuddy/skills/release-verify/SKILL.md +6 -1
  78. package/adapters/workbuddy/src/schemas/migration-manifest.schema.json +271 -7
  79. package/adapters/workbuddy/src/schemas/profile-adoption-declaration.schema.json +8 -0
  80. package/bin/consumer-contract-vectors.json +110 -0
  81. package/bin/error-codes.json +8 -1
  82. package/bin/foundation-resource-binding.json +1 -1
  83. package/bin/registry.json +1 -1
  84. package/bin/release-skill-cli.mjs +163 -2
  85. package/bin/release-skill-local-finish.mjs +4 -0
  86. package/bin/release-skill.bundle.mjs +3955 -2431
  87. package/bin/rules.json +1 -1
  88. package/bin/schemas/consumer-contract-vector.schema.json +149 -0
  89. package/package.json +4 -4
  90. package/platform-manifest.json +31 -5
  91. package/schemas/release-plan.schema.json +40 -3
  92. package/skills/release-finish/SKILL.md +65 -0
  93. package/skills/release-help/SKILL.md +3 -2
  94. package/skills/release-prepare/SKILL.md +2 -2
  95. package/skills/release-publish/SKILL.md +3 -1
  96. package/skills/release-verify/SKILL.md +6 -1
  97. package/skills-src/release-finish/SKILL.md +65 -0
  98. package/skills-src/release-help/SKILL.md +3 -2
  99. package/skills-src/release-prepare/SKILL.md +2 -2
  100. package/skills-src/release-publish/SKILL.md +3 -1
  101. package/skills-src/release-verify/SKILL.md +6 -1
  102. package/src/commands/approve.mjs +14 -2
  103. package/src/commands/distribute.mjs +562 -321
  104. package/src/commands/post-release-local.mjs +802 -0
  105. package/src/commands/postverify.mjs +262 -155
  106. package/src/commands/prepare.mjs +106 -56
  107. package/src/commands/publish.mjs +11 -10
  108. package/src/commands/reconcile.mjs +11 -10
  109. package/src/commands/setup.mjs +26 -13
  110. package/src/commands/ship.mjs +169 -28
  111. package/src/commands/verify.mjs +19 -8
  112. package/src/core/adoption-assessment.mjs +0 -3
  113. package/src/core/approval.mjs +11 -8
  114. package/src/core/derived-artifact-gates.mjs +32 -5
  115. package/src/core/hooks.mjs +0 -16
  116. package/src/core/plan.mjs +19 -11
  117. package/src/core/postpublish-approval.mjs +12 -2
  118. package/src/core/postpublish-bundle.mjs +51 -13
  119. package/src/core/postpublish.mjs +146 -6
  120. package/src/core/preset-executor.mjs +53 -0
  121. package/src/core/proposal-inbox.mjs +91 -27
  122. package/src/core/recovery.mjs +27 -12
  123. package/src/producers/build-adapters.mjs +10 -1
  124. package/src/producers/foundation-resource-projection.mjs +16 -3
  125. package/src/schemas/migration-manifest.schema.json +271 -7
  126. package/src/schemas/profile-adoption-declaration.schema.json +8 -0
@@ -54,6 +54,14 @@
54
54
  "stability": { "enum": ["stable", "candidate-only"] }
55
55
  }
56
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
+ },
57
65
  "foundation_pin": {
58
66
  "type": "object",
59
67
  "additionalProperties": false,
@@ -0,0 +1,110 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "skill-family.contracts.consumer-contract-vectors",
4
+ "foundationVersion": "0.14.0",
5
+ "sets": [
6
+ {
7
+ "capabilityId": "foundation.contracts.object-validation",
8
+ "vectorSetId": "foundation.contracts.object-validation.consumer-v1",
9
+ "contractId": "skill-family-contracts:validateDocument",
10
+ "strategy": "real-pure",
11
+ "vectors": [
12
+ {
13
+ "schemaVersion": 1,
14
+ "kind": "skill-family.consumer-contract-vector",
15
+ "vectorId": "foundation.contracts.object-validation.consumer-v1.indeterminate",
16
+ "vectorSetId": "foundation.contracts.object-validation.consumer-v1",
17
+ "capabilityId": "foundation.contracts.object-validation",
18
+ "foundationVersion": "0.14.0",
19
+ "contractId": "skill-family-contracts:validateDocument",
20
+ "caseClass": "indeterminate",
21
+ "strategy": "real-pure",
22
+ "request": {
23
+ "document": { "schemaVersion": 1, "kind": "skill-family.project-manifest" },
24
+ "options": { "schemaId": "https://contracts.skill-family.example/v1/project-manifest.json", "dialect": "2020-12", "policy": "strict" }
25
+ },
26
+ "expected": { "outcome": "indeterminate", "allowedStates": ["return", "throw"], "failClosed": true }
27
+ },
28
+ {
29
+ "schemaVersion": 1,
30
+ "kind": "skill-family.consumer-contract-vector",
31
+ "vectorId": "foundation.contracts.object-validation.consumer-v1.negative",
32
+ "vectorSetId": "foundation.contracts.object-validation.consumer-v1",
33
+ "capabilityId": "foundation.contracts.object-validation",
34
+ "foundationVersion": "0.14.0",
35
+ "contractId": "skill-family-contracts:validateDocument",
36
+ "caseClass": "negative",
37
+ "strategy": "real-pure",
38
+ "request": {
39
+ "document": { "schemaVersion": 1, "kind": "skill-family.project-manifest", "project": { "id": "demo-project", "name": "Demo Project" }, "contracts": { "version": "not-a-version", "profile": "generic" } },
40
+ "options": { "schemaId": "https://contracts.skill-family.example/v1/project-manifest.json", "dialect": "2020-12", "policy": "strict" }
41
+ },
42
+ "expected": { "outcome": "return", "value": { "valid": false, "errorCode": "SFC1001", "errors": [{ "keyword": "pattern", "instancePath": "/contracts/version", "schemaPath": "#/properties/contracts/properties/version/pattern", "message": "must match pattern \"^[0-9]+\\.[0-9]+\\.[0-9]+$\"", "params": { "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" } }], "data": { "schemaVersion": 1, "kind": "skill-family.project-manifest", "project": { "id": "demo-project", "name": "Demo Project" }, "contracts": { "version": "not-a-version", "profile": "generic" } } } }
43
+ },
44
+ {
45
+ "schemaVersion": 1,
46
+ "kind": "skill-family.consumer-contract-vector",
47
+ "vectorId": "foundation.contracts.object-validation.consumer-v1.positive",
48
+ "vectorSetId": "foundation.contracts.object-validation.consumer-v1",
49
+ "capabilityId": "foundation.contracts.object-validation",
50
+ "foundationVersion": "0.14.0",
51
+ "contractId": "skill-family-contracts:validateDocument",
52
+ "caseClass": "positive",
53
+ "strategy": "real-pure",
54
+ "request": {
55
+ "document": { "schemaVersion": 1, "kind": "skill-family.project-manifest", "project": { "id": "demo-project", "name": "Demo Project" }, "contracts": { "version": "1.0.0", "profile": "generic" } },
56
+ "options": { "schemaId": "https://contracts.skill-family.example/v1/project-manifest.json", "dialect": "2020-12", "policy": "strict" }
57
+ },
58
+ "expected": { "outcome": "return", "value": { "valid": true, "errorCode": null, "errors": [], "data": { "schemaVersion": 1, "kind": "skill-family.project-manifest", "project": { "id": "demo-project", "name": "Demo Project" }, "contracts": { "version": "1.0.0", "profile": "generic" } } } }
59
+ }
60
+ ]
61
+ },
62
+ {
63
+ "capabilityId": "foundation.harness.atomic-write",
64
+ "vectorSetId": "foundation.harness.atomic-write.consumer-v1",
65
+ "contractId": "skill-family-harness-node:writeFileAtomic",
66
+ "strategy": "official-fake",
67
+ "vectors": [
68
+ {
69
+ "schemaVersion": 1,
70
+ "kind": "skill-family.consumer-contract-vector",
71
+ "vectorId": "foundation.harness.atomic-write.consumer-v1.indeterminate",
72
+ "vectorSetId": "foundation.harness.atomic-write.consumer-v1",
73
+ "capabilityId": "foundation.harness.atomic-write",
74
+ "foundationVersion": "0.14.0",
75
+ "contractId": "skill-family-harness-node:writeFileAtomic",
76
+ "caseClass": "indeterminate",
77
+ "strategy": "official-fake",
78
+ "request": { "root": { "runtimeBinding": "atomic-write-canonical-root" }, "relPath": "records/item.json", "data": "fixture-data", "options": { "mode": 420 } },
79
+ "expected": { "outcome": "indeterminate", "allowedStates": ["return", "throw"], "failClosed": true }
80
+ },
81
+ {
82
+ "schemaVersion": 1,
83
+ "kind": "skill-family.consumer-contract-vector",
84
+ "vectorId": "foundation.harness.atomic-write.consumer-v1.negative",
85
+ "vectorSetId": "foundation.harness.atomic-write.consumer-v1",
86
+ "capabilityId": "foundation.harness.atomic-write",
87
+ "foundationVersion": "0.14.0",
88
+ "contractId": "skill-family-harness-node:writeFileAtomic",
89
+ "caseClass": "negative",
90
+ "strategy": "official-fake",
91
+ "request": { "root": { "runtimeBinding": "atomic-write-canonical-root" }, "relPath": "../outside.json", "data": "fixture-data", "options": { "mode": 420 } },
92
+ "expected": { "outcome": "throw", "errorCode": "SFC2004", "errorKind": "path-traversal" }
93
+ },
94
+ {
95
+ "schemaVersion": 1,
96
+ "kind": "skill-family.consumer-contract-vector",
97
+ "vectorId": "foundation.harness.atomic-write.consumer-v1.positive",
98
+ "vectorSetId": "foundation.harness.atomic-write.consumer-v1",
99
+ "capabilityId": "foundation.harness.atomic-write",
100
+ "foundationVersion": "0.14.0",
101
+ "contractId": "skill-family-harness-node:writeFileAtomic",
102
+ "caseClass": "positive",
103
+ "strategy": "official-fake",
104
+ "request": { "root": { "runtimeBinding": "atomic-write-canonical-root" }, "relPath": "records/item.json", "data": "fixture-data", "options": { "mode": 420 } },
105
+ "expected": { "outcome": "return", "valueRelation": "atomic-write-contained-absolute-target" }
106
+ }
107
+ ]
108
+ }
109
+ ]
110
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "kind": "skill-family.contracts.error-codes",
4
- "contractsVersion": "1.13.0",
4
+ "contractsVersion": "1.14.0",
5
5
  "policy": {
6
6
  "format": "^SFC[0-9]{4}$",
7
7
  "ranges": [
@@ -108,6 +108,13 @@
108
108
  "stableSince": "1.0.0",
109
109
  "meaning": "A registered schema does not compile under its declared dialect (the schema document itself is invalid)."
110
110
  },
111
+ {
112
+ "code": "SFC1013",
113
+ "name": "CONSUMER_CONTRACT_VERSION_MISMATCH",
114
+ "category": "contract",
115
+ "stableSince": "1.14.0",
116
+ "meaning": "A consumer contract vector, capability identity, vector set, or Foundation package version does not match the installed Contracts package."
117
+ },
111
118
  {
112
119
  "code": "SFC2002",
113
120
  "name": "UNKNOWN_OPERATION",
@@ -1 +1 @@
1
- {"kind":"skill-family.foundation-resource-binding","resources":[{"package":"skill-family-contracts","path":"bin/error-codes.json","rel":"src/error-codes.json","sha256":"6cfc1942b7d0b0823437ff8460a07e4f6eaa78ff5abe966ac34b77dccb0359c2","size":5813},{"package":"skill-family-contracts","path":"bin/foundation-legal/skill-family-contracts/LICENSE","rel":"LICENSE","sha256":"4b1d761838e4612bac9c52ae388d261c8546f78d98c18d59c8e2babacfb96df0","size":11436},{"package":"skill-family-contracts","path":"bin/foundation-legal/skill-family-contracts/NOTICE","rel":"NOTICE","sha256":"0cdc3383ff384f6911679e601c4f541bc9b230a785c8aa11c2e23609618b6ac4","size":390},{"package":"skill-family-engineering-kit","path":"bin/foundation-legal/skill-family-engineering-kit/LICENSE","rel":"LICENSE","sha256":"4b1d761838e4612bac9c52ae388d261c8546f78d98c18d59c8e2babacfb96df0","size":11436},{"package":"skill-family-engineering-kit","path":"bin/foundation-legal/skill-family-engineering-kit/NOTICE","rel":"NOTICE","sha256":"0cdc3383ff384f6911679e601c4f541bc9b230a785c8aa11c2e23609618b6ac4","size":390},{"package":"skill-family-engineering-kit","path":"bin/foundation-legal/skill-family-engineering-kit/THIRD_PARTY_NOTICES","rel":"THIRD_PARTY_NOTICES","sha256":"2510a1fd30bf6e9c723b8b1e42d00bbe3d471747394475e841b4c85474d67973","size":6455},{"package":"skill-family-harness-node","path":"bin/foundation-legal/skill-family-harness-node/LICENSE","rel":"LICENSE","sha256":"4b1d761838e4612bac9c52ae388d261c8546f78d98c18d59c8e2babacfb96df0","size":11436},{"package":"skill-family-harness-node","path":"bin/foundation-legal/skill-family-harness-node/NOTICE","rel":"NOTICE","sha256":"0cdc3383ff384f6911679e601c4f541bc9b230a785c8aa11c2e23609618b6ac4","size":390},{"package":"skill-family-harness-node","path":"bin/foundation-legal/skill-family-harness-node/native-NOTICE","rel":"src/native/NOTICE","sha256":"9b5b2aa89db2ad1bfc1971789992160bc0b9ca3cd37411701d11b9a7ff13fac5","size":116},{"package":"skill-family-contracts","path":"bin/kernel-protocol.json","rel":"src/kernel-protocol.json","sha256":"7e0d0bb7223032e642f71af7125a37f0d9a32965b52f1d096cb7ff9a49b19864","size":2422},{"package":"skill-family-engineering-kit","path":"bin/license-texts/Apache-2.0.txt","rel":"src/license-texts/Apache-2.0.txt","sha256":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","size":11357},{"package":"skill-family-engineering-kit","path":"bin/license-texts/MIT.txt","rel":"src/license-texts/MIT.txt","sha256":"56016cbac6c1d3f565fc854356f6781757254ea34be30a0b75869ae2df0118b6","size":1081},{"package":"skill-family-harness-node","path":"bin/prebuild-manifest.json","rel":"src/native/prebuild-manifest.json","sha256":"76a1e6f99ef5980043df4f328bbe9623dfc8cbba6655e008a8bb1d53d9e49ace","size":2230},{"package":"skill-family-harness-node","path":"bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node","rel":"src/native/prebuilds/darwin-arm64/bound_read.darwin-arm64.node","sha256":"19ce71026b737ba6b56da78ffabca4bb25f21249c30b545d68633d4b77547fde","size":53424},{"package":"skill-family-harness-node","path":"bin/prebuilds/darwin-x64/bound_read.darwin-x64.node","rel":"src/native/prebuilds/darwin-x64/bound_read.darwin-x64.node","sha256":"e01e4a1df3554da857189f483174d0480eb36063ce17b5857a23fa8a02f4a664","size":28400},{"package":"skill-family-harness-node","path":"bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node","rel":"src/native/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node","sha256":"7b7fd1188d2bbf356fe8c44690fd80bc7fb02e9f6f9dc7ee1c10834bf1c519b1","size":72672},{"package":"skill-family-harness-node","path":"bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node","rel":"src/native/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node","sha256":"749b69ba1b7da3496e59f92f2ca8d04800031b2479c13b3ca63555ee69671acc","size":38904},{"package":"skill-family-contracts","path":"bin/registry.json","rel":"src/registry.json","sha256":"ca5c88fdc5d01b8f973e35f7ca4dd3a6dc9b401d039e96067c34c2a6e5e6d8f5","size":11767},{"package":"skill-family-contracts","path":"bin/rules.json","rel":"src/rules.json","sha256":"b97ebdb14fae1d73005c9912b379b549c25805d6d4f9fcdc94beb8ed6a2dd182","size":3578},{"package":"skill-family-engineering-kit","path":"data/hosts/claude/host-descriptor.json","rel":"data/hosts/claude/host-descriptor.json","sha256":"c9e7899c7e69cfd3eaed82f30287f65e47e2839691b45dc42e0f4971e7523481","size":958},{"package":"skill-family-engineering-kit","path":"data/hosts/codebuddy/host-descriptor.json","rel":"data/hosts/codebuddy/host-descriptor.json","sha256":"1b3dddc296838672b3e7f15bee4e3df268ee151a80b83998bb6193005580a3e0","size":377},{"package":"skill-family-engineering-kit","path":"data/hosts/codex/host-descriptor.json","rel":"data/hosts/codex/host-descriptor.json","sha256":"eed872463ae3f638f9a899879ab23ec79f8f07ee1e874d749eb858c316b89946","size":942},{"package":"skill-family-engineering-kit","path":"data/hosts/deepseek-harness/host-descriptor.json","rel":"data/hosts/deepseek-harness/host-descriptor.json","sha256":"d5ab344ce02a300a3e4063fc2c7eb1862eeb3ddc460f4d9cde67773e1b3e6eed","size":415},{"package":"skill-family-engineering-kit","path":"data/hosts/kimi-code/host-descriptor.json","rel":"data/hosts/kimi-code/host-descriptor.json","sha256":"8e6e442180242daf947b9edbd1b6913dfaf0786d486db5826cf442c9c18816cd","size":706},{"package":"skill-family-engineering-kit","path":"data/hosts/qoder/host-descriptor.json","rel":"data/hosts/qoder/host-descriptor.json","sha256":"6ba5075bab5c30e4bb69c4f492fa3a04c5579cc5e6a752ca7679a67a8d4462eb","size":515},{"package":"skill-family-engineering-kit","path":"data/hosts/registry.json","rel":"data/hosts/registry.json","sha256":"052b9eb5ec9f771eb76009d522ddb1790f890481da7a103fe444dd1ce59adcd9","size":197},{"package":"skill-family-engineering-kit","path":"data/hosts/workbuddy/host-descriptor.json","rel":"data/hosts/workbuddy/host-descriptor.json","sha256":"221d6240f3428b75db80890d667f3100d9f21d7d656f25cb7f45c4fce478369a","size":702},{"package":"skill-family-engineering-kit","path":"data/licensing/registry.json","rel":"data/licensing/registry.json","sha256":"25e9eddb3e6774980dd44e9cb74a1457302ff7a01d77e6f4e142dd77ac6234c3","size":5838},{"package":"skill-family-engineering-kit","path":"data/licensing/schema.json","rel":"data/licensing/schema.json","sha256":"bd1ce24105cff39331a06e4cb08a5937f196ad6cd3c23db6d0b56440528bea21","size":5136},{"package":"skill-family-contracts","path":"src/schemas/adapter-build-manifest.schema.json","rel":"src/schemas/adapter-build-manifest.schema.json","sha256":"48e07bddd1d13a6942fff15a1843c6bb36706c83da1b584ad9b0773afeb4e829","size":2312},{"package":"skill-family-contracts","path":"src/schemas/adapter-peer-verification-request.schema.json","rel":"src/schemas/adapter-peer-verification-request.schema.json","sha256":"965d2017f130c39ad20abd28bb250a793004ec60c41b9394e54cdc2a2e0752c1","size":2223},{"package":"skill-family-contracts","path":"src/schemas/adapter-peer-verification-result.schema.json","rel":"src/schemas/adapter-peer-verification-result.schema.json","sha256":"574c0adf1337a16dde4fa96ca3361a145faa678d4d4fbc1c270edc7a26dbc7dc","size":2483},{"package":"skill-family-contracts","path":"src/schemas/adapter-source.schema.json","rel":"src/schemas/adapter-source.schema.json","sha256":"32d2647baead350e5784fe7d3ef52217e2e20f94b262e1b8cead23b757282d22","size":1434},{"package":"skill-family-contracts","path":"src/schemas/audit-baseline-pin.schema.json","rel":"src/schemas/audit-baseline-pin.schema.json","sha256":"5084590fe3870acbdd651946b5ab88541d042eaec19d03c8b01e466b149a5253","size":6043},{"package":"skill-family-contracts","path":"src/schemas/declared-read-surface-result.schema.json","rel":"src/schemas/declared-read-surface-result.schema.json","sha256":"5ab26f874818602ff640bd4cee3c743db3eb6767d676a43520b199b554cb0783","size":2459},{"package":"skill-family-contracts","path":"src/schemas/filesystem-root-binding.schema.json","rel":"src/schemas/filesystem-root-binding.schema.json","sha256":"5e54c0febdc6c831fcc94b7d1cfb8f14aef838d718eb5e80a4f1b63bef1e3e61","size":567},{"package":"skill-family-contracts","path":"src/schemas/filesystem-tree-observation.schema.json","rel":"src/schemas/filesystem-tree-observation.schema.json","sha256":"9b9ae14963abff4a48192a45e5a592809171c11073dadf6456e54ff997a439aa","size":2377},{"package":"skill-family-contracts","path":"src/schemas/fixed-set-publication-manifest.schema.json","rel":"src/schemas/fixed-set-publication-manifest.schema.json","sha256":"382bbf8fd1ba99ddefb1e3f6077f379f30cd58cbafbaf3c4191151b3703c2ed2","size":3959},{"package":"skill-family-contracts","path":"src/schemas/fixed-set-publication-receipt.schema.json","rel":"src/schemas/fixed-set-publication-receipt.schema.json","sha256":"ed460c723d8a041b4cb9355c251b9c8f78e4dc03cddaa06af21ed8b2b86389a8","size":5726},{"package":"skill-family-contracts","path":"src/schemas/host-capability-fact.schema.json","rel":"src/schemas/host-capability-fact.schema.json","sha256":"120de1d79649e5d9a905c2039211565a7eb68aa6ce170fe0c60bb0d77ae92b22","size":1932},{"package":"skill-family-contracts","path":"src/schemas/host-descriptor.schema.json","rel":"src/schemas/host-descriptor.schema.json","sha256":"9898d2d1be5a39a5d01835dd5c3446566d6f7a3ce1821a26b5055a8783c57443","size":5950},{"package":"skill-family-contracts","path":"src/schemas/host-operation-plan.schema.json","rel":"src/schemas/host-operation-plan.schema.json","sha256":"536766652ab73aef2e2133f3379a9db967e765521f132749fb358bc91ba2a1d4","size":4244},{"package":"skill-family-contracts","path":"src/schemas/host-operation-receipt.schema.json","rel":"src/schemas/host-operation-receipt.schema.json","sha256":"be0901a0bd7c7d133031a9d5572b738ae697c2c5c019e6aa7d7e1b470d5b2fc5","size":4431},{"package":"skill-family-contracts","path":"src/schemas/host-probe-result.schema.json","rel":"src/schemas/host-probe-result.schema.json","sha256":"decd7ed048e0a511e67c7c7142456257577e737f56eccfeb9acd8c6a7caf03ef","size":1380},{"package":"skill-family-contracts","path":"src/schemas/host-registry.schema.json","rel":"src/schemas/host-registry.schema.json","sha256":"1fab4fa7c2bf8973dd314711e901ea7b7d8ab41f1f90eb45dc4b0c47a23bd241","size":561},{"package":"skill-family-contracts","path":"src/schemas/host-verification-request.schema.json","rel":"src/schemas/host-verification-request.schema.json","sha256":"1b145aca7f422ace5d5d5606ac644ad5e0b92b1eb42efad8ab4a04159c3e220f","size":3048},{"package":"skill-family-contracts","path":"src/schemas/host-verification-result.schema.json","rel":"src/schemas/host-verification-result.schema.json","sha256":"e4b40721b76b144f7709a27c82d657788a88f7bb1da16ab54f73e4fa42ae212a","size":6496},{"package":"skill-family-contracts","path":"src/schemas/managed-file-lock.schema.json","rel":"src/schemas/managed-file-lock.schema.json","sha256":"1b182ac2276a6ca2827a59e754b7cefbbe4c2d67a79f79e448620c56749eee51","size":2575},{"package":"skill-family-contracts","path":"src/schemas/migration-manifest.schema.json","rel":"src/schemas/migration-manifest.schema.json","sha256":"297121243b92f1415b2e72285a9dcea4f9d90e349daf888617595b0845ab7d01","size":5964},{"package":"skill-family-contracts","path":"src/schemas/observation-scope.schema.json","rel":"src/schemas/observation-scope.schema.json","sha256":"bc02d18a985335d2cd4e844705092decd47a3f2ec11433c67a0722ce6e1b3d01","size":3196},{"package":"skill-family-contracts","path":"src/schemas/operation-request.schema.json","rel":"src/schemas/operation-request.schema.json","sha256":"4553f7936c01a290d9c7b5f7e3467050788a6dd1758289815b9484e1557c5f71","size":2052},{"package":"skill-family-contracts","path":"src/schemas/operation-result.schema.json","rel":"src/schemas/operation-result.schema.json","sha256":"ed3c1d6473be94ffa60d2113a73169a12bb841f3887ab2c8e243aba21a1e15a1","size":3512},{"package":"skill-family-contracts","path":"src/schemas/platform-difference-registry.schema.json","rel":"src/schemas/platform-difference-registry.schema.json","sha256":"9665995a3a061bae37dbd0df3bb8d86f6de0faf772e8ac3d3fe30ef11668bc44","size":3942},{"package":"skill-family-contracts","path":"src/schemas/plugin-verification-request.schema.json","rel":"src/schemas/plugin-verification-request.schema.json","sha256":"21d5af0a7d22b976369978a4c8621d34f7e06fbd02c3345e7255d55306d2bdca","size":9802},{"package":"skill-family-contracts","path":"src/schemas/plugin-verification-result.schema.json","rel":"src/schemas/plugin-verification-result.schema.json","sha256":"5156afdde86a93d573061a2e2e8f6921310e6ac605b6a3fb8767d2cb41b16a36","size":20729},{"package":"skill-family-contracts","path":"src/schemas/profile-adoption-declaration.schema.json","rel":"src/schemas/profile-adoption-declaration.schema.json","sha256":"30ba6f637b0fa5e8a25f46d526b3c1103fbb936e7d83a49b8c0440ca2d553969","size":3896},{"package":"skill-family-contracts","path":"src/schemas/profile-descriptor.schema.json","rel":"src/schemas/profile-descriptor.schema.json","sha256":"603b166944aa1b1b8b944d1317b906f7a0a6d1e2f0e7e2f7108ffd3755985ec5","size":2999},{"package":"skill-family-contracts","path":"src/schemas/project-manifest.schema.json","rel":"src/schemas/project-manifest.schema.json","sha256":"ce3670b3aa00c92d5f5c060db251a6c1687acd0fd2c93710b1b176b07988d0c1","size":2199},{"package":"skill-family-contracts","path":"src/schemas/project-profile.schema.json","rel":"src/schemas/project-profile.schema.json","sha256":"228cb23a0983d746eaddd265deb270ccbf22f93b22d65f7ccab1ca469f3fc85d","size":1077},{"package":"skill-family-contracts","path":"src/schemas/public-boundary-declaration.schema.json","rel":"src/schemas/public-boundary-declaration.schema.json","sha256":"a22ae3dcf65138ea38058c8059fb06cff832f3017e339a50332ddf679c96195c","size":2937},{"package":"skill-family-contracts","path":"src/schemas/report-binding.schema.json","rel":"src/schemas/report-binding.schema.json","sha256":"8307e2e39ce4bc44d5c2921a0eb46fd269d416b61933468be39cc8e9ad0185c6","size":1831},{"package":"skill-family-contracts","path":"src/schemas/report-model.schema.json","rel":"src/schemas/report-model.schema.json","sha256":"edaaadec9459609a68f81f27d9a8c7404c32aea0db054240c8e34e3d7e09a461","size":10039},{"package":"skill-family-contracts","path":"src/schemas/source-authority-receipt.schema.json","rel":"src/schemas/source-authority-receipt.schema.json","sha256":"e512a0bd6583f7ec58bc344827b5ffd2cb9c496acfab946e3fa29d6aa095cedc","size":1307},{"package":"skill-family-contracts","path":"src/schemas/state-event-envelope.schema.json","rel":"src/schemas/state-event-envelope.schema.json","sha256":"93a727af23c157a98798e7942005b508a69489b755a411afb809dee470f1c6de","size":1543},{"package":"skill-family-contracts","path":"src/schemas/state-snapshot-metadata.schema.json","rel":"src/schemas/state-snapshot-metadata.schema.json","sha256":"0b17ad49d0be9355b3ac04091daf3c554547c9584e8e58ef4d0c9d782b681de2","size":934},{"package":"skill-family-contracts","path":"src/schemas/structured-scan-policy.schema.json","rel":"src/schemas/structured-scan-policy.schema.json","sha256":"81cd438da6ac6c81d1533796dfbd209becadc30c2483e3881b19a9923b767929","size":3556},{"package":"skill-family-contracts","path":"src/schemas/surface-scan-policy.schema.json","rel":"src/schemas/surface-scan-policy.schema.json","sha256":"5617ac4ca58a9a35f55c58d67a5246ae3805a817744bdaadbdfc51475f2fb9e4","size":2359},{"package":"skill-family-contracts","path":"src/schemas/timeout-policy.schema.json","rel":"src/schemas/timeout-policy.schema.json","sha256":"671ac0fcb1ca82db0ee5fa5a4aae70a0597ee2628a70340eb4dda8f5bcaa4c33","size":1459},{"package":"skill-family-contracts","path":"src/schemas/token-estimate-record.schema.json","rel":"src/schemas/token-estimate-record.schema.json","sha256":"b34b6bc215cf20f50ddd3d453cb5799644f7c665ac596162a3270a0ec8a1ff2a","size":2920},{"package":"skill-family-contracts","path":"src/schemas/token-estimate-result.schema.json","rel":"src/schemas/token-estimate-result.schema.json","sha256":"941621696604ed7aec425e19cff2f0c66612417f949b26d415e41bf124565e14","size":1493},{"package":"skill-family-contracts","path":"src/schemas/watchdog-termination-envelope.schema.json","rel":"src/schemas/watchdog-termination-envelope.schema.json","sha256":"9c5f6e356a2300c89ac8dcfa758751a93cd5281604a5bb54ad4506ba1042a3c5","size":6285}],"schemaVersion":1,"sourcePackages":{"skill-family-contracts":"0.13.0","skill-family-engineering-kit":"0.13.0","skill-family-harness-node":"0.13.0"}}
1
+ {"kind":"skill-family.foundation-resource-binding","resources":[{"package":"skill-family-contracts","path":"bin/consumer-contract-vectors.json","rel":"src/consumer-contract-vectors.json","sha256":"3acdb5abc8c5ab45460107cfdcd16b1744388f909ba44b2c7c316dcd30c2b5ff","size":6628},{"package":"skill-family-contracts","path":"bin/error-codes.json","rel":"src/error-codes.json","sha256":"04de550d57278d91cf885a07d69e845ec04b81669197a57ef4c56de664fbceb2","size":6122},{"package":"skill-family-contracts","path":"bin/foundation-legal/skill-family-contracts/LICENSE","rel":"LICENSE","sha256":"4b1d761838e4612bac9c52ae388d261c8546f78d98c18d59c8e2babacfb96df0","size":11436},{"package":"skill-family-contracts","path":"bin/foundation-legal/skill-family-contracts/NOTICE","rel":"NOTICE","sha256":"0cdc3383ff384f6911679e601c4f541bc9b230a785c8aa11c2e23609618b6ac4","size":390},{"package":"skill-family-engineering-kit","path":"bin/foundation-legal/skill-family-engineering-kit/LICENSE","rel":"LICENSE","sha256":"4b1d761838e4612bac9c52ae388d261c8546f78d98c18d59c8e2babacfb96df0","size":11436},{"package":"skill-family-engineering-kit","path":"bin/foundation-legal/skill-family-engineering-kit/NOTICE","rel":"NOTICE","sha256":"0cdc3383ff384f6911679e601c4f541bc9b230a785c8aa11c2e23609618b6ac4","size":390},{"package":"skill-family-engineering-kit","path":"bin/foundation-legal/skill-family-engineering-kit/THIRD_PARTY_NOTICES","rel":"THIRD_PARTY_NOTICES","sha256":"2510a1fd30bf6e9c723b8b1e42d00bbe3d471747394475e841b4c85474d67973","size":6455},{"package":"skill-family-harness-node","path":"bin/foundation-legal/skill-family-harness-node/LICENSE","rel":"LICENSE","sha256":"4b1d761838e4612bac9c52ae388d261c8546f78d98c18d59c8e2babacfb96df0","size":11436},{"package":"skill-family-harness-node","path":"bin/foundation-legal/skill-family-harness-node/NOTICE","rel":"NOTICE","sha256":"0cdc3383ff384f6911679e601c4f541bc9b230a785c8aa11c2e23609618b6ac4","size":390},{"package":"skill-family-harness-node","path":"bin/foundation-legal/skill-family-harness-node/native-NOTICE","rel":"src/native/NOTICE","sha256":"9b5b2aa89db2ad1bfc1971789992160bc0b9ca3cd37411701d11b9a7ff13fac5","size":116},{"package":"skill-family-contracts","path":"bin/kernel-protocol.json","rel":"src/kernel-protocol.json","sha256":"7e0d0bb7223032e642f71af7125a37f0d9a32965b52f1d096cb7ff9a49b19864","size":2422},{"package":"skill-family-engineering-kit","path":"bin/license-texts/Apache-2.0.txt","rel":"src/license-texts/Apache-2.0.txt","sha256":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","size":11357},{"package":"skill-family-engineering-kit","path":"bin/license-texts/MIT.txt","rel":"src/license-texts/MIT.txt","sha256":"56016cbac6c1d3f565fc854356f6781757254ea34be30a0b75869ae2df0118b6","size":1081},{"package":"skill-family-harness-node","path":"bin/prebuild-manifest.json","rel":"src/native/prebuild-manifest.json","sha256":"76a1e6f99ef5980043df4f328bbe9623dfc8cbba6655e008a8bb1d53d9e49ace","size":2230},{"package":"skill-family-harness-node","path":"bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node","rel":"src/native/prebuilds/darwin-arm64/bound_read.darwin-arm64.node","sha256":"19ce71026b737ba6b56da78ffabca4bb25f21249c30b545d68633d4b77547fde","size":53424},{"package":"skill-family-harness-node","path":"bin/prebuilds/darwin-x64/bound_read.darwin-x64.node","rel":"src/native/prebuilds/darwin-x64/bound_read.darwin-x64.node","sha256":"e01e4a1df3554da857189f483174d0480eb36063ce17b5857a23fa8a02f4a664","size":28400},{"package":"skill-family-harness-node","path":"bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node","rel":"src/native/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node","sha256":"7b7fd1188d2bbf356fe8c44690fd80bc7fb02e9f6f9dc7ee1c10834bf1c519b1","size":72672},{"package":"skill-family-harness-node","path":"bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node","rel":"src/native/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node","sha256":"749b69ba1b7da3496e59f92f2ca8d04800031b2479c13b3ca63555ee69671acc","size":38904},{"package":"skill-family-contracts","path":"bin/registry.json","rel":"src/registry.json","sha256":"33515f7b39bc6df31cea1fe8c1c0a414e235e9b2256653c5253340b19971ab87","size":11767},{"package":"skill-family-contracts","path":"bin/rules.json","rel":"src/rules.json","sha256":"0819cb43a2cc667d29c1f4f42b5bff4638aa2931cdda64b5a41fbab3019dd16d","size":3578},{"package":"skill-family-contracts","path":"bin/schemas/consumer-contract-vector.schema.json","rel":"src/schemas/consumer-contract-vector.schema.json","sha256":"71a42a6c500ad6fbc2e7514428fb89b6329c329892ed641cd7bfb5f0fa9544ff","size":4704},{"package":"skill-family-engineering-kit","path":"data/hosts/claude/host-descriptor.json","rel":"data/hosts/claude/host-descriptor.json","sha256":"c9e7899c7e69cfd3eaed82f30287f65e47e2839691b45dc42e0f4971e7523481","size":958},{"package":"skill-family-engineering-kit","path":"data/hosts/codebuddy/host-descriptor.json","rel":"data/hosts/codebuddy/host-descriptor.json","sha256":"1b3dddc296838672b3e7f15bee4e3df268ee151a80b83998bb6193005580a3e0","size":377},{"package":"skill-family-engineering-kit","path":"data/hosts/codex/host-descriptor.json","rel":"data/hosts/codex/host-descriptor.json","sha256":"eed872463ae3f638f9a899879ab23ec79f8f07ee1e874d749eb858c316b89946","size":942},{"package":"skill-family-engineering-kit","path":"data/hosts/deepseek-harness/host-descriptor.json","rel":"data/hosts/deepseek-harness/host-descriptor.json","sha256":"d5ab344ce02a300a3e4063fc2c7eb1862eeb3ddc460f4d9cde67773e1b3e6eed","size":415},{"package":"skill-family-engineering-kit","path":"data/hosts/kimi-code/host-descriptor.json","rel":"data/hosts/kimi-code/host-descriptor.json","sha256":"8e6e442180242daf947b9edbd1b6913dfaf0786d486db5826cf442c9c18816cd","size":706},{"package":"skill-family-engineering-kit","path":"data/hosts/qoder/host-descriptor.json","rel":"data/hosts/qoder/host-descriptor.json","sha256":"6ba5075bab5c30e4bb69c4f492fa3a04c5579cc5e6a752ca7679a67a8d4462eb","size":515},{"package":"skill-family-engineering-kit","path":"data/hosts/registry.json","rel":"data/hosts/registry.json","sha256":"052b9eb5ec9f771eb76009d522ddb1790f890481da7a103fe444dd1ce59adcd9","size":197},{"package":"skill-family-engineering-kit","path":"data/hosts/workbuddy/host-descriptor.json","rel":"data/hosts/workbuddy/host-descriptor.json","sha256":"221d6240f3428b75db80890d667f3100d9f21d7d656f25cb7f45c4fce478369a","size":702},{"package":"skill-family-engineering-kit","path":"data/licensing/registry.json","rel":"data/licensing/registry.json","sha256":"25e9eddb3e6774980dd44e9cb74a1457302ff7a01d77e6f4e142dd77ac6234c3","size":5838},{"package":"skill-family-engineering-kit","path":"data/licensing/schema.json","rel":"data/licensing/schema.json","sha256":"bd1ce24105cff39331a06e4cb08a5937f196ad6cd3c23db6d0b56440528bea21","size":5136},{"package":"skill-family-contracts","path":"src/schemas/adapter-build-manifest.schema.json","rel":"src/schemas/adapter-build-manifest.schema.json","sha256":"48e07bddd1d13a6942fff15a1843c6bb36706c83da1b584ad9b0773afeb4e829","size":2312},{"package":"skill-family-contracts","path":"src/schemas/adapter-peer-verification-request.schema.json","rel":"src/schemas/adapter-peer-verification-request.schema.json","sha256":"965d2017f130c39ad20abd28bb250a793004ec60c41b9394e54cdc2a2e0752c1","size":2223},{"package":"skill-family-contracts","path":"src/schemas/adapter-peer-verification-result.schema.json","rel":"src/schemas/adapter-peer-verification-result.schema.json","sha256":"574c0adf1337a16dde4fa96ca3361a145faa678d4d4fbc1c270edc7a26dbc7dc","size":2483},{"package":"skill-family-contracts","path":"src/schemas/adapter-source.schema.json","rel":"src/schemas/adapter-source.schema.json","sha256":"32d2647baead350e5784fe7d3ef52217e2e20f94b262e1b8cead23b757282d22","size":1434},{"package":"skill-family-contracts","path":"src/schemas/audit-baseline-pin.schema.json","rel":"src/schemas/audit-baseline-pin.schema.json","sha256":"5084590fe3870acbdd651946b5ab88541d042eaec19d03c8b01e466b149a5253","size":6043},{"package":"skill-family-contracts","path":"src/schemas/declared-read-surface-result.schema.json","rel":"src/schemas/declared-read-surface-result.schema.json","sha256":"5ab26f874818602ff640bd4cee3c743db3eb6767d676a43520b199b554cb0783","size":2459},{"package":"skill-family-contracts","path":"src/schemas/filesystem-root-binding.schema.json","rel":"src/schemas/filesystem-root-binding.schema.json","sha256":"5e54c0febdc6c831fcc94b7d1cfb8f14aef838d718eb5e80a4f1b63bef1e3e61","size":567},{"package":"skill-family-contracts","path":"src/schemas/filesystem-tree-observation.schema.json","rel":"src/schemas/filesystem-tree-observation.schema.json","sha256":"9b9ae14963abff4a48192a45e5a592809171c11073dadf6456e54ff997a439aa","size":2377},{"package":"skill-family-contracts","path":"src/schemas/fixed-set-publication-manifest.schema.json","rel":"src/schemas/fixed-set-publication-manifest.schema.json","sha256":"382bbf8fd1ba99ddefb1e3f6077f379f30cd58cbafbaf3c4191151b3703c2ed2","size":3959},{"package":"skill-family-contracts","path":"src/schemas/fixed-set-publication-receipt.schema.json","rel":"src/schemas/fixed-set-publication-receipt.schema.json","sha256":"ed460c723d8a041b4cb9355c251b9c8f78e4dc03cddaa06af21ed8b2b86389a8","size":5726},{"package":"skill-family-contracts","path":"src/schemas/host-capability-fact.schema.json","rel":"src/schemas/host-capability-fact.schema.json","sha256":"120de1d79649e5d9a905c2039211565a7eb68aa6ce170fe0c60bb0d77ae92b22","size":1932},{"package":"skill-family-contracts","path":"src/schemas/host-descriptor.schema.json","rel":"src/schemas/host-descriptor.schema.json","sha256":"9898d2d1be5a39a5d01835dd5c3446566d6f7a3ce1821a26b5055a8783c57443","size":5950},{"package":"skill-family-contracts","path":"src/schemas/host-operation-plan.schema.json","rel":"src/schemas/host-operation-plan.schema.json","sha256":"536766652ab73aef2e2133f3379a9db967e765521f132749fb358bc91ba2a1d4","size":4244},{"package":"skill-family-contracts","path":"src/schemas/host-operation-receipt.schema.json","rel":"src/schemas/host-operation-receipt.schema.json","sha256":"be0901a0bd7c7d133031a9d5572b738ae697c2c5c019e6aa7d7e1b470d5b2fc5","size":4431},{"package":"skill-family-contracts","path":"src/schemas/host-probe-result.schema.json","rel":"src/schemas/host-probe-result.schema.json","sha256":"decd7ed048e0a511e67c7c7142456257577e737f56eccfeb9acd8c6a7caf03ef","size":1380},{"package":"skill-family-contracts","path":"src/schemas/host-registry.schema.json","rel":"src/schemas/host-registry.schema.json","sha256":"1fab4fa7c2bf8973dd314711e901ea7b7d8ab41f1f90eb45dc4b0c47a23bd241","size":561},{"package":"skill-family-contracts","path":"src/schemas/host-verification-request.schema.json","rel":"src/schemas/host-verification-request.schema.json","sha256":"1b145aca7f422ace5d5d5606ac644ad5e0b92b1eb42efad8ab4a04159c3e220f","size":3048},{"package":"skill-family-contracts","path":"src/schemas/host-verification-result.schema.json","rel":"src/schemas/host-verification-result.schema.json","sha256":"e4b40721b76b144f7709a27c82d657788a88f7bb1da16ab54f73e4fa42ae212a","size":6496},{"package":"skill-family-contracts","path":"src/schemas/managed-file-lock.schema.json","rel":"src/schemas/managed-file-lock.schema.json","sha256":"1b182ac2276a6ca2827a59e754b7cefbbe4c2d67a79f79e448620c56749eee51","size":2575},{"package":"skill-family-contracts","path":"src/schemas/migration-manifest.schema.json","rel":"src/schemas/migration-manifest.schema.json","sha256":"ff5ea2f22c61301b6d30f508d7e2182bc89fe3c340eb64e733e9bebc11120e50","size":13373},{"package":"skill-family-contracts","path":"src/schemas/observation-scope.schema.json","rel":"src/schemas/observation-scope.schema.json","sha256":"bc02d18a985335d2cd4e844705092decd47a3f2ec11433c67a0722ce6e1b3d01","size":3196},{"package":"skill-family-contracts","path":"src/schemas/operation-request.schema.json","rel":"src/schemas/operation-request.schema.json","sha256":"4553f7936c01a290d9c7b5f7e3467050788a6dd1758289815b9484e1557c5f71","size":2052},{"package":"skill-family-contracts","path":"src/schemas/operation-result.schema.json","rel":"src/schemas/operation-result.schema.json","sha256":"ed3c1d6473be94ffa60d2113a73169a12bb841f3887ab2c8e243aba21a1e15a1","size":3512},{"package":"skill-family-contracts","path":"src/schemas/platform-difference-registry.schema.json","rel":"src/schemas/platform-difference-registry.schema.json","sha256":"9665995a3a061bae37dbd0df3bb8d86f6de0faf772e8ac3d3fe30ef11668bc44","size":3942},{"package":"skill-family-contracts","path":"src/schemas/plugin-verification-request.schema.json","rel":"src/schemas/plugin-verification-request.schema.json","sha256":"21d5af0a7d22b976369978a4c8621d34f7e06fbd02c3345e7255d55306d2bdca","size":9802},{"package":"skill-family-contracts","path":"src/schemas/plugin-verification-result.schema.json","rel":"src/schemas/plugin-verification-result.schema.json","sha256":"5156afdde86a93d573061a2e2e8f6921310e6ac605b6a3fb8767d2cb41b16a36","size":20729},{"package":"skill-family-contracts","path":"src/schemas/profile-adoption-declaration.schema.json","rel":"src/schemas/profile-adoption-declaration.schema.json","sha256":"24603f16dd32e924da5d7b760063d8d7241e597d8fdc155fd8a0bf0dfa4e17c0","size":4127},{"package":"skill-family-contracts","path":"src/schemas/profile-descriptor.schema.json","rel":"src/schemas/profile-descriptor.schema.json","sha256":"603b166944aa1b1b8b944d1317b906f7a0a6d1e2f0e7e2f7108ffd3755985ec5","size":2999},{"package":"skill-family-contracts","path":"src/schemas/project-manifest.schema.json","rel":"src/schemas/project-manifest.schema.json","sha256":"ce3670b3aa00c92d5f5c060db251a6c1687acd0fd2c93710b1b176b07988d0c1","size":2199},{"package":"skill-family-contracts","path":"src/schemas/project-profile.schema.json","rel":"src/schemas/project-profile.schema.json","sha256":"228cb23a0983d746eaddd265deb270ccbf22f93b22d65f7ccab1ca469f3fc85d","size":1077},{"package":"skill-family-contracts","path":"src/schemas/public-boundary-declaration.schema.json","rel":"src/schemas/public-boundary-declaration.schema.json","sha256":"a22ae3dcf65138ea38058c8059fb06cff832f3017e339a50332ddf679c96195c","size":2937},{"package":"skill-family-contracts","path":"src/schemas/report-binding.schema.json","rel":"src/schemas/report-binding.schema.json","sha256":"8307e2e39ce4bc44d5c2921a0eb46fd269d416b61933468be39cc8e9ad0185c6","size":1831},{"package":"skill-family-contracts","path":"src/schemas/report-model.schema.json","rel":"src/schemas/report-model.schema.json","sha256":"edaaadec9459609a68f81f27d9a8c7404c32aea0db054240c8e34e3d7e09a461","size":10039},{"package":"skill-family-contracts","path":"src/schemas/source-authority-receipt.schema.json","rel":"src/schemas/source-authority-receipt.schema.json","sha256":"e512a0bd6583f7ec58bc344827b5ffd2cb9c496acfab946e3fa29d6aa095cedc","size":1307},{"package":"skill-family-contracts","path":"src/schemas/state-event-envelope.schema.json","rel":"src/schemas/state-event-envelope.schema.json","sha256":"93a727af23c157a98798e7942005b508a69489b755a411afb809dee470f1c6de","size":1543},{"package":"skill-family-contracts","path":"src/schemas/state-snapshot-metadata.schema.json","rel":"src/schemas/state-snapshot-metadata.schema.json","sha256":"0b17ad49d0be9355b3ac04091daf3c554547c9584e8e58ef4d0c9d782b681de2","size":934},{"package":"skill-family-contracts","path":"src/schemas/structured-scan-policy.schema.json","rel":"src/schemas/structured-scan-policy.schema.json","sha256":"81cd438da6ac6c81d1533796dfbd209becadc30c2483e3881b19a9923b767929","size":3556},{"package":"skill-family-contracts","path":"src/schemas/surface-scan-policy.schema.json","rel":"src/schemas/surface-scan-policy.schema.json","sha256":"5617ac4ca58a9a35f55c58d67a5246ae3805a817744bdaadbdfc51475f2fb9e4","size":2359},{"package":"skill-family-contracts","path":"src/schemas/timeout-policy.schema.json","rel":"src/schemas/timeout-policy.schema.json","sha256":"671ac0fcb1ca82db0ee5fa5a4aae70a0597ee2628a70340eb4dda8f5bcaa4c33","size":1459},{"package":"skill-family-contracts","path":"src/schemas/token-estimate-record.schema.json","rel":"src/schemas/token-estimate-record.schema.json","sha256":"b34b6bc215cf20f50ddd3d453cb5799644f7c665ac596162a3270a0ec8a1ff2a","size":2920},{"package":"skill-family-contracts","path":"src/schemas/token-estimate-result.schema.json","rel":"src/schemas/token-estimate-result.schema.json","sha256":"941621696604ed7aec425e19cff2f0c66612417f949b26d415e41bf124565e14","size":1493},{"package":"skill-family-contracts","path":"src/schemas/watchdog-termination-envelope.schema.json","rel":"src/schemas/watchdog-termination-envelope.schema.json","sha256":"9c5f6e356a2300c89ac8dcfa758751a93cd5281604a5bb54ad4506ba1042a3c5","size":6285}],"schemaVersion":1,"sourcePackages":{"skill-family-contracts":"0.14.0","skill-family-engineering-kit":"0.14.0","skill-family-harness-node":"0.14.0"}}
package/bin/registry.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "kind": "skill-family.contracts.registry",
4
- "contractsVersion": "1.13.0",
4
+ "contractsVersion": "1.14.0",
5
5
  "note": "Protocol-name and schema-$id registry. Registration mechanically rejects duplicate protocol name/version (SFC1004) and duplicate $id (SFC1003). This file is the single registration surface; adding an entry is a contracts change.",
6
6
  "protocols": [
7
7
  {
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import { readFile } from 'node:fs/promises';
3
4
  import { basename, dirname, join, resolve } from 'node:path';
4
5
  import { execFile as execFileCb } from 'node:child_process';
5
6
  import { promisify } from 'node:util';
@@ -36,7 +37,7 @@ registerPathRedactor(redactSensitivePaths);
36
37
 
37
38
  const execFile = promisify(execFileCb);
38
39
 
39
- const COMMANDS = new Set(['help', 'setup', 'assess', 'prepare', 'approve', 'publish', 'reconcile', 'verify', 'ship', 'attest', 'hooks', 'artifacts', 'docs', 'distribute', 'route', 'lineage']);
40
+ const COMMANDS = new Set(['help', 'setup', 'assess', 'prepare', 'approve', 'publish', 'reconcile', 'verify', 'ship', 'post-release', 'attest', 'hooks', 'artifacts', 'docs', 'distribute', 'route', 'lineage']);
40
41
 
41
42
  /**
42
43
  * Wait until writes already queued on a process output stream have reached
@@ -308,6 +309,8 @@ Commands:
308
309
  verify Fresh remote and consumer verification; only this reaches VERIFIED
309
310
  ship Resume one durable prepare -> approve -> publish -> verify flow; completes a parked
310
311
  postVerify hook once its checkpoint approval is provided (--hook-approval)
312
+ post-release Inspect optional local finishing work after VERIFIED; update installed host plugins
313
+ only after exact plan confirmation
311
314
  attest Legacy only: record a Kimi/CodeBuddy result for an old frozen plan
312
315
  hooks Run declared development hooks and populate reusable receipts
313
316
  artifacts Artifact status, inspect, update/apply, resolution, and diagnostics
@@ -360,6 +363,9 @@ Options:
360
363
  --approve Approve the ship plan (boolean; plan digest is auto-resolved)
361
364
  --hook-approval <path> Checkpoint approval for a requiresApproval postPublish hook (ship/distribute; repeatable)
362
365
  --state <path> Override the durable ship state file
366
+ --update-local-hosts Update installed plugins for selected local hosts after VERIFIED
367
+ --hosts <ids> Comma-separated local hosts for post-release update. No local host is updated unless --hosts contains at least one id
368
+ --confirm-plan <digest> Confirm the exact VERIFIED plan before local host mutation
363
369
  --no-hook-cache Force every prepare hook to run in full; neither read nor write the hook cache
364
370
  --json Output results as JSON
365
371
  --version Show version and exit
@@ -368,7 +374,8 @@ Options:
368
374
  Safety:
369
375
  Safe default: help -> setup (when config is absent) -> assess -> prepare --offline -> human review.
370
376
  Production happy end: ship --target-version <ver> -> ship --approve --actor <name>.
371
- The ship command runs configured hooks and gates automatically; the only human gate is plan approval.
377
+ The ship command runs configured hooks and gates automatically. Frozen plan approval is the only
378
+ normal release-level approval; requiresApproval postPublish hooks keep independent checkpoint approvals.
372
379
  Kimi/CodeBuddy installations are non-blocking manual follow-up tasks (not verified by system).
373
380
  prepare copies current public files into a local snapshot; it does not rewrite source files.
374
381
  - Default mode is offline (release-skill pipeline does no remote writes)
@@ -377,6 +384,7 @@ Safety:
377
384
  - To ensure zero remote writes, disable hooks or audit them separately
378
385
  - docs refresh --write rewrites only declared README managed regions and the current CHANGELOG entry after exact refreshDigest confirmation; it never commits, pushes, tags, publishes, or installs.
379
386
  - publish requires explicit approval; plan digest is auto-read from the plan file
387
+ - post-release local host updates are optional local mutations and never change VERIFIED
380
388
  - publish consumes frozen Git/npm artifacts, never the live workspace
381
389
  - existing remote objects and uncertain checks stop for human intervention
382
390
  - production-equivalent protocol sandbox is verified; a real remote canary is not
@@ -743,6 +751,34 @@ if (command === 'hooks') {
743
751
  }
744
752
 
745
753
  // --- Durable end-to-end ship routing ---
754
+ function printShipApprovalSummary(result) {
755
+ const summary = result.approvalSummary;
756
+ if (!summary) return;
757
+ console.log('Approval summary:');
758
+ for (const unit of summary.units ?? []) {
759
+ console.log(` Unit ${unit.id} ${unit.targetVersion}`);
760
+ console.log(` Public repo: ${unit.publicRepo}`);
761
+ console.log(` Branch: ${unit.branch} (${unit.branchStrategy})`);
762
+ console.log(` Tag: ${unit.tag}`);
763
+ for (const npm of unit.npm ?? []) {
764
+ console.log(` npm: ${npm.package}@${npm.version} registry=${npm.registry} dist-tag=${npm.distTag} access=${npm.access} provenance=${npm.provenance}`);
765
+ }
766
+ if (unit.githubRelease) {
767
+ console.log(` GitHub Release: ${unit.githubRelease.repo} tag=${unit.githubRelease.tag} name=${unit.githubRelease.name}`);
768
+ }
769
+ }
770
+ for (const action of summary.actions ?? []) {
771
+ console.log(` External action ${action.id} type=${action.type} unit=${action.unitId} target=${JSON.stringify(action.target)}`);
772
+ }
773
+ if ((summary.waivers ?? []).length === 0) console.log(' Waivers: none');
774
+ else for (const waiver of summary.waivers) console.log(` Waiver: ${JSON.stringify(waiver)}`);
775
+ for (const checkpoint of summary.postPublishCheckpointApprovals ?? []) {
776
+ console.log(` PostPublish checkpoint ${checkpoint.actionId}: unit=${checkpoint.unitId} hook=${checkpoint.hookId} phase=${checkpoint.phase} preset=${checkpoint.preset ?? 'command'} delivery=${checkpoint.delivery ?? 'command'} requiresApproval=${checkpoint.requiresApproval} includedInPlanApproval=${checkpoint.includedInPlanApproval}`);
777
+ console.log(` Independent checkpoint approval: valid for at most ${checkpoint.approvalWindowHours} hours and bound to (planDigest=${checkpoint.binding.planDigest}, hookId=${checkpoint.binding.hookId}).`);
778
+ }
779
+ console.log(` Plan approval coverage: externalActions=${result.externalActionsIncludedInPlanApproval}, verificationGates=${result.verificationGatesIncludedInPlanApproval}, postPublishCheckpointApprovals=${result.postPublishCheckpointApprovalsIncludedInPlanApproval}`);
780
+ }
781
+
746
782
  if (command === 'ship') {
747
783
  const value = (flag) => {
748
784
  const idx = args.indexOf(flag);
@@ -805,6 +841,7 @@ if (command === 'ship') {
805
841
  console.log(`Warning [${warning.code}] ${warning.message}`);
806
842
  }
807
843
  if (result.planDigest && result.status === 'NEEDS_PLAN_APPROVAL') {
844
+ printShipApprovalSummary(result);
808
845
  console.log(`Approve plan: ship --approve --actor <person>`);
809
846
  }
810
847
  if (result.postVerify) {
@@ -815,6 +852,19 @@ if (command === 'ship') {
815
852
  console.log('then re-run: release-skill ship --root <root> --hook-approval <approval-record>');
816
853
  }
817
854
  }
855
+ if (result.status === 'VERIFIED' && result.postRelease) {
856
+ if (result.postRelease.status === 'UNAVAILABLE') {
857
+ console.warn(`Post-release checklist unavailable: ${result.postRelease.diagnostic?.message ?? 'unknown error'}`);
858
+ } else if (result.postRelease.merge.promptRequired) {
859
+ console.log('Post-release: ask whether to merge the remaining release branch.');
860
+ } else {
861
+ console.log('Post-release: branch advancement was already included; skip the merge question.');
862
+ }
863
+ if (result.postRelease.localHostUpdate?.promptRequired) {
864
+ console.log(`Post-release: ask whether to update local host plugins (${result.postRelease.localHostUpdate.hosts.join(', ')}).`);
865
+ console.log(`Post-release command: release-skill post-release --plan ${result.planPath} --run ${result.verifyRunPath}`);
866
+ }
867
+ }
818
868
  for (const followUp of result.manualFollowUps ?? []) {
819
869
  console.log(`Manual follow-up [${followUp.platform}] ${followUp.plugin}: not verified by system`);
820
870
  }
@@ -1178,6 +1228,97 @@ if (command === 'reconcile') {
1178
1228
  }
1179
1229
  }
1180
1230
 
1231
+ // --- Optional local finishing after VERIFIED ---
1232
+ if (command === 'post-release') {
1233
+ const value = (flag) => {
1234
+ const idx = args.indexOf(flag);
1235
+ return idx !== -1 && args[idx + 1] ? args[idx + 1] : undefined;
1236
+ };
1237
+ const planPath = value('--plan') ? resolve(value('--plan')) : undefined;
1238
+ const runPath = value('--run') ? resolve(value('--run')) : undefined;
1239
+ if (!planPath || !runPath) {
1240
+ const message = 'post-release requires --plan <path> and --run <verified-run-path>';
1241
+ if (hasJson) console.log(JSON.stringify({ error: 'MISSING_PARAMETERS', message, exitCode: 1 }));
1242
+ else console.error(`Error: ${message}`);
1243
+ await exitAfterFlush(1);
1244
+ }
1245
+ try {
1246
+ const {
1247
+ assertVerifiedReleaseRun,
1248
+ derivePostReleaseChecklist,
1249
+ updateLocalHostPlugins,
1250
+ } = await import('../src/commands/post-release-local.mjs');
1251
+ const { validatePlan } = await import('../src/core/plan.mjs');
1252
+ const {
1253
+ loadRun,
1254
+ resolveRunPath,
1255
+ validateRunLineage,
1256
+ } = await import('../src/core/run.mjs');
1257
+ const plan = JSON.parse(await readFile(planPath, 'utf8'));
1258
+ validatePlan(plan);
1259
+ const resolvedRunPath = await resolveRunPath(runPath);
1260
+ const runRecord = await loadRun(resolvedRunPath, {
1261
+ requireDigest: true,
1262
+ authorityPlanPath: planPath,
1263
+ });
1264
+ await validateRunLineage(runRecord, {
1265
+ plan,
1266
+ planPath,
1267
+ runPath: resolvedRunPath,
1268
+ production: Boolean(plan.production),
1269
+ });
1270
+ assertVerifiedReleaseRun(plan, runRecord);
1271
+
1272
+ const updateRequested = args.includes('--update-local-hosts');
1273
+ const hostsIndex = args.indexOf('--hosts');
1274
+ const rawHosts = hostsIndex !== -1
1275
+ && args[hostsIndex + 1]
1276
+ && !args[hostsIndex + 1].startsWith('--')
1277
+ ? args[hostsIndex + 1]
1278
+ : '';
1279
+ const selectedHosts = rawHosts
1280
+ .split(',')
1281
+ .map((host) => host.trim())
1282
+ .filter(Boolean);
1283
+ const result = updateRequested
1284
+ ? await updateLocalHostPlugins({
1285
+ plan,
1286
+ root: resolve(value('--root') ?? process.cwd()),
1287
+ confirmPlanDigest: value('--confirm-plan'),
1288
+ selectedHosts,
1289
+ })
1290
+ : derivePostReleaseChecklist(plan);
1291
+
1292
+ if (hasJson) {
1293
+ console.log(JSON.stringify(result, null, 2));
1294
+ } else if (!updateRequested) {
1295
+ console.log(`Post-release status: ${result.status}`);
1296
+ if (result.merge.promptRequired) console.log('Ask whether the user wants to merge the remaining branch.');
1297
+ else console.log('Branch advancement was already included in the release workflow; skip the merge question.');
1298
+ if (result.localHostUpdate.promptRequired) {
1299
+ console.log(`Ask whether to update local host plugins: ${result.localHostUpdate.hosts.join(', ')}`);
1300
+ }
1301
+ } else {
1302
+ console.log(`Local host update: ${result.status}`);
1303
+ for (const entry of result.results) {
1304
+ console.log(` ${entry.host}/${entry.unitId}: ${entry.status}${entry.version ? ` (${entry.version})` : ''}`);
1305
+ }
1306
+ console.log('The release remains VERIFIED; restart updated hosts before using the new plugin bytes.');
1307
+ }
1308
+ const success = !updateRequested || ['UPDATED', 'ALREADY_CURRENT', 'NO_APPLICABLE_HOSTS'].includes(result.status);
1309
+ await exitAfterFlush(success ? 0 : 1);
1310
+ } catch (err) {
1311
+ if (hasJson) {
1312
+ console.log(JSON.stringify({
1313
+ error: err.code ?? 'POST_RELEASE_FAILED',
1314
+ message: err.message,
1315
+ exitCode: err.exitCode ?? 1,
1316
+ }));
1317
+ } else console.error(`Error: ${err.message}`);
1318
+ await exitAfterFlush(err.exitCode ?? 1);
1319
+ }
1320
+ }
1321
+
1181
1322
  // --- Verify command routing ---
1182
1323
  if (command === 'verify') {
1183
1324
 
@@ -1221,6 +1362,18 @@ if (command === 'verify') {
1221
1362
  root,
1222
1363
  verificationGatesAuthorized,
1223
1364
  });
1365
+ if (result.status === 'VERIFIED') {
1366
+ const {
1367
+ derivePostReleaseChecklist,
1368
+ unavailablePostReleaseChecklist,
1369
+ } = await import('../src/commands/post-release-local.mjs');
1370
+ const plan = JSON.parse(await readFile(planPath, 'utf8'));
1371
+ try {
1372
+ result.postRelease = derivePostReleaseChecklist(plan);
1373
+ } catch (error) {
1374
+ result.postRelease = unavailablePostReleaseChecklist(plan, error);
1375
+ }
1376
+ }
1224
1377
 
1225
1378
  if (hasJson) {
1226
1379
  console.log(JSON.stringify(result, null, 2));
@@ -1237,6 +1390,14 @@ if (command === 'verify') {
1237
1390
  console.log(`Baseline advance: ${result.baselineAdvance.committed ? 'advanced and committed' : 'advanced (uncommitted — commit .release-skill/project.yaml manually)'}`);
1238
1391
  }
1239
1392
  }
1393
+ if (result.postRelease?.status === 'UNAVAILABLE') {
1394
+ console.warn(`Post-release checklist unavailable: ${result.postRelease.diagnostic?.message ?? 'unknown error'}`);
1395
+ } else if (result.postRelease?.merge.promptRequired) {
1396
+ console.log('Post-release: ask whether to merge the remaining branch.');
1397
+ }
1398
+ if (result.postRelease?.localHostUpdate.promptRequired) {
1399
+ console.log(`Post-release: ask whether to update local host plugins (${result.postRelease.localHostUpdate.hosts.join(', ')}).`);
1400
+ }
1240
1401
  }
1241
1402
 
1242
1403
  await exitAfterFlush(result.status === 'VERIFIED' ? 0 : 1);
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ if (process.argv[2] !== 'post-release') process.argv.splice(2, 0, 'post-release');
4
+ await import('./release-skill.mjs');