Dashboard › craft › Distillation
0b4605c8-57e5-4805-806e-3543a6e25323["lore_tm_v1_JKsbO2blgA4U1Q8Oo5YZ5BjLhCXFGvj8xfs85lNzLEA","lore_tm_v1_AIIPia8YKB6uG9EoYGNcuUNpAWJSKZuwHlH6-s_kYfM","lore_tm_v1_cPTyTd1wK3oIeQbcQ0H3ApIHdQyPAnjgUJGKKJLJd5A","lore_tm_v1_1tCgc41eDVbj5PuE3xZXnk3xyN2PhqPBZkrCT0u8EZ0","lore_tm_v1_DKsu5G5gs7-W9r0u-RF68cF0qgnNbk4LtO6hhR0aFcE"]
Date: Aug 29, 2026
feat/workspace-acceptance at b658ffa (fix: validate publish workspace JSON) includes prior commit 33de3f1 (feat: accept workspace publish requests) since main..github/workflows/publish.yml, docs/publish-issue-title.md, src/modules/publish-issue-title.peggy, generated/parsing-related modules, and tests; .github/workflows/cocoapods-keepalive.yml only removes quotation marks from workflow name CocoaPods Token Keep-Alive.src/modules/publish-issue-title.peggy is the canonical grammar for publish issue titles. It parses publish: , optional getsentry/, a repository, optional syntactic path suffix, optional legacy workspace JSON qualifier, @, and a version; it returns { repo, path: path || "", version, ...(workspace ? { workspace } : {}) }.src/modules/publish-issue-title.peggy accepts repository and path-segment characters [A-Za-z0-9_.-]; Path consists of one or more /${segment} entries; versions accept [A-Za-z0-9_.+-]+.src/modules/publish-issue-title.peggy is exactly " [workspace: " <JsonString> "] "; JsonString preserves quoted JSON text, permits non-control non-quote/non-backslash characters or backslash followed by a non-control character, and delegates authoritative escape validation to JSON.parse.View check runs link; if the checkout has root .craft.yml, craft workspace list supplies exact workspace keys. An exact key match is a workspace; every other suffix remains a checkout path..craft.yml always uses checkout-path behavior; workspace-discovery errors when root configuration exists fail the release; a workspace with a non-root checkout path is rejected.^[A-Za-z0-9_.-]+$; compatibility remains for JSON-qualified legacy titles such as publish: getsentry/toolkit [workspace: "cli/v2"] @1.2.3 and publish: getsentry/toolkit [workspace: "cli [preview] \"next\""] @1.2.3, but Craft does not create legacy JSON-qualified titles.] before @; unqualified titles have no space before @. Legacy workspace JSON must decode to a nonempty name and exclude Unicode categories Cc, Cf, Zl, and Zp.src/modules/__tests__/details-from-context.js adds publish-issue parsing/context tests, including rejection diagnostic Invalid publish issue title and the existing Issue context is not defined case..github/workflows/publish.yml adds id: craft-state to the Set targets step, uses state/output handling for publish arguments, and tests/workflow content reference getsentry/craft:2.31.0 workspace list.src/modules/release-revision.js, publish-location.js, publish-issue-title.js, publish-issue-title.peggy, update-issue.js, process-end-state.js, post-workflow-details.js, and details-from-context.js; associated tests include release-revision.js, publish-location.js, publish-workflow.js, update-issue.js, process-end-state.js, post-workflow-details.js, and details-from-context.js under src/modules/__tests__/.src/publish/resolve-release-revision.js, resolve-location.js, update-issue.js, post-workflow-details.js, post-result.js, and inputs.js; parser generation script is scripts/generate-publish-issue-title-parser.js.