Dashboard › craft › Distillation
63dd4c21-951d-4661-a8ef-761b9ffdc3ce["lore_tm_v1_uwuLvavG-9eYtLjLrdkq_cRH7hhBlmOcb3yBlTtrLko","lore_tm_v1__WyphuZdSRdZW3d-Y3PbhM4ZwaED6z708dkX3U_IMOE","lore_tm_v1_ftmhxLlxhHOScmI5QNWGOM7vhPEkyTq0O3wKs--KzJU","lore_tm_v1_6UZB58qhUDovzhRpoyp-VcLiW8iQiwcDY1jbd8c3F4w","lore_tm_v1_AjumGpyg_cu6NTQTX5FDPaWBxBIgtC4fIEq7A31M1gM","lore_tm_v1_aTmBEn8a2RyUtwD8Qq_xDP08G-4D6ZiU3IhjkqIaiLY","lore_tm_v1_7TuJX-vFT71QtSP4g8eIyqUGxB2mkYXMvFYlbd77OOs","lore_tm_v1_cPiK-xVzrUNNUpE84CmKtEEi2yYeBrwpLqysMa5B1Lw","lore_tm_v1_trgV38cFtLVvoTKzjpBSFTMdq0fo-nuMdcaXM-0kduw","lore_tm_v1_qbrI67MDMfLxYZRUS5ZEY4uz8eVvDUEQhZllqCFsUVc"]
Date: Sep 8, 2026
src/publish/__tests__/discover-location.js tests discoverLocation() retains checkout-path behavior when root config is absent: input { path: "./packages/cli" }, repositoryDirectory: "__repo__", and exists: () => false return { path: "./packages/cli" }.src/publish/__tests__/discover-location.js tests exact workspace discovery through the released Craft image: when exists: () => true, execFile returns ["packages/CLI"], and input path is "./packages/CLI", discoverLocation() returns { path: ".", workspace: "packages/CLI" }; it invokes docker with arguments containing "getsentry/craft:latest", "workspace", and "list", plus { encoding: "utf8" }.src/publish/__tests__/discover-location.js tests fail-closed workspace discovery: getWorkspaceNames() throws "Craft workspace discovery returned an invalid workspace list." if Craft returns "{}" or no output ("\n").src/modules/release-revision.js emits repository-scoped errors including Expected exactly one View check runs link in Quick links for getsentry/${repo}. and Expected a View check runs link for getsentry/${repo} in the publish issue body.; src/modules/publish-issue-title.peggy parses the Merge target: header and the - [View check runs](https://github.com/getsentry/<repo>/commit/<revision>/checks[/]) quick-link format..github/workflows/ci-pending.yml; the .github directory contains CODEOWNERS and workflows/, and .github/workflows/ contains exactly auto-approve.yml, ci-poller.yml, cocoapods-keepalive.yml, publish.yml, and test.yml..github/workflows/test.yml defines Test, triggered on pushes to main and all pull requests; it grants contents: read, runs a unit-test job on ubuntu-latest using Bash, actions/checkout@v6, actions/setup-node@v6 with Node 24, and actions/cache@v4 for node_modules keyed by ${{ runner.os }}-node_modules-${{ hashFiles('package.json', 'yarn.lock') }}; it conditionally runs yarn install --frozen-lockfile on cache miss and then yarn test..github/workflows/auto-approve.yml defines auto-approve non-sdks, triggered when an issue is opened. Its auto-approve job runs only for sentry-release-bot[bot] or getsantry[bot] when the issue title starts publish: ; it sparsely checks out auto-approve-repos.txt, creates an app token with actions/create-github-app-token@v3 using vars.SENTRY_INTERNAL_APP_ID and secrets.SENTRY_INTERNAL_APP_PRIVATE_KEY, extracts REPO via sed -n 's/^publish: \(.*\)@.*/\1/p', and adds the accepted label with gh issue edit "$ISSUE_URL" --add-label accepted when the exact repository string is in auto-approve-repos.txt.yarn test completed successfully: yarn check:generated ran node scripts/generate-publish-issue-title-parser.js --check, then vitest run --printConsoleTrace; all 13 test files and all 87 tests passed. Vitest v4.1.0 duration was 2.19s; Yarn completed in 3.57s.eslint src .github --ignore-pattern '!.github' in 0.96s.