release-skill 0.9.16 → 0.9.17

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 (164) 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/.kimi-plugin/plugin.json +1 -1
  5. package/.qoder-plugin/plugin.json +10 -0
  6. package/CHANGELOG.md +30 -0
  7. package/INSTALL.md +57 -9
  8. package/INSTALL.zh-CN.md +44 -7
  9. package/README.md +75 -31
  10. package/README.zh-CN.md +60 -29
  11. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  12. package/adapters/claude/bin/release-skill.bundle.mjs +1443 -672
  13. package/adapters/claude/schemas/release-plan.schema.json +1 -1
  14. package/adapters/claude/schemas/release-project.schema.json +1 -1
  15. package/adapters/claude/skills/release-finish/SKILL.md +14 -13
  16. package/adapters/claude/skills/release-help/SKILL.md +3 -3
  17. package/adapters/claude/skills/release-verify/SKILL.md +2 -2
  18. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  19. package/adapters/codex/bin/release-skill.bundle.mjs +1443 -672
  20. package/adapters/codex/schemas/release-plan.schema.json +1 -1
  21. package/adapters/codex/schemas/release-project.schema.json +1 -1
  22. package/adapters/codex/skills/release-finish/SKILL.md +14 -13
  23. package/adapters/codex/skills/release-help/SKILL.md +3 -3
  24. package/adapters/codex/skills/release-verify/SKILL.md +2 -2
  25. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  26. package/adapters/kimi/bin/release-skill.bundle.mjs +1443 -672
  27. package/adapters/kimi/schemas/release-plan.schema.json +1 -1
  28. package/adapters/kimi/schemas/release-project.schema.json +1 -1
  29. package/adapters/kimi/skills/release-finish/SKILL.md +14 -13
  30. package/adapters/kimi/skills/release-help/SKILL.md +3 -3
  31. package/adapters/kimi/skills/release-verify/SKILL.md +2 -2
  32. package/adapters/qoder/.qoder-plugin/plugin.json +10 -0
  33. package/adapters/qoder/bin/consumer-contract-vectors.json +110 -0
  34. package/adapters/qoder/bin/error-codes.json +161 -0
  35. package/adapters/qoder/bin/foundation-legal/skill-family-contracts/LICENSE +202 -0
  36. package/adapters/qoder/bin/foundation-legal/skill-family-contracts/NOTICE +10 -0
  37. package/adapters/qoder/bin/foundation-legal/skill-family-engineering-kit/LICENSE +202 -0
  38. package/adapters/qoder/bin/foundation-legal/skill-family-engineering-kit/NOTICE +10 -0
  39. package/adapters/qoder/bin/foundation-legal/skill-family-engineering-kit/THIRD_PARTY_NOTICES +142 -0
  40. package/adapters/qoder/bin/foundation-legal/skill-family-harness-node/LICENSE +202 -0
  41. package/adapters/qoder/bin/foundation-legal/skill-family-harness-node/NOTICE +10 -0
  42. package/adapters/qoder/bin/foundation-legal/skill-family-harness-node/native-NOTICE +2 -0
  43. package/adapters/qoder/bin/foundation-resource-binding.json +1 -0
  44. package/adapters/qoder/bin/kernel-protocol.json +60 -0
  45. package/adapters/qoder/bin/license-texts/Apache-2.0.txt +201 -0
  46. package/adapters/qoder/bin/license-texts/MIT.txt +21 -0
  47. package/adapters/qoder/bin/prebuild-manifest.json +79 -0
  48. package/adapters/qoder/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  49. package/adapters/qoder/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  50. package/adapters/qoder/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  51. package/adapters/qoder/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  52. package/adapters/qoder/bin/registry.json +347 -0
  53. package/adapters/qoder/bin/release-skill-local-finish.mjs +4 -0
  54. package/adapters/qoder/bin/release-skill.bundle.mjs +149446 -0
  55. package/adapters/qoder/bin/release-skill.mjs +54 -0
  56. package/adapters/qoder/bin/rules.json +104 -0
  57. package/adapters/qoder/bin/schemas/consumer-contract-vector.schema.json +149 -0
  58. package/adapters/qoder/data/hosts/claude/host-descriptor.json +45 -0
  59. package/adapters/qoder/data/hosts/codebuddy/host-descriptor.json +26 -0
  60. package/adapters/qoder/data/hosts/codex/host-descriptor.json +45 -0
  61. package/adapters/qoder/data/hosts/deepseek-harness/host-descriptor.json +23 -0
  62. package/adapters/qoder/data/hosts/kimi-code/host-descriptor.json +36 -0
  63. package/adapters/qoder/data/hosts/qoder/host-descriptor.json +26 -0
  64. package/adapters/qoder/data/hosts/registry.json +13 -0
  65. package/adapters/qoder/data/hosts/workbuddy/host-descriptor.json +34 -0
  66. package/adapters/qoder/data/licensing/registry.json +211 -0
  67. package/adapters/qoder/data/licensing/schema.json +207 -0
  68. package/adapters/qoder/native/safe-write/binding.gyp +41 -0
  69. package/adapters/qoder/native/safe-write/prebuilds/darwin-arm64/safe_write.node +0 -0
  70. package/adapters/qoder/native/safe-write/prebuilds.json +24 -0
  71. package/adapters/qoder/native/safe-write/src/safe_write.cc +2032 -0
  72. package/adapters/qoder/schemas/.render-manifest.json +41 -0
  73. package/adapters/qoder/schemas/approval-record.schema.json +115 -0
  74. package/adapters/qoder/schemas/artifact-lock.schema.json +111 -0
  75. package/adapters/qoder/schemas/artifact-plan.schema.json +52 -0
  76. package/adapters/qoder/schemas/artifact-policy.schema.json +76 -0
  77. package/adapters/qoder/schemas/evidence-event-v2.schema.json +164 -0
  78. package/adapters/qoder/schemas/evidence-event.schema.json +89 -0
  79. package/adapters/qoder/schemas/postpublish-approval-record.schema.json +47 -0
  80. package/adapters/qoder/schemas/release-plan.schema.json +1996 -0
  81. package/adapters/qoder/schemas/release-project.schema.json +1613 -0
  82. package/adapters/qoder/schemas/release-run.schema.json +777 -0
  83. package/adapters/qoder/skills/release-assess/SKILL.md +60 -0
  84. package/adapters/qoder/skills/release-config/SKILL.md +150 -0
  85. package/adapters/qoder/skills/release-docs/SKILL.md +119 -0
  86. package/adapters/qoder/skills/release-finish/SKILL.md +141 -0
  87. package/adapters/qoder/skills/release-help/SKILL.md +153 -0
  88. package/adapters/qoder/skills/release-marketplace/SKILL.md +156 -0
  89. package/adapters/qoder/skills/release-prepare/SKILL.md +135 -0
  90. package/adapters/qoder/skills/release-publish/SKILL.md +91 -0
  91. package/adapters/qoder/skills/release-reconcile/SKILL.md +80 -0
  92. package/adapters/qoder/skills/release-setup/SKILL.md +131 -0
  93. package/adapters/qoder/skills/release-verify/SKILL.md +109 -0
  94. package/adapters/qoder/src/schemas/adapter-build-manifest.schema.json +41 -0
  95. package/adapters/qoder/src/schemas/adapter-peer-verification-request.schema.json +54 -0
  96. package/adapters/qoder/src/schemas/adapter-peer-verification-result.schema.json +54 -0
  97. package/adapters/qoder/src/schemas/adapter-source.schema.json +47 -0
  98. package/adapters/qoder/src/schemas/audit-baseline-pin.schema.json +163 -0
  99. package/adapters/qoder/src/schemas/declared-read-surface-result.schema.json +61 -0
  100. package/adapters/qoder/src/schemas/engineering-baseline.schema.json +77 -0
  101. package/adapters/qoder/src/schemas/executable-identity-observation.schema.json +162 -0
  102. package/adapters/qoder/src/schemas/filesystem-root-binding.schema.json +14 -0
  103. package/adapters/qoder/src/schemas/filesystem-tree-observation.schema.json +71 -0
  104. package/adapters/qoder/src/schemas/fixed-set-publication-manifest.schema.json +108 -0
  105. package/adapters/qoder/src/schemas/fixed-set-publication-receipt.schema.json +148 -0
  106. package/adapters/qoder/src/schemas/host-capability-fact.schema.json +31 -0
  107. package/adapters/qoder/src/schemas/host-descriptor.schema.json +137 -0
  108. package/adapters/qoder/src/schemas/host-operation-plan.schema.json +57 -0
  109. package/adapters/qoder/src/schemas/host-operation-receipt.schema.json +81 -0
  110. package/adapters/qoder/src/schemas/host-probe-result.schema.json +30 -0
  111. package/adapters/qoder/src/schemas/host-registry.schema.json +18 -0
  112. package/adapters/qoder/src/schemas/host-verification-request.schema.json +67 -0
  113. package/adapters/qoder/src/schemas/host-verification-result.schema.json +149 -0
  114. package/adapters/qoder/src/schemas/managed-file-lock.schema.json +77 -0
  115. package/adapters/qoder/src/schemas/migration-manifest.schema.json +412 -0
  116. package/adapters/qoder/src/schemas/observation-scope.schema.json +91 -0
  117. package/adapters/qoder/src/schemas/operation-request.schema.json +58 -0
  118. package/adapters/qoder/src/schemas/operation-result.schema.json +130 -0
  119. package/adapters/qoder/src/schemas/platform-difference-registry.schema.json +110 -0
  120. package/adapters/qoder/src/schemas/plugin-verification-request.schema.json +499 -0
  121. package/adapters/qoder/src/schemas/plugin-verification-result.schema.json +1217 -0
  122. package/adapters/qoder/src/schemas/profile-adoption-declaration.schema.json +111 -0
  123. package/adapters/qoder/src/schemas/profile-descriptor.schema.json +99 -0
  124. package/adapters/qoder/src/schemas/project-manifest.schema.json +67 -0
  125. package/adapters/qoder/src/schemas/project-profile.schema.json +25 -0
  126. package/adapters/qoder/src/schemas/public-boundary-declaration.schema.json +73 -0
  127. package/adapters/qoder/src/schemas/report-binding.schema.json +42 -0
  128. package/adapters/qoder/src/schemas/report-model.schema.json +308 -0
  129. package/adapters/qoder/src/schemas/skill-family-directory-verification-request.schema.json +100 -0
  130. package/adapters/qoder/src/schemas/skill-family-directory-verification-result.schema.json +193 -0
  131. package/adapters/qoder/src/schemas/source-authority-receipt.schema.json +31 -0
  132. package/adapters/qoder/src/schemas/state-event-envelope.schema.json +38 -0
  133. package/adapters/qoder/src/schemas/state-snapshot-metadata.schema.json +25 -0
  134. package/adapters/qoder/src/schemas/structured-scan-policy.schema.json +97 -0
  135. package/adapters/qoder/src/schemas/surface-scan-policy.schema.json +42 -0
  136. package/adapters/qoder/src/schemas/timeout-policy.schema.json +24 -0
  137. package/adapters/qoder/src/schemas/token-estimate-record.schema.json +75 -0
  138. package/adapters/qoder/src/schemas/token-estimate-result.schema.json +43 -0
  139. package/adapters/qoder/src/schemas/watchdog-termination-envelope.schema.json +156 -0
  140. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  141. package/adapters/workbuddy/bin/release-skill.bundle.mjs +1443 -672
  142. package/adapters/workbuddy/schemas/release-plan.schema.json +1 -1
  143. package/adapters/workbuddy/schemas/release-project.schema.json +1 -1
  144. package/adapters/workbuddy/skills/release-finish/SKILL.md +14 -13
  145. package/adapters/workbuddy/skills/release-help/SKILL.md +3 -3
  146. package/adapters/workbuddy/skills/release-verify/SKILL.md +2 -2
  147. package/bin/release-skill-cli.mjs +124 -6
  148. package/bin/release-skill.bundle.mjs +1443 -672
  149. package/package.json +4 -2
  150. package/platform-manifest.json +70 -4
  151. package/references/02-project-config.md +9 -2
  152. package/schemas/release-plan.schema.json +1 -1
  153. package/schemas/release-project.schema.json +1 -1
  154. package/skills/release-finish/SKILL.md +14 -13
  155. package/skills/release-help/SKILL.md +3 -3
  156. package/skills/release-verify/SKILL.md +2 -2
  157. package/skills-src/release-finish/SKILL.md +14 -13
  158. package/skills-src/release-help/SKILL.md +3 -3
  159. package/skills-src/release-verify/SKILL.md +2 -2
  160. package/src/commands/post-release-local.mjs +360 -51
  161. package/src/commands/verify-records.mjs +467 -0
  162. package/src/core/postpublish.mjs +1 -1
  163. package/src/core/run.mjs +1 -1
  164. package/src/producers/build-adapters.mjs +36 -13
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.16",
3
+ "version": "0.9.17",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.16",
3
+ "version": "0.9.17",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.16",
3
+ "version": "0.9.17",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -19,7 +19,7 @@
19
19
  ],
20
20
  "defaultPrompt": [
21
21
  "Assess this project for release readiness.",
22
- "Prepare a release plan for version 0.9.16.",
22
+ "Prepare a release plan for version 0.9.17.",
23
23
  "Help me understand the release workflow."
24
24
  ]
25
25
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-skill",
3
- "version": "0.9.16",
3
+ "version": "0.9.17",
4
4
  "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
5
  "author": {
6
6
  "name": "广州市风荷科技有限公司"
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "release-skill",
3
+ "version": "0.9.17",
4
+ "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
+ "author": {
6
+ "name": "广州市风荷科技有限公司"
7
+ },
8
+ "license": "Apache-2.0",
9
+ "skills": "./adapters/qoder/skills/"
10
+ }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ <!-- release-skill:changelog:start version=0.9.17 locale=en baseline=sha256:83fe967a104a1b324ea1b704cfc6ee67d6a2999f3d6c0e2d92411435fa6986a2 -->
4
+ ## [0.9.17] - 2026-09-09
5
+
6
+ 0.9.17 is a local source candidate that adds explicit offline verification of historical release records and a self-contained Qoder projection, while preserving the setup-root and Kimi initial-directory trust fixes. The three Foundation dependencies remain pinned to the exact 0.17.0 release. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance; it also does not establish Hub acceptance.
7
+
8
+ ### Security
9
+
10
+ - Offline verification reads only paths explicitly supplied on the command line and redacts local path details from its JSON result. Historical consistency does not prove that records are globally latest or that remote objects still exist.
11
+ - Qoder remains outside release distributions and publication checkpoints. The updater does not add a marketplace, perform a first install, uninstall, or reload the current session; `UPDATED` does not mean the new plugin has been loaded.
12
+ - Any later central Skill Family Hub publication uses the existing Git Data API with compare-and-swap. A partial Hub publication remains recoverable and is never rolled back or force-pushed automatically.
13
+
14
+ ### Added
15
+
16
+ - The public `release-skill verify-records` CLI checks caller-supplied plan, approval, target-run, and predecessor-run bytes. It reports `CONSISTENT`, `CONTRADICTED`, or `INSUFFICIENT` without scanning `.release-skill`, following paths from records, contacting remotes, writing files, or changing release state.
17
+ - The npm package now includes `.qoder-plugin/plugin.json` and a self-contained `adapters/qoder/` projection. The existing post-release updater can update an already installed user-scope Qoder plugin only after the selected Hub source and frozen payload match.
18
+
19
+ ### Changed
20
+
21
+ - The release-finish setup continuation uses the current `--root` release project directly. It no longer asks for a second project path, while project-level readiness and host-specific loading checks remain distinct.
22
+
23
+ ### Fixed
24
+
25
+ - An authorized Kimi update can confirm the standard initial `Trust this folder?` dialog for the current release project before continuing. Unknown rows, selections, repeated trust dialogs, timeout, or early exit still stop that host.
26
+
27
+ ### Upgrade Notes
28
+
29
+ Upgrade from 0.9.16 to use `release-skill verify-records`, the Qoder package projection, and the setup/Kimi fixes. Remove the old release-skill standalone marketplace; use the ifoohoo/skill-family-hub repository and Hub-qualified plugin id release-skill@skill-family-hub. The central Skill Family Hub must accept the Qoder entry before marketplace installation can begin. Real Qoder and Kimi installation, reload, and business invocation remain separate authorized follow-up work.
30
+ <!-- release-skill:changelog:end version=0.9.17 locale=en -->
31
+
32
+
3
33
  <!-- release-skill:changelog:start version=0.9.16 locale=en baseline=sha256:ea8288d2ffcedf02008eb0bc10280d52bc6ddd2e383f072913340eb64cb7ca63 -->
4
34
  ## [0.9.16] - 2026-09-09
5
35
 
package/INSTALL.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [简体中文](INSTALL.zh-CN.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.16 -->
5
+ <!-- release-skill:release-version: 0.9.17 -->
6
6
  ## Prerequisites
7
7
 
8
8
  - Node.js 22.0.0 or later
@@ -41,7 +41,9 @@ Claude Code, CodeBuddy, WorkBuddy, and Codex install release-skill from the
41
41
  central [Skill Family Hub](https://github.com/ifoohoo/skill-family-hub).
42
42
  The release-skill repository carries plugin manifests but no marketplace index.
43
43
  release-skill currently invokes no scriptable install API for Kimi Code — see the
44
- [Kimi Code section](#install-as-a-kimi-code-plugin). Add the marketplace once,
44
+ [Kimi Code section](#install-as-a-kimi-code-plugin). Qoder uses the same Hub only
45
+ after its root `marketplace.json` has accepted the release-skill entry; see the
46
+ [Qoder section](#install-as-a-qoder-plugin). Add the marketplace once,
45
47
  then install the plugin:
46
48
 
47
49
  > **Prerequisite: GitHub access.** The `owner/repo` shorthand makes Claude Code
@@ -81,6 +83,16 @@ release-skill currently uses the version-pinned interactive TUI path for Kimi
81
83
  Code. The release state machine reports installation as a post-release manual
82
84
  task and does not verify its completion.
83
85
 
86
+ **Qoder:** after the central Hub has accepted the release-skill Qoder entry and
87
+ that marketplace is configured locally:
88
+
89
+ ```bash
90
+ qoder plugins install release-skill@skill-family-hub --scope user --json
91
+ ```
92
+
93
+ Do not treat the local adapter or a successful validation alone as proof of a
94
+ Hub marketplace install.
95
+
84
96
  ### Alternative: direct repository install (advanced)
85
97
 
86
98
  The Hub marketplace above is the supported primary path. Direct installation
@@ -91,6 +103,9 @@ remains available only where the host supports a repository URL:
91
103
  - CodeBuddy: single-session use from a source checkout via
92
104
  `--plugin-dir <path>/adapters/workbuddy` (see the
93
105
  [CodeBuddy/WorkBuddy section](#install-as-a-codebuddyworkbuddy-plugin)).
106
+ - Qoder: validate the generated candidate with
107
+ `qoder plugins validate <path>/adapters/qoder --json --strict`; validation is
108
+ not marketplace installation or a real Skill call.
94
109
 
95
110
  ## Install as a Kimi Code plugin
96
111
 
@@ -110,7 +125,7 @@ tag pinned to the exact version (never the bare repository URL, which installs
110
125
  the latest release or default branch), confirm the trust prompt, then reload:
111
126
 
112
127
  ```
113
- /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.16
128
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.17
114
129
  /plugins reload
115
130
  ```
116
131
 
@@ -129,12 +144,17 @@ same TUI session before accepting the plugin trust prompt and reloading.
129
144
 
130
145
  The effective configuration root is explicit `kimiHome`, then
131
146
  `KIMI_CODE_HOME`, then `~/.kimi-code`. The TUI process and post-operation
132
- observation use that same root. release-finish strips ANSI/OSC control sequences
133
- and soft wrapping before it checks the frozen repository, tag, and selected
134
- `Trust and install` action inside the plugin trust dialog. A `Trust this folder?`
135
- prompt, unknown interface, timeout, early exit, or identity mismatch stops the
136
- flow without confirming folder trust or continuing installation. This local
137
- check is not part of `verify` and does not alter the `VERIFIED` release state.
147
+ observation use that same root. The TUI working directory is the resolved release
148
+ project root passed through `--root`. After explicit confirmation of the frozen
149
+ plan and selection of Kimi for update, release-finish accepts only the initial
150
+ standard `Trust this folder?` dialog with `No, exit` selected and
151
+ `Trust this folder` available. It moves to that row, verifies the new selection,
152
+ confirms it, and waits for the known command prompt. Unknown rows or selections,
153
+ a failed move, timeout, early exit, or a folder-trust dialog after the plugin
154
+ command fails closed. release-finish still strips ANSI/OSC control sequences and
155
+ soft wrapping before it checks the frozen repository, tag, and selected
156
+ `Trust and install` action inside the plugin trust dialog. This local check is
157
+ not part of `verify` and does not alter the `VERIFIED` release state.
138
158
 
139
159
  No receipt or attestation is required. The `attest` command remains available
140
160
  only for frozen plans created by older versions that lack the
@@ -178,6 +198,34 @@ For a single session from a source checkout you can also point CodeBuddy at the
178
198
  generated plugin directory with `--plugin-dir <path>/adapters/workbuddy`; the
179
199
  adapter never references files outside its own directory.
180
200
 
201
+ ## Install as a Qoder plugin
202
+
203
+ The npm package ships `.qoder-plugin/plugin.json` and a generated,
204
+ self-contained `adapters/qoder/` tree. Qoder is a build-only projection: it does
205
+ not add a `qoder-plugin` distribution type or a publish/reconcile/verify install
206
+ checkpoint.
207
+
208
+ The central Hub root `marketplace.json` must first contain an accepted
209
+ release-skill entry whose source resolves to this Qoder projection. Once that
210
+ entry is present and `skill-family-hub` is configured, install at user scope:
211
+
212
+ ```bash
213
+ qoder plugins install release-skill@skill-family-hub --scope user --json
214
+ ```
215
+
216
+ The optional `release-finish` path updates only an existing user-scope Qoder
217
+ installation selected by the user and declared in the frozen plan. Before any
218
+ write it matches the Hub name and repository, then rechecks the refreshed source
219
+ and frozen payload. It may run the named marketplace update followed by
220
+ `qoder plugins update release-skill@skill-family-hub --scope user`; it never
221
+ adds a marketplace, first-installs the plugin, removes a marketplace, or
222
+ uninstalls and reinstalls the plugin.
223
+
224
+ An `UPDATED` result proves installed bytes, not what the current Qoder session
225
+ has loaded. Reload the plugin or start a new session, then use the discovered
226
+ release-skill to complete one read-only release task before claiming the new
227
+ version is active. These local results do not change `VERIFIED`.
228
+
181
229
  ## Consumer verification boundaries
182
230
 
183
231
  **When verification runs.** Consumer-side install verification executes only
package/INSTALL.zh-CN.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](INSTALL.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.16 -->
5
+ <!-- release-skill:release-version: 0.9.17 -->
6
6
  ## 前置条件
7
7
 
8
8
  - Node.js 22.0.0 或更高版本
@@ -37,7 +37,9 @@ release-skill help
37
37
  Claude Code、CodeBuddy、WorkBuddy 和 Codex 从统一的
38
38
  [Skill Family Hub](https://github.com/ifoohoo/skill-family-hub)
39
39
  安装 release-skill。release-skill 仓库只携带插件清单,不再携带市场索引。当前没有接入
40
- Kimi Code 的可脚本化安装接口,见 [Kimi Code 小节](#安装为-kimi-code-插件)。先添加一次市场,再安装
40
+ Kimi Code 的可脚本化安装接口,见 [Kimi Code 小节](#安装为-kimi-code-插件)。Qoder
41
+ 只有在 Hub 根 `marketplace.json` 已接纳 release-skill 条目后才使用同一市场,见
42
+ [Qoder 小节](#安装为-qoder-插件)。先添加一次市场,再安装
41
43
  插件:
42
44
 
43
45
  > **前置条件:GitHub 访问。** `owner/repo` 简写会让 Claude Code 通过
@@ -75,6 +77,14 @@ codex plugin marketplace add ifoohoo/skill-family-hub
75
77
  release-skill 当前对 Kimi Code 采用钉死版本的交互式 TUI 路径。发布状态机会把安装
76
78
  列为发布后人工待办,不核验其完成结果。
77
79
 
80
+ **Qoder:** 中央 Hub 已接纳 release-skill 的 Qoder 条目,且本机已配置该市场后执行:
81
+
82
+ ```bash
83
+ qoder plugins install release-skill@skill-family-hub --scope user --json
84
+ ```
85
+
86
+ 本地适配器存在或候选校验成功,都不能单独证明 Hub 市场安装成立。
87
+
78
88
  ### 备选:直接从仓库安装(进阶)
79
89
 
80
90
  上面的 Hub 市场是受支持的主路径。只有宿主支持仓库 URL 时,才能直接安装:
@@ -84,6 +94,8 @@ release-skill 当前对 Kimi Code 采用钉死版本的交互式 TUI 路径。
84
94
  - CodeBuddy:源码检出后通过 `--plugin-dir <path>/adapters/workbuddy`
85
95
  单会话使用(见
86
96
  [CodeBuddy/WorkBuddy 小节](#安装为-codebuddyworkbuddy-插件))。
97
+ - Qoder:执行 `qoder plugins validate <path>/adapters/qoder --json --strict`
98
+ 校验生成候选;该结果不等于市场安装,也不等于真实 Skill 调用。
87
99
 
88
100
  ## 安装为 Kimi Code 插件
89
101
 
@@ -101,7 +113,7 @@ release-skill 当前只采用并验证 Kimi Code 的交互式 TUI 路径,**无
101
113
  (切勿使用裸仓库地址,它会安装最新 release 或默认分支),确认信任提示后重新加载:
102
114
 
103
115
  ```
104
- /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.16
116
+ /plugins install https://github.com/ifoohoo/release-skill/releases/tag/release-skill-v0.9.17
105
117
  /plugins reload
106
118
  ```
107
119
 
@@ -114,10 +126,13 @@ release-finish 会重新读取 Kimi 的受管安装根,不复用操作前的
114
126
  移除,再按发布标签安装、确认插件信任并重新加载。
115
127
 
116
128
  有效配置根依次取显式 `kimiHome`、`KIMI_CODE_HOME`、`~/.kimi-code`,TUI 进程和
117
- 操作后观察使用同一根。release-finish 会先清理 ANSI/OSC 控制序列和软换行,再在插件
118
- 信任对话框内核对冻结仓库、标签和当前选中的 `Trust and install`。出现
119
- `Trust this folder?`、未知界面、超时、提前退出或身份不一致时,流程停止,不确认目录
120
- 信任,也不继续安装。这个本机检查不属于 `verify`,也不会改变
129
+ 操作后观察使用同一根,TUI 工作目录固定为 `--root` 指定的当前发布项目。用户确认冻结
130
+ 计划并显式选择更新 Kimi 后,release-finish 只接受初始标准 `Trust this folder?` 界面:
131
+ 当前必须选中 `No, exit`,且存在 `Trust this folder` 目标行。流程移动到目标行,重新确认
132
+ 选中项,再提交并等待已知命令提示符。出现未知行或选中项、移动后无法确认、超时、提前
133
+ 退出,或者插件命令发出后再次出现目录信任时,该宿主失败并停止。release-finish 仍会先
134
+ 清理 ANSI/OSC 控制序列和软换行,再在插件信任对话框内核对冻结仓库、标签和当前选中的
135
+ `Trust and install`。这个本机检查不属于 `verify`,也不会改变
121
136
  已经完成的 `VERIFIED` 发布状态。
122
137
 
123
138
  新计划无需收据或人工证明。`attest` 命令仅兼容缺少
@@ -152,6 +167,28 @@ codebuddy CLI 可以添加市场并安装插件,但 **`plugin marketplace add`
152
167
  源码检出后也可以用 `--plugin-dir <path>/adapters/workbuddy` 把 CodeBuddy 指向
153
168
  生成的插件目录做单会话使用;适配器不引用自身目录之外的任何文件。
154
169
 
170
+ ## 安装为 Qoder 插件
171
+
172
+ npm 包内提供 `.qoder-plugin/plugin.json` 和生成的自包含 `adapters/qoder/` 目录。
173
+ Qoder 只是 build-only 投影,不新增 `qoder-plugin` 分发类型,也不新增 publish、
174
+ reconcile 或 verify 安装检查点。
175
+
176
+ 中央 Hub 根 `marketplace.json` 必须先接纳 release-skill 条目,且该条目的来源要解析到
177
+ 本插件的 Qoder 投影。条目存在并已配置 `skill-family-hub` 后,执行用户范围安装:
178
+
179
+ ```bash
180
+ qoder plugins install release-skill@skill-family-hub --scope user --json
181
+ ```
182
+
183
+ 可选的 `release-finish` 只更新用户已选择、冻结计划已声明且已经存在的用户范围 Qoder
184
+ 安装。写入前先核对 Hub 名称和仓库;刷新市场后,再核对来源与冻结载荷。流程可以更新
185
+ 指定市场,再执行 `qoder plugins update release-skill@skill-family-hub --scope user`;
186
+ 不会添加市场、首次安装插件、删除市场,也不会卸载后重装。
187
+
188
+ `UPDATED` 只证明安装载荷已更新,不代表当前 Qoder 会话已经加载新版。必须重新加载插件
189
+ 或新开会话,再由真实发现的 release-skill 完成一次只读发布业务调用,才能宣称新版已
190
+ 生效。这些本机结果不会改变 `VERIFIED`。
191
+
155
192
  ## 消费端安装验证边界
156
193
 
157
194
  **何时执行验证。** 消费端安装验证仅在安装契约关键文件相对已确认公开基线发生变化时执行;
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [简体中文](README.zh-CN.md) · Installation: [English](INSTALL.md) / [简体中文](INSTALL.zh-CN.md)
4
4
 
5
- <!-- release-skill:release-version: 0.9.16 -->
5
+ <!-- release-skill:release-version: 0.9.17 -->
6
6
  Release preparation for Claude Code, CodeBuddy, WorkBuddy, Codex, and Kimi Code, with human-edited files kept intact.
7
7
 
8
8
  release-skill helps a maintainer answer three questions: what will be released,
@@ -14,37 +14,36 @@ Setup surfaces only the deterministic `compactSummary` review view; the full
14
14
  report stays in a temporary session directory.
15
15
 
16
16
  <!-- release-skill:managed:start id=latest-release -->
17
- **0.9.16** (2026-09-09)
17
+ **0.9.17** (2026-09-09)
18
18
 
19
- 0.9.16 is a local source candidate that connects verified releases to explicit source-branch checks, host-aware setup continuation, and postVerify finish guidance. The three Foundation dependencies remain pinned to the exact 0.17.0 release. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.
19
+ 0.9.17 is a local source candidate that adds explicit offline verification of historical release records and a self-contained Qoder projection, while preserving the setup-root and Kimi initial-directory trust fixes. The three Foundation dependencies remain pinned to the exact 0.17.0 release. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance; it also does not establish Hub acceptance.
20
20
 
21
21
  **Security**
22
22
 
23
- - The source-branch reminder runs only `git branch --show-current` and `git status --short --branch`; it never fetches, switches, merges, rebases, stashes, resets, cleans, or pushes. Setup names are matched as skill metadata and are never executed as shell text.
24
- - Skill Family Hub updates bind the observed branch head with compare-and-swap semantics. Partial Hub publication is never rolled back or force-pushed, and remote state is never overwritten.
23
+ - Offline verification reads only paths explicitly supplied on the command line and redacts local path details from its JSON result. Historical consistency does not prove that records are globally latest or that remote objects still exist.
24
+ - Qoder remains outside release distributions and publication checkpoints. The updater does not add a marketplace, perform a first install, uninstall, or reload the current session; `UPDATED` does not mean the new plugin has been loaded.
25
+ - Any later central Skill Family Hub publication uses the existing Git Data API with compare-and-swap. A partial Hub publication remains recoverable and is never rolled back or force-pushed automatically.
25
26
 
26
27
  **Added**
27
28
 
28
- - Projects may configure `releaseFinish.sourceBranchCheck` as `remind` or `skip` and may name a loaded setup entry through `releaseFinish.setupSkill`. The release-finish workflow keeps the publishing workspace separate from an explicitly selected consumer project and reports setup as pending when the target directory, loaded plugin version, or callable host is not established.
29
- - Source checks use read-only Git commands and report the current branch, worktree changes, upstream summary, and any decision that still belongs to the maintainer. A project can select `release-setup` when it wants the release-finish workflow to continue into release-skill setup.
29
+ - The public `release-skill verify-records` CLI checks caller-supplied plan, approval, target-run, and predecessor-run bytes. It reports `CONSISTENT`, `CONTRADICTED`, or `INSUFFICIENT` without scanning `.release-skill`, following paths from records, contacting remotes, writing files, or changing release state.
30
+ - The npm package now includes `.qoder-plugin/plugin.json` and a self-contained `adapters/qoder/` projection. The existing post-release updater can update an already installed user-scope Qoder plugin only after the selected Hub source and frozen payload match.
30
31
 
31
32
  **Changed**
32
33
 
33
- - After a successful postVerify run reaches `DISTRIBUTED`, both JSON and text CLI output now expose the same Hub-backed local-host finish guidance used by the release-finish workflow. The guidance remains diagnostic and never invokes a host command on its own.
34
- - Host updates and setup checks remain local follow-up work and do not change the immutable release plan or the `VERIFIED` publication result. Shared project readiness may be checked once only when the plugin version, consumer directory, and runtime environment are the same; host-specific installation and loading remain separate checks.
35
- - Skill Family Hub publication continues through the project-private postVerify hook and GitHub Git Data API. The Hub update remains a separately approved compare-and-swap write against the observed branch head.
34
+ - The release-finish setup continuation uses the current `--root` release project directly. It no longer asks for a second project path, while project-level readiness and host-specific loading checks remain distinct.
36
35
 
37
36
  **Fixed**
38
37
 
39
- - A completed postVerify delivery now keeps `DISTRIBUTED` even when the optional finish checklist cannot reread its plan. The CLI returns an explicit unavailable diagnostic without rewriting the successful delivery checkpoint.
38
+ - An authorized Kimi update can confirm the standard initial `Trust this folder?` dialog for the current release project before continuing. Unknown rows, selections, repeated trust dialogs, timeout, or early exit still stop that host.
40
39
 
41
40
  **Upgrade Notes**
42
41
 
43
- Upgrade from 0.9.15 to receive postVerify finish guidance and optional source-branch and setup continuation. Add a top-level `releaseFinish` block only when the project wants to select a setup entry or change the default reminder policy. Remove any release-skill standalone marketplace registration, add or update `ifoohoo/skill-family-hub`, and use `release-skill@skill-family-hub`. Restart an updated host before treating the new plugin version or setup entry as loaded.
42
+ Upgrade from 0.9.16 to use `release-skill verify-records`, the Qoder package projection, and the setup/Kimi fixes. Remove the old release-skill standalone marketplace; use the ifoohoo/skill-family-hub repository and Hub-qualified plugin id release-skill@skill-family-hub. The central Skill Family Hub must accept the Qoder entry before marketplace installation can begin. Real Qoder and Kimi installation, reload, and business invocation remain separate authorized follow-up work.
44
43
  <!-- release-skill:managed:end id=latest-release -->
45
44
 
46
45
  <!-- release-skill:capability:external-write-boundary -->
47
- > **Current boundary:** v0.9.16 is the current source candidate. This README
46
+ > **Current boundary:** v0.9.17 is the current source candidate. This README
48
47
  > records intended scope and verification boundaries; it is not evidence of
49
48
  > publication, consumer-installation verification, or independent acceptance.
50
49
  > Release availability must be established from the corresponding release records
@@ -68,7 +67,7 @@ Upgrade from 0.9.15 to receive postVerify finish guidance and optional source-br
68
67
  > publish global preflight.
69
68
 
70
69
  <!-- release-skill:capability:safe-first-command -->
71
- > **Production path verified since the v0.1.1 milestone; v0.9.16 is the current
70
+ > **Production path verified since the v0.1.1 milestone; v0.9.17 is the current
72
71
  > source candidate. Its README does not establish publication,
73
72
  > consumer-installation verification, or independent acceptance.**
74
73
  > The npm-installed CLI is the supported user entry. Source checkout
@@ -97,18 +96,20 @@ checkpoints remain intact and use matching-version recovery. Evidence v1 stays
97
96
  read-only; v2 uses a closed top level with phase extensions in `details`.
98
97
  Summaries and recovery suggestions are diagnostic, never publication authority.
99
98
 
100
- The current 0.9.16 candidate includes the narrow R-05 Hook cache v2 consumer
99
+ The current 0.9.17 candidate includes the narrow R-05 Hook cache v2 consumer
101
100
  path, the public `postverify` path, and the stable isolated install-tree record
102
- path (A2/A3). It keeps Skill Family Hub as the single marketplace source. It
101
+ path (A2/A3). It also adds the explicit-input `verify-records` command and a
102
+ self-contained Qoder projection. Skill Family Hub remains the single
103
+ marketplace source. The candidate
103
104
  also makes the `release-prepare` Skill organize existing assessment, refresh,
104
105
  focused-check, and prepare entry points without adding another execution
105
106
  engine. `prepare --help` and `prepare -h` now return before configuration,
106
107
  locks, runs, or hooks can observe the request. The `release-finish` Skill can
107
108
  also report the source branch and continue into a configured setup entry after
108
- the selected host has loaded the released plugin. This candidate still
109
- excludes R-02 safe full-tree inventory, R-10 historical-release verification
110
- implementation, real Kimi/WorkBuddy public-marketplace installation and
111
- invocation gates, and an Audit public offline release-record verifier.
109
+ the selected host has loaded the released plugin. This candidate still excludes
110
+ R-02 safe full-tree inventory and real Kimi/WorkBuddy/Qoder marketplace
111
+ installation and invocation gates. The central Hub has not yet accepted the
112
+ release-skill Qoder entry.
112
113
  Foundation dependencies are pinned to the three released 0.17.0 packages.
113
114
  For Kimi/CodeBuddy plans that still use the bundled-family distribution form,
114
115
  verify calls the released
@@ -267,7 +268,29 @@ Skill Family Hub marketplace:
267
268
  Kimi Code. It uses the version-pinned interactive TUI path described in
268
269
  [INSTALL.md](INSTALL.md#install-as-a-kimi-code-plugin).
269
270
 
270
- See [INSTALL.md](INSTALL.md) for CodeBuddy, Codex, and Kimi Code commands.
271
+ **Qoder:** the package ships `.qoder-plugin/plugin.json` and the self-contained
272
+ `adapters/qoder/` projection. A user-scope marketplace install is available only
273
+ after the central Hub's root `marketplace.json` has accepted the release-skill
274
+ Qoder entry; the generated adapter alone does not prove Hub consumption. See
275
+ [INSTALL.md](INSTALL.md#install-as-a-qoder-plugin) for the bounded install and
276
+ post-release update contract.
277
+
278
+ See [INSTALL.md](INSTALL.md) for CodeBuddy, Codex, Kimi Code, and Qoder commands.
279
+
280
+ ### Offline historical record verification
281
+
282
+ Use the public command below when a consumer already has an explicit plan,
283
+ approval, target run, and every predecessor run referenced by that target:
284
+
285
+ ```text
286
+ release-skill verify-records --plan <path> --approval <path> --target-run <path> --source-run <path>... --unit <id> --target-version <version> --json
287
+ ```
288
+
289
+ The command reads only those paths and emits one JSON object. `CONSISTENT`
290
+ exits 0, `CONTRADICTED` exits 1, and `INSUFFICIENT` exits 2. It does not scan
291
+ `.release-skill`, follow paths embedded in a record, contact a remote, write a
292
+ file, or advance release state. A consistent historical chain does not prove
293
+ that its records are globally latest or that remote objects still exist.
271
294
 
272
295
  ### Main workflow
273
296
 
@@ -539,7 +562,9 @@ releaseUnits:
539
562
  defaults to `remind`; set it to `skip` to suppress the read-only source-branch
540
563
  reminder. `setupSkill` is optional and names an already installed and loaded
541
564
  setup entry such as `release-setup` or `plugin:skill`; it is never executed as
542
- a shell command. The two settings are independent.
565
+ a shell command. After host updates, release-finish runs that setup entry
566
+ against the current release project root passed through `--root`; it does not
567
+ request a separate project directory. The two settings are independent.
543
568
 
544
569
  `distributions` is required but may be an explicit empty array. Use
545
570
  `distributions: []` when release-skill should publish only the unit's GitHub
@@ -782,6 +807,11 @@ closures. A release unit declares what reaches users via `distributions`:
782
807
  | `kimi-plugin` | self-contained closure (release-skill invokes no scriptable install API) | non-blocking post-release manual task |
783
808
  | `codebuddy-plugin` | generated `adapters/workbuddy/` with `.codebuddy-plugin/plugin.json` | non-blocking post-release manual task |
784
809
 
810
+ Qoder is intentionally outside this `distributions` table: it is a build-only
811
+ public projection at `adapters/qoder/`, with root manifest
812
+ `.qoder-plugin/plugin.json`. It does not add a `qoder-plugin` plan type or an
813
+ automated publish, reconcile, or verify checkpoint.
814
+
785
815
  Each adapter closure bundles its own CLI, skills, and schemas for zero external
786
816
  dependency after installation. `publish` only publishes frozen Git objects and
787
817
  npm tarballs, then checks remote commit/tree/tag integrity. Claude/Codex
@@ -796,12 +826,23 @@ commit before that host's first write; a failed check leaves that host unchanged
796
826
  without stopping other selected hosts. The workflow can also migrate or update
797
827
  Kimi through one controlled TUI session and verify its real managed payload, or update an existing
798
828
  bundled-family CodeBuddy/WorkBuddy entry when the frozen tag and mutable branch
799
- both resolve to the frozen commit. It requires explicit user confirmation and
829
+ both resolve to the frozen commit. For an explicitly selected Qoder host, it can
830
+ update only an existing user-scope installation after proving the configured Hub
831
+ source and frozen payload; it never adds a marketplace or performs first install.
832
+ An `UPDATED` installation is not treated as loaded: reload or start a new Qoder
833
+ session, then complete one read-only release-skill business call before claiming
834
+ the new version is active. It requires explicit user confirmation and
800
835
  does not change release status. Kimi uses one effective configuration root:
801
836
  explicit `kimiHome`, then `KIMI_CODE_HOME`, then `~/.kimi-code`. The TUI and
802
- post-operation observation share that root. A `Trust this folder?` prompt,
803
- unknown interface, timeout, early exit, or unprovable plugin identity returns a
804
- manual or failed result without confirming folder trust. Missing, standalone, inaccessible, or ambiguous
837
+ post-operation observation share that root, and the TUI working directory is the
838
+ resolved release project root passed through `--root`. After the user confirms
839
+ the frozen plan and explicitly selects Kimi for update, release-finish accepts
840
+ only the initial standard `Trust this folder?` dialog with `No, exit` selected
841
+ and `Trust this folder` available. It moves to that target, verifies the new
842
+ selection, confirms it, and waits for the known command prompt before sending
843
+ the plugin command. An unknown row or selection, a failed move, timeout, early
844
+ exit, or any folder-trust dialog after the plugin command fails closed. The
845
+ frozen plugin identity and `Trust and install` checks remain unchanged. Missing, standalone, inaccessible, or ambiguous
805
846
  CodeBuddy/WorkBuddy targets remain manual and receive no host mutation.
806
847
  WorkBuddy local updates are macOS-only; on other platforms they are skipped as
807
848
  unsupported. When a plan declares postVerify hooks, release-finish must receive
@@ -812,8 +853,10 @@ A release unit may also declare `postPublish.localHostUpdate` for a plugin that
812
853
  is delivered through a project-selected Hub by a `postVerify` hook. After that
813
854
  hook reaches `DISTRIBUTED`, `ship`, `verify`, `post-release`, and
814
855
  `release-finish` display the declared Hub, plugin, and hosts. These Hub-backed
815
- targets are manual in 0.9.16 (`promptRequired: true`, `available: false`): the
816
- prompt does not query the Hub, inspect the host, or run host commands. Claude
856
+ targets retain their declared execution mode. Qoder is executable only when it
857
+ was selected and all frozen-plan, Hub-source, existing user-scope installation,
858
+ and payload checks pass; other Hub-backed targets remain manual. Manual prompts
859
+ do not query the Hub, inspect the host, or run host commands. Claude
817
860
  and Codex use their existing marketplace management entry; Kimi uses the
818
861
  frozen GitHub Release and its existing confirmation path; CodeBuddy and
819
862
  WorkBuddy remain manual because this flow cannot pin a Hub ref. Existing
@@ -844,7 +887,7 @@ the first minimal semantic boundary, so the static gate fails closed until the
844
887
  declaration is narrowed to concrete targets.
845
888
 
846
889
  <!-- release-skill:capability:unsupported-scope -->
847
- - **not in the current version:** full consumer install-tree scanning (R-02) — the current implementation handles only the declared public surface and the stable isolated install-tree record; and a real-host (Kimi/WorkBuddy) verification gate — host verification stays a non-blocking manual follow-up and does not produce `PASS`/`VERIFIED` evidence;
890
+ - **not in the current version:** full consumer install-tree scanning (R-02) — the current implementation handles only the declared public surface and the stable isolated install-tree record; and a real-host (Kimi/WorkBuddy/Qoder) verification gate — host verification and Qoder activation stay outside release `PASS`/`VERIFIED` evidence;
848
891
  - no automatic README generation or source-file overwrite;
849
892
  - no automatic conflict merge or rollback workflow;
850
893
  - no claim that a real production canary has run for marketplace verification;
@@ -853,10 +896,11 @@ declaration is narrowed to concrete targets.
853
896
  - no overwrite of branches/tags/releases or npm unpublish; create-only refs use
854
897
  `--force-with-lease=<ref>:` solely as an atomic compare-and-set assertion that
855
898
  the ref is absent, while existing branches use an ordinary non-force push;
856
- - no Kimi or CodeBuddy/WorkBuddy marketplace install checkpoint in the release
899
+ - no Kimi, CodeBuddy/WorkBuddy, or Qoder marketplace install checkpoint in the release
857
900
  state machine — optional release-finish can drive and re-check Kimi locally,
858
901
  or update an existing CodeBuddy/WorkBuddy entry under strict frozen-identity
859
- checks, but those results do not become publication evidence;
902
+ checks, or update an existing user-scope Qoder entry after equivalent source
903
+ and payload checks, but those results do not become publication evidence;
860
904
  - no promise of Windows or broad multi-platform native write support;
861
905
  - no hidden commit, push, tag, release, or package publication.
862
906