Dashboard › craft › Session 16T7wbKLOXHN
16T7wbKLOXHNNZ6ETPerform a rigorous, read-only adversarial review of the CURRENT uncommitted changes in /home/byk/Code/getsentry/craft-workspace-action-propagation against origin/master. Do not modify files. Scope: workspace propagation through action.yml and reusable release workflow, exact legacy compatibility, human-readable/lossless issue identity, selected target list, early validation before any git/Craft prepare side effect, workspace option parsing and shell injection, Unicode/control edge cases, tests and workflow behavior. Prior reviews found an option-like workspace injection and a Unicode line-separator validation gap; verify those exact defects are actually fixed. Inspect source/tests/diff. Return only prioritized findings with precise file:line evidence and PASS/FAIL table for compatibility, security, lifecycle, and tests, ending MERGE or DO-NOT-MERGE. If no blocking findings, say so explicitly.
<path>/home/byk/Code/getsentry/craft-workspace-action-propagation</path> <type>directory</type> <entries> .craft.yml .dockerignore .eslintcache .git .github/ .gitignore .lore.md .nojekyll .npmignore .prettierignore .prettierrc.yml .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 (32 entries) </entries>
M .github/workflows/release.yml M action.yml ?? src/__tests__/action.test.ts feat/workspace-action-propagation 21270a1d12a60b461c51fba93bd076b90d9cf4af 21270a1d12a60b461c51fba93bd076b90d9cf4af .github/workflows/release.yml | 9 +++++++++ action.yml | 30 +++++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) M .github/workflows/release.yml M action.yml 21270a1 (HEAD -> feat/workspace-action-propagation, origin/master, origin/HEAD) feat(config): add release workspaces 32f5462 fix(git): prevent fatal error for missing 'origin' remote (#871) 5d0ec43 fix(registry): retry registry push with backoff on concurrent updates (#870) 35e8063 meta: Bump new development version b2524ef Merge branch 'release/2.30.1' cd1e829 release: 2.30.1 06180e3 fix(vercel): pass prebuilt output directory 29ad5c3 meta: Bump new development version c02eb03 Merge branch 'release/2.30.0' c79aff0 release: 2.30.0
<path>/home/byk/Code/getsentry/craft-workspace-action-propagation/action.yml</path>
<type>file</type>
<content>
1: name: 'Craft Prepare Release'
2: description: 'Prepare a new release using Craft'
3:
4: inputs:
5: version:
6: description: >
7: Version to release. Can be a semver string (e.g., "1.2.3"),
8: a bump type ("major", "minor", "patch"), or "auto" for automatic detection.
9: required: false
10: merge_target:
11: description: Target branch to merge into. Uses the default branch as a fallback. ...
<path>/home/byk/Code/getsentry/craft-workspace-action-propagation/.github/workflows/release.yml</path>
<type>file</type>
<content>
1: name: Release
2: concurrency: ${{ github.workflow }}-${{ github.ref }}
3:
4: on:
5: # For Craft's own releases (dogfooding)
6: workflow_dispatch:
7: inputs:
8: version:
9: description: Version to release
10: required: true
11: default: 'auto'
12: force:
13: description: Force a release even when there are release-blockers (optional)
14: required: false
15: workspace:
16: description: Named Craft release workspace to prepare and publish
17: required: false
18:
19: # For external repos to call this workflow
20: workflow_call:
21: inputs:
22: version:
23: description: Version to release (semver, bump type, or "auto")
24: type: string
25: required: false
26: force:
27: description: Force a release even when there are ...
<path>/home/byk/Code/getsentry/craft-workspace-action-propagation/src/__tests__/action.test.ts</path>
<type>file</type>
<content>
1: import {
2: chmodSync,
3: mkdtempSync,
4: mkdirSync,
5: readFileSync,
6: rmSync,
7: writeFileSync,
8: } from 'fs';
9: import { tmpdir } from 'os';
10: import { join } from 'path';
11: import { spawnSync } from 'child_process';
12:
13: import { load } from 'js-yaml';
14: import { afterEach, expect, test } from 'vitest';
15:
16: interface ActionStep {
17: name?: string;
18: run?: string;
19: }
20:
21: function getActionStep(name: string): string {
22: const action = load(
23: readFileSync(join(__dirname, '../../action.yml'), 'utf8'),
24: ) as {
25: runs?: { steps?: ActionStep[] };
26: };
27: const step = action.runs?.steps?.find(step => step.name === name);
28: if (!step?.run) {
29: throw new Error(`Missing ${name} action step`);
30: }
31: return step.run;
32: }
33:
34: const tempDirectories: string[] = [];
35: ...
Found 100 matches (more matches available)
/home/byk/Code/getsentry/craft-workspace-action-propagation/src/utils/workspaces.ts:
Line 15: /** Information about a workspace package */
Line 25: /** Dependencies that are also workspace packages */
Line 26: workspaceDependencies: string[];
Line 29: /** Result of workspace discovery */
Line 31: /** The type of workspace manager detected */
Line 37: /** Structure of pnpm-workspace.yaml */
Line 45: workspaces?: string[] | { packages?: string[] };
Line 93: * Extract workspaces array from package.json workspaces field
Line 97: workspaces: string[] | { packages?: string[] } | undefined,
Line 99: if (!workspaces) {
Line 102: if (Array.isArray(workspaces)) {
Line 103: return workspaces;
Line 105: return workspaces.packages || [];
Line 115: // First: collect all workspace package names and locations
Line 116: const workspaceLocations: Array<{
Line 120: const workspaceNames = ...
<path>/home/byk/Code/getsentry/craft-workspace-action-propagation/src/utils/helpers.ts</path>
<type>file</type>
<content>
1: import { appendFileSync, mkdirSync, writeFileSync } from 'fs';
2: import path from 'path';
3: import { parseArgs } from 'node:util';
4:
5: import prompts from 'prompts';
6: import { logger, LogLevel, setLevel } from '../logger';
7:
8: /**
9: * Maximum size (in bytes) for step output values passed through GITHUB_OUTPUT.
10: * Values exceeding this are truncated to avoid E2BIG errors when GitHub Actions
11: * expands them into environment variables for subsequent steps.
12: *
13: * 64 KB is well under the ~2 MB ARG_MAX kernel limit and also under GitHub's
14: * ~65 536-character issue body limit, so truncated changelogs still render. ...
Found 22 matches
/home/byk/Code/getsentry/craft-workspace-action-propagation/src/utils/helpers.ts:
Line 42: export function extractWorkspaceSelection(
/home/byk/Code/getsentry/craft-workspace-action-propagation/src/utils/__tests__/helpers.test.ts:
Line 10: extractWorkspaceSelection,
Line 37: describe('extractWorkspaceSelection', () => {
Line 42: extractWorkspaceSelection(['publish', '1.0.0'], NO_ENV),
Line 48: extractWorkspaceSelection(['publish', '--workspace', 'cli'], NO_ENV),
Line 53: expect(extractWorkspaceSelection(['--workspace=mcp'], NO_ENV)).toBe('mcp');
Line 57: expect(extractWorkspaceSelection(['--workspace=-cli'], NO_ENV)).toBe(
Line 61: extractWorkspaceSelection(['--workspace', '-cli'], NO_ENV),
Line 67: extractWorkspaceSelection(['--workspace', 'cli'], {
Line 75: extractWorkspaceSelection(
Line 84: extractWorkspaceSelection(
Line 93: extractWorkspaceSelection(['publish'], {
Line ...
<path>/home/byk/Code/getsentry/craft-workspace-action-propagation/src/config.ts</path>
<type>file</type>
<content>
1: import { existsSync, lstatSync, readFileSync } from 'fs';
2: import path from 'path';
3:
4: import { load } from 'js-yaml';
5: import GitUrlParse from 'git-url-parse';
6: import { createGitClient } from './utils/git';
7: import { ZodError } from 'zod';
8:
9: import { logger } from './logger';
10: import {
11: CraftProjectConfig,
12: CraftProjectConfigSchema,
13: GitHubGlobalConfig,
14: ArtifactProviderName,
15: StatusProviderName,
16: TargetConfig,
17: ChangelogPolicy,
18: VersioningPolicy,
19: Workspace,
20: } from './schemas/project_config';
21: import { ConfigurationError } from './utils/errors';
22: import { isCompiledGitHubAction } from './utils/detection';
23: import {
24: getPackageVersion,
25: parseVersion,
26: versionGreaterOrEqualThan,
27: SemVer,
28: } from './utils/version';
29: // Note: We import getTargetByName lazily in ...
Found 60 matches
/home/byk/Code/getsentry/craft-workspace-action-propagation/src/commands/targets.ts:
Line 3: import { getAllTargetNames } from '../targets';
Line 4: import { BaseTarget } from '../targets/base';
Line 6: export const command = ['targets'];
Line 7: export const description = 'List defined targets as JSON array';
Line 10: let definedTargets = getConfiguration().targets || [];
Line 12: // Expand workspace targets (e.g., npm workspaces)
/home/byk/Code/getsentry/craft-workspace-action-propagation/src/commands/publish.ts:
Line 22: import { getAllTargetNames, getTargetByName, SpecialTarget } from '../targets';
Line 23: import { BaseTarget } from '../targets/base';
Line 63: // reflects the selected workspace's targets. If the config can't be resolved
Line 69: const definedTargets = getConfiguration().targets || [];
Line 147: /** One or more targets we want to publish */
Line 276: logger.trace('Initializing targets');
Line ...
Date: Aug 25, 2026 * 🔴 (16:27) User stated that a following CLI option (for example, `--workspace --dry-run`) must never be mistaken for a workspace name. * 🟡 (16:27) Search results identified workspace-related implementation in `src/utils/workspaces.ts`, selected-workspace publish-state filename isolation in `src/utils/publishState.ts`, raw-argv workspace selection in `src/utils/helpers.ts`, w…
Date: Aug 25, 2026 * 🟡 [requested-review] (16:25) User requested a rigorous, read-only adversarial review of CURRENT uncommitted changes in `/home/byk/Code/getsentry/craft-workspace-action-propagation` against `origin/master`; explicitly instructed not to modify files. Required inspection of source/tests/diff and only prioritized findings with precise `file:line` evidence, a PASS/FAIL table for …