Repository navigation
v1.15.2
1.15.2 - 2026-08-27
-
pnpm lockfiles split across multiple YAML documents are now merged without
dropping importer, package, or snapshot data. Ohrisk accepts compatible
split importer declarations while conflicting dependency values and
lockfile versions remain fail-closed. -
Package-scoped MIT-CMU inventories such as Pillow's root license now retain
the package license ahead of later bundled component notices, avoiding false
conflicting-evidence findings without suppressing those component terms. -
Concurrent packages pinned to the same Cargo GitHub commit now share one
checksum-verified archive fetch and index operation instead of repeating the
same immutable-source work for every package. -
Nix
flake.lockinputs may collect root legal files from exact NixOS nixpkgs
releasenixexprs.tar.xzarchives under both/nixpkgs/...and
/nixos/<channel>/...layouts. Ohrisk requires a full commit, matching
12-character release path, canonicalnarHash, fixed NixOS host, XZ output
capped at 320 MiB and 100,000 entries, and a matching extracted NAR tree
before trusting the evidence. XZ output streams through a uniquely named
temporary TAR file opened with exclusive creation and restricted mode where
supported; it is removed on success and failure, avoiding complete decompressed
archive retention in memory. -
Checksum-identified Go module ZIPs may verify up to 65,535 entries and 512 MiB of expanded
content without retaining unrelated source files. Per-entry, compression-ratio,
CRC, work, and cancellation limits remain fail-closed, while retained license
andgo.modevidence stays capped at 34 MiB. -
Checksum-verified Cargo crates now honor an explicit README declaration that
offers MIT or Apache-2.0 at the user's option. MatchingLICENSE-MITand
LICENSE-APACHEfiles no longer produce a false conflicting-evidence finding,
while narrower-onlymetadata still conflicts with broader-or-latertext. -
A license file that explicitly declares the package as a whole under MIT now
keeps that package scope ahead of later contributor-only Apache terms, avoiding
false conflicts for crates such aslibm. -
Standard Maven names used by Apache, Hamcrest, HdrHistogram, and JTS now
normalize to their SPDX expressions instead of producing malformed-license
findings. -
Yarn Berry cache checksums are now preserved separately from npm tarball
integrity, so unavailable evidence explains the verification boundary and
recovery path instead of claiming the lockfile contains no checksum. -
SPDX identifier lines wrapped in Markdown inline-code delimiters now discard
the closing delimiter before expression parsing, avoiding false conflicts for
dual-licensed modules such asgithub.com/DataDog/dd-trace-go/v2. -
SPDX Creative Commons Attribution licenses such as
CC-BY-3.0are now
attribution review findings instead of unrecognized-license findings. -
Multiple recognized license files no longer conflict when one metadata
classifier covers every file choice. Named sibling files such as
LICENSE_zstd.txtare now treated as bundled-component evidence while
standardLICENSE-MIT,LICENSE-APACHE, and BSD alternatives remain
package-license choices. -
License-file recognition now handles the parenthetical notice wording used
by common MIT packages, explicit BSD one-clause and alternate three-clause
wording, and the bzip2 grant without reporting false metadata conflicts.
Canonical MPL 2.0 text is also compatible with anMPL-2.0+declaration,
andbzip2-1.0.6is classified as permissive. -
Common Python metadata aliases
PSFLandBSD 3-Clause Licensenow
normalize toPSF-2.0andBSD-3-Clause. Canonical GNU version text no
longer conflicts with matching-or-laterpackage metadata, while the
narrower metadata / broader file direction remains fail-closed. -
Modern
uv.lockfiles may omit versions for editable workspace packages.
Ohrisk now accepts those records only for project-contained local sources,
validates their local package metadata, collects bounded license evidence,
and uses0.0.0+localas a stable report identity when the project version
is dynamic. Versionless remote records still fail closed. -
SPDX
TCLandWTFPLexpressions are now classified as permissive
low-risk licenses under both profiles. DistributedTCLpackages retain
the normal license-text obligation, whileWTFPLdoes not invent one. -
BSD 3-clause license files whose endorsement condition says
Neither the name Exampleinstead ofNeither the name of Exampleare now recognized
correctly. A license file that explicitly scopes those terms to
auto-generated bindings is retained as bundled-component evidence instead
of conflicting with the package declaration, fixing
zstd-sys@2.0.16+zstd.1.5.7. -
Canonical MIT license files that use typographic quotes around
“AS IS”
are now recognized like their ASCII-quoted form, removing false missing
findings for modules such asgithub.com/felixge/fgprof@v0.9.5. -
SPDX
BSL-1.0andUnicode-DFS-2016are now classified as permissive
low-risk licenses under both profiles instead of falling through to
unknown. This fixes false unknown findings for crates such as
clipboard-win,error-code, andunicode-ident. -
Root legal files that explicitly declare the package as dual-licensed under
MIT and Apache-2.0 now keep that package-level choice when a later section
carries a BSD-3-Clause notice scoped to one source file. This removes false
conflicting-evidence findings for crates such asminimal-lexical@0.2.1
without relaxing ordinary metadata-versus-license-file conflicts. -
Nix
flake.lockpublic GitHub inputs now preserve a full locked commit and
SHA-256narHash, fetch only the exact fixed-host codeload archive after local
evidence is unavailable, and trust root legal files only after a bounded
extracted source tree matches Nix Archive serialization. Short revisions,
malformed hashes, custom hosts, unsupported archive shapes, and hash
mismatches remain fail-closed. -
Modern Elixir
mix.lockpublichexpmrecords now preserve the outer
tarball SHA-256 and fetch the exact package fromrepo.hex.pmwhen local
deps/evidence is unavailable. The outer archive checksum, Hex v3 inner
checksum, metadata name/version, nested archive bounds, and license files are
verified before evidence is trusted; private and hashless records stay local-only. -
Haskell Stack locks now preserve the completed Hackage Cabal-file SHA-256
and use it to verify exact remote.caballicense metadata when no local
package database evidence is available. Host, response-size, UTF-8, package
identity, and checksum validation remain fail-closed. When the current public
Cabal file differs, Ohrisk checks at most 64 numbered historical revisions
and trusts only the revision matching the completed lock checksum. -
Cabal's legacy
BSD3license value is normalized to SPDXBSD-3-Clause
instead of being reported as malformed. -
Qualified sibling files such as
LICENSE.libyamlare now treated as bundled
component licenses when a primaryLICENSEexists beside them. Their
obligations are combined with SPDXANDinstead of producing a false
package-license conflict. -
THIRD_PARTY_LICENSES*inventories beside a primary license are likewise
treated as cumulative bundled-component evidence, preventing their contents
from creating false package-license conflicts. -
Cargo root path dependencies contained by the workspace are now treated as
implicit workspace members even when omitted from the explicitmembers
list, whileexcludeentries remain authoritative. This restores license
metadata for internal crates such as Nushell'snu-globandnu-path. -
Cargo workspace packages now inherit
versionandlicensefrom
[workspace.package]when their member manifests opt in with
version.workspace = trueandlicense.workspace = true, eliminating
falseunknownfindings for internal crates in repositories such as Ruff. -
Cargo workspace and contained path packages now collect member-root legal
files, with a workspace-root fallback when the member has none. Git-ref
baselines use the same bounded snapshot evidence, eliminating false
unknownfindings such aswatt@1.4.0without trusting same-name registry
artifacts. -
Cargo Git dependencies pinned to a full GitHub commit now collect bounded
codeload archive evidence after single-root and unique Cargo.toml
name/version validation. Mutable, credentialed, non-GitHub, path, and
ambiguous sources remain unavailable. Git legal-file symlinks are resolved
only to regular entries contained by the same immutable archive root; other
links are never materialized. -
Localized HTML reports no longer leave the conflicting-license review action
in English across Korean and the other supported report languages. -
Public repository scans now read Go local replacement evidence only from
real paths contained by the validated checkout. Internal submodules without
legal files of their own inherit bounded root-module license evidence,
avoiding misleadingunknownresults for repositories such as Terraform
without enabling general temporary-checkout package or vendor discovery.