Dashboard › craft › Distillation
b9178629-a675-446d-92ed-3da80da282a8["lore_tm_v1_Rz12SPC5zXUuzx6SO6QXX45EnmefMTkQSnF3anMEsFY","lore_tm_v1_r1mCe0Tx5dgTQV98ElBpfcOlqU-ng9W46ksdFUxc9e0","lore_tm_v1_6vc2kz0SGy_g4BI5Tm5NtTKeUsmiQcc2jM5893kMHG8","lore_tm_v1_Dt6zrgyXpR05aKVgSMIa0pMeAOUufHjA7L11o5wfPU8","lore_tm_v1_VHlMkYK8Li_IUqfNW5dEYgQqSP8WKUuAYdWHQrFx3a8","lore_tm_v1_-QOQTZgKhmBbovqOanNlGgKoTaOdPUJQTv-184ey1bo","lore_tm_v1_3jjaXJfOEix49r6Mzkviy-oe3XnpsojHOebqqJxra-s","lore_tm_v1_P3YGUOG50pt6uY7tCKjEAfn6wYgopnkLk8ha0ehvv0w","lore_tm_v1_0IqwXa9X8wLMOcyn2I0Rm6UxgAMtAXHsxiGM0ZUukoU","lore_tm_v1_oNxxpM_0QYE40oXw-IWz0waKb_0h3Hy0lkxiNJG4HZQ","lore_tm_v1_voXXi1xT8ES09Mfac1nagOvv7y5-MY7LbkHqR1Mxqbo"]
Date: Sep 8, 2026
/home/byk/Code/getsentry/publish-workspace-acceptance/src/modules/__tests__/publish-location.js.src/modules/release-revision.js, generated src/modules/publish-issue-title.js, and tests including src/modules/__tests__/release-revision.js, ci-poller-input.js, details-from-context.js, and update-issue.js; release-revision errors require exactly one View check runs Quick-links link and a link specifically for getsentry/${repo}.src/modules/__tests__/ci-poller-input.js tests getCiPollerInput from src/modules/ci-poller-input.js using revision 7e5ca7ed5581552de066e2a8bc295b8306be38ac and canonical issue-body Quick links: changes URL https://github.com/getsentry/toolkit/compare/1.2.2...release/1.2.3 and checks URL https://github.com/getsentry/toolkit/commit/${REVISION}/checks/.getCiPollerInput accepts titles publish: getsentry/toolkit/cli@1.2.3 and publish: toolkit/packages/cli/v2@1.2.3, resolving both to { repo: "getsentry/toolkit", revision: REVISION, version: "1.2.3" }.ci-poller-input.js tests require .github/workflows/ci-poller.yml to contain checkout step name Check out publish controller, checkout path .__publish__, and node .__publish__/src/publish/resolve-ci-poller-input.js; the workflow must not contain grep -oP '(?<=commit/.getCiPollerInput rejects unsafe repository identities -toolkit, ., .., and __proto__ with Invalid publish issue repository; invalid versions --config and 1.2 with Invalid publish issue version; malformed titles publish: getsentry/@1.2.3 and publish: getsentry/toolkit$@1.2.3 with Invalid publish issue title; and unsafe paths ../other, ./other, __proto__/other, and --config with Invalid publish issue path.src/modules/ci-poller-input.js imports parse as parsePublishIssueTitle from ./publish-issue-title, getReleaseRevision/updateReleaseRevision from ./release-revision, isPublishRepository/isReleaseVersion from ./publish-issue-validation, and isPublishPath from ./publish-location; getCiPollerInput({ title, issueBody, revision }) converts title-parser failures into Invalid publish issue title: '${title}' errors and conditionally returns an issueBody updated through updateReleaseRevision.src/modules/__tests__/publish-location.js specifies resolvePublishLocation: exact workspace path ./packages/CLI matches exact workspace name packages/CLI without normalization and resolves to { path: ".", workspace: "packages/CLI" }; nonmatching suffixes remain checkout paths, including ./packages with workspace cli and ./packages/cli with workspace cli; root path . resolves to { path: "." }.resolvePublishLocation rejects root-release workspace discovery list ["packages/../cli"] and invalid workspace lists with Craft workspace discovery returned an invalid workspace list.; rejects unsafe publish paths ./., ./.., and ./packages/../other with Invalid publish path.; rejects discovery workspace cli-日本語; and rejects unsafe workspace names ., .., packages/./cli, packages/../cli, packages/__proto__/cli, packages/-cli, packages/foo], packages/foo!, and packages/foo^.src/modules/__tests__/publish-workflow.js extracts the Set targets Bash script from .github/workflows/publish.yml using a regex bounded by - name: Set targets and - uses: docker://getsentry/craft:latest; tests execute it with bash -e -c, CRAFT_PUBLISH_PATH, CRAFT_PUBLISH_REPO, CRAFT_PUBLISH_TARGETS_JSON='["github"]', CRAFT_PUBLISH_VERSION, optional CRAFT_PUBLISH_WORKSPACE, GITHUB_OUTPUT, and a temporary GITHUB_WORKSPACE.Resolve CI-approved release revision before Inform start, then Check out target repo, Resolve publish location, Set targets, and Publish using Craft; require checkout ref: ${{ steps.release-revision.outputs.revision }}, discover-location.js, PUBLISH_REPOSITORY_DIRECTORY: __repo__, resolved CRAFT_PUBLISH_PATH/CRAFT_PUBLISH_WORKSPACE, and craft publish ${{ fromJSON(steps.inputs.outputs.result).version }} --rev ${{ steps.release-revision.outputs.revision }}; reject legacy pinned getsentry/craft:2.31.0.ci-ready label event where issue labels include accepted and ci-ready and exclude ci-pending and ci-failed.sentry version 21.3.1 to create .craft-state/craft/publish-state-getsentry-sentry-c232c383e26f-21.3.1.json containing {"published":{"github":true}}; monorepo toolkit workspace packages/cli, version 1.2.3, must create .craft-state/craft/publish-state-getsentry-toolkit-c232c383e26f-workspace-cGFja2FnZXMvY2xp-1.2.3.json with the same state.4.2.6+sentry1 and 4.2.6+Sentry1: respectively suffixes -version-NC4yLjYrc2VudHJ5MQ.json and -version-NC4yLjYrU2VudHJ5MQ.json.src/modules/__tests__/generate-publish-issue-title-parser.js requires generateDocumentation from scripts/generate-publish-issue-title-parser.js to throw Could not find the generated title grammar in the documentation. when documentation is # Publish Issue Format\n and grammar is PublishIssueTitle = "publish: ".isReleaseVersion defined in src/modules/publish-issue-validation.js and used by src/modules/ci-poller-input.js and src/modules/details-from-context.js.craft/src/utils/version.ts: semverRegex() accepts optional leading v, numeric major.minor.patch, optional prerelease, and optional build metadata; isValidVersion(text) requires a nonempty exact getVersion(text) match, so leading v is invalid even though getVersion strips it.craft/src/utils/version.ts accepts examples 1.2.3, 1.2.3-beta, Python-style 1.2.3rc1, and 1.2.3-1; rejects v1.2.3; parseVersion returns { major, minor, patch, pre, build } or null; PREVIEW_RELEASE_REGEX detects preview|pre|rc|dev|alpha|beta|unstable|a|b; and versionToTag(version, tagPrefix?) uses configured getGitTagPrefix() when no prefix is supplied.src/commands/publish.ts, src/commands/prepare.ts, src/config.ts, src/utils/symlink.ts, and publishing targets including src/targets/npm.ts, github.ts, brew.ts, and awsLambdaLayer.ts; src/commands/publish.ts throws Invalid version provided: "${version}" for invalid versions.d48b906 documentation at docs/src/content/docs/targets/github.md:110 states that craft workspace list prints concrete workspace paths; related implementation is src/commands/workspace.ts importing ./workspace_cmds/list, with tests in src/commands/workspace_cmds/__tests__/list.test.ts.