Dashboard › publish › Distillation
ece38383-0825-49af-985a-bae19c31525e["lore_tm_v1_vxO6nHTiw7a4jBJ7XzBD__tJU3uDHiVBBBGh7hXBy9s","lore_tm_v1_fh0ZDk3gD_W_r10o8ZgKmSc8TdbIzjFw8JNSvPeDaHw","lore_tm_v1_z9yDAZTX3c4J3iDeGATO8u0mvQSUp99AG2M4ez3oWEk","lore_tm_v1_di44E03DGqMfBRgf36Ej9Iok-9l0epu1m1Har8J30Ho","lore_tm_v1_Z9wphXGh-9AAA1BXnVcijwuotN0FFZ8ZxrifEfeTvEA","lore_tm_v1_5C_CWpTi4-8jb-INbndXs4QyU4ilQIrCN_0XYujfbC8","lore_tm_v1_DOtXCf3NmnBg31cknQP6nSpNmC37Jn5NHxQuHccQ6oQ","lore_tm_v1_2pBfmI6QzR-zt3zSZ665vdLoEJcmwyYSAfyG1lnKS7w","lore_tm_v1_s-aiqsTBcyXgANuuv9FdVXJ_zhhN5DuHJq76Fdwmxek"]
Date: Sep 10, 2026
7c60ddb7f43040fe8fbfea70efc833f689c04e75, with no edits or mutations.file:line evidence, explicit PASS coverage for every required lifecycle area, confirmation that every changed/untracked file was inspected, initial/final fingerprint equality, and a final line exactly MERGE or DO-NOT-MERGE; or B. begin with BLOCKED, identify the exact blocking command/tool/error, explain unavailable evidence, and end exactly DO-NOT-MERGE.ci-ready removal, final revalidation, and mandatory re-add; revision changes requiring reapproval; exact event-snapshot binding; success/failure/cancelled/skipped Craft outcomes; dependency-free label reconciliation before and after optional reporting; success closure ordering; malformed PUBLISH_ARGS; target restoration; and workspace/revision integration.src/publish/inputs.js calls detailsFromContext({ context: github.context }) and writes JSON.stringify(result) to the GitHub Actions output result; the script invokes inputs() directly without local error handling.src/publish/discover-location.js pins Craft image getsentry/craft@sha256:9a4a5d5efa44a00c2215078ead39800d4aaa5a97908b94f45a64d7d506d6e14b.getWorkspaceNames() in src/publish/discover-location.js returns [] when ${repositoryDirectory}/.craft.yml does not exist; otherwise it synchronously runs docker run --rm --volume ${path.resolve(repositoryDirectory)}:/github/workspace/__repo__ --workdir /github/workspace/__repo__ ${CRAFT_IMAGE} workspace list, parses stdout as JSON, and throws Craft workspace discovery returned an invalid workspace list. if parsing fails or the result is not an array.discoverLocation() in src/publish/discover-location.js calls resolvePublishLocation() with input.path and workspace names discovered from the repository directory.main() in src/publish/discover-location.js parses process.env.PUBLISH_ARGS || "{}" directly with JSON.parse; malformed JSON propagates an exception, and a missing/falsy input.path throws Publish input must define a path.. It defaults PUBLISH_REPOSITORY_DIRECTORY to __repo__ and writes the JSON-serialized location to output result.src/publish/resolve-release-revision.js directly parses process.env.PUBLISH_ARGS || "{}" and extracts repo; malformed JSON propagates an exception, while a missing/falsy repository throws Publish input must define a repository..resolveReleaseRevision() in src/publish/resolve-release-revision.js writes output revision from getReleaseRevision({ issueBody: process.env.PUBLISH_ISSUE_BODY || "", repo }) and is invoked unconditionally at module load.src/publish/resolve-ci-poller-input.js reads the issue body from PUBLISH_ISSUE_BODY_FILE via readFileSync(..., "utf8") when set, otherwise from PUBLISH_ISSUE_BODY || ""; it directly parses PUBLISH_ISSUE_LABELS || "", calls getCiPollerInput() with title: PUBLISH_TITLE || "" and revision: PUBLISH_REVISION || "", and writes the JSON result to stdout.main() in src/publish/post-result.js defaults to GitHub context, an Octokit client created with getGitHubToken(), processEndState, and the first positional CLI argument as status.src/publish/post-result.js defaults inputs to {}; malformed nonempty PUBLISH_ARGS emits Could not parse publish inputs; reporting without them and still calls report({ context, octokit, inputs, status }). Its CLI wrapper logs errors and sets process.exitCode = 1.src/publish/post-workflow-details.js creates an Octokit client using getGitHubToken() and directly invokes postWorkflowDetails({ context: github.context, octokit }) without awaiting it or attaching local rejection handling.main() in src/publish/update-issue.js parses nonempty PUBLISH_ARGS; malformed JSON emits Could not parse publish inputs; skipping target update, leaves inputs undefined, and nevertheless calls await updateIssue({ context, octokit, inputs }).src/publish/update-issue.js catches errors from main(), logs them, and sets process.exitCode = 1.