Dashboard › craft › Distillation
24a6f47f-0d3e-4515-b7b1-17583290a3b7["lore_tm_v1_bFEjx9Dl6RfKxCTa9l6SzZkm0KXCDfsKrmP3GIqxl9s","lore_tm_v1_y4Kc_3YbYXvFfRC4WTFtgBgJXWpVrBswb-_vw4LtGJU","lore_tm_v1_9sN93CRdfoDNkeGOFtPnvh1cYz5PzNKxYcMTZOjfv5Q"]
Date: Aug 27, 2026
33de3f1df5bdb9a6a480e9217d566df7b5a48b8e, feat: accept workspace publish requests, was authored and committed by Burak Yigit Kaya <byk@sentry.io> on Aug 26, 2026 at 14:15:22 UTC. It changed .github/workflows/publish.yml, src/modules/__tests__/details-from-context.js, src/modules/__tests__/publish-workflow.js, src/modules/__tests__/update-issue.js, src/modules/details-from-context.js, and src/modules/update-issue.js: 377 insertions and 40 deletions. (meaning Aug 26, 2026)b658ffa0299fedf78c9dd9a2121cd740691ca157, fix: validate publish workspace JSON, was authored and committed by Burak Yigit Kaya <byk@sentry.io> on Aug 27, 2026 at 09:14:38 UTC. It changed .github/workflows/cocoapods-keepalive.yml, README.md, docs/publish-issue-format.md, src/modules/__tests__/details-from-context.js, and src/modules/details-from-context.js: 112 insertions and 2 deletions..github/workflows/publish.yml publishes only on an open issue’s ci-ready label event when the issue also has accepted and ci-ready, and lacks ci-pending and ci-failed; it has timeout-minutes: 90, runs on ubuntu-latest in the production environment, and checks out repository contents using actions/checkout@v6 at .__publish__.actions/checkout@v6, path: __repo__, repository: getsentry/${{ fromJSON(steps.inputs.outputs.result).repo }}, ref: ${{ steps.target-repo-branch.outputs.target_repo_branch || ''}}, token: ${{ steps.token.outputs.token }}, and fetch-depth: 0.src/__tests__/action.test.ts loads action.yml using js-yaml’s load(), extracts runs.steps, and provides getActionStep(name) which throws Missing ${name} action step if the named step or its run script is absent.src/__tests__/action.test.ts creates isolated action-test environments under mkdtempSync(join(tmpdir(), 'craft-action-test-')), with stub craft and git executables in bin/, captured call files craft-calls and git-calls, and github-output; afterEach removes all temporary directories recursively and forcibly.src/__tests__/action.test.ts, runActionStep() executes a named action step through bash -e -c with cwd set to the temporary directory and environment including CRAFT_CALLS, GIT_CALLS, GITHUB_OUTPUT, CRAFT_CONFIG_FROM_MERGE_TARGET: '', MERGE_TARGET: '', VERSION: '', WORKSPACE, and a PATH prefixed by the stub binary directory.src/__tests__/action.test.ts tests option-looking workspace input --config-from=untrusted: both Craft Prepare and Read Craft Targets must exit 0, and Craft must receive exactly prepare --workspace=--config-from=untrusted followed by targets --workspace=--config-from=untrusted, ensuring the workspace is passed inline as --workspace=<value>.src/__tests__/action.test.ts verifies that both Craft Prepare and Read Craft Targets set env.WORKSPACE to ${{ inputs.workspace }}.src/__tests__/action.test.ts verifies Validate workspace is the first action step and rejects workspace values containing a tab control character (cli\tnext), Unicode format character (cli\u202enext), Unicode line separator (cli\u2028next), or Unicode paragraph separator (cli\u2029next) with exit status 1 before any git or craft side effects.src/__tests__/action.test.ts verifies that Validate workspace accepts the empty workspace string and Unicode workspace cli-日本語, each with exit status 0.WORKSPACES_MIN_VERSION, use setActiveWorkspace(undefined), setActiveWorkspace('cli'), and setActiveWorkspace('mcp'), test that different workspaces resolve independently, validate minVersion including ${WORKSPACES_MIN_VERSION}+linux, validate noMerge, and ensure incomplete github configuration lacking owner/repo does not produce a truthy partial GitHub object.