Dashboard › publish › Distillation
89c2426b-7d86-4e4d-8335-38fb549145b3["lore_tm_v1_S_zWRLVveIL_DNqjw7bOqcnB8o1Gi_CuugOsVLsOYf8","lore_tm_v1_R9apQOX5_qi4E1eViZNJdGmI9RbjHPipYrJI89_NVoA","lore_tm_v1_oBLtxB1J62yCNTd9QgLNl0O74ybJ5z53ybqPM8FjfoQ","lore_tm_v1_T8S1sCu16pfrBkjLFkSg2phJRsL5AKwyeB1Aiss5j5w","lore_tm_v1_F9bVvPwCc6C8aooalCmHYqTMkYdpEZiDx3VbrbjeQec","lore_tm_v1_n_KnY2eCU4I3Jc9HU_KmBvjj12TEXrh8Z_xiyZX_5dI","lore_tm_v1_b_FkdoIBbgWbFYpS_InKilJw--EYykkQ_QR1DiGV2kc","lore_tm_v1_6UD_zbdEgSnOujq3WAuHk1L4xawxjFsw4OS9RdckP4E","lore_tm_v1_xOeHxJLlKzQr0oxbmwimFUIuU6bvd6tjetJUukHdllU","lore_tm_v1_dP8m9N0yVhU0_x_fiV2-Rb9bcylsWR5hiCSt5vZud0w","lore_tm_v1_9OSpMavW96rCiwsfGZX85d8wKNXGeoi3hdwWGagNVuM"]
${{ github.token }} interpolation in the harness, reran yarn vitest run src/modules/__tests__/ci-poller-workflow.js --printConsoleTrace: 14 tests ran, 1 passed and 13 failed in 1717ms; command exited 1. Failures now reflected intended workflow defects rather than the prior bad substitution harness artifact.issue edit 1 -R getsentry/publish --remove-label ci-pending --remove-label accepted; failed validation paths still reached --add-label ci-ready; CI-ready proof recording failure hit invalid continue at shell line 238 and then attempted a missing temporary file; and stale ci-ready removal was absent (removeReady index -1)..github/workflows/ci-poller.yml: invalid deterministic request/approval branches now revoke approval and exit the per-issue subshell; deterministic resolver failures no longer leave issues pending; successful CI explicitly removes stale ci-ready, revalidates approval after removal, and unconditionally re-adds ci-ready to emit a fresh event.continue-on-error: true occurrences in .github/workflows/publish.yml, at lines 55, 64, 88, 154, 209, and 343.yarn vitest run src/modules/__tests__/ci-poller-workflow.js src/publish/__tests__/ci-poller-workflow.js --printConsoleTrace passed both test files and all 18 tests; Vitest duration was 1.80s (67ms transform, 0ms setup, 131ms import, 1.52s tests, 0ms environment), and Yarn completed in 2.32s.src/modules/process-end-state.js (119 lines). processEndState({ context, octokit, inputs, status }) immediately destructures { repo, version } = inputs; derives publishRepo, run_id, and issue_number; fetches workflow metadata with octokit.rest.actions.getWorkflowRun; calls postIssueComment; closes the issue only when status === "success"; then calls reportSession({ details, inputs }).src/modules/process-end-state.js ordering means postIssueComment() occurs before successful issue closure, so a comment failure prevents octokit.rest.issues.update({ state: "closed" }); workflow metadata retrieval also precedes both operations, and Sentry reporting occurs last.githubIssueComment() in src/modules/process-end-state.js supports exactly failure, cancelled, and success: failure/cancellation comments link to ${workflowInfo.html_url}?check_suite_focus=true#step:8 and a getsentry/${repo} branch-deletion query for version; success emits Published successfully: [run#${run_id}](${workflowInfo.html_url}); unknown status throws Unknown status: '${status}'.reportSession() in src/modules/process-end-state.js uses release ${details.repo}@${details.version}, initializes Sentry with process.env.SENTRY_DSN, tags repository, sets release context containing issue_number and inputs, captures a status-specific message/severity, starts and ends a session, and awaits Sentry.close(). Status mappings are: failure → Release failed: ${repo}, severity error, session crashed; cancelled → Release cancelled: ${repo}, severity warn, session crashed; success → Release succeeded: ${repo}, severity info, session ok.src/modules/update-issue.js (84 lines). updateTargets() returns early if stateFilePath is absent or does not exist; otherwise it concurrently fetches the issue and reads/parses the craft-state JSON, transforms the issue body, and updates the body.transformIssueBody(craftState, issueBody) in src/modules/update-issue.js uses TARGETS_SECTION_PARSER_REGEX and TARGETS_PARSER_REGEX, marks listed targets as - [x] or - [ ] from craftState.published, tracks declared targets in a Set, and appends any unlisted published-state targets.updateIssue({ context, octokit }) in src/modules/update-issue.js derives publishRepo and issue_number, then uses Promise.all to run updateTargets() with process.env.CRAFT_STATE_FILE_PATH and remove the accepted label via octokit.rest.issues.removeLabel({ ...publishRepo, issue_number, name: "accepted" }).