chore(env): add Cloud Agent environment config - #907
Draft
seonghobae wants to merge 9 commits into
Draft
Conversation
Add .cursor/environment.json describing the reproducible Cloud Agent dev environment for the BandScope monorepo: - install: install uv, then npm install and uv sync for the Python analysis engine (both idempotent) - terminals: Vite dev server for apps/desktop on port 5173 Validated end-to-end on the VM and in a fresh Cloud Agent build: toolchains, dependency install, Python engine demo job, and the full quickcheck harness (lint/typecheck/test/build) all pass. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Contributor
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
Resolve the security-audit and trivy-fs CI failures by bumping the affected Node dependencies to patched versions: - pdfjs-dist 6.1.200 -> 6.2.108 (CVE-2026-16633 / GHSA-hq66-cqwq-w95j: arbitrary JS execution on a malicious PDF; direct dep in apps/desktop) - nanoid -> 3.3.18 via overrides (GHSA-2v37-7h3g-55p8; transitive via vite -> postcss) - undici -> 7.29.0 via overrides (GHSA-8xcm-r25x-g524 and related; transitive via jsdom, dev-only) npm audit --audit-level=high and a trivy fs vuln scan both report 0 findings; quickcheck (lint/typecheck/test/build) stays green. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Revert the dependency-only delta from 2515b87 while preserving the unique Cloud Agent environment change. The pdfjs-dist, nanoid, undici, npm-generator and lockfile security baseline is owned by #783. Duplicating that authority here would create a competing dependency lane and transfer no exact-head evidence from #783.
The 'Analyze (python)' CodeQL run failed in its init step with a
GitHub-side error ('No server is currently available to service your
request') while determining feature enablement — a transient outage,
not a code issue. This empty commit re-triggers the workflows so the
CodeQL analysis can run cleanly.
Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
The required 'noema-review' gate failed on 66f0ff5 because its GitHub API call returned HTTP 503 ('No server is currently available to service your request') during a GitHub-side incident — a transient outage, not a code or config issue (the gate passed earlier in this PR). This empty commit re-triggers the pull_request_target review workflow so it can run cleanly. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request
Summary
.cursor/environment.jsonso the BandScope Cloud Agent development environment follows the checked-out branch.uvinstaller to the repository CI version (0.8.6), restrict curl transport to HTTPS with a TLS 1.2 minimum, use unmanaged installation, install Node dependencies withnpm ci, and sync Python dependencies fromuv.lockwith--frozen.5173.Ownership boundary
The dependency-security delta that had been added to this branch was reverted in
a990aa8a07d4ade8334b21240339a3730322722d.pdfjs-dist,nanoid,undici, npm-generator and lockfile security remediation remain owned by canonical BandScope PR #783. This PR does not duplicate that authority and does not inherit #783's checks, reviews, or merge evidence.Protected-base dependency-lifecycle checkout credential hardening is separately owned by canonical BandScope PR #894. Exact-head security-audit evidence for this PR still exercises the protected-base workflow and therefore shows
persist-credentials: true; this environment-config lane must not duplicate #894's workflow mutation.The effective PR diff is
.cursor/environment.jsonplusservices/analysis-engine/tests/test_cloud_agent_environment.py.Verification
--proto '=https',--tlsv1.2,UV_UNMANAGED_INSTALL,npm ciwithoutnpm install, and frozenuv sync.b0972c5ad01c506e24566433e8dbf9008c91c4a9contains the narrow transport fix.cirun32079563512,release32079563534,build-baseline32079563482,sbom32079563524,bandit32079563536,SAST Semgrep32079563584, andsecret-scan-gate32079563535are terminal-success.security-auditrun32079563455, job95539717817, checks out merge tree5953062fd569a4824af8a6d2c0684f1b832371dcand fails first atnpm audit --workspaces --audit-level=highon protected-basenanoid <3.3.18,pdfjs-dist >=5.6.83 <6.2.108, andundici 7.0.0-7.28.0; later Python/Rust audit stages are skipped and are not counted as success. The same exact log also confirms the inheritedsecurity-auditcheckout persists credentials, which is fix(security): drop persisted credentials before dependency lifecycle code #894-owned rather than an excuse for a leaf workaround here.Security Scanrun32079563607has successful dependency-review, OSV, and Scorecard jobs; its failedtrivy-fsjob95539718743reports the protected-base HIGHCVE-2026-16633finding forpdfjs-distatpackage-lock.json:6370and directs remediation to the shared base.developremain a fix(security): establish canonical npm, PDF.js, Nanoid, and Undici baseline #783 dependency gate and must not be suppressed here.Security notes
Attack surface
.cursor/environment.jsonruns package installation in Cursor's isolated Ubuntu-based Background Agent environment and starts the existing local Vite development server. It introduces no product runtime API, filesystem authority, credential, or production network path.Trust boundary and mitigations
install/terminalsmodel.uvinstaller URL is version-specific and aligned with BandScope CI; curl is restricted to HTTPS and TLS 1.2+ for the installer transfer;UV_UNMANAGED_INSTALLprevents installer-driven shell profile mutation and self-update behavior in the ephemeral agent bootstrap.npm ci; Python dependencies are synced from the committed uv lock with--frozen.npm install, and non-frozen Python sync from returning to this config.i18n impact
No user-visible product string changes.
Merge boundary
Target remains protected
develop@acdbea6344fe1231c39535b575f4de35e4c607c9. Keep this PR Draft until canonical #783 and #894 dependencies are integrated/revalidated as applicable and the unchanged then-current head satisfies every required repository and central gate plus a qualifying independent non-author approval. Do not treat queued, skipped, failed inherited-base, predecessor, protected-base, dependency-owner, or model-only evidence as success; do not suppress or duplicate another owner's failure merely to make this leaf green.