Stability guarantees¶
OSS IQ makes four commitments to anyone who depends on its output in CI pipelines, scripts or other tools. Part of the reference.
Commitment |
In one line |
|---|---|
Within a schema version, fields are never renamed or removed |
|
Command names, flag names and exit codes change only through a deprecation |
|
The same inputs give the same output |
|
A deprecated field keeps its meaning until the next major schema version |
Export schema stability¶
schema_version in the metadata block identifies the schema version of an export, for example
"1.6". ossiq export --schema-version pins the output to one version. The available versions
are 1.5 and 1.6, and the default is the latest.
A pinned document never carries a field that a later version added, so pinning 1.5 keeps
producing exactly the v1.5 shape.
Within a schema version:
Existing fields are never renamed or removed.
New optional fields can be added. Existing consumers are unaffected.
These rules hold from the release that ships a version. Until then, a version can still change.
When a schema version is deprecated, the previous version stays fully supported for at least one major release cycle. The changelog announces the deprecation before the version is removed.
For the fields of each version, see JSON export.
CLI interface stability¶
Command names, flag names and exit codes are stable interfaces. A change follows the same deprecation policy as schema versions: the old form keeps working, with a deprecation warning, before it is removed.
Deterministic analysis¶
Given the same lockfile and the same version of OSS IQ, a scan produces the same output. You can run OSS IQ as a blocking CI gate and diff the results of two runs.
Note
Two things outside OSS IQ change a result between runs:
Upstream data. Registries and source code providers can remove a version or a repository at any time.
The date. Version ages, the cooldown, EPSS scores and maintenance signals are measured against the day of the scan. To hold the published versions to a past date, pass
--cutoff-date.
Metric deprecation¶
A deprecated field or metric keeps appearing in exports, with its original meaning, until the next major schema version. Its removal comes with a migration note that names the replacement.