Dashboard › craft › Distillation
d3bfa79b-7eae-4a5f-8f19-545ac3c4aafc["lore_tm_v1_9hPmfC4nuB4BfnUomw_Qtv6ruNvp3dk-bER10C5oPzg","lore_tm_v1_XbguVHIAeee9ucJot5ktv94ND7k0PDKlOES6wKXDC7o","lore_tm_v1_qxDOJTPOEZogXaqZ3Z6wLABe3pz2DzPuXlyvhKd3mEs","lore_tm_v1_cHRDJETvwWZJB4w6wA6VZ0FKcNPQoVQqqaePBfnMkc8","lore_tm_v1_nHLrR7_AxesT6snwX52YWmh7Zkf08cQO9_ypLfq4GwU","lore_tm_v1_Gsbw7YQNnxv8m0DssCQK0GgMC81NyhB0hH2rcgtAjnA","lore_tm_v1_2RskESuNbokNQ9pIrpF9gNmr-7eQpThKdAKUWYWQyLc","lore_tm_v1_hcEqdTxZmHwN3O86utBcl0NwlzYjYpbp826LoUPEXW8","lore_tm_v1_yfx1M9srFjyq84Od8DFdt0aWfKIAyoxOL2oVY-8hChE","lore_tm_v1_Hv5mRU_hdto8mVlUyQVDlS6QZme-SY-tm0mdlwJHtyI","lore_tm_v1_vBBVMcAmRk11MWmyleyuvpMtrRDqrbMUJHdxmfLZt0c","lore_tm_v1_dK2qeIgf3FDBKof8vWqkgl3IfsRIXxLFjZPjZnKxp0Y","lore_tm_v1_FYyBu5cDVYpkPCCsFh5YkczUtY73429PjHCR6zLKuv0","lore_tm_v1_CMZn4KCuyvsoS2sKF55IYCM3ZG75O78CVWpc_nxAdX4","lore_tm_v1_7cUgimSlKMVcnzAGNY2zE0KqueMSWPPBu9rhxpbQEf0","lore_tm_v1_271QIsFACeH8TSHAttzG0F3Fz8KK6vQ4GVyeGawWUJ8","lore_tm_v1_1DAkvyzOielLLeXEDB6WjhCGVw9Apq5_vXWHqqJ2SqQ","lore_tm_v1_czS7aE18QgYzTIoY0H3P5yO553VJmJXtIh-5Is40_-w","lore_tm_v1_BQ-5rLNL3cgMEDJWhBlL-T_XpO0unF-2S31vS5833vY","lore_tm_v1_BC1J5CuGg6SHIcc2JKLZclBLztpVNRBZ_xp8WKy_QZQ","lore_tm_v1_h2susAnH5K-qznX0_dIvg9GnCDtfoP2L3HyknzJ9MFk","lore_tm_v1_fK_qZPipYDnjZFgufuOgA50XFNn-7Ve6AYnoIB6M9aA","lore_tm_v1_I6p1DrsiPgxYuX5HGiJwI45ZOvP-DBe5ERQGoDEqyhE"]
Date: Sep 2, 2026
gh GraphQL query failed with Expected NAME, actual: (none) ("") at [1, 227].PRRT_kwDOCDHbwM6eoc0x (comment database ID 3917397508, created 2026-09-02T18:33:13Z) requests supporting workspace definitions with directory patterns like pnpm/npm/yarn; PRRT_kwDOCDHbwM6eodqL (comment database ID 3917402640, created 2026-09-02T18:33:53Z) requests removing “legacy workspace names” support and its associated tests from src/__tests__/config.test.ts.action.yml has optional path input (default ".") and optional workspace input. Its “Validate workspace” step rejects simultaneous non-root PATH_INPUT and WORKSPACE with The path and workspace inputs cannot be used together.; it also rejects workspace names not matching /^(?!\.{1,2}$)(?!__proto__$)(?!-)[A-Za-z0-9_.-]+$/, emitting Workspace names must use only ASCII letters, digits, periods, underscores, and hyphens..Craft Prepare and Read Craft Targets steps add --workspace=$WORKSPACE when supplied; the Action’s “Request publish” step builds titles as publish: ${GITHUB_REPOSITORY}${SUBDIRECTORY}${WORKSPACE:+/$WORKSPACE}@${RESOLVED_VERSION}, where SUBDIRECTORY is /${inputs.path} only when inputs.path != '.'.cli/v2; Publish must classify the complete title suffix against checked release configuration before treating it as a checkout path. Assistant stated it would map schema, discovery command, parser, and tests before changing the shared rule.src/utils/workspaces.ts:97 accepts package-manager workspace globs as string[] | { packages?: string[] } | undefined; src/config.ts:120,127,234; src/commands/workspace_cmds/__tests__/list.test.ts; src/__tests__/config.test.ts:163; src/schemas/project_config.ts:176,218,247; and docs/src/content/docs/targets/github.md:78,87,105.src/publish/resolve-location.js; src/modules/publish-location.js; generated src/modules/publish-issue-title.js; grammar src/modules/publish-issue-title.peggy; tests src/modules/__tests__/publish-location.js and src/modules/__tests__/publish-workflow.js; documentation docs/publish-issue-format.md; and inline workflow resolver code in .github/workflows/publish.yml:176-187./home/byk/Code/getsentry/publish-workspace-acceptance/src/modules/__tests__/publish-location.js.src/modules/__tests__/publish-location.js then tested needsWorkspaceDiscovery: {path:"./cli"} → true; {path:"./packages/cli"} → false; {path:"."} → false; {path:"./cli", workspace:"cli"} → false. It tested exact one-segment discovery match {path:"./CLI", workspaceNames:["cli","CLI"]} → {path:".",workspace:"CLI"}; non-workspace {path:"./packages",workspaceNames:["cli"]} → {path:"./packages"}; multi-segment {path:"./packages/cli",workspaceNames:["cli"]} → {path:"./packages/cli"}; root {path:".",workspaceNames:["cli"]} → {path:"."}; explicit legacy workspace "cli/v2" at root; rejection of legacy workspace with non-root path; bypassing discovery-list validation for explicit legacy workspace; invalid discovered "cli-日本語" rejection; and discovered traversal names "."/"..” rejection.docs/src/content/docs/targets/github.md:76-106 documented release workspaces as top-level workspaces: independently versioned release units, selected through --workspace <name> or CRAFT_WORKSPACE; example keys were cli and mcp, with release prefixes/tags release/cli/cli@ and release/mcp/mcp@. It stated workspace names use ASCII letters, digits, periods, underscores, and hyphens; a workspace cannot use github.projectPath; a workflow cannot provide both path and workspace; and craft workspace list prints exact configured names as JSON.src/__tests__/config.test.ts then accepted workspaces: { "cli/v2": {} } under test name allows legacy workspace names; rejected workspace keys "." and ".." with Workspace names cannot be "." or "..".; rejected __proto__ via YAML with Workspace name "__proto__" is not supported.; rejected workspace github.projectPath with Workspace github.projectPath is not supported.; rejected root github.projectPath when nonempty workspaces exist with Workspace configurations cannot use github.projectPath.; and allowed root github.projectPath with workspaces: {}./home/byk/Code/getsentry/publish-workspace-acceptance/AGENTS.md as repository guidance.24.0.0; it uses Yarn classic 1.22.22 and Volta, and agents must not use npm. Primary commands are yarn install, yarn test, yarn test:watch, yarn test src/modules/__tests__/update-issue.js, yarn test -t "pattern", yarn lint, and yarn prettier.yarn prettier before committing..github/workflows/publish.yml then checked out the release revision into __repo__ using actions/checkout@v6 at lines 159-167, with fetch-depth: 0..github/workflows/publish.yml:169-187 initializes workspace_names='[]', invokes needsWorkspaceDiscovery(input) through node -e, and only runs getsentry/craft:latest workspace list when discovery is required and __repo__/.craft.yml exists; it passes discovery JSON as CRAFT_WORKSPACE_NAMES to node .__publish__/src/publish/resolve-location.js.path and optional workspace to construct Craft state. It validates container_cwd stays at /github/workspace/__repo__ or beneath it, errors Publish path must remain inside the target checkout. otherwise, and encodes workspace names with URL-safe base64 for workspace_prefix="workspace-${workspace_encoded}-" in the publish-state filename.cd __repo__/${{ fromJSON(steps.location.outputs.result).path }} and invokes craft publish <version> --rev <revision> with CRAFT_WORKSPACE set from resolved location output.src/modules/details-from-context.js then parsed titles using parsePublishIssueTitle, caught parse errors as Invalid publish issue title: '<title>', destructured workspace as workspaceJson, parsed it with JSON.parse(workspaceJson), rejected invalid JSON as Invalid publish workspace JSON in title: '<title>', rejected empty or Unicode control/format/line-separator/paragraph-separator workspace names, prepended "." to parsed title paths, rejected paths containing "..", and rejected workspace plus non-root path with A publish workspace must use the repository root path..src/commands/workspace_cmds/list.ts defines command = ['list'], description List defined release workspaces as a JSON array, and handler() that prints formatJson(getWorkspaceNames()).src/utils/workspaces.ts contains package-manager workspace discovery, distinct from release workspace keys: it reads package.json, recognizes workspace manager types 'npm' | 'yarn' | 'pnpm' | 'none', extracts workspaces from either string-array or {packages?: string[]}, resolves configured glob patterns with glob rooted at rootDir while ignoring **/node_modules/**, and returns package name/location/privacy/public-access/workspace-dependency data.workspaces: { "packages/*": ... } should match concrete suffixes such as packages/cli, or whether only literal slash-separated keys such as cli/v2 should be allowed. Assistant stated it would make unrelated parser/workflow review fixes while awaiting the choice.