Skip to content

feat: implement issue #303 — SonarCloud: GitHub Actions / dependency hardening (×11) - #306

Merged
don-petry merged 9 commits into
mainfrom
dev-lead/issue-303-20260703-2129
Jul 11, 2026
Merged

don-petry merged 9 commits into
mainfrom
dev-lead/issue-303-20260703-2129

Conversation

@don-petry

Copy link
Copy Markdown
Contributor

Closes #303

Implemented by dev-lead agent. Please review.

Copilot AI review requested due to automatic review settings July 3, 2026 21:33
@don-petry
don-petry requested a review from a team as a code owner July 3, 2026 21:33
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@gemini-code-assist

Copy link
Copy Markdown

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@coderabbitai

coderabbitai Bot commented Jul 3, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@don-petry, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 41 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 598b1682-9572-48b3-8f3f-c5be767ce56b

📥 Commits

Reviewing files that changed from the base of the PR and between 2a2761b and 0a804f2.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev-lead/issue-303-20260703-2129

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@don-petry

Copy link
Copy Markdown
Contributor Author

Dev-Lead — review-changes (no-changes)

No changes were needed for this PR.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the repo’s main CI workflow (.github/workflows/ci.yml) to address SonarCloud supply-chain hardening findings by reducing the risk of untrusted lifecycle scripts during dependency installation and tightening how Node-based tooling is executed in CI.

Changes:

  • Switches the frontend dependency install step to npm ci --ignore-scripts.
  • Updates frontend checks (tsc/eslint/prettier/codegen/jest) to run via npx --no-install (but also adds an unsupported --ignore-scripts flag to npx, which will break the workflow if that job runs).
  • Keeps actions pinned to SHAs; however, some non-exact version usage likely remains (e.g., node-version: lts/*, and an unpinned go run ... module invocation), which may prevent fully reaching “0 findings” for the S8543 workstream.

Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml Outdated

@donpetry-bot donpetry-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.

Automated review — APPROVED ✓

Risk: MEDIUM
Reviewed commit: e72d39ecb31fac6eefdcf97258ee45dafb1c811f
Cascade: triage → deep (triage: haiku 4.5 → deep: opus 4.8 + duck: o4-mini → audit: fable 5)

Summary

PR adds SonarCloud-recommended supply-chain hardening to petry-projects/markets ci.yml: npm ci --ignore-scripts plus npx --no-install --ignore-scripts on the frontend tsc/eslint/prettier/codegen/jest steps (+6/-6, one file). The triage/Copilot escalation claimed --ignore-scripts is unsupported on npx and would break the workflow; I reproduced npx locally (npm 10.9.8) and disproved this — npx --no-install --ignore-scripts <bin> parses the flag and executes normally (exit 0). SonarCloud/CodeQL/gitleaks all pass, no secrets/auth/migrations, so this is safe hardening; approving. Downstream impact: (none). Minor gaps noted below, none warranting Tier 3.

Findings

  • INFO: Advisory bot (copilot-pull-request-reviewer) and triage claimed --ignore-scripts is unsupported on npx and would break the workflow. This is FALSE. npx is npm exec, and --ignore-scripts is a standard npm config flag accepted by it. Verified locally with npm/npx 10.9.8: npx --no-install --ignore-scripts <local-bin> args parses the flag and executes the binary successfully (exit 0); an unknown flag would have errored before command resolution. The escalation's premise does not hold.
  • MINOR: Issue #303 acceptance requires resolving all 11 SonarCloud findings to zero (S6505 x6: --ignore-scripts; S8543 x5: pin exact versions). This PR only addresses the S6505 half. The S8543 version-pinning findings (e.g. node-version: lts/*, unpinned go run ...) remain unaddressed, so #303 is only partially resolved despite the '×11' title. Not a security defect — flag for follow-up rather than treating #303 as fully closed.
  • MINOR: npm ci --ignore-scripts is an intentional install-behavior change (skips dependency lifecycle scripts and the project's own prepare/postinstall). The Frontend CI job was SKIPPED in this run (path filter — no frontend source changed), so install-with-hardening was not exercised. Low risk for a pure TS/React toolchain (tsc/eslint/prettier/jest need no native postinstall), but confirm no frontend dependency relies on a postinstall build before relying on this.
  • INFO: run_secret_scanning MCP tool is not exposed in this environment; skipped. Diff contains only CLI flag additions (no credentials/tokens/.env), and the gitleaks CI check passed SUCCESS, so no secret exposure identified.

Reviewed by the PR-review cascade (triage: haiku 4.5 → deep: opus 4.8 + duck: o4-mini → audit: fable 5). Reply if you need a human review.

@don-petry
don-petry disabled auto-merge July 3, 2026 21:51
@don-petry

Copy link
Copy Markdown
Contributor Author

Dev-Lead — fix-bot-comment (no-changes)

Agent reasoning
Issues addressed: 0
No actionable issues identified — Quality Gate Passed with zero new findings.
Files changed: None
Skipped (informational): 0
```
The SonarCloud quality gate passed successfully with no new issues reported. No code fixes are required. The PR is in good state pending remaining queued CI checks (Analyze, Detect ecosystems, Secret scan, copilot-setup-steps, pr-auto-review) to complete.

@don-petry
don-petry disabled auto-merge July 4, 2026 18:48
@don-petry
don-petry enabled auto-merge (squash) July 4, 2026 18:49
@don-petry
don-petry disabled auto-merge July 4, 2026 18:49
@don-petry

Copy link
Copy Markdown
Contributor Author

Dev-Lead — fix-bot-comment (no-changes)

Agent reasoning
Issues addressed: 0
- Quality Gate Passed: no action required (0 new issues, 0 hotspots)
Files changed: None (no fixes needed)
Skipped (informational): 1
  - Copilot concern about --ignore-scripts: resolved in donpetry-bot review (verified working)
```
The PR is in good state. No changes are needed.

@don-petry
don-petry disabled auto-merge July 6, 2026 13:45
@don-petry
don-petry enabled auto-merge (squash) July 6, 2026 13:45
@don-petry
don-petry disabled auto-merge July 6, 2026 13:46
@don-petry
don-petry enabled auto-merge (squash) July 6, 2026 13:46
@don-petry
don-petry disabled auto-merge July 6, 2026 13:46
@don-petry
don-petry enabled auto-merge (squash) July 6, 2026 13:46
@don-petry
don-petry disabled auto-merge July 11, 2026 21:16
@don-petry

Copy link
Copy Markdown
Contributor Author

Dev-Lead — review-changes (applied)

Changes committed and pushed.

@don-petry
don-petry enabled auto-merge (squash) July 11, 2026 21:18
@don-petry
don-petry disabled auto-merge July 11, 2026 21:18
@don-petry

Copy link
Copy Markdown
Contributor Author

Dev-Lead — review-changes (applied)

Changes committed and pushed.

@don-petry
don-petry enabled auto-merge (squash) July 11, 2026 21:22
@don-petry
don-petry disabled auto-merge July 11, 2026 21:23
@sonarqubecloud

Copy link
Copy Markdown

@don-petry

Copy link
Copy Markdown
Contributor Author

Dev-Lead — waiting on PR blockers (intent: review-changes)

PR: #306
No changes were committed, but the PR still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews). The retry cron will re-attempt automatically. Next attempt after: 2026-07-11T21:54:49Z

@don-petry

Copy link
Copy Markdown
Contributor Author

Note

@don-petry I reviewed this PR and no code changes were needed, but it still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews), so I cannot mark it done yet. I'll re-check automatically.
Next attempt after: 2026-07-11T21:54:49Z

@don-petry
don-petry merged commit 61644d9 into main Jul 11, 2026
21 of 22 checks passed
@don-petry
don-petry deleted the dev-lead/issue-303-20260703-2129 branch July 11, 2026 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SonarCloud: GitHub Actions / dependency hardening (×11)

3 participants