Dashboard › publish › Distillation
4dd7340e-a13f-4326-998d-c65e06a53d31["lore_tm_v1_LMVEikjCyXt6egJMP4wMo6C8v9D1PAaD-JWZ1rJqaLY","lore_tm_v1_hO9H16YFKM-om6CbRDu1MApzqPkQJlooDIiOL7fOF9c","lore_tm_v1_P-xo_91YbPqKQn2Aoapy0bE2J506k0YCHb45cQpvv0k","lore_tm_v1_vxG4IkgvclvEt2o4a9QLECgdQHSmhFw9SagyaqRj594","lore_tm_v1_ZTOr9W2rxnpNfuwF81Y-qRv454DGzHmlTVT2j2k4Xk8","lore_tm_v1_8noukYhu-sZpQjzMum7GjME3h1RClW3SYX9AA4qUEms","lore_tm_v1_7BnhmsTCjmAtcD9oMmbSSQzt_HCHoCfWwurUtNXC1rc","lore_tm_v1_2qhwfryyzsm5cIEwmfkKDgQ1kVMSO9fku84lAmoIEdY","lore_tm_v1_zLZ7MJMrKUXf_3qcBE9G-SOmT2_upbBDQDLMP_uBc9I","lore_tm_v1_6S0STxH1q4P8ntCaNjdyEGs4RwUogWR8RnTIXhji5HM","lore_tm_v1_FFms-mk4mVyrTIRx2jK0z7HoKbR7nPcbpFk35d93D64","lore_tm_v1_dyKIy31iajaic9Kqv0YvvobdBl38J9JEH7R470-DQ80","lore_tm_v1_ftTQt1PD-pV6mMB3Vktna6SVSFv0QOJZfjZLOGMjQfI","lore_tm_v1_2WuGE8gRosdngRMY_gRUaxkMpYnhTQLQWGgkbXd_oOI","lore_tm_v1_UrLSASvCZTqQNef62zM29JB_meTPJEqrJbwK_PjGemY","lore_tm_v1_k3HmiAVRQpanmom9JX8BkIGI9XkdGmH41kJB6TLxsfQ"]
.github/workflows/auto-approve.yml, .github/workflows/ci-poller.yml, .github/workflows/cocoapods-keepalive.yml, .github/workflows/publish.yml, .github/workflows/test.yml, AGENTS.md, README.md, docs/key_rotation_vault_changes.md, docs/rfc.md, src/libs/__tests__/github.js, src/libs/github.js, src/modules/__tests__/ci-poller-input.js, src/modules/__tests__/ci-poller-workflow.js, src/modules/__tests__/details-from-context.js, src/modules/__tests__/process-end-state.js, src/modules/__tests__/publish-location.js, src/modules/__tests__/publish-workflow.js, src/modules/__tests__/release-revision.js, src/modules/__tests__/update-issue.js, src/modules/ci-poller-input.js, src/modules/details-from-context.js, src/modules/post-workflow-details.js, src/modules/process-end-state.js, src/modules/publish-location.js, src/modules/release-revision.js, src/publish/__tests__/discover-location.js, src/publish/__tests__/resolve-release-revision.js, src/publish/discover-location.js, src/publish/inputs.js, src/publish/post-result.js, src/publish/post-workflow-details.js, src/publish/resolve-ci-poller-input.js, and src/publish/update-issue.js..github/workflows/ci-poller-dispatch.yml, .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__/authorize-approval.js, src/publish/__tests__/auto-approval-workflow.js, src/publish/__tests__/ci-poller-workflow.js, src/publish/__tests__/current-accepted-event.js, src/publish/__tests__/post-result.js, src/publish/__tests__/publish-workflow.js, src/publish/__tests__/record-auto-approval-attestation.js, src/publish/__tests__/record-ci-ready-attestation.js, src/publish/__tests__/request-digest-from-event.js, src/publish/__tests__/validate-approval-attestation.js, src/publish/__tests__/workflow-action-pinning.js, src/publish/authorize-approval.js, src/publish/current-accepted-event.js, src/publish/record-auto-approval-attestation.js, src/publish/record-ci-ready-attestation.js, src/publish/request-digest-from-event.js, and src/publish/validate-approval-attestation.js.src/modules/__tests__/ci-poller-workflow.js, 131 in .github/workflows/publish.yml, and 68 in .github/workflows/ci-poller.yml.ci-ready.ci-ready.ci-ready label fence from .github/workflows/ci-poller.yml.yarn vitest run src/modules/__tests__/ci-poller-workflow.js -t 'removes stale ci-ready before revalidating and adding it' --printConsoleTrace failed as intended under Vitest v4.1.0: 1 test file failed; 14 tests total; 1 failed and 13 skipped; duration 461ms; exit code 1.src/modules/__tests__/ci-poller-workflow.js:328: expect(removeReady).toBeGreaterThanOrEqual(0) received -1, proving the test detects removal of the stale-ci-ready fence..github/workflows/ci-poller.yml immediately after the expected failure, completing a verified fail/pass guard cycle.src/modules/process-end-state.js. processEndState({ context, octokit, inputs = {}, status }) validates status first via sentryInfoFromDetails({ status, repo }); for status === "success" it closes the issue through octokit.rest.issues.update() before fetching workflow-run information, posting the terminal issue comment, and calling reportSession({ details, inputs }).src/modules/process-end-state.js maps terminal statuses as follows: failure β message Release failed: ${repo}, severity error, session status crashed; cancelled β message Release cancelled: ${repo}, severity warn, session status crashed; success β message Release succeeded: ${repo}, severity info, session status ok; unknown statuses throw Unknown status: '${status}'.src/publish/__tests__/publish-workflow.js, whose 5 workflow contracts are ordered: 1. bind approval and publication to the triggering issue snapshot, requiring node src/publish/request-digest-from-event.js and exactly 4 EXPECTED_REQUEST_DIGEST bindings; 2. revalidate approval after Set targets and immediately before Publish using Craft, with REQUIRE_CI_READY_ATTESTATION: "true"; 3. pin Craft to docker://getsentry/craft@sha256: followed by exactly 64 lowercase hexadecimal characters; 4. activate the poller independently of comments and revoke approval if both activation paths fail; 5. reconcile authorization without Node both before and after terminal reporting.src/publish/__tests__/publish-workflow.js requires the waiting-for-ci sequence Mark ci-pending β Trigger CI poller β Comment on issue and Enable cron poller β Revoke stranded approval; Trigger CI poller, the comment path, and Enable cron poller must use continue-on-error: true; revocation must require both steps.trigger-poller.outcome != 'success' and steps.enable-poller.outcome != 'success', then remove both ci-pending and accepted.src/publish/__tests__/publish-workflow.js requires Publish using Craft β Reconcile publish issue β Report publish result β Verify publish issue reconciliation. Both reconciliation sections must use if: always(), distinguish ${{ steps.publish.outcome }}" == "success, remove accepted, ci-pending, and ci-ready, close successful issues with --state closed, and contain no node invocation.continue in only the final approval-rejection branch of .github/workflows/ci-poller.yml. Intended proof: the executable regression should demonstrate that stale work can otherwise proceed to ci-ready. No resulting test output was shown yet.