Skip to content

feat: CodeInspectus 4.0 — osv-scanner engine, Synvoya gap layer, PHP and Node.js packs - #14

Merged
Synvoya merged 8 commits into
masterfrom
agent/synvoya-4
Nov 5, 2026
Merged

Synvoya merged 8 commits into
masterfrom
agent/synvoya-4

Conversation

@Synvoya

@Synvoya Synvoya commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

CodeInspectus 4.0

One PR for the whole 4.0 release. It folds in #11 (Opengrep 1.33.1 / Trivy 0.76.1), #12 (coverage honesty), #13 (osv-scanner 2.7.0 as a fourth engine) and the Synvoya gap layer.

What 4.0 adds

  • osv-scanner 2.7.0 as a fourth SHA-pinned engine, fully offline, with per-ecosystem OSV databases downloaded only after approval.
  • Synvoya gap layer (engine_family: "synvoya"): a SHA-256-checked dataset of 330 recent advisories, end-of-life data and libraries the other engines miss: PHP/Node.js runtimes, container images, products, vendored JavaScript libraries, SBOM matching via osv-scanner, and third-party GitHub Actions (OSV GitHub Actions database).
  • Synvoya PHP and Node.js Opengrep packs (syn-php-*, syn-node-*). Only rules that passed the precision gate on a holdout set of 12 repositories they were never tuned on ship; seven failing rules stay unshipped.
  • Native JS/TS parsing with @babel/parser 7.25.0 (zero runtime dependencies).
  • Quieter output: licence findings are opt-in (include_licenses / --licenses); generic secrets in test/example/docs paths report low unless the same value is used elsewhere; inferred third-party scripts report low; vendored libraries report once per library; Composer config.platform.php is an info note.
  • Honest coverage: new gap ids (third-party-bundles, vendored-js, actions-unchecked, Twig/Vue/Go SAST gaps); non-source files over Opengrep's size limit are notes, not partial; a reached Synvoya deadline is partial.

See CHANGELOG.md [4.0.0] for the full list and migration notes, and docs/SYNVOYA.md.

Verification

  • Dev branch: 2970/2970 unit tests, 110/110 evals (0 failed, 0 skipped).
  • This public projection on its own: npm ci, build, 2958 passed / 1 skipped tests (same skip as earlier projections), 110/110 evals.
  • Field run on 40 real repositories (28 tuning + 12 holdout): all scans complete with valid JSON; all 14 holdout Synvoya findings were triaged real.
  • Leak checks: seed allow-list (no dev-only files), personal-info grep, Gitleaks versus the current public tree (no new findings).
  • CI installs the OSV PyPI, npm, Packagist, Go and GitHub Actions databases so the 4.0 evals (E87-E92) run instead of skipping.

- Opengrep 1.23.0 -> 1.33.1 and Trivy 0.71.2 -> 0.76.1, SHA-pinned for all
  five platforms in engines.lock.json and verified with cosign/checksums.
- Opengrep's signing identity moved to its release branch; the lockfile
  pins the exact release-v1.33.1 workflow identity.
- CI now runs only in this public repository.
- Existing installs: run `codeinspectus repair-engines` to fetch the new
  engine binaries.

Signed-off-by: Synvoya <support@synvoya.com>
- osv-scanner 2.7.0, SHA-pinned and verified (checksums + SLSA provenance),
  scans lockfiles offline against per-ecosystem OSV databases that are
  downloaded only after the user approves them, only for ecosystems the
  repository uses.
- Catches malicious packages (MAL- records) and advisories the Trivy
  database lacks; findings deduplicate with Trivy through the alias graph.
- A scanned repository cannot silence it (its osv-scanner.toml is ignored,
  call analysis is off), and a missing database never reads as clean.
- Sealed bundle manifest 1.1.0 adds osv-scanner; the SDK verifies 1.0.0 and
  1.1.0 bundles.

Signed-off-by: Synvoya <support@synvoya.com>
- The stubbed osv-scanner JSON escapes Windows paths as the real scanner
  does.
- The control-character folder uses only characters Windows allows.

Signed-off-by: Synvoya <support@synvoya.com>
Signed-off-by: Synvoya <support@synvoya.com>
Synvoya is CodeInspectus's own engine family. Milestone 1 adds an offline,
integrity-checked gap-advisory dataset (330 vendor-verified entries plus
end-of-life dates for 335 release lines) and readers for what lockfile
scanners never see: declared runtime versions (Node, PHP, Python, Ruby, Go,
.NET, Java, CI setup steps), container image tags, and Adobe Commerce /
Magento / WordPress core versions.

Findings name a fixed version or a verify-the-hotfix step; upstream
findings for the same package and file are enriched, never replaced; a
rescan confirms a fix only when the producing reader fully re-read the
file. Existing finding fingerprints are unchanged.

This branch also carries the coverage-honesty patch (PR #12), merged into
the osv-scanner branch (PR #13).

Signed-off-by: Synvoya <support@synvoya.com>
Milestones 2-4 on top of the milestone 1 projection:

- Synvoya PHP and Node.js Opengrep packs (syn-php-*, syn-node-*), only the
  rules that passed the holdout precision gate; failing rules stay unshipped.
- Native JS/TS parsing with @babel/parser 7.25.0 (zero dependencies).
- GitHub Actions advisory check over the OSV GitHub Actions database.
- Vendored JavaScript library detection, one finding per library.
- Product-level routing: the pack and taint passes skip vendored/minified
  bundles (declared third-party-bundles gap); inferred third-party scripts
  report low; generic secrets in test/example/docs paths report low unless
  the same value is used elsewhere.
- Licence findings opt-in (include_licenses / --licenses).
- Coverage honesty: non-source size skips are notes, a reached Synvoya
  deadline is partial coverage.
- osv-scanner findings point at the package's own lockfile entry.
- Version 4.0.0; CHANGELOG, migration notes, SDK and docs.

Signed-off-by: Synvoya <support@synvoya.com>
@Synvoya Synvoya changed the title feat: Synvoya gap layer — CodeInspectus 4.0 milestone 1 feat: CodeInspectus 4.0 — osv-scanner engine, Synvoya gap layer, PHP and Node.js packs Nov 5, 2026
@Synvoya
Synvoya changed the base branch from agent/osv-engine to master November 5, 2026 01:30
@Synvoya
Synvoya marked this pull request as ready for review November 5, 2026 01:30
… test

- Install the OSV PyPI, npm, Packagist, Go and GitHub Actions databases in the
  engine and portability jobs, so E87-E92 run instead of skipping (crates.io
  stays absent for E61).
- Give the 4,000-file parse-cache unit test a 60 s timeout (it took 16 s on
  the macOS Intel runner against vitest's 5 s default).

Signed-off-by: Synvoya <support@synvoya.com>
…r-rule match times

Signed-off-by: Synvoya <support@synvoya.com>
@Synvoya
Synvoya merged commit a088460 into master Nov 5, 2026
8 checks passed
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.

1 participant