Dashboard › craft › Distillation
e63df89e-8882-4d10-bc84-8b0fce98d4ee["lore_tm_v1_5R63HLPas5--bTKNYqJuGlpKa-A9In82SzZvXpWksrw","lore_tm_v1_mw4Ay5q1FMpvoOyGFhSR4ADW5rBwbTIcZi8Tv0AEfTs","lore_tm_v1_nwWvc_0-zaWzBIQ6hAGye8ab6y9DhxAsTzV8pFToSUQ","lore_tm_v1_1sp6Kk7IG1GGCpkYXODDx4oijLAoSwfiAwwuNdiphtA","lore_tm_v1_Tc89r87oZcht8J0szY7Bk3cHoxhezxYnoKVGoRA3F48","lore_tm_v1_HdHEkXOqg5LpMcm353eg7U-VveG5GGti679ark_mpic","lore_tm_v1_28CzmxbPgOPrrRpaeGvs6SqbClL5uBb7jjztpHech34","lore_tm_v1_C0qdl1IxEmYPGmmCNgEfdTCaLCqHdo26Rz6p5hqOC1A","lore_tm_v1_ua3bOzK7PqsrmNWsrLSSBkVrI-ohmK3djmyatutfzgI","lore_tm_v1_Tgpd3Qa-mAr89cJlXGQPZpQeRGZwiY7_XhjSuIcMbXs","lore_tm_v1_ZIKeUcKVM0ONqd5cScLfSkCJybtnzvv7-V_MBH0WjB8","lore_tm_v1_290SFZ2d2hci48suRjJ8mFN2S7IaO12W2YzlxW5hz94","lore_tm_v1_BnXkURAuLPkVVn0TXiafRkSCnUkk3Q3NAeYdymUyyhk","lore_tm_v1_uMrwr5mcR_2Ypi8g6BxizEEUGXQVyZfqX9pZw9joP60","lore_tm_v1_gkBdlMbdcsmarJPkW3oaE25oeHnLnPTuL7oCOlKXiF0"]
Date: Aug 29, 2026
src/modules/details-from-context.js parses a publish issue title via parsePublishIssueTitle; if parsing fails it throws Invalid publish issue title: '<title>'. It JSON-parses an optional workspace qualifier and throws Invalid publish workspace JSON in title: '<title>' on JSON parse failure; workspace must be nonempty and contain no Unicode Cc, Cf, Zl, or Zp characters. It produces path as "." + parsedTitleDetails.path, rejects paths containing .., recognizes dry-run labels as dry_run: "1", parses Merge target: <[\w.\-/]+>, and extracts checked target IDs from the issue body’s Targets section.TARGETS_SECTION_PARSER_REGEX in src/modules/details-from-context.js is /^(?!### Targets$\s)(?: *- \[[ xX]\] \S+\s*$(?:\r?\n)?)+/m; TARGETS_PARSER_REGEX is /^\s*- \[[ x]\] (\S+)/gim; CHECKED_TARGETS_PARSER_REGEX is /^\s*- \[x\] (\S+)/gim.src/modules/release-revision.js defines CHECK_RUNS_LINK as ^- \[View check runs\]\(https:\/\/github\.com\/getsentry\/(?<repo>[A-Za-z0-9_.-]+)\/commit\/(?<revision>[0-9a-f]{40})\/checks\/?\)$ with multiline matching; getReleaseRevision({ issueBody, repo }) matches the issue body, requires the captured repository to exactly equal repo, otherwise throws Expected a View check runs link for getsentry/${repo} in the publish issue body., and returns the 40-character lowercase revision.src/modules/__tests__/release-revision.js tests extraction of 7e5ca7ed5581552de066e2a8bc295b8306be38ac for getsentry/toolkit; rejection of a check-runs link for getsentry/other; rejection when the CI-approved revision link is absent; and rejection of an uppercase SHA 7E5CA7ED5581552DE066E2A8BC295B8306BE38AC.workspace list for every checked-out root config, including legacy JSON-qualified requests; proposed narrowing discovery so existing routing is retained and legacy requests do not depend on compact-resolution tooling.src/publish/resolve-location.js reads PUBLISH_ARGS and CRAFT_WORKSPACE_NAMES (default "[]"), requires workspace discovery to be an array or throws Craft workspace discovery returned an invalid workspace list., then writes resolvePublishLocation({ path: input.path, workspace: input.workspace, workspaceNames }) to the result GitHub Actions output./home/byk/Code/getsentry/publish-workspace-acceptance/src/modules/__tests__/publish-location.js.src/modules/__tests__/publish-location.js tests: exact one-segment ./CLI resolves to { path: ".", workspace: "CLI" } when discovery returns ["cli", "CLI"]; ./packages remains { path: "./packages" } when only cli is discovered; ./packages/cli remains a checkout path; root . remains { path: "." }; legacy explicit workspace "cli/v2" remains { path: ".", workspace: "cli/v2" }; and discovery entry "cli-日本語" throws Craft workspace discovery returned an invalid workspace list.workspace field and exactly one trailing path segment should invoke workspace list; planned to centralize that condition in the resolver and make the workflow honor it so legacy titles never invoke the new discovery image.scripts/generate-publish-issue-title-parser.js reads src/modules/publish-issue-title.peggy, runs peggy.generate(grammar, { format: "commonjs", grammarSource: "publish-issue-title.peggy" }), and writes the resulting parser to src/modules/publish-issue-title.js.publish-workspace-acceptance/src/modules/publish-location.js, src/publish/resolve-location.js, and src/modules/__tests__/publish-location.js../name suffix; it planned to wire this resolver decision into the workflow and add CRLF coverage for the CI-approved revision link.publish-workspace-acceptance/.github/workflows/publish.yml, src/modules/release-revision.js, and src/modules/__tests__/release-revision.js.latest image expectation to the immutable image reference./home/byk/Code/getsentry/craft-workspace-action-propagation passed: 3 test files and 79 tests passed; duration 3.54s.vitest run src/modules/__tests__/details-from-context.js src/modules/__tests__/publish-location.js src/modules/__tests__/release-revision.js src/modules/__tests__/publish-workflow.js via Yarn 1.22.22; it emitted a Vite warning that vitest.config.js:1:1 uses ESM syntax loaded as CommonJS and recommends a .mjs extension or "type": "module".src/modules/__tests__/details-from-context.js failed “rejects an invalid JSON workspace escape with a clear error”: expected Invalid publish workspace JSON in title, but malformed publish: getsentry/toolkit [workspace: "cli\qnext"] @1.2.3 failed earlier with Invalid publish issue title: 'publish: getsentry/toolkit [workspace: "cli\qnext"] @1.2.3'.src/modules/__tests__/publish-workflow.js threw Error: Missing Set targets workflow script from getSetTargetsScript at line 19 because its extraction regex still expects the workflow section ending at docker://getsentry/craft:latest.detailsFromContext can raise its dedicated JSON error, and the workflow test extractor still expects latest. It planned to fix both while retaining compact-title validation.