Dashboard › publish › Distillation
1494b965-2c97-4e2d-9302-739284bce309["lore_tm_v1_CRxCixtJpuS1lgOpeql75yWhXCGei3Ul7RpqxuxRyTo","lore_tm_v1_KvQcD4-uBmOuGF1-BCp4WwMoZQw4tG-M2PUyqQWMSlY","lore_tm_v1_InIp3ZD3ZC-GD6jHZYq9PAIztA5PcXfacqi_cvekT8Q","lore_tm_v1_rPDMwfKjBsqoMlAFV7sjuDHuKrNbKq_OgypnjFoVmfM","lore_tm_v1_eqXn3lvS_YHUsnwpoZC_9_qFjq9bnQJxozJRlQ0k3SY","lore_tm_v1_mZL8g9OKqSRFRAzQWt-mXLSVrlL6VD1hxAxL0Sy0YE0","lore_tm_v1_gmvyczHBIYk6mUymbIdun-ubWWL4uXxEe4yiq_dBVKQ","lore_tm_v1_HO-O3X_Tmh4GvWA4DHzh3yR37zYmiLn49Op-Cm9d9Ik","lore_tm_v1_po8jP8Bz1qY5AtvQa2CKZyYU2w64pcPCrcoFdWhtxUY","lore_tm_v1_mTXyxNPoSSDBSvCceIK3R-pIywadvkvJRWG5b4Vg8Kg","lore_tm_v1_BBSMFUi4tvZ2E6MV62yRxHRMMKNlGHFWhaPrOpKJXI0"]
Date: Aug 28, 2026
yarn test (vitest run, Vitest v4.0.17) passed: 9 test files and 41 tests passed; duration 1.51s (transform 212ms, import 929ms, tests 269ms)..github/workflows/ci-poller.yml, .github/workflows/publish.yml, AGENTS.md, src/libs/__tests__/github.js, src/libs/github.js, src/modules/__tests__/details-from-context.js, src/modules/details-from-context.js, src/modules/post-workflow-details.js, src/modules/process-end-state.js, src/modules/update-issue.js, src/publish/inputs.js, src/publish/post-result.js, src/publish/post-workflow-details.js, and src/publish/update-issue.js..lore.md, src/modules/__tests__/approval-attestation.js, src/modules/__tests__/approval-authorizer.js, src/modules/approval-attestation.js, src/modules/approval-authorizer.js, src/publish/__tests__/, src/publish/authorize-approval.js, and src/publish/validate-approval-attestation.js.ci-poller must always add ci-ready after passing CI, including when that label already exists, because re-adding emits the label event needed to start publishing after the waiting-for-ci race.workflow_dispatch must always remain allowed for manual recovery, independent of the pending-work repository variable.triage never authorizes approval; human authorization is limited to GitHub collaborator roles write, maintain, and admin.getsantry[bot] never falls through to collaborator permission lookup; it authorizes only for an exact parsed repository/release path listed in auto-approve-repos.txt.BigInt was rejected because this project’s ESLint environment flags it as undefined. Use a strict decimal-ID comparator.PUBLISH_TITLE_REGEX from details-from-context.js rather than using a separate flexible authorization regex, to prevent authorization/parser drift. The shared regex supports qualified and legacy unqualified getsentry titles, optional release paths, and Publish-valid versions; unqualified titles map to owner getsentry, while malformed/unsupported titles are rejected before permission lookup.accepted label but GitHub records the app, rather than getsantry[bot], as the label-event actor; authorizing github.actor can therefore reject legitimate allowlisted automation or check the app’s target-repository role. Required approach: preserve trusted auto-approval provenance independently of label-event actor, or consume an authenticated signal identifying the original bot.publish.yml rejection-cleanup decision: cleanup only after checkout or token creation was rejected because failed prerequisites skip later steps and can leave accepted attached. Required approach: create cleanup credentials before authorization, run authorization with continue-on-error, remove accepted unless authorized is exactly true, then fail; GitHub permission API failures after authorization begins must also remove the label.publish.yml TOCTOU mitigation: proof must bind the exact current accepted event, actor, and title. Before moving to ci-ready and before publication, require live title, current accepted event, and live accepted label to match; title changes, label removal, or a later accepted event require fresh approval.auto-approve-repos.txt contains exactly 46 allowlisted release paths, in order: 1. getsentry/arroyo; 2. getsentry/auto-type-annotate; 3. getsentry/devenv; 4. getsentry/infra-event-notifier; 5. getsentry/jest-sentry-environment; 6. getsentry/json-schema-diff; 7. getsentry/js-source-scopes; 8. getsentry/objectstore/clients; 9. getsentry/ophio; 10. getsentry/pdb; 11. getsentry/pyo3-python-tracing-subscriber; 12. getsentry/pytest-sentry; 13. getsentry/relay/py; 14. getsentry/responses; 15. getsentry/rust-proguard; 16. getsentry/rust-sourcemap; 17. getsentry/rust-usage-accountant; 18. getsentry/script-runner; 19. getsentry/sentry-api-schema; 20. getsentry/sentry-forked-djangorestframework-stubs; 21. getsentry/sentry-forked-django-stubs; 22. getsentry/sentry-forked-jsonnet; 23. getsentry/sentry-infra-tools; 24. getsentry/sentry-kafka-management; 25. getsentry/sentry-kafka-schemas; 26. getsentry/sentry-protos; 27. getsentry/sentry-redis-tools; 28. getsentry/service-registry; 29. getsentry/skrooge; 30. getsentry/snuba-sdk; 31. getsentry/statsdproxy; 32. getsentry/status-page-list; 33. getsentry/streams/sentry_streams; 34. getsentry/symbolic; 35. getsentry/taskbroker/clients; 36. getsentry/usage-accountant; 37. getsentry/watto; 38. getsentry/sentry; 39. getsentry/snuba; 40. getsentry/vroom; 41. getsentry/relay; 42. getsentry/symbolicator; 43. getsentry/taskbroker; 44. getsentry/uptime-checker; 45. getsentry/launchpad; 46. getsentry/self-hosted.src/modules/update-issue.js updateIssue({ context, octokit, inputs }) obtains version from inputs, publishRepo from context.repo, and issue_number from context.payload.issue.number; it concurrently calls updateTargets({ octokit, version, publishRepo, issue_number }) and octokit.rest.issues.removeLabel({ ...publishRepo, issue_number, name: "accepted" }).yarn 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”); the error is potentially fixable with --fix./home/byk/Code/getsentry/publish/.jj failed because the file was not found.yarn test (vitest run, Vitest v4.0.17) passed: 9 test files and 41 tests passed; duration 1.32s (transform 168ms, import 1.14s, tests 185ms)..github/workflows/ci-pending.yml failed because the file does not exist; .github/workflows/ contains exactly auto-approve.yml, ci-poller.yml, cocoapods-keepalive.yml, publish.yml, and test.yml.workflow_dispatch must always be allowed for manual recovery.ci-poller.yml behavior includes workflow_dispatch, a no-runner skip when there is nothing to check, validation of approval attestation before proceeding, removal of ci-pending, adding ci-ready on successful CI, and a cleanup/synchronization mechanism using repository variable CI_POLLER_HAS_PENDING; it self-dispatches for subsequent checks with an approximate 30–60 second GitHub Actions startup delay.