Dashboard › publish › Distillation
0995f7c2-be89-46b8-8743-a428d0fbea2f["lore_tm_v1_azRyFw-l8t4PH8z94RruLhePVPVXxSnHmH_D2fPBQ6g","lore_tm_v1_guj193cuKhHUws0hxuQObvoPy7jAlqFrvoU8Mufjqow","lore_tm_v1_w9XJFLPrYOTTttjHuk92qn2sj4O3cPNfhjt1YO8MG8Q","lore_tm_v1__G-1s_pFWTLJGTMUsp4TX95MARa2XzB4BrXyrPvyN1s","lore_tm_v1_ugnj8Bs_PkPzT7mKeasxS7RuuCst6FqiQ0iq_jkw5_o","lore_tm_v1_MYUJOdx2pNM5QJMEWiKlx7zRqmbj-S7cCKEA-JoejaI","lore_tm_v1_P9xiOByZAYeGlei_UOM9He_bXYv5zhimr1tpbHk9O_I","lore_tm_v1_c5cWbCLafaC8wohj6hD3edneMkC9w01QEJiLUBcfZx0","lore_tm_v1_kDBZddjdOVD4JdQvOuR8ohk-pgjV3Uq8GMZj_48iASk","lore_tm_v1_8n_4ZWhirtvlmVbumnJr35N78tAt-Sm9nLZw7GMctiU","lore_tm_v1_nRHM6mpHsn5K_xnbzzULLuHlKBrDCnzX0PwQgtU-BVQ","lore_tm_v1_wAymPmAhkPH2e_TvWn-cZuygJMjHSMjztydpyWEJeEk","lore_tm_v1_Ycp1eb3KG4BcMlYs0ovBMLSipBCAnnhw195iMhMV39U","lore_tm_v1_wxyg_RBBJGk0RONhJbJgYXGunmfgel_FC5heagdf_Tw","lore_tm_v1_HgE39bCiQCzl51ClAtz7js4698vTeAkIpfZ3rd4m1d0","lore_tm_v1_dxLlaORpOA7sP4CBHKO5qBrY6mC2frEdh5709y2wsHI"]
.github/workflows/publish.yml removes any existing ci-ready during waiting-for-ci so the poller’s fresh addition emits a labeled event and triggers the publish job.src/modules/approval-attestation.js, .github/workflows/ci-poller.yml, src/modules/update-issue.js, and .github/workflows/publish.yml: 1. determine label state from the latest labeled or unlabeled transition, 2. skip the poller cycle on branch-discovery API errors, 3. restore polling after a failed ci-ready handoff, 4. prevent duplicate-label 404 errors from aborting target restoration, and 5. make the publication-start informational comment best-effort.yarn vitest run src/modules/__tests__/approval-attestation.js src/modules/__tests__/ci-poller-workflow.js src/modules/__tests__/update-issue.js src/publish/__tests__/publish-workflow.js --printConsoleTrace with Yarn v1.22.22 and Vitest v4.1.0; all 4 test files and all 39 tests passed in 7.52s (9.48s total command time).src/modules/approval-attestation.js implements currentLabeledEvent(events, labelName) by filtering both labeled and unlabeled transitions for the target label, rejecting event IDs whose type is neither string nor number, selecting the latest event using compareEventIds(), and returning null unless the latest transition is labeled with a nonempty string event.actor.login; exceptions also fail closed with null. currentAcceptedEvent() and currentCiReadyEvent() delegate to it for accepted and ci-ready.src/modules/approval-attestation.js to the old labeled-events-only selector; expected mutation failures were the tests rejects an accepted label after a newer unlabeled event and fails closed on malformed accepted-label event IDs.yarn vitest run src/modules/__tests__/approval-attestation.js -t 'rejects an accepted label after a newer unlabeled event|fails closed on malformed accepted-label event IDs' --printConsoleTrace against the mutation. Result: 1 failed test file, 2 failed tests, and 5 skipped tests out of 7, duration 827ms, exit code 1.{ actor: "contractor", eventId: "200" } instead of null; failures occurred at src/modules/__tests__/approval-attestation.js:87 and src/modules/__tests__/approval-attestation.js:106. This proved the tests directly catch both newer unlabeled revocation and malformed accepted-label event-ID handling.src/modules/approval-attestation.js after the intentional mutation..github/workflows/ci-poller.yml lines 178–199 resolve the release branch from repos/${repo}/commits/${issue_sha}/check-suites using .check_suites[0].head_branch // empty; API failure logs Could not resolve the release branch for ${repo}@${issue_sha:0:8}, skipping. and exits the cycle with exit 0. If a branch exists, it resolves HEAD from repos/${repo}/git/ref/heads/${branch} using .object.sha; API failure or an empty SHA likewise logs a message and exits with exit 0.src/modules/__tests__/approval-attestation.js was modified again as part of the ongoing mutation-check workflow.