Dashboard › publish › Distillation
70cee85b-0ba9-4249-9311-5d7d83f645e7["lore_tm_v1_No62k9BXCeQQn_n56_b_amOh3cVgfbYF20j9CUntNn8","lore_tm_v1_ItbcK9Lp4bTA8Ofm3gxx9LvThAs0_HyRMobVKiaNVBM","lore_tm_v1_Hb6vwn0esFZQo5uoiiREpoUpy8ZO7_Nhg56MDeHDPaU","lore_tm_v1_yXsatQyna4Q2uKl224rTAAFkdZ7TcR3HTRJzgXsg3ME","lore_tm_v1_e54ho6VXNrGEJjKIXr0Dtdw0jIwxOxP4QIAvt1Gjj18","lore_tm_v1_K2lZldusH4AhtV3VFWTt38HgvYph-8aIPhUvfB8s3rs"]
Date: Aug 27, 2026
yarn test / vitest run completed successfully in /home/byk/Code/getsentry/publish: 7 test files and 33 tests passed. Suites: src/modules/__tests__/update-issue.js (5), approval-authorizer.js (14), src/publish/__tests__/authorize-approval.js (3), process-end-state.js (4), post-workflow-details.js (1), details-from-context.js (4), and src/libs/__tests__/github.js (2). Vitest v4.0.17 duration was 1.29s; Yarn completed in 1.82s.github context includes sensitive data such as github.token; GitHub masks secrets in console output, but exporting or printing the context requires caution.src/modules/__tests__/details-from-context.js imports detailsFromContext from ../details-from-context.js; its parse inputs test uses issue title publish: getsentry/sentry@21.3.1, body Merge target: custom-branch, and checked targets github, npm[@sentry/node], docker[latest], expecting { dry_run: "", merge_target: "custom-branch", path: ".", repo: "sentry", targets: ["github", "npm[@sentry/node]", "docker[latest]"], version: "21.3.1" }.src/modules/__tests__/details-from-context.js verifies that title publish: getsentry/sentry-forked-django-stubs@4.2.6+sentry1 parses version 4.2.6+sentry1.src/modules/__tests__/details-from-context.js verifies Merge target: (default) produces merge_target: "" and checked targets ["github", "docker[latest]"]; it also verifies missing context.payload.issue rejects with Issue context is not defined.yarn lint (eslint src .github --ignore-pattern '!.github') failed with 1 error and 0 warnings: .github/workflows/cocoapods-keepalive.yml:1:7 violates yml/plain-scalar (“Must use plain style scalar”); ESLint reports the error is potentially fixable with --fix, and Yarn exited 1.{ authorized: true, repository: 'getsentry/relay' }, then TypeError, then { authorized: true, repository: 'getsentry/sentry-javascript' }..github/workflows/publish.yml:64 and .github/workflows/ci-poller.yml:92: authorization uses the issue-title snapshot from the accepted labeling event, while the poller reads the current title. An approver can label repo A’s issue accepted, change its title to repo B, and cause repo B to release without a repo-B access check..github/workflows/publish.yml:63 and .github/workflows/auto-approve.yml:28: auto-approve applies accepted using the internal-app token, making the label-event actor the app rather than getsantry[bot]; the gate can therefore reject valid allowlisted bot approvals or evaluate authorization using the internal app’s role on the target repository.src/modules/approval-authorizer.js:21-31 lets a non-allowlisted getsantry[bot] fall through to permission lookup and authorize when GitHub returns write, maintain, or admin; the bot must instead be rejected unless its release path exactly matches the allowlist.src/modules/approval-authorizer.js:4 and src/modules/details-from-context.js:25: authorization accepts titles that Publish cannot parse, e.g. allowlisted publish: getsentry/relay/py@bad version authorizes but Publish throws. Recommended decision: authorization regex must use Publish’s title grammar and fail closed for unsupported titles..github/workflows/publish.yml:35-45 and .github/workflows/publish.yml:67: checkout or internal-app-token creation can fail before the only rejection/label-removal step; GitHub then skips that step, leaving accepted attached and violating required cleanup after failed checks.src/modules/__tests__/approval-authorizer.js:26-45: non-allowlisted getsantry[bot] is tested only with role_name: "none" and does not cover the write bypass; missing coverage also includes parser divergence, title mutation after approval, auto-approve’s app-label actor, and failures before authorization cleanup.src/publish/authorize-approval.js:29-35 and .github/workflows/publish.yml:58-80 correctly fail closed and remove the label when permission API failures occur after the authorizer starts.yarn test passing with 33 tests, while yarn lint failed only on unchanged .github/workflows/cocoapods-keepalive.yml:1.