Production-readiness scan · 2026-11-09
sindresorhus/is-plain-obj
Workable, with significant gaps to close.
PARTIAL Dependencies were read from manifests only; transitive packages were not checked.
Fix first
No lockfile committed
Dependency versions are declared as ranges, so two installs can resolve to different code and transitive dependencies could not be checked at all. Commit the lockfile your package manager produces.
No start command is declared anywhere
The repository has a server entrypoint but no start script, Procfile, Docker CMD or platform config saying how to run it. Buildpacks guess, and guess differently from each other, so the first deploy either starts the wrong process or none at all.
index.js
CI dependencies are not reproducibly pinned
The GitHub Actions workflow runs npm install rather than npm ci, and no lockfile is committed. Future transitive dependency changes can therefore alter test results without corresponding source changes.
Nine dimensions
Top findings (AI)
CI dependencies are not reproducibly pinned
The GitHub Actions workflow runs npm install rather than npm ci, and no lockfile is committed. Future transitive dependency changes can therefore alter test results without corresponding source changes.
Release publishing lacks an automated integrity path
No release workflow, provenance generation, or package-signing configuration is present. npm publication appears manual, so its integrity cannot be independently verified from the repository.
Security checks are not repeatable in CI
The repository has a clean secret-scan result and a disclosure policy, but CI contains no dependency, SAST, or secret-scanning step to preserve those checks continuously.
Test coverage is not demonstrated
test.js and index.test-d.ts exist and are executed by the test script, but no coverage report or threshold is provided. Most test contents were also outside the directly analyzed source sample.
Report sections
Open a section for the evidence that drove the score. If you open one first, start with Code.
What this scan inspected
- every file scanned for secrets — 14 in total, none skipped
- 3 dependencies from manifests only — no lockfile, transitive deps unchecked
- deploy checks read 4 shipping file(s), 0 bind site(s) and 0 environment variable(s)
- code quality parsed 4 source file(s), 125 lines, ESLint over 4
- the AI scored from manifests and the file tree; it did not read source itself
- scoring policy: mode=one_shot, model= MiniMax-M3, rubric=d9ea679b9529
- scores adjusted by deterministic evidence: 1 lowered by deterministic ceilings, 1 raised by deterministic floors
Every section above links to the evidence behind it. Nothing on this page is asserted without a source.