release-skill 0.6.0 → 0.6.2
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +2 -2
- package/.kimi-plugin/plugin.json +1 -1
- package/CHANGELOG.md +31 -0
- package/INSTALL.md +2 -2
- package/INSTALL.zh-CN.md +2 -2
- package/README.md +12 -8
- package/README.zh-CN.md +12 -8
- package/adapters/claude/.claude-plugin/marketplace.json +1 -1
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/bin/release-skill.bundle.mjs +1028 -423
- package/adapters/claude/schemas/release-plan.schema.json +9 -0
- package/adapters/claude/schemas/release-project.schema.json +8 -0
- package/adapters/codex/.codex-plugin/plugin.json +2 -2
- package/adapters/codex/bin/release-skill.bundle.mjs +1028 -423
- package/adapters/codex/schemas/release-plan.schema.json +9 -0
- package/adapters/codex/schemas/release-project.schema.json +8 -0
- package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
- package/adapters/kimi/bin/release-skill.bundle.mjs +1028 -423
- package/adapters/kimi/schemas/release-plan.schema.json +9 -0
- package/adapters/kimi/schemas/release-project.schema.json +8 -0
- package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
- package/adapters/workbuddy/bin/release-skill.bundle.mjs +1028 -423
- package/adapters/workbuddy/schemas/release-plan.schema.json +9 -0
- package/adapters/workbuddy/schemas/release-project.schema.json +8 -0
- package/bin/release-skill-cli.mjs +11 -0
- package/bin/release-skill.bundle.mjs +1028 -423
- package/package.json +1 -1
- package/references/05-evidence-and-errors.md +1 -0
- package/schemas/release-plan.schema.json +9 -0
- package/schemas/release-project.schema.json +8 -0
- package/scripts/build-bundle.mjs +11 -2
- package/scripts/sync-public-files.mjs +4 -0
- package/src/commands/lineage.mjs +101 -32
- package/src/commands/prepare.mjs +273 -9
- package/src/commands/publish.mjs +10 -1
- package/src/commands/verify.mjs +22 -0
- package/src/core/bundle-freshness.mjs +236 -0
- package/src/core/errors.mjs +2 -0
- package/src/core/frozen-marker.mjs +97 -0
- package/src/core/hooks.mjs +12 -1
- package/src/core/skill-resource-closure.mjs +240 -10
- package/src/platforms/registry.mjs +12 -0
|
@@ -863,6 +863,13 @@
|
|
|
863
863
|
"findingCount": {
|
|
864
864
|
"const": 0
|
|
865
865
|
},
|
|
866
|
+
"preparedAt": {
|
|
867
|
+
"type": ["string", "null"],
|
|
868
|
+
"description": "Deterministic freeze timestamp of the prepare run that produced this receipt (production: the baseline HEAD commit committer date in canonical UTC form; non-production: null). Never a wall-clock sample, so identical sources freeze byte-identical receipts."
|
|
869
|
+
},
|
|
870
|
+
"exitCode": {
|
|
871
|
+
"const": 0
|
|
872
|
+
},
|
|
866
873
|
"receiptDigest": {
|
|
867
874
|
"type": "string",
|
|
868
875
|
"pattern": "^[a-f0-9]{64}$"
|
|
@@ -877,6 +884,8 @@
|
|
|
877
884
|
"referenceCount",
|
|
878
885
|
"sourceOnlyCount",
|
|
879
886
|
"findingCount",
|
|
887
|
+
"preparedAt",
|
|
888
|
+
"exitCode",
|
|
880
889
|
"receiptDigest"
|
|
881
890
|
]
|
|
882
891
|
}
|
|
@@ -873,6 +873,14 @@
|
|
|
873
873
|
},
|
|
874
874
|
"uniqueItems": true,
|
|
875
875
|
"description": "Root-relative globs declaring the hook's full input set (source, scripts, config, lockfiles). The cache key fingerprints the content of every matched file; a glob that matches nothing fails closed. Must cover ALL inputs or the cache can return a false hit."
|
|
876
|
+
},
|
|
877
|
+
"testSelection": {
|
|
878
|
+
"type": "string",
|
|
879
|
+
"enum": [
|
|
880
|
+
"full",
|
|
881
|
+
"incremental"
|
|
882
|
+
],
|
|
883
|
+
"description": "Only meaningful for the test hook: which test selection the hook command runs. Absence or 'full' means the hook runs the full suite, which prepare's built-in full-test freeze gate requires before the plan digest is computed. 'incremental' is reserved for a future preflight mode and is rejected at freeze time ('incremental selection is not allowed at freeze time'). Built-in gate; cannot be disabled by project overlays."
|
|
876
884
|
}
|
|
877
885
|
}
|
|
878
886
|
},
|
|
@@ -258,6 +258,9 @@ Options:
|
|
|
258
258
|
deterministically trim code-class gates (declared hooks, snapshot-verify gates,
|
|
259
259
|
source-authority closure, skill-resource-closure) and record workflowDecision in the plan;
|
|
260
260
|
config also reports whether the public bytes are unchanged (no publish path)
|
|
261
|
+
--test-selection <full|incremental> Test selection for the test hook (prepare). Only 'full' is accepted at
|
|
262
|
+
freeze time; 'incremental' is reserved for a future preflight mode and is rejected
|
|
263
|
+
('incremental selection is not allowed at freeze time')
|
|
261
264
|
--answers <path> Human-reviewed setup answers JSON
|
|
262
265
|
--write Create an absent project.yaml during setup; never overwrites
|
|
263
266
|
--confirm-setup <digest> Confirm exact setup facts and answers before create
|
|
@@ -699,6 +702,13 @@ if (command === 'prepare') {
|
|
|
699
702
|
const production = args.includes('--production');
|
|
700
703
|
const workflowIdx = args.indexOf('--workflow');
|
|
701
704
|
const workflow = workflowIdx !== -1 && args[workflowIdx + 1] ? args[workflowIdx + 1] : 'full';
|
|
705
|
+
// Test-selection flag (2026-08-18 investigation §4.4): reserved for a
|
|
706
|
+
// future preflight mode. prepare rejects 'incremental' at freeze time;
|
|
707
|
+
// the flag is parsed here only so the CLI surface matches the contract.
|
|
708
|
+
const testSelectionIdx = args.indexOf('--test-selection');
|
|
709
|
+
const testSelection = testSelectionIdx !== -1 && args[testSelectionIdx + 1]
|
|
710
|
+
? args[testSelectionIdx + 1]
|
|
711
|
+
: undefined;
|
|
702
712
|
const outputIdx = args.indexOf('--output');
|
|
703
713
|
const output = outputIdx !== -1 && args[outputIdx + 1] ? resolve(args[outputIdx + 1]) : undefined;
|
|
704
714
|
const runDirIdx = args.indexOf('--run-dir');
|
|
@@ -716,6 +726,7 @@ if (command === 'prepare') {
|
|
|
716
726
|
hookCache,
|
|
717
727
|
production,
|
|
718
728
|
workflow,
|
|
729
|
+
testSelection,
|
|
719
730
|
output,
|
|
720
731
|
runDir,
|
|
721
732
|
});
|