Dashboard › craft › Session 0DETTJfClid1
0DETTJfClid1SJ44ZPerform a rigorous, read-only adversarial review of the CURRENT uncommitted changes in /home/byk/Code/getsentry/publish-workspace-acceptance against origin/main. Do not modify files. Scope: workspace-qualified publish issue parser, safe identity validation, CRAFT_WORKSPACE propagation, workspace-specific secure state file preparation, failure/cancellation state update behavior, title grammar legacy compatibility, path traversal, workflow output lifecycle, dry-run behavior, and tests. Prior review found failure updates read repository-local state; verify the correction uses only the exact secure workflow output and no fallback. Inspect current source/tests/diff and return only prioritized findings with precise file:line evidence and PASS/FAIL table, ending MERGE or DO-NOT-MERGE. If no findings, say so explicitly.
<path>/home/byk/Code/getsentry/publish-workspace-acceptance</path> <type>directory</type> <entries> .eslintrc.js .git .github/ .gitignore AGENTS.md auto-approve-repos.txt docs/ LICENSE node_modules/ package.json README.md src/ vitest.config.js yarn.lock (14 entries) </entries>
<path>/home/byk/Code/getsentry/publish-workspace-acceptance/AGENTS.md</path> <type>file</type> <content> 1: # AGENTS.md - Coding Agent Guidelines 2: 3: This document provides guidelines for AI coding agents working in this repository. 4: 5: ## Project Overview 6: 7: This is the **Sentry Publish Repository** - a GitHub Actions-based approval system for publishing releases across multiple Sentry projects using [Craft](https://github.com/getsentry/craft). It's a pure JavaScript (Node.js 24.0.0) project using CommonJS modules. 8: 9: ## Build/Lint/Test Commands 10: 11: ### Package Manager 12: 13: - **Yarn 1.22.22** (classic) - Do NOT use npm 14: - Version management via Volta (pinned in package.json) 15: 16: ### Commands 17: 18: ```bash 19: # Install dependencies 20: yarn install 21: 22: # Run all tests 23: yarn test 24: 25: # Run tests in watch mode 26: yarn test:watch 27: 28: # Run a single test file 29: yarn test src/modules/__tests__/update-issue.js 30: 31: # Run tests ...
M .github/workflows/publish.yml M src/modules/__tests__/details-from-context.js M src/modules/__tests__/update-issue.js M src/modules/details-from-context.js M src/modules/update-issue.js feat/workspace-acceptance 83d210b (HEAD -> feat/workspace-acceptance, origin/main, origin/HEAD) build(deps): bump js-yaml from 4.3.0 to 4.3.1 (#9174) 5268a23 feat: Add Vercel creds 92eba3f feat: Add CLOUDFLARE_API_TOKEN (#9122) ada6147 build(deps): bump js-yaml from 4.1.1 to 4.3.0 (#8731) a4f961a fix: Add GITHUB_API_TOKEN for commit-on-git target (#9069) .github/workflows/publish.yml | 24 +++-- src/modules/__tests__/details-from-context.js | 145 +++++++++++++++++++++++++- src/modules/__tests__/update-issue.js | 15 ++- src/modules/details-from-context.js | 27 ++++- src/modules/update-issue.js | 54 +++++----- 5 files changed, 225 insertions(+), 40 ...
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index cff6bc3..5fddfac 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -107,206 +107,214 @@ jobs:
# guaranteed to trigger on the happy path.
if: >-
github.event.issue.state == 'open'
&& github.event.label.name == 'ci-ready'
&& contains(github.event.issue.labels.*.name, 'accepted')
&& contains(github.event.issue.labels.*.name, 'ci-ready')
&& !contains(github.event.issue.labels.*.name, 'ci-pending')
&& !contains(github.event.issue.labels.*.name, 'ci-failed')
timeout-minutes: 90
env:
SENTRY_DSN: "https://303a687befb64dc2b40ce4c96de507c5@o1.ingest.sentry.io/6183838"
steps:
- name: Get repo contents
uses: actions/checkout@v6
with:
path: .__publish__
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: 24
cache: ...
/home/byk/Code/getsentry/publish-workspace-acceptance/src/publish/update-issue.js /home/byk/Code/getsentry/publish-workspace-acceptance/src/publish/post-workflow-details.js /home/byk/Code/getsentry/publish-workspace-acceptance/src/publish/post-result.js /home/byk/Code/getsentry/publish-workspace-acceptance/src/publish/inputs.js /home/byk/Code/getsentry/publish-workspace-acceptance/src/modules/update-issue.js /home/byk/Code/getsentry/publish-workspace-acceptance/src/modules/process-end-state.js /home/byk/Code/getsentry/publish-workspace-acceptance/src/modules/post-workflow-details.js /home/byk/Code/getsentry/publish-workspace-acceptance/src/modules/details-from-context.js /home/byk/Code/getsentry/publish-workspace-acceptance/src/modules/__tests__/update-issue.js /home/byk/Code/getsentry/publish-workspace-acceptance/src/modules/__tests__/process-end-state.js /home/byk/Code/getsentry/publish-workspace-acceptance/src/modules/__tests__/post-workflow-details.js /home/byk/Code/getsentry/publi...
<path>/home/byk/Code/getsentry/publish-workspace-acceptance/src/publish/inputs.js</path>
<type>file</type>
<content>
1: const github = require('@actions/github');
2: const core = require('@actions/core');
3: const { detailsFromContext } = require('../modules/details-from-context');
4:
5: async function inputs() {
6: const result = await detailsFromContext({
7: context: github.context,
8: });
9: core.setOutput('result', result);
10: }
11:
12:
13: inputs();
(End of file - total 13 lines)
</content>
<path>/home/byk/Code/getsentry/publish-workspace-acceptance/src/publish/update-issue.js</path>
<type>file</type>
<content>
1: const { updateIssue } = require('../modules/update-issue.js');
2: const {getGitHubToken} = require('../libs/github');
3: const github = require('@actions/github');
4:
5: const context = github.context;
6: const octokit = github.getOctokit(getGitHubToken());
7: const inputs = JSON.parse(process.env.PUBLISH_ARGS);
8:
9: updateIssue({ context, octokit, inputs });
(End of file - total 9 lines)
</content>
<path>/home/byk/Code/getsentry/publish-workspace-acceptance/src/modules/post-workflow-details.js</path>
<type>file</type>
<content>
1: async function postWorkflowDetails({context, octokit}) {
2: const { repo: publishRepo, runId: run_id } = context;
3: const { number: issue_number } = context.payload.issue;
4:
5: const workflowInfo = (
6: await octokit.rest.actions.getWorkflowRun({
7: ...publishRepo,
8: run_id,
9: })
10: ).data;
11:
12: return octokit.rest.issues.createComment({
13: ...publishRepo,
14: issue_number,
15: body: `Publishing: [run#${run_id}](${workflowInfo.html_url})`,
16: });
17: }
18:
19: module.exports = postWorkflowDetails;
(End of file - total 19 lines)
</content>
<path>/home/byk/Code/getsentry/publish-workspace-acceptance/src/publish/post-result.js</path>
<type>file</type>
<content>
1: const processEndState = require('../modules/process-end-state');
2: const {getGitHubToken} = require('../libs/github');
3: const github = require('@actions/github');
4:
5: const context = github.context;
6: const octokit = github.getOctokit(getGitHubToken());
7: const inputs = JSON.parse(process.env.PUBLISH_ARGS);
8: const args = process.argv.slice(2);
9: const status = args[0];
10:
11: processEndState({context, octokit, inputs, status});
(End of file - total 11 lines)
</content>