Dashboard › craft › Session 1cK79E2lr9m4
1cK79E2lr9m4dP1V2Read-only assessment: determine which parts of open getsentry/craft PR #844 (feat/prefixed-tags) remain relevant after PR #848's workspace resolver design. Do not modify files. Inspect its commits/diff against current master and compare its implementation intent to #848 source in the current worktree. Explain exact overlap, conflicts, superseded code, and any distinct valuable behavior. Cite files/lines and relevant commit IDs. End with a concrete recommendation: close, rebase selected commits, or redesign; do not make changes.
<path>/home/byk/Code/getsentry/craft</path> <type>directory</type> <entries> .craft-issue-842-plan.md .craft.yml .dockerignore .eslintcache .git/ .github/ .gitignore .lore.md .nojekyll .npmignore .opencode/ .prettierignore .prettierrc.yml .tsbuildinfo .vscode/ action.yml AGENTS.md blog-post-draft.md build.mjs CHANGELOG.md CONTRIBUTING.md dist/ Dockerfile docs/ eslint.config.mjs img/ LICENSE node_modules/ package.json pnpm-lock.yaml README.md src/ tsconfig.build.json tsconfig.json vitest.config.mts (35 entries) </entries>
## byk/fix/commit-on-repo...origin/byk/fix/commit-on-repo M .lore.md ?? .craft-issue-842-plan.md ?? .opencode/ b06435e (HEAD -> byk/fix/commit-on-repo, origin/byk/fix/commit-on-repo) fix(commit-on-git): Use proper username and pass for 0652969 meta: Bump new development version 4f1b8e4 Merge branch 'release/2.27.1' e0c36c1 (tag: 2.27.1) release: 2.27.1 d61cb8f fix(crates): Recognize more already-published error messages (#859) c35b90a meta: Bump new development version 11baa7f Merge branch 'release/2.27.0' 667b5f5 (tag: 2.27.0) release: 2.27.0 d28b0e6 fix(crates): Ignore dev dependencies when ordering packages (#858) 9668a4b fix: bump postcss to ^8.5.18 to resolve high-severity alert b800dbd fix: resolve 9 Dependabot security alerts (#854) 96c1b23 build(deps-dev): bump tar from 7.5.16 to 7.5.19 (#852) origin https://github.com/getsentry/craft.git (fetch) origin https://github.com/getsentry/craft.git ...
844-in-origin-master=129
848-in-origin-master=1
{"date":"2026-08-10T16:46:19Z","message":"fix(git): prevent fatal error for missing 'origin' remote (#871)\n\nThe `getDefaultBranch` function in `src/utils/git.ts` previously relied\non `git remote set-head \u003cremoteName\u003e --auto` to determine the default\nbranch. If the specified remote (e.g., 'origin') did not exist in the\nrepository, this command would fail with a generic git error: \"fatal:\n'origin' does not appear to be a git repository\" (exit code 128).\n\nThis fix introduces an explicit check within `getDefaultBranch` to\nverify the existence of the `remoteName` using `git.getRemotes()`. If\nthe remote is not found, a `ConfigurationError` is now thrown with a\nclear, actionable message, guiding the user or test environment to\ncorrectly configure the remote. ...
From 8aa85867e1f968b1c6b5397626806cd57b1403b5 Mon Sep 17 00:00:00 2001 From: Burak Yigit Kaya <byk@sentry.io> Date: Thu, 16 Jul 2026 12:59:38 +0000 Subject: [PATCH] feat: support prefixed tags for monorepo multi-product releases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enable two (or more) independently-versioned products to live in one repository (e.g. `cli@1.2.3`, `mcp@2.0.0`) without cross-contaminating each other's latest-tag/changelog-base detection or release branches. The write path already honored `github.tagPrefix`; this fills the gaps on the read paths: - `getLatestTag(git, tagPrefix)` now scopes `git describe` with `--match '<prefix>*'` so the latest tag is resolved per-product. - Thread the configured prefix through the auto-version base and changelog base in `prepare.ts`, and through the `changelog` command (guarded by a config-file check). ...
From 4e2d8f434b7a096349ab088d200371560689d5d3 Mon Sep 17 00:00:00 2001 From: Burak Yigit Kaya <byk@sentry.io> Date: Wed, 22 Jul 2026 11:06:38 +0000 Subject: [PATCH 1/2] feat(config): add top-level workspaces schema + --workspace selector MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduces native, target-agnostic "workspaces" so a single .craft.yml can define multiple independently-versioned release units (e.g. cli@, mcp@). This is the schema + resolver + selector groundwork; it is fully backward compatible and inert when no `workspaces` key is present. - schema: add a top-level `workspaces` map. Each workspace mirrors the release-relevant subset of the top-level config (targets, github, releaseBranchPrefix, changelog, versioning, providers, ...) and inherits unspecified fields from the top level. A workspace's `github` block is partial so it can override just `projectPath` while inheriting owner/repo. ...
b6f843eef36dcadf54759762096e301143bdbc41 refs/heads/byk/chore/prettier-reformat decc8b08488c5f7e1bb162bcde71f9db03304399 refs/heads/byk/fix/actions-node24-deprecations 8b3ef7326c4b8dc5c26f33bb60ddaf8c95f693c0 refs/heads/byk/fix/changelog-code-blocks 44b6d03b50c918e462534652c9e5b34a5dbadabc refs/heads/byk/fix/changelog-commit-without-prerelease b06435e4f20ff8cb0470de98ee113051978b3d63 refs/heads/byk/fix/commit-on-repo fc4c1d00d721eb76d9ccc46f841cb2b4b03ed665 refs/heads/byk/fix/dependabot-alerts-865 94f6474962f9b94c6a47fd569784cbb485f903f4 refs/heads/byk/fix/smol-toml-security 51cab289873990824bcfc9c17e7309c430ea2059 refs/heads/byk/pr865-fixes d6464687c3cbfa9949c08a28a9a91392b06fb9f2 refs/heads/ci/fix-node20-deprecation-warnings cabdcc6924bfbe25a7ea5bd0a49854fe4db16149 refs/heads/dependabot/npm_and_yarn/docs/astro-6.1.6 c965820f02474b35b834841688fbe1ba98e28bc0 refs/heads/dependabot/npm_and_yarn/tar-7.5.3 d64a2c013ff17cdd061f017c341ca9011de36604 ...
docs/src/content/docs/configuration.md 6258a934572531692bbe66f0225b3a09563c27bf 6258a934572531692bbe66f0225b3a09563c27bf 6258a934572531692bbe66f0225b3a09563c27bf docs/src/content/docs/targets/github.md 2ef631ccc71245f84ab0d5e4c04e69e43f157141 9f522f2b83b9fb797d9326094db12fe65b78c1d7 9f522f2b83b9fb797d9326094db12fe65b78c1d7 src/__tests__/config.test.ts 243835d0b78677c2dc3ac1921f286fd18a16e9a5 f8aac3307b82b1d600bbcb3f0a5747a1b06c8f93 243835d0b78677c2dc3ac1921f286fd18a16e9a5 src/commands/__tests__/changelog-versioning-policy.test.ts b6a37705594ba7c86c1fe16d18bbbc07decf3dec c003b9690309211dd55c0367b17e8cec49529ab4 c003b9690309211dd55c0367b17e8cec49529ab4 src/commands/changelog.ts 419b41d1e6a188c681e353820160bc574f780c2b e026975bd90ad7991c38de05e78c2837069d43fd e026975bd90ad7991c38de05e78c2837069d43fd src/commands/prepare.ts fc97b201ba513eaaf37d2e33ff1f1df75156aebb fc97b201ba513eaaf37d2e33ff1f1df75156aebb fc97b201ba513eaaf37d2e33ff1f1df75156aebb src/config.ts a9bdc126759e1313074a310145f07d6...
{"baseRefOid":"83964a816223ded7bb31be1c4a8c55e4754b77f6","commits":[{"authoredDate":"2026-07-16T12:59:38Z","authors":[{"email":"byk@sentry.io","id":"MDQ6VXNlcjEyNjc4MA==","login":"BYK","name":"Burak Yigit Kaya"}],"committedDate":"2026-07-21T19:53:02Z","messageBody":"Makes craft's version-detection read paths honor a github target's\n`tagPrefix`, so a single repo can host independently-versioned products\n(e.g. `cli@1.2.3`, `mcp@2.0.0`) without cross-contaminating each other's\nlatest-tag detection, changelog base, or CalVer scans. Builds on the\nexisting `tagPrefix` write-side support.\n\n- `getLatestTag(git, tagPrefix='')` scopes `git describe` via\n `--match '<prefix>*'`; threaded through prepare and changelog read paths.\n- `getGitTagPrefix()` warns when multiple `github` targets declare\n differing `tagPrefix` values (ambiguous) and returns the first.\n- `getVersion`/`parseVersion` extract the version from prefixed tags\n (`cli@1.2.3` -> `1.2.3`); locked with tests.\n\nReview ...
-- #844 vs #848 source locations --
8aa85867e1f968b1c6b5397626806cd57b1403b5:src/config.ts:339:export function getGitTagPrefix(): string {
c099bbf97c27330e69d2d329dac817bd3f95e0b0:src/config.ts:67:export const WORKSPACES_MIN_VERSION = '2.27.0';
c099bbf97c27330e69d2d329dac817bd3f95e0b0:src/config.ts:110:function resolveWorkspaceConfig(
c099bbf97c27330e69d2d329dac817bd3f95e0b0:src/config.ts:191: * enforces the `WORKSPACES_MIN_VERSION` gate.
c099bbf97c27330e69d2d329dac817bd3f95e0b0:src/config.ts:193:function applyWorkspaceSelection(
c099bbf97c27330e69d2d329dac817bd3f95e0b0:src/config.ts:220: if (!isVersionGteMinVersion(config.minVersion, WORKSPACES_MIN_VERSION)) {
c099bbf97c27330e69d2d329dac817bd3f95e0b0:src/config.ts:222: `Using "workspaces" requires minVersion >= ${WORKSPACES_MIN_VERSION} ` +
c099bbf97c27330e69d2d329dac817bd3f95e0b0:src/config.ts:227: return resolveWorkspaceConfig(config, _activeWorkspaceName);
c099bbf97c27330e69d2d329dac817bd3f95e0b0:src/config.ts:332: ...
-- #847 is an ancestor of GitHub master --
{"ahead_by":39,"behind_by":0,"files":["CHANGELOG.md","build.mjs","docs/astro.config.mjs","docs/package.json","docs/pnpm-lock.yaml","docs/src/content.config.ts","docs/src/content/docs/targets/aws-lambda-layer.md","docs/src/content/docs/targets/cloudflare.md","docs/src/content/docs/targets/index.md","docs/src/content/docs/targets/vercel.md","package.json","pnpm-lock.yaml","src/targets/__tests__/awsLambda.test.ts","src/targets/__tests__/commitOnGitRepository.test.ts","src/targets/__tests__/crates.test.ts","src/targets/__tests__/registry.test.ts","src/targets/__tests__/vercel.test.ts","src/targets/awsLambdaLayer.ts","src/targets/commitOnGitRepository.ts","src/targets/crates.ts","src/targets/index.ts","src/targets/registry.ts","src/targets/vercel.ts","src/utils/__tests__/awsLambdaLayerManager.test.ts","src/utils/awsLambdaLayerManager.ts","src/utils/git.ts"],"merge_base_commit":"f70d5a83ea63b513de7094071ff63e3ee07f20c6","status":"ahead"}
-- current ...
-- #844 source locations -- 8aa85867e1f968b1c6b5397626806cd57b1403b5:docs/src/content/docs/targets/github.md:46:## Monorepo: independently-versioned products 8aa85867e1f968b1c6b5397626806cd57b1403b5:docs/src/content/docs/targets/github.md:50:The intended layout is **one `.craft.yml` per product**, each with a single `github` target declaring its own `tagPrefix` and a matching `releaseBranchPrefix` (so release branches don't collide): 8aa85867e1f968b1c6b5397626806cd57b1403b5:docs/src/content/docs/targets/github.md:80::::note[Known limitation: the GitHub "Latest" badge is repo-wide] 8aa85867e1f968b1c6b5397626806cd57b1403b5:src/commands/changelog.ts:58: // Scope the latest-tag lookup to the configured tag prefix (if any) so 8aa85867e1f968b1c6b5397626806cd57b1403b5:src/commands/changelog.ts:63: since = await getLatestTag(git, tagPrefix); 8aa85867e1f968b1c6b5397626806cd57b1403b5:src/config.ts:350: 'Multiple "github" targets with different "tagPrefix" values found. ...
16:49 UTC
At 16:49 UTC, GitHub master is 32f5462; merged PR #847 (f70d5a8, from 1afce59) is its ancestor. #844 (8aa8586) and #848 (c099bbf) share only base 0f8720e, so their overlap is copied/superseded source, not commit ancestry.
PR #847 explicitly salvaged #844’s prefix-aware core. These behaviours are on master and present in #848’s source:
git describe --match <prefix>*: #844 src/utils/git.ts:45; #848 src/utils/git.ts:45.src/commands/prepare.ts:762,870, #844 src/commands/changelog.ts:63; #848 retains these at prepare.ts:762,870 and changelog.ts:79.getGitTagPrefix() conflict warning: #844 src/config.ts:339-357; #848 retains it at src/config.ts:504-527.Some files are byte-identical between #844 and #848: docs/.../configuration.md, src/commands/prepare.ts, and src/utils/__tests__/version.test.ts.
#844 documents one .craft.yml per product (docs/src/content/docs/targets/github.md:50). #848 instead resolves one selected release unit from top-level workspaces:
src/config.ts:110-227,332,350src/config.ts:504-510src/index.ts:98, src/utils/helpers.ts:41src/schemas/project_config.ts:232cli and mcp resolve their own tag prefixes: src/__tests__/config.test.ts:265-288.Therefore, once #848 is used, getGitTagPrefix() reads only the selected workspace’s targets. The per-file configuration recommendation in #844 directly conflicts with the new model. #848’s docs correctly still mark workspaces as forthcoming at docs/src/content/docs/targets/github.md:76; a later #848 follow-up should replace that temporary documentation, not revive ...
Date: Aug 24, 2026 * 🟡 (16:41) Git inspection showed local ref `byk/chore/prettier-reformat` at `b6f843eef36dcadf54759762096e301143bdbc41`; local and `origin` refs for `feat/prefixed-tags` were present. * 🟡 (16:41) Object-ancestry inspection reported commits `0f8720edaa044d99e58e3ae88820ac91bb28cd7e` and `e5a7f97ad03f76d5265e0ac7b5deb38cfef19206`; PR #844’s only commit since its base was `8aa85…
Date: Aug 24, 2026 * 🔴 (16:38) In PR #848 commit `4e2d8f434b7a096349ab088d200371560689d5d3`, `checkMinimalConfigVersion` derives `effectiveCurrentVersion` by removing `pre` and `build` from a prerelease `currentVersion` before `versionGreaterOrEqualThan(effectiveCurrentVersion, minVersion)`. This relaxation applies only to the current Craft build version, never the configured `minVersion` side. …
Date: Aug 24, 2026 * 🟡 [requested-read-only-assessment] (16:29) User requested a read-only assessment of open getsentry/craft PR #844, `feat/prefixed-tags`, after PR #848’s workspace-resolver design; requested inspection of #844 commits/diff against current `master`, comparison with #848 source in the current worktree, exact overlap/conflicts/superseded code/distinct valuable behavior with file/…