You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(quality): lean deterministic gate model (proof) - #202
Replaces the SaaS / Quality-Zero-Platform layer with 6 deterministic, local-first
gates behind one CI check quality. Every tool is version-pinned with an in-repo
config; no SaaS, no baselines, no auto-fetched rulesets.
Honest proof: gates 1, 4, 5 are at literal zero; gates 2 (types) and 6 (deps)
have residuals that need a human decision (see below). This is a partial proof by
design — the cleaning procedure stops rather than grind judgment-heavy residuals.
Pinned tool versions (latest stable @ 2026-06-16)
Tool
Version
ruff
0.15.17
oxlint / @oxlint/migrate
1.70.0 (pre-commit mirror v1.69.0)
biome
2.5.0
basedpyright
1.39.8 (typeCheckingMode=standard)
gitleaks
8.30.1
osv-scanner
2.3.8
opengrep (CI) / semgrep (local)
1.22.0 / 1.166.0
pre-commit
4.6.0
Rust toolchain
1.96.0 (rust-toolchain.toml)
JS/TS formatter = Biome (format-only), not oxfmt — oxfmt is still beta (0.55.0, no GA).
Gate 3 — desktop vitest branch threshold raised 0→100, surfacing ~33
uncovered Tauri IPC/updater branches in apps/desktop/src/main.ts. Decide: write
IPC-mock branch tests vs /* v8 ignore */ the platform branches.
Notes
Python tests + coverage and desktop vitest run green on Linux CI; locally on
Windows a few integration tests hit WinError 32 file-locking and the render
pipeline (environmental, not logic). The conftest SQLite URL was made cross-platform.
react-hooks/exhaustive-deps set off (advisory; auto-fix risks render loops).
CodeQL kept (public repo) but rewired from the QZP wrapper to the native github/codeql-action with pinned SHAs.
Salvaged
fdd0640 rate-limiter per-test isolation (resolved a conflict to keep async _enforce_policy).
charter_check.py enforces that this gate list and quality.yml never diverge.
Summary by cubic
Replaces the SaaS quality layer with six deterministic, local-first gates behind a single quality CI check, with all tools version-pinned and configs in-repo. Adds curated SAST, secrets, and dependency gates; rewires CodeQL to the native action; and removes legacy SaaS workflows.
The module-level policy_limiters singleton accumulated hits across the
entire pytest session, keyed by testclient:/api/v1/assets/upload. On fast
CI runs many upload tests clustered within the 60s window and exhausted the
uploads limiter (30/60s), so later asset upload/download tests received
429 RATE_LIMITED instead of 201/400/413 (4 failures on CI, ordering/timing
dependent — not reproducible on the slower local run).
Add RateLimiter.reset() + reset_all_policy_limiters() and an autouse
conftest fixture that clears limiter state before each test. Test-only
isolation; no runtime behavior change.
Resolves 24 advisories within existing semver ranges (package.json
unchanged). Closes all 4 criticals incl. the Vitest UI-server arbitrary
file read/exec (GHSA-5xrq-8626-4rwp) by bumping vitest 4.0->4.1.9.
Remaining 21 (6 low / 7 moderate / 8 high) require SemVer-major bumps
in the visual-testing/E2E dev stack (Applitools, Chromatic/Storybook,
BrowserStack, vite 7->8) and are handled separately. Web suite: 47/47.
gitleaks dir mode does not honor .gitignore; add target/ to the path allowlist so
compiled Rust artifacts (false-positive strings) aren't scanned. Current-tree
secrets scan = 0.
Unable to trigger custom agent "Code Reviewer". You have run out of credits 😔
Please upgrade your plan or buy additional credits from the subscription page.
Skipping CodeAnt AI review — this PR changes more than 100 files, which usually means a migration, codemod, or vendored drop. Line-level review on diffs this large produces duplicate findings on the same rewrite pattern and drowns out anything that actually matters.
If you still want a review, comment @codeant-ai : review. For better signal, consider splitting the PR into smaller chunks.
This PR contains 155 files, which is 5 over the limit of 150.
To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 1e2fa969-e571-4431-b89e-90b7aceee51f
📥 Commits
Reviewing files that changed from the base of the PR and between df95284 and 32d2c88.
⛔ Files ignored due to path filters (2)
apps/desktop/src-tauri/Cargo.lock is excluded by !**/*.lock
apps/web/package-lock.json is excluded by !**/package-lock.json
We reviewed changes in df95284...32d2c88 on this pull request. Below is the summary for the review, and you can see the individual issues we found as inline review comments.
Some issues found as part of this review are outside of the diff in this pull request and aren't shown in the inline review comments due to GitHub's API limitations. You can see those issues on the DeepSource dashboard.
AI Review is run only on demand for your team. We're only showing results of static analysis review right now. To trigger AI Review, comment @deepsourcebot review on this thread.
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore cargo/hyper-util@0.1.20. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: cargo libc is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore cargo/libc@0.2.186. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: cargo tokio is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore cargo/tokio@1.52.3. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: cargo writeable is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore cargo/writeable@0.6.3. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm @emnapi/runtime is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/@emnapi/runtime@1.11.1. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm @google-cloud/compute is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/@google-cloud/compute@5.3.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm @google-cloud/compute is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/@google-cloud/compute@5.3.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm @google-cloud/compute is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/@google-cloud/compute@5.3.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm @zip.js/zip.js is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/@zip.js/zip.js@2.8.26. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
Warn
Obfuscated code: npm browserstack-node-sdk is 90.0% likely obfuscated
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore npm/browserstack-node-sdk@1.57.0. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
The reason will be displayed to describe this comment to others. Learn more.
Docstring missing for `main`
The module/function docstring is missing. If you want to ignore this, you can configure this in the .deepsource.toml file. Please refer to docs for available options.
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer TIP This summary will be updated as you push new changes.
The reason will be displayed to describe this comment to others. Learn more.
8 issues found across 157 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name=".quality/opengrep/README.md">
<violation number="1" location=".quality/opengrep/README.md:25">
P2: License claim is inaccurate: Semgrep Registry rules are licensed under Semgrep Rules License v1.0, not Apache-2.0/LGPL-2.1. This could create legal documentation risk if the repo relies on this attribution.</violation>
</file>
<file name="QUALITY-CHARTER.md">
<violation number="1" location="QUALITY-CHARTER.md:16">
P2: pytest listed as version-pinned tool ("pytest 9") but installed without version constraint in quality.yml, violating charter rule #3 ("Every tool is version-pinned") and the deterministic-gate model.</violation>
</file>
<file name=".quality/opengrep/javascript-security.yaml">
<violation number="1" location=".quality/opengrep/javascript-security.yaml:26">
P2: js-function-constructor rule only catches `new Function(...)` but misses bare `Function(...)` calls, which are equally dangerous. In JavaScript, `Function("return " + userInput)` creates a function from a string identically to `new Function(...)`.</violation>
<violation number="2" location=".quality/opengrep/javascript-security.yaml:78">
P3: js-child-process-exec `pattern-not` excludes static strings for `child_process.exec` but not for `cp.exec`. This means `cp.exec("ls -la", callback)` produces a false positive even though the command is static.</violation>
</file>
<file name=".gitleaks.toml">
<violation number="1" location=".gitleaks.toml:10">
P3: Global allowlist uses deprecated `[allowlist]` syntax. Use `[[allowlists]]` (plural) for gitleaks 8.30.1.</violation>
<violation number="2" location=".gitleaks.toml:40">
P2: Rule-level allowlist uses deprecated `[rules.allowlist]` and missing `regexTarget = "line"`. Use `[[rules.allowlists]]` plural and add `regexTarget = "line"` so the regex matches against the full line (the env-var name) rather than the secret value.</violation>
</file>
<file name="apps/web/.oxlintrc.json">
<violation number="1" location="apps/web/.oxlintrc.json:18">
P2: `react-hooks/exhaustive-deps` turned off: this disables detection of missing/unnecessary hook dependencies, a common source of stale-closure bugs and infinite re-render loops. Acceptable as a temporary proof measure, but should be reconsidered before merging to main.</violation>
</file>
<file name=".github/workflows/quality.yml">
<violation number="1" location=".github/workflows/quality.yml:108">
P1: osv-scanner scan source does NOT auto-load `osv-scanner.toml` from the repo root when lockfile paths are passed explicitly via `--lockfile`. The implicit config detection only looks for `osv-scanner.toml` in each lockfile's own directory. The repo's `osv-scanner.toml` at the root will NOT be applied to any of the specified lockfiles, so ignored-vuln entries are silently skipped and the gate will report CVEs the config was meant to manage.</violation>
</file>
Note: This PR contains a large number of files. cubic only reviews up to 100 files per PR, so some files may not have been reviewed. cubic prioritizes the most important files to review.
On a pro plan you can use ultrareview for larger PRs.
The reason will be displayed to describe this comment to others. Learn more.
P1: osv-scanner scan source does NOT auto-load osv-scanner.toml from the repo root when lockfile paths are passed explicitly via --lockfile. The implicit config detection only looks for osv-scanner.toml in each lockfile's own directory. The repo's osv-scanner.toml at the root will NOT be applied to any of the specified lockfiles, so ignored-vuln entries are silently skipped and the gate will report CVEs the config was meant to manage.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/quality.yml, line 108:
<comment>osv-scanner scan source does NOT auto-load `osv-scanner.toml` from the repo root when lockfile paths are passed explicitly via `--lockfile`. The implicit config detection only looks for `osv-scanner.toml` in each lockfile's own directory. The repo's `osv-scanner.toml` at the root will NOT be applied to any of the specified lockfiles, so ignored-vuln entries are silently skipped and the gate will report CVEs the config was meant to manage.</comment>
<file context>
@@ -0,0 +1,117 @@
+ # gate:6 — deps (osv-scanner on the lockfiles, 0 known CVEs)
+ - name: gate-deps osv-scanner
+ run: |
+ osv-scanner scan source \
+ --lockfile=apps/web/package-lock.json \
+ --lockfile=apps/desktop/package-lock.json \
</file context>
The reason will be displayed to describe this comment to others. Learn more.
P2: License claim is inaccurate: Semgrep Registry rules are licensed under Semgrep Rules License v1.0, not Apache-2.0/LGPL-2.1. This could create legal documentation risk if the repo relies on this attribution.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .quality/opengrep/README.md, line 25:
<comment>License claim is inaccurate: Semgrep Registry rules are licensed under Semgrep Rules License v1.0, not Apache-2.0/LGPL-2.1. This could create legal documentation risk if the repo relies on this attribution.</comment>
<file context>
@@ -0,0 +1,44 @@
+ insecure-randomness patterns.
+- `general-security.yaml` — language-agnostic patterns (secrets in code, insecure TLS).
+
+Upstream registry rules are Apache-2.0 / LGPL-2.1 licensed; rule logic is reproduced /
+adapted here. To refresh against upstream, diff the registry packs and port new
+high-signal rules in (one-in-one-out review).
</file context>
The reason will be displayed to describe this comment to others. Learn more.
P2: pytest listed as version-pinned tool ("pytest 9") but installed without version constraint in quality.yml, violating charter rule #3 ("Every tool is version-pinned") and the deterministic-gate model.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At QUALITY-CHARTER.md, line 16:
<comment>pytest listed as version-pinned tool ("pytest 9") but installed without version constraint in quality.yml, violating charter rule #3 ("Every tool is version-pinned") and the deterministic-gate model.</comment>
<file context>
@@ -0,0 +1,53 @@
+|---|------|------------------|------------------|
+| 1 | lint-format | ruff 0.15.17 · oxlint 1.70.0 · biome 2.5.0 · rustfmt/clippy (rust 1.96.0) | Lint + format + security-lint across Python, JS/TS, Rust. Auto-fixers: `ruff check --fix` + `ruff format`; `oxlint --fix --deny-warnings`; `biome format --write`; `cargo fmt` + `cargo clippy --all-targets --all-features -- -D warnings`. |
+| 2 | types | tsc (typescript 5.x) · basedpyright 1.39.8 | `tsc --noEmit` for apps/web + apps/desktop; basedpyright (`typeCheckingMode=standard`) for apps/api + services/worker + packages/media-core. |
+| 3 | tests-coverage | pytest 9 + pytest-cov (branch, `--cov-fail-under=100`) · vitest 4 (100% thresholds) | Strict 100% line+branch coverage. Reasoned `# pragma: no cover — <reason>` / `/* v8 ignore */` allowed for genuinely-untestable platform branches. |
+| 4 | sast | opengrep 1.22.0 (CI) / semgrep 1.166.0 (local) | Static security analysis using the curated in-repo ruleset under `.quality/opengrep/` (NOT `--config auto`). Clean-zero lock: 0 findings, no baseline. |
+| 5 | secrets | gitleaks 8.30.1 | Secret scanning with the committed `.gitleaks.toml` allowlist (vendored deps + reasoned test fixtures only). Gate on 0. |
</file context>
The reason will be displayed to describe this comment to others. Learn more.
P2: js-function-constructor rule only catches new Function(...) but misses bare Function(...) calls, which are equally dangerous. In JavaScript, Function("return " + userInput) creates a function from a string identically to new Function(...).
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .quality/opengrep/javascript-security.yaml, line 26:
<comment>js-function-constructor rule only catches `new Function(...)` but misses bare `Function(...)` calls, which are equally dangerous. In JavaScript, `Function("return " + userInput)` creates a function from a string identically to `new Function(...)`.</comment>
<file context>
@@ -0,0 +1,95 @@
+ category: security
+ cwe: "CWE-95"
+ patterns:
+ - pattern: new Function(...)
+
+ - id: js-dangerously-set-inner-html
</file context>
The reason will be displayed to describe this comment to others. Learn more.
P2: Rule-level allowlist uses deprecated [rules.allowlist] and missing regexTarget = "line". Use [[rules.allowlists]] plural and add regexTarget = "line" so the regex matches against the full line (the env-var name) rather than the secret value.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .gitleaks.toml, line 40:
<comment>Rule-level allowlist uses deprecated `[rules.allowlist]` and missing `regexTarget = "line"`. Use `[[rules.allowlists]]` plural and add `regexTarget = "line"` so the regex matches against the full line (the env-var name) rather than the secret value.</comment>
<file context>
@@ -0,0 +1,43 @@
+# (e.g. `GROQ_API_KEY=`); these are placeholders, not assigned secrets.
+[[rules]]
+id = "generic-api-key"
+[rules.allowlist]
+description = "start.sh lists empty optional-provider env-var placeholders."
+paths = ['''(^|/)start\.sh$''']
</file context>
The reason will be displayed to describe this comment to others. Learn more.
P2: react-hooks/exhaustive-deps turned off: this disables detection of missing/unnecessary hook dependencies, a common source of stale-closure bugs and infinite re-render loops. Acceptable as a temporary proof measure, but should be reconsidered before merging to main.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/web/.oxlintrc.json, line 18:
<comment>`react-hooks/exhaustive-deps` turned off: this disables detection of missing/unnecessary hook dependencies, a common source of stale-closure bugs and infinite re-render loops. Acceptable as a temporary proof measure, but should be reconsidered before merging to main.</comment>
<file context>
@@ -0,0 +1,21 @@
+ },
+ "rules": {
+ "react/react-in-jsx-scope": "off",
+ "react-hooks/exhaustive-deps": "off"
+ },
+ "ignorePatterns": ["dist", "node_modules", "coverage", "*.config.ts", "*.config.js"]
</file context>
The reason will be displayed to describe this comment to others. Learn more.
P3: js-child-process-exec pattern-not excludes static strings for child_process.exec but not for cp.exec. This means cp.exec("ls -la", callback) produces a false positive even though the command is static.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .quality/opengrep/javascript-security.yaml, line 78:
<comment>js-child-process-exec `pattern-not` excludes static strings for `child_process.exec` but not for `cp.exec`. This means `cp.exec("ls -la", callback)` produces a false positive even though the command is static.</comment>
<file context>
@@ -0,0 +1,95 @@
+ - pattern-either:
+ - pattern: child_process.exec($CMD, ...)
+ - pattern: cp.exec($CMD, ...)
+ - pattern-not: child_process.exec("...", ...)
+
+ - id: js-insecure-math-random-token
</file context>
The reason will be displayed to describe this comment to others. Learn more.
P3: Global allowlist uses deprecated [allowlist] syntax. Use [[allowlists]] (plural) for gitleaks 8.30.1.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .gitleaks.toml, line 10:
<comment>Global allowlist uses deprecated `[allowlist]` syntax. Use `[[allowlists]]` (plural) for gitleaks 8.30.1.</comment>
<file context>
@@ -0,0 +1,43 @@
+[extend]
+useDefault = true
+
+[allowlist]
+description = "Vendored deps, build output, and reasoned test fixtures (not real secrets)."
+
</file context>
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
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.
Lean deterministic quality-gate model (proof)
Replaces the SaaS / Quality-Zero-Platform layer with 6 deterministic, local-first
gates behind one CI check
quality. Every tool is version-pinned with an in-repoconfig; no SaaS, no baselines, no auto-fetched rulesets.
Pinned tool versions (latest stable @ 2026-06-16)
typeCheckingMode=standard)JS/TS formatter = Biome (format-only), not oxfmt — oxfmt is still beta (0.55.0, no GA).
Per-gate status
.quality/opengrep/).gitleaks.toml)NEEDS-DECISION items
(
_owner_fields()returning a generic dict**-unpacked into typed models) +return-type tightening; ~30% is third-party-stub noise (Celery
.conf/.task,SQLModel
column.desc()); ~5% genuine null-safety bugs inbilling_api.py.Decide: fix the
_owner_fieldstyping + null guards vs add per-module overridesfor stub noise.
pyjwt 2.9.0(7, incl. alg-bypass),python-multipart 0.0.9(8 DoS). Dev/E2Estack (vite/undici/esbuild/storybook/vitest) needs SemVer-major bumps. No blanket
ignores added —
osv-scanner.tomlis documented but empty. Decide: upgrade vsper-vuln accept-with-reason.
uncovered Tauri IPC/updater branches in
apps/desktop/src/main.ts. Decide: writeIPC-mock branch tests vs
/* v8 ignore */the platform branches.Notes
Windows a few integration tests hit
WinError 32file-locking and the renderpipeline (environmental, not logic). The conftest SQLite URL was made cross-platform.
react-hooks/exhaustive-depsset off (advisory; auto-fix risks render loops).github/codeql-actionwith pinned SHAs.Salvaged
fdd0640rate-limiter per-test isolation (resolved a conflict to keepasync _enforce_policy).4a90b6anpm audit fix. (Did not bring8d3ce2esecret-forward — moot.)Created / deleted
QUALITY-CHARTER.md,.github/workflows/quality.yml,.pre-commit-config.yaml,.quality/charter_check.py,.quality/opengrep/*,.gitleaks.toml,osv-scanner.toml,rust-toolchain.toml,apps/web/.oxlintrc.json,apps/desktop/.oxlintrc.json,biome.json,pyproject.toml,apps/desktop/src-tauri/Cargo.lock.chromatic, codecov-analytics, ops-weekly-digest, release-readiness, strict23-preflight,
branch-protection-audit workflows; their scripts + tests; dead
apps/web/.eslintrc.cjs.charter_check.pyenforces that this gate list andquality.ymlnever diverge.Summary by cubic
Replaces the SaaS quality layer with six deterministic, local-first gates behind a single
qualityCI check, with all tools version-pinned and configs in-repo. Adds curated SAST, secrets, and dependency gates; rewires CodeQL to the native action; and removes legacy SaaS workflows.New Features
qualityworkflow running gates 1–6: lint/format, types, tests+coverage, SAST, secrets, deps (pinnedruff,oxlint,biome,rustfmt/clippy,opengrep,gitleaks,osv-scanner)..quality/opengrep/*),gitleaksconfig, andosv-scanner.tomlwith no blanket ignores.pre-commitsetup for auto-fixers; pinned Rust viarust-toolchain.toml; charter/workflow consistency enforced by.quality/charter_check.py.codeql.ymlmigrated togithub/codeql-actionwith pinned SHAs; JS/TS linting moved tooxlint+biome.Migration
pre-commit run --all-filesand ensure tests hit 100% coverage (desktop Vitest branches now 100%).basedpyrighterrors (tighten types/null checks vs. targeted overrides).osv-scanner(upgrade vs. per-vuln accept-with-reason).Written for commit 32d2c88. Summary will update on new commits.