fix(review): hard-block Voyage and Firecrawl secrets - #3980
Conversation
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Caution 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 🛑 Gittensory review result - fixes requiredReview updated: 2026-07-07 10:46:32 UTC
🛑 Suggested Action - Manual Review
Review summary Blockers
Nits — 5 non-blocking
Why this is blocked
CI checks failing
Review context
Contributor next steps
Signal definitions
🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
❌ 51 Tests Failed:
View the top 3 failed test(s) by shortest run time
View the full list of 48 ❄️ flaky test(s)
To view more test analytics, go to the Test Analytics Dashboard |
ca2190c to
84bbb1e
Compare
84bbb1e to
e014146
Compare
…ds (#4604) content-lane/security-scan.ts had drifted from its two siblings (secrets-scan.ts, review-enrichment's secret-scan.ts): it was missing the LOWERCASE_HYPHENATED_MOCK_FIXTURE_PATTERN placeholder carve-out added by #3866, so a fixture value like `token: "mock-response-value"` would auto-close a legitimate content-lane submission with no human queue to catch the false positive. It was also missing the voyage_api_key and firecrawl_api_key patterns added to secrets-scan.ts by #3980, so a real Voyage/Firecrawl key embedded in a content submission produced no finding at all. Ports both fixes verbatim into the content-lane copy and adds both kinds to its HARD_SECRET_KINDS set for auto-close parity with the PR-diff gate. No shared-module extraction here — that is tracked separately in #4608.
…ds (#4604) (#4628) content-lane/security-scan.ts had drifted from its two siblings (secrets-scan.ts, review-enrichment's secret-scan.ts): it was missing the LOWERCASE_HYPHENATED_MOCK_FIXTURE_PATTERN placeholder carve-out added by #3866, so a fixture value like `token: "mock-response-value"` would auto-close a legitimate content-lane submission with no human queue to catch the false positive. It was also missing the voyage_api_key and firecrawl_api_key patterns added to secrets-scan.ts by #3980, so a real Voyage/Firecrawl key embedded in a content submission produced no finding at all. Ports both fixes verbatim into the content-lane copy and adds both kinds to its HARD_SECRET_KINDS set for auto-close parity with the PR-diff gate. No shared-module extraction here — that is tracked separately in #4608.
Motivation
voyage_api_key/firecrawl_api_keywere detected only by optional enrichment and not by the unconditionalsecret_leakgate.Description
voyage_api_keyandfirecrawl_api_keyregex patterns to the deterministic scanner insrc/review/secrets-scan.tsusing the same length and continuation boundaries as the REES rules."voyage_api_key"and"firecrawl_api_key"to the hard-block allowlistHARD_SECRET_KINDSinsrc/review/safety.tssosecretLeakFindingproduces thesecret_leakblocker for those matches.test/unit/secrets-scan.test.tscovering positive matches and negative cases (length floor and hyphen/underscore continuation) and extendtest/unit/safety-wiring.test.tsto assert gate hard-block parity for the new kinds.Testing
git diff --checkwhich produced no whitespace/conflict errors.npx vitest run test/unit/secrets-scan.test.ts test/unit/safety-wiring.test.tsand those tests passed.npm run typecheckand it passed.npx vitest run --coverage test/unit/secrets-scan.test.ts test/unit/safety-wiring.test.tswhich executed the tests but failed during coverage remapping withTypeError: jsTokens is not a functioninast-v8-to-istanbul; the failure is in coverage post-processing, not in the test assertions themselves.Codex Task