Skip to content

chore: retire deprecated security-scanning workflow - #6449

Merged
daggerstuff merged 5 commits into
stagingfrom
cursor/retire-security-scanning-workflow-bbb3
Nov 1, 2026
Merged

daggerstuff merged 5 commits into
stagingfrom
cursor/retire-security-scanning-workflow-bbb3

Conversation

@daggerstuff

@daggerstuff daggerstuff commented Oct 31, 2026 •

Copy link
Copy Markdown
Owner

Summary

Removes the deprecated workflow_dispatch-only security workflow and retargets references to the consolidated live workflows.

Deletion

  • .github/workflows/security-scanning.yml — marked DEPRECATED in-file; all jobs already live in security.yml (fast) and security-deep.yml (deep). No other workflow uses: this file (verified via repo search).

Retargeted references

File Change
apps/web/src/pages/api/v1/production-readiness.ts Security workflow existence check → .github/workflows/security.yml
apps/web/src/lib/security/__tests__/security-scanning.test.ts Assert against security.yml + security-deep.yml (fast vs deep responsibilities)
.github/security/vulnerability-suppression.md pnpm audit / pip-audit → security.yml; Checkov / Syft → security-deep.yml (job names updated)
.github/security/container-suppression.md Link → security-deep.yml
apps/web/src/content-store/docs/security/compliance.md Paths → security.yml + security-deep.yml
apps/web/src/content-store/docs/security/hipaa-compliance.md Paths → security.yml + security-deep.yml
ci-cd/release-readiness.json Mock GitHub check key security-scanning → security
scripts/ci/release-readiness-aggregator.py Same mock check key rename

Skipped / unchanged

  • security.yml and security-deep.yml — no logic changes (per scope).
  • Branch protection / required check names — not edited here; if protection still names a retired check, that would be a separate infra/docs follow-up.

Verification

  • pnpm lint — pass (Node 24.20.0)
  • pnpm vitest run -c config/vitest.config.ts apps/web/src/lib/security/__tests__/security-scanning.test.ts — 5/5 pass
  • rg security-scanning — no matches remaining
Open in Web Open in Cursor 

Summary by Sourcery

Remove the deprecated security-scanning workflow and migrate all remaining references to the active security workflows.

Enhancements:

  • Retire the deprecated security-scanning workflow and align application checks, tests, documentation, suppression guidance, and release-readiness references with the consolidated fast and deep security workflows.

Documentation:

  • Update security compliance and suppression documentation to reference the active security workflows and their responsibilities.

Tests:

  • Update security workflow tests to validate the separate fast and deep workflows.

Chores:

  • Rename the release-readiness security check to match the active workflow naming.

Remove workflow_dispatch-only security-scanning.yml and point docs,
production-readiness checks, and tests at security.yml and security-deep.yml.
@vercel

vercel Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
pixelated Ready Ready Preview Nov 1, 2026 11:04pm UTC

Request Review

@sourcery-ai

sourcery-ai Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Reviewer's Guide

The PR removes the deprecated workflow and consistently retargets code, tests, security guidance, compliance documentation, and release-readiness fixtures to the consolidated fast security.yml and deep security-deep.yml workflows, without changing either workflow's implementation.

File-Level Changes

Change Details Files
Retire the deprecated security-scanning workflow and update repository references to the consolidated fast and deep workflows.
  • Delete the deprecated workflow after confirming its jobs are represented in the live workflows.
  • Retarget production-readiness checks and security documentation to security.yml and security-deep.yml.
  • Update suppression guidance and job references to match the owning workflow and renamed deep-scan job.
  • Split workflow configuration tests so fast dependency checks and deep security checks are validated separately.
  • Rename mocked release-readiness check keys from security-scanning to security.
.github/workflows/security-scanning.yml
apps/web/src/pages/api/v1/production-readiness.ts
apps/web/src/lib/security/__tests__/security-scanning.test.ts
.github/security/vulnerability-suppression.md
.github/security/container-suppression.md
apps/web/src/content-store/docs/security/compliance.md
apps/web/src/content-store/docs/security/hipaa-compliance.md
ci-cd/release-readiness.json
scripts/ci/release-readiness-aggregator.py

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@github-actions github-actions Bot added documentation Improvements or additions to documentation enhancement New feature or request ci-cd labels Oct 31, 2026
@github-actions

Copy link
Copy Markdown

px Advisor Review

Risk: unknown

No summary available

No findings.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 4 issues

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="apps/web/src/pages/api/v1/production-readiness.ts" line_range="382" />
<code_context>
-      existsSync(
-        path.join(REPO_ROOT, '.github/workflows/security-scanning.yml'),
-      ),
+      existsSync(path.join(REPO_ROOT, '.github/workflows/security.yml')),
       existsSync(path.join(REPO_ROOT, 'security-baseline.json')),
       existsSync(path.join(SRC_DIR, 'lib/security')),
</code_context>
<issue_to_address>
**Security readiness passes without deep scans**

When `security-deep.yml` is missing while `security.yml`, the baseline, and the security library exist, `checkSecurityStandards` checks only `security.yml`, so its checks still score 100% and the readiness API reports security as passing without CodeQL, Trivy, Checkov, or SBOM scans.

Include `.github/workflows/security-deep.yml` in the security readiness checks.
</issue_to_address>

### Comment 2
<location path="apps/web/src/lib/security/__tests__/security-scanning.test.ts" line_range="68-69" />
<code_context>

-      // Check for security scanning components
-      expect(workflowContent).toContain('security-scan')
+      expect(workflowContent).toContain('codeql-analysis')
       expect(workflowContent).toMatch(/ubuntu-\w+/)
     })

</code_context>
<issue_to_address>
**CodeQL can lose its runner check**

When the CodeQL job is changed to a non-Ubuntu runner while another job remains on Ubuntu, when the `codeql-analysis` job uses a non-Ubuntu runner, the test still passes because its Ubuntu regex matches a runner elsewhere in the workflow; the CodeQL configuration check therefore accepts a broken job.

Parse the workflow and assert that the `codeql-analysis` job itself has an Ubuntu `runs-on` value.
</issue_to_address>

### Comment 3
<location path="apps/web/src/lib/security/__tests__/security-scanning.test.ts" line_range="28" />
<code_context>
+      expect(fastWorkflowContent).toContain('name: Security Scanning')
+      expect(deepWorkflowContent).toContain('trivy-action')
+      expect(deepWorkflowContent).toContain('checkov-action')
+      expect(deepWorkflowContent).toContain('sarif')
     })

</code_context>
<issue_to_address>
**Scanner SARIF output can disappear unnoticed**

When trivy and Checkov SARIF output is removed while CodeQL SARIF configuration remains, the workflow test still passes because its `sarif` substring check matches CodeQL SARIF configuration elsewhere, even when Trivy and Checkov no longer produce SARIF results.

Assert that the Trivy and Checkov scan steps themselves configure SARIF output.
</issue_to_address>

### Comment 4
<location path=".github/security/container-suppression.md" line_range="78" />
<code_context>
 - [Vulnerability Suppression Policy](./vulnerability-suppression.md) —
   npm/Python dependency scanning
-- [Security Scanning Workflow](../../workflows/security-scanning.yml) — CI
+- [Security Deep Scan Workflow](../../workflows/security-deep.yml) — CI
   pipeline
 - [Dependabot Configuration](../../dependabot.yml) — automated dependency
</code_context>
<issue_to_address>
**Deep-scan policy link is broken**

When a reader follows the workflow link, the relative link resolves from `.github/security/` to `workflows/security-deep.yml` at the repository root, not `.github/workflows/security-deep.yml`, so readers following it reach a missing page.

Change the relative path to `../workflows/security-deep.yml`.
</issue_to_address>

Fix all in Cursor

Sourcery assessment

Approval pending. 3 findings to address first.

Blocking findings: apps/web/src/pages/api/v1/production-readiness.ts:382, apps/web/src/lib/security/__tests__/security-scanning.test.ts:69, apps/web/src/lib/security/__tests__/security-scanning.test.ts:28


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

@github-actions

Copy link
Copy Markdown

Lighthouse CI Results

Routes audited: /, /dashboard?perf=1, /training-session

Thresholds: Performance ≥90 | Accessibility ≥90 | Best Practices ≥85

Reports

  • lhr-1793434314810
  • lhr-1793434327449
  • lhr-1793434339483
  • lhr-1793434350994
  • lhr-1793434362279
  • lhr-1793434373651
  • lhr-1793434384954
  • lhr-1793434396307
  • lhr-1793434407537

Reports are also available as workflow artifacts

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

px Advisor Review

Risk: unknown

No summary available

No findings.

Comment on lines 379 to 386
async function checkSecurityStandards(): Promise<ProductionReadinessCheck> {
try {
const securityChecks = [
existsSync(
path.join(REPO_ROOT, '.github/workflows/security-scanning.yml'),
),
existsSync(path.join(REPO_ROOT, '.github/workflows/security.yml')),
existsSync(path.join(REPO_ROOT, '.github/workflows/security-deep.yml')),
existsSync(path.join(REPO_ROOT, 'security-baseline.json')),
existsSync(path.join(SRC_DIR, 'lib/security')),
]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Inserting a new item into securityChecks caused the indices in details.checks to misalign with their corresponding check labels and omitted the fourth check.
Severity: MEDIUM

Suggested Fix

Update details.checks in checkSecurityStandards to correctly map all four check results, adding a field for 'Deep Security Workflow' at index 1, 'Security Baseline' at index 2, and 'Security Library' at index 3.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.

Location: apps/web/src/pages/api/v1/production-readiness.ts#L379-L386

Potential issue: In `checkSecurityStandards`, the `securityChecks` array was expanded to
four items by inserting `.github/workflows/security-deep.yml` at index 1. However, the
`details.checks` mapping was not updated and still references indices 0, 1, and 2 using
the old check labels. As a result, 'Security Baseline' maps to `securityChecks[1]`
(`security-deep.yml`), 'Security Library' maps to `securityChecks[2]`
(`security-baseline.json`), and index 3 (`lib/security`) is completely omitted. When
checks fail, the endpoint returns mismatched status labels.

Did we get this right? 👍 / 👎 to inform future reviews.

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

Lighthouse CI Results

Routes audited: /, /dashboard?perf=1, /training-session

Thresholds: Performance ≥90 | Accessibility ≥90 | Best Practices ≥85

Reports

  • lhr-1793573402429
  • lhr-1793573413454
  • lhr-1793573424375
  • lhr-1793573434811
  • lhr-1793573445206
  • lhr-1793573455579
  • lhr-1793573465924
  • lhr-1793573476265
  • lhr-1793573486654

Reports are also available as workflow artifacts

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

px Advisor Review

Risk: unknown

No summary available

No findings.

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

Lighthouse CI Results

Routes audited: /, /dashboard?perf=1, /training-session

Thresholds: Performance ≥90 | Accessibility ≥90 | Best Practices ≥85

Reports

  • lhr-1793573802040
  • lhr-1793573814661
  • lhr-1793573826750
  • lhr-1793573838114
  • lhr-1793573849358
  • lhr-1793573860581
  • lhr-1793573871933
  • lhr-1793573883207
  • lhr-1793573894429

Reports are also available as workflow artifacts

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

px Advisor Review

Risk: unknown

No summary available

No findings.

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

Lighthouse CI Results

Routes audited: /, /dashboard?perf=1, /training-session

Thresholds: Performance ≥90 | Accessibility ≥90 | Best Practices ≥85

Reports

  • lhr-1793574292583
  • lhr-1793574305362
  • lhr-1793574317684
  • lhr-1793574329116
  • lhr-1793574340499
  • lhr-1793574351860
  • lhr-1793574363176
  • lhr-1793574374527
  • lhr-1793574385879

Reports are also available as workflow artifacts

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

px Advisor Review

Risk: unknown

No summary available

No findings.

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

Lighthouse CI Results

Routes audited: /, /dashboard?perf=1, /training-session

Thresholds: Performance ≥90 | Accessibility ≥90 | Best Practices ≥85

Reports

  • lhr-1793574494825
  • lhr-1793574506507
  • lhr-1793574517882
  • lhr-1793574528737
  • lhr-1793574539554
  • lhr-1793574550343
  • lhr-1793574561108
  • lhr-1793574571913
  • lhr-1793574582671

Reports are also available as workflow artifacts

@daggerstuff
daggerstuff merged commit 128ba11 into staging Nov 1, 2026
39 of 44 checks passed
@daggerstuff
daggerstuff deleted the cursor/retire-security-scanning-workflow-bbb3 branch November 1, 2026 23:23
@linear-code

linear-code Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

PIX-4820

This branch was successfully deployed

1 active deployment
Preview — 439e73d5 Deployed Nov 1, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-cd documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants