Dashboard › craft › Distillation
f167adee-c1e6-4a4c-a581-e52df0a72abf["lore_tm_v1_wux97QYn1DvERlGSG5SAIFd2THnF7tCjsN2ZORH-qYA","lore_tm_v1_MjWXfbsm3DjuA_Cziyj39BTADcDQDKBqSxnb2C8wPBE","lore_tm_v1_jjyRN4MFbcTu1yiUnK3TD4oDrDkTtK6zHKFOeUxBotw","lore_tm_v1_hDja3wAknJ_Fsnl9LIGhlIxgxNi2JNIdhwnlktzpwJ0","lore_tm_v1_vHkXHT6I0lB_jNOauSyyGJq-GzqEk9H8UfRUCfgZkA8","lore_tm_v1_1mrtrjIzPOCopoBpsc7uP0a9gy9dHLfNJc3cORRtV9g","lore_tm_v1_Iyn7l-8ZJ6fsecW6UVbrJzGsL4xdXrdxiYhv1jlRgaQ","lore_tm_v1_qm5q2drK_4N-kJ-MEBjXBLzr5MyzZNdy850XGe_ZbJM","lore_tm_v1_GRPlMFltXdhCawIt-MHuKqe_NsA_Gyo_hqzz36WrfL0","lore_tm_v1_GKZzYp6758oIOCpH_qfF2LepErQar8ictnTufDd9eIw","lore_tm_v1_kN8Mhsj1UUToAJC2TqJRxyqg099jhFhJ6lm4Rtfu19c","lore_tm_v1_duNB6V4kbtNY5gJUNrdwCbpIcuDAy7sG_mwhrM7-czY","lore_tm_v1_6_X9rS9U6LUnsyt2DuBpOHpC9UHrg7Hpz6cE_WFdU2o","lore_tm_v1_IajGh2ztHvh_E8AE3EBrsMsa8rZXPnNtwxihPia8zYs","lore_tm_v1_hiE_RAIJzU62styyS3wQDJMCGduWe3DcNrMy8U-47ug","lore_tm_v1_JZcWpR5P2rsOUGFZXM1my_PHRQyyLc-5PLji2eJBm2o","lore_tm_v1_yuOMs3qhtPmX5OQ0I9uS-NOQewa0OSFzpbTqMkf4nh0","lore_tm_v1_UNnJuyyGrpdYvwbAQW_SBuMsU5yZM7zP7af9WG4L63k","lore_tm_v1_OQ-kDRi-bybABDUuluMbLwzXg5KbOdh1CrA-CNxVKQM","lore_tm_v1_pTNYGgUc-WlgTaVaaEjPxZLn_BtbqVlHCLEW7u3dRdA","lore_tm_v1_a7L9vMqlXhiFAUkDJ3WKRg0Mn-jg8a5TrfPwoyHmE9M","lore_tm_v1_SU4csikEP29qA6s1xi89F4Jwj77XriORGqqU2wjfdWA","lore_tm_v1_LzRczzObXsoQQazhK2kFuUEgHQJGvAkLWnHfmJkZ7nA","lore_tm_v1_z4iabzRSnx-ywfj7AOUzjrvvzKNuyhvUTadnOouoIhE","lore_tm_v1_9L_p7S2Xi9QnUt3RvHU2k1GzGwGtguUs2JUZZJSbE38","lore_tm_v1_UiHFYQvvsSl_21qZeo2_ilLIDYm6U2Xj8x5ZYFUBWbE","lore_tm_v1_i6nPCeBBJ8pVTLauszp59tpICxuv1MEWZtrjUSF-diY","lore_tm_v1_5M8xHaDZb83Lzgb6lajl06VElBR9cFjjcDhLERIPUUI","lore_tm_v1_MNNHQDr2sb9r0Rqew_JzQVMsjy_g2HWvUigvZoZ7hiM","lore_tm_v1_r7wPz-mp4oGJIH-aMFwkjQlTo_VjvTyNmJWS06T0vZk","lore_tm_v1_cefY5NDjmURMHBbv789pvR9qQqyWly1MyaJAJaPHuLE","lore_tm_v1_pqNkRxGgaT6E_06mxd4Yw_v6WitilwekN3K1ST5Ea_U","lore_tm_v1_apcIyDursqx0Xk_MX9Sko2UF_rv_w2uuLWJUW5j0FzI","lore_tm_v1_AeLESUWBnRydQvzZ-p-6lJwDdGIxQ31r7xIDC867PR8","lore_tm_v1_i3G-CYik6Sqi8HwY0XlI6gmAabcnyYysMii8UmpVdWo","lore_tm_v1_z0cobp-PwaTfKMNuKVaRNUndfyYXeE_WcHNN11qALJY","lore_tm_v1_9VJCTjXEGZDkomeI6b6GBb20xCUXes2NveKm5UdlBCE","lore_tm_v1_2m7qvUmSWcti123rPJJpUTuXWcyV0Ey4_MgVKlcL_BQ","lore_tm_v1_f6mjWBENyKHy1LX9tKphaa-yyCgW6r2hfzovbtHRpQA","lore_tm_v1_xuzDF-CBvb8G6B9HdNz1_MLR9j7DflUIlgxbJ0IclyQ","lore_tm_v1_j-tyrD4el6tHdiEybXgLeLK-xx8m3iUBRuyBwaDZe8Q","lore_tm_v1_mLf_PXBOkrjkLRmvzMyczibe3i7m720xoq95oFtkkc8","lore_tm_v1_PkYol8hGswPOi0du_MmrBrX3t71aKw2r8BlSRVoB6uY","lore_tm_v1_MV2xTXLzHexHXXViCBp5V4rdI2diYsu2eM8-DnRohds","lore_tm_v1_JzXJQKmlImhvr9kD1VdlSZbLPi2Za7BameFKcSFfpTg"]
Date: Sep 2, 2026
action.yml:84 accepted unsafe compact names __proto__, -foo, and --config because regex /^(?!\.{1,2}$)[A-Za-z0-9_.-]+$/ rejected only . and ..; these inputs could reach side effects in action.yml:89-173. Audit required rejecting reserved and option-looking names with focused validator tests. Audit otherwise passed revision authority, poller update, ci-ready/manual recovery flow, root-only legacy workspace JSON parsing, revision consistency, Craft-compatible state isolation/parity, no local-state fallback, generated-parser freshness, YAML parsing, whitespace hygiene, and exclusion of two newline-only unrelated Publish artifacts. Full suites were intentionally not run during that read-only audit.action.yml validation step at lines 74-87 sets PATH_INPUT=${{ inputs.path }} and WORKSPACE=${{ inputs.workspace }}, rejects simultaneous non-. path plus workspace, then validates a nonempty workspace with Node regex; the pre-fix regex allowed ASCII letters/digits/periods/underscores/hyphens except . and ...src/__tests__/action.test.ts coverage included: option-looking --config-from=untrusted being passed inline as prepare --workspace=--config-from=untrusted and targets --workspace=--config-from=untrusted; invalid control/tab, format (\u202e), line separator (\u2028), paragraph separator (\u2029), and non-ASCII cli-é values rejected before Git/Craft calls; safe '' and cli-v2 accepted; combined path=packages/cli plus workspace rejected; cli/v2, ., and .. rejected; request titles publish: getsentry/toolkit@1.2.3 for root and publish: getsentry/toolkit/cli@1.2.3 for workspace cli.__proto__ and leading-dash workspaces in the first Action step while retaining the inline option-looking regression as a separate Craft parser-behavior test.../craft-workspace-action-propagation/action.yml and ../craft-workspace-action-propagation/src/__tests__/action.test.ts.vitest run src/__tests__/action.test.ts src/__tests__/config.test.ts passed: 2 test files, 61 tests. Prettier reported code-style issues only in src/__tests__/action.test.ts.@typescript-eslint/no-unused-vars had never been used for the reported warnings.src/__tests__/action.test.ts, focused Craft tests again passed: 2 files, 61 tests; Prettier passed. ESLint had 0 errors and 7 warnings: src/commands/publish.ts _abortError at 482:14, 499:14, and 527:16; _statusError at 515:16; _diffError at 521:18; and src/utils/git.ts _err at 241:12 and 249:12, all @typescript-eslint/no-unused-vars.vitest run passed: 61 test files, 1,158 passed tests, 1 skipped (1,159 total), duration 30.18s. Test output included expected mocked GitHub release scenarios, Vite SSR warnings in src/targets/__tests__/symbolCollector.test.ts concerning assignment to imported checkExecutableIsPresent, and debug messages for failed remote fetch/branch listing using cached refs. Lint retained exactly 7 warnings and 0 errors; Prettier passed; node build.mjs passed, skipping source-map upload because SENTRY_AUTH_TOKEN was absent.cli/v2 remain supported; canonical revision parser/poller constraints hold; approved revision drives checkout, discovery, state identity, and craft publish --rev; Base64URL state exists outside checkout; CI notification/label ordering and workflow_dispatch remain correct; parser/YAML/hygiene checks pass; known newline-only src/modules/post-workflow-details.js:16 and src/publish/inputs.js:5-12 remain unstaged. Audit cited Craft 1,158 passed/1 skipped plus lint/build and Publish 51 passed tests plus parser/lint validation.4da4a25 was chore: replace deprecated trimRight() with trimEnd() (#9012)..github/workflows/ci-poller.yml, .github/workflows/publish.yml, docs/publish-issue-format.md, package.json, src/modules/__tests__/details-from-context.js, src/modules/__tests__/publish-workflow.js, src/modules/details-from-context.js, and yarn.lock; intended untracked implementation/test paths included scripts/generate-publish-issue-title-parser.js, src/modules/{ci-poller-input.js,publish-issue-title.js,publish-issue-title.peggy,publish-location.js,release-revision.js}, their tests, and src/publish/{resolve-ci-poller-input.js,resolve-location.js,resolve-release-revision.js}. Unrelated modified src/modules/post-workflow-details.js and src/publish/inputs.js were newline-only formatter artifacts.action.yml, GitHub target documentation, Action/config/publish tests, src/commands/publish.ts, src/config.ts, src/index.ts, src/schemas/project_config.ts, plus new src/commands/workspace.ts and src/commands/workspace_cmds/ files. Base branch included earlier commits 6dae341 feat: propagate release workspaces and 21270a1 feat(config): add release workspaces.src/modules/publish-issue-title.js (902 lines), grammar src/modules/publish-issue-title.peggy, generator script, location/revision/poller modules and tests, resolver entrypoints, workflow/docs/package/lockfile changes. src/modules/post-workflow-details.js and src/publish/inputs.js remained unstaged.src/commands/workspace.ts, src/commands/workspace_cmds/list.ts, and src/commands/workspace_cmds/__tests__/list.test.ts..lore.md did not match any files. Staged summary confirmed new Publish parser, grammar, generation, location, revision, poller, resolver, and test files.52ef600 on feat/workspace-acceptance: feat: resolve compact workspace publish requests; 20 files changed, 1,601 insertions, 88 deletions. src/modules/post-workflow-details.js and src/publish/inputs.js remained uncommitted/unstaged.4862056 on feat/workspace-action-propagation: feat: support compact release workspaces; 12 files changed, 438 insertions, 105 deletions.src/modules/post-workflow-details.js and src/publish/inputs.js; pushed feat/workspace-acceptance from b658ffa to 52ef600 at https://github.com/getsentry/publish.git. Remote reported 22 default-branch vulnerabilities: 12 high, 8 moderate, 2 low.52ef600 pushed and planned Craft push, PR check, review, thread, and comment monitoring; stated Publish must deploy ahead of Craft.feat/workspace-action-propagation from 6dae341 to 4862056 at https://github.com/getsentry/craft.git. Remote reported 3 default-branch vulnerabilities: 2 high and 1 low.48620564f86d8724982cddb6506c040235fe8954 was open draft, mergeStateStatus=BLOCKED, reviewDecision=REVIEW_REQUIRED, and had no reviews. All reported checks succeeded: Build & Test Node 22/Node 24/Build/Build Docs; Changelog Preview preview and Semver Impact; CodeQL actions/javascript/CodeQL; Dependency Review; Docs Preview; Enforce License Compliance; Lint fixes; Secret Scan; Warden/security review; image; Socket Security; and Semgrep. GitHub Actions posted a PR preview URL https://craft.sentry.dev/pr-preview/pr-872/.sny86pdk) to recheck Publish #9339 and Craft #872 PR checks, bots, threads, comments, and merge states.52ef600d6759911d4b76d7f3108c5a41c3e0ec2a was open, non-draft, mergeStateStatus=BLOCKED, reviewDecision=REVIEW_REQUIRED. Checks passed for CodeQL actions/javascript, dependency review, Secret Scan, unit tests, Cursor Bugbot (neutral), Seer Code Review, Socket Security, and Semgrep; Warden remained in progress. Cursor Bugbot posted a COMMENTED review identifying one potential issue.workspace list; stated planned version-gated compatibility idea, while asserting discovery errors should remain fail-closed once a root config requires compact classification..github/workflows/publish.yml “Resolve publish location” step initializes workspace_names='[]', calls needsWorkspaceDiscovery(input) from ./.__publish__/src/modules/publish-location, and when discovery is required with __repo__/.craft.yml, runs getsentry/craft:latest workspace list in Docker with __repo__ volume-mounted and workdir /github/workspace/__repo__; exports CRAFT_WORKSPACE_NAMES into resolve-location.js.getsentry/craft:latest, so Craft must release first and latest must contain both workspace list and --rev before this Publish controller change deploys; fallback to path behavior after failed discovery was deemed unsafe because it could silently misroute compact workspace requests.3916489922: Craft-first release is an intentional deployment prerequisite; fallback after discovery failure is unsafe and discovery remains fail-closed when root .craft.yml requires compact classification. The relevant review thread PRRT_kwDOEgGvjc6elzOu remained unresolved at that moment, containing Cursor comment 3916354008 and the reply.