fix(release): package unreleased ref candidates (#105291)

* fix(release): package unreleased ref candidates

* docs(agents): preserve PR artifact enums
This commit is contained in:
Peter Steinberger
2026-07-12 11:45:03 +01:00
committed by GitHub
parent 7303f42917
commit 5f856a26ba
3 changed files with 14 additions and 0 deletions
+2
View File
@@ -162,6 +162,8 @@ Skills own workflows; root owns hard policy and routing.
- Issue/PR start: `git status -sb`; if clean, `git pull --ff-only`; if dirty, yell before pull/rebase.
- PR refs: `gh pr view/diff` or `gh api`, not web search. Prefer `gitcrawl` for maintainer discovery; missing/stale `gitcrawl` falls through to live `gh`, not contributor setup. Verify live with `gh` before mutation.
- zsh: quote `gh api` endpoints containing `?` or brackets; otherwise glob expansion corrupts the invocation.
- zsh: quote command globs; unmatched patterns abort before the tool runs.
- `scripts/pr` artifacts: preserve template enum values; validate before prepare.
- Bare issue/PR URL/number: inspect live and take the efficient maintainer path; switch branches/refs when useful.
- No unsolicited PR labels/retitles/rebases/fixups/landing. Comments/reviews ok only for reviewable findings, pre-merge proof, or close/duplicate reason after explicit close/sweep/landing request.
- Maintainer decision closes the cluster: if deciding reported behavior/proposed fix is not planned, comment+close all directly associated open issues/PRs unless explicitly told to keep one open. Associated means linked PRs/issues, duplicates, companion workaround PRs, and the canonical issue for the rejected behavior.
@@ -1476,6 +1476,7 @@ async function resolveCandidate(options) {
await installPackageSourceDeps(packageSource.sourceDir);
await run("node", [
"scripts/package-openclaw-for-docker.mjs",
"--allow-unreleased-changelog",
"--source-dir",
packageSource.sourceDir,
"--output-dir",
@@ -109,6 +109,17 @@ afterEach(async () => {
});
describe("resolve-openclaw-package-candidate", () => {
it("allows Unreleased notes when packaging an exact ref candidate", () => {
const script = readFileSync("scripts/resolve-openclaw-package-candidate.mjs", "utf8");
const refPackageBuild = script.slice(
script.indexOf('if (options.source === "ref")'),
script.indexOf('} else if (options.source === "npm")'),
);
expect(refPackageBuild).toContain('"scripts/package-openclaw-for-docker.mjs"');
expect(refPackageBuild).toContain('"--allow-unreleased-changelog"');
});
it("accepts only OpenClaw release package specs for npm candidates", () => {
for (const spec of [
"openclaw@beta",