Dashboard › craft › Distillation
ec1fa593-a8d8-4cb1-bf43-cd00d21f5cec["lore_tm_v1_LSh7bD_lJah7PXCMB3HDHf71d4Y6EQBdXu-xspQCbJM","lore_tm_v1_M8Emp05Gr3r0YvKdJm5atOtZoXYxlgi38w6dAZxONXM","lore_tm_v1_k106bFfo_Mlbh3kEMv-C6b33u4dr4H1akFdrWf27CWM","lore_tm_v1_ye1ZMVOtMQ122fTLV6olHVNz6KYNlelNpssglm2wqio","lore_tm_v1_-Y6HAckrQsxCz-ovqz_9m7-JIe89lEseDukSSvgOWlQ","lore_tm_v1_tBnwCGXbsvX-wk360XQTzg7-Yw_IiViE9WRs6xGDahE","lore_tm_v1_Way2QEozDYI85Y3Osw7ptmJCTjyFqKdsj7P3mTqbXjg"]
Date: Aug 25, 2026
/home/byk/Code/getsentry/craft/.github/, which contains only workflows/; /home/byk/Code/getsentry/craft/.github/workflows/ contains build.yml, changelog-preview.yml, docs-preview.yml, enforce-license-compliance.yml, image.yml, lint.yml, and release.yml./home/byk/Code/getsentry/craft/.github/workflows/release.yml: workflow_dispatch inputs are version (required, default 'auto') and optional force; workflow_call inputs are version, force (default 'false'), merge_target, blocker_label (default 'release-blocker'), publish_repo, git_user_name, git_user_email, path (default '.'), and craft_config_from_merge_target (default 'false'). It has no workspace input.release.yml behavior: it exposes outputs version, branch, sha, previous_tag, and changelog, but not issue_url; dogfooding runs local action ./ with only version and force (:115-125), while external repositories invoke getsentry/craft@v2 and forward all current workflow-call inputs (:126-142)./home/byk/Code/getsentry/craft/action.yml: current inputs include version, merge_target, path, config source, and publish repository but no workspace (:4-43); it invokes craft prepare with optional version and --config-from (:157-182), invokes unscoped craft targets to construct the issue checklist (:184-196), and outputs release metadata plus issue_url (:45-66)./home/byk/Code/getsentry/craft/action.yml:211-213,241 uses exact issue title publish: ${GITHUB_REPOSITORY}${SUBDIRECTORY}@${RESOLVED_VERSION}, where SUBDIRECTORY derives solely from inputs.path; existing issues are located by title alone and updated in place (:243-255,319-327), so root-level releases of distinct workspaces at the same version can reuse the wrong issue.action.yml:302-308; acceptance prose directs users to add accepted at :310; target checkboxes are under ### Targets at :312-316; checked targets are recovered only from that body section and retained by target ID/name on updates (:257-285). The action itself does not add the accepted label; it is an external publish-pipeline contract./home/byk/Code/getsentry/craft/src/utils/publishState.ts: getPublishStateFilename(version, githubConfig, cwd) (:78-91) keys a filename on sanitized GitHub owner/repo, 12-character SHA-1 hash of cwd, and sanitized version; without GitHub config it uses a 16-character SHA-256 cwd hash and version. State is stored under $XDG_STATE_HOME/craft/, falling back to $HOME/.local/state/craft/, to avoid repository-controlled state-file injection. /home/byk/Code/getsentry/craft/src/commands/publish.ts:671-760 obtains and persists this state.workspace input to /home/byk/Code/getsentry/craft/action.yml:4-43; pass --workspace "$WORKSPACE" to both craft prepare (:170-182) and craft targets (:184-196); add matching workflow_call input and external forwarding in .github/workflows/release.yml:17-58,126-142; decide whether local dogfooding invocation (:115-125) must also forward it.publish: <repo> [<workspace>] @<version>; when no workspace is selected, retain the current non-workspace title byte-for-byte unchanged. This format matches /home/byk/Code/getsentry/craft/.opencode/plans/workspaces-redesign-design.md:170-175./home/byk/Code/getsentry/craft/src/commands/publish.ts:671-690 into /home/byk/Code/getsentry/craft/src/utils/publishState.ts:78-109./home/byk/Code/getsentry/craft/src/commands/targets.ts:9-20 currently uses all configured targets and should resolve the selected release workspace before target expansion.--workspace consistently to /home/byk/Code/getsentry/craft/src/commands/prepare.ts:84-135 and /home/byk/Code/getsentry/craft/src/commands/publish.ts:59-124; neither builder currently accepts it. publish.ts currently derives allowedTargetNames from getConfiguration().targets || [], filters to names known by getAllTargetNames(), maps via BaseTarget.getId, and exposes --target/-t, --rev/-r, --merge-target/-m, --remote default 'origin', --no-merge, --keep-branch, --keep-downloads, --no-status-check, and --no-git-checks./home/byk/Code/getsentry/craft/src/commands/__tests__/targets.test.ts:40-80 covers configured targets and npm package-target expansion but not release-workspace selection; /home/byk/Code/getsentry/craft/src/utils/__tests__/helpers.test.ts:36-115 covers scalar/heredoc GitHub outputs and changelog-file output but not composite-action wiring; no action.yml integration tests or relevant prepare/publish repository scripts were found.