Dashboard › craft › Distillation
e76c4503-3975-4bc5-a2f7-b65a22b9249d["lore_tm_v1_dWXzF2w9H2JAi2leFdYrkn55Fj9aB-nLfSUm_asuXro","lore_tm_v1_OmVHmeTJ2dQSHHgdNisU7tcSsA06N47Q_zFmTrNm15s","lore_tm_v1_K_05Jc7iqXLvaVg19gJdslVk9DYnvJGfNCOJjlaxT9Y","lore_tm_v1_y5cd96dVx4YkURKkmqkRxwQbNnzaZZ3G_tG_0GPEr_U","lore_tm_v1_heMhPYIKwzCEegIvKdiQ0kGY5GeQ37eJ-peKjpaV0_Q"]
Date: Aug 27, 2026
workflow_dispatch must always remain allowed for manual recovery.minVersion side.--workspace must never be mistaken for a workspace name..github/workflows/ci-poller.yml defines a scheduled CI poller with cron */5 * * * *; its check-ci job comment explicitly preserves workflow_dispatch for manual recovery and uses concurrency group ci-status-poller..github/workflows/ci-poller.yml checks only issues carrying BOTH ci-pending and accepted labels, queries up to 200 issues, parses release repository from titles matching publish: <owner>/<repo>...@<version>, and treats failures as non-fatal by falling back to the issue SHA..github/workflows/ci-poller.yml resolves the release-branch HEAD because it may differ from the issue SHA, updates the issueβs "View check runs" link to remain accurate for the selected commit, and logs Checking CI for ${repo}@${version} commit ${sha:0:8} (issue #${number}).....github/workflows/ci-poller.yml uses a release-bot token for cross-repository API calls including check suites/statuses and a sentry-internal-app token for labels on the current repository; helper gh_api_release wraps gh api using the release-bot token..github/workflows/ci-poller.yml fetches commit status from repos/${repo}/commits/${sha}/status and paginates check runs to support repositories with more than 30 checks..github/workflows/ci-poller.yml counts unsuccessful completed checks as those whose conclusion is not success, neutral, or skipped; no check runs and no commit statuses means CI may not have started yet..github/workflows/ci-poller.yml declares CI passed only when all check runs are complete and no pending checks remain; if no commit statuses exist, the repository is treated as using check runs only. On success it logs CI passed! Adding ci-ready label..github/workflows/ci-poller.yml on CI failure requires the author to fix CI and re-add accepted to retry; it gathers failed check names and failure/error commit statuses, including linked target URLs when available..github/workflows/ci-poller.yml has fallback logic because a failed CI-check step prevents CI_POLLER_HAS_PENDING from being set; token-failure handling is deliberately placed after CI checking so token failure cannot block CI checks, and the fallback resumes checking/restarts the chain on the next scheduled run. It caps attempts at 60./home/byk/Code/getsentry/craft-workspace-action-propagation/src contains exactly 13 entries: __mocks__/, __tests__/, artifact_providers/, commands/, config.ts, index.ts, instrument.ts, logger.ts, schemas/, status_providers/, targets/, types/, utils/.src/config.ts, DEFAULT_RELEASE_BRANCH_NAME is 'release'; workspace configuration is merged onto top-level/base configuration, and selecting an unknown workspace throws an error. The configuration behavior documents that workspaces present without a selection is an error requiring explicit selection.src/config.ts:400, minimum-version comparison relaxes prerelease/build metadata only on currentVersion via { ...currentVersion, pre: undefined, build: undefined }; configured minVersion is not relaxed.src/schemas/project_config.ts defines ChangelogPolicy enum values auto, simple, none; StatusProviderName.GitHub = 'github'; ArtifactProviderName values gcs, github, none; and VersioningPolicy values auto, manual, calver.GitHubGlobalConfigSchema requires owner and repo strings and optionally accepts projectPath; TargetConfigSchema requires name, optionally accepts id, includeNames, and excludeNames, and uses .passthrough() for target-specific fields.BaseStatusProviderSchema permits only status-provider name 'github'; BaseArtifactProviderSchema permits artifact-provider names 'gcs', 'github', and 'none'; both optionally accept arbitrary record config.GitHubArtifactsConfigSchema optionally accepts either a string, string array, or a record mapping workflow names to string/string-array artifact patterns.CalVerConfigSchema supports optional numeric offset (documented default 14) and optional string format (documented default %y.%-m, supporting %y, %m, and %-m); VersioningConfigSchema supports optional policy auto/manual/calver and optional calver.ChangelogConfigSchema accepts either a string or object with optional filePath, policy auto/simple/none, and boolean scopeGrouping.src/schemas/project_config.ts defines shared releaseUnitFields: optional github, targets, preReleaseCommand, postReleaseCommand, releaseBranchPrefix, changelog, deprecated changelogPolicy, requireNames, statusProvider, artifactProvider, versioning, and noMerge. noMerge is documented to default to true for compiled Node.js GitHub Actions with a dist/ folder.WorkspaceSchema represents a named independently-versioned release unit: all release-unit fields are optional/inherited from the top-level config, while github is GitHubGlobalConfigSchema.partial().optional() so a workspace can override only projectPath, owner, or repo.CraftProjectConfigSchema includes optional minVersion matching /^\d+\.\d+\.\d+.*$/ and optional workspaces: z.record(z.string(), WorkspaceSchema). When workspaces exists, a run must select one through --workspace <name> or CRAFT_WORKSPACE; when absent, top-level configuration remains the backward-compatible implicit single release unit.src/schemas/project_config.ts explicitly distinguishes a Craft release workspace from an npm targetβs workspaces: true: the former is a named independently-versioned release unit, while the latter discovers npm packages within one target and publishes them at the same version.src/utils/helpers.ts extracts workspace selection from raw argv before yargs parsing because workspace configuration must be resolved before middleware; it supports --workspace foo and --workspace=foo, uses Node built-in argument parsing, and falls back to CRAFT_WORKSPACE.src/utils/helpers.ts treats a --workspace token with no value as unset so it falls back to CRAFT_WORKSPACE; --workspace=-foo is a valid inline value, while --workspace --foo is not a workspace selection.src/utils/publishState.ts isolates publish-state filenames by optional selected workspace using lossless base64url encoding: prefix workspace-${Buffer.from(workspace).toString('base64url')}-. GitHub-configured filenames are publish-state-${owner}-${repo}-${shortCwdHash(cwd)}-${workspacePrefix}${safeVersion}.json; otherwise they are publish-state-${cwdDigest}-${workspacePrefix}${safeVersion}.json.src/utils/workspaces.ts concerns npm/yarn workspace discovery from package.json workspaces, pnpm discovery from pnpm-workspace.yaml, collection of workspace package names/locations, filtering dependencies against known workspace names, package include/exclude filtering, and topological sorting with circular-dependency errors naming the cycle packages.