Skip to content

fix(sbom): enforce pm determinism again - #226

Merged
nervgh merged 17 commits into
mainfrom
fix/sbom/revert-pm-lock-syntax
Aug 7, 2026
Merged

fix(sbom): enforce pm determinism again#226
nervgh merged 17 commits into
mainfrom
fix/sbom/revert-pm-lock-syntax

Conversation

@nervgh

@nervgh nervgh commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

@nervgh
nervgh force-pushed the fix/sbom/revert-pm-lock-syntax branch from 3d101d9 to ebbabd9 Compare August 6, 2026 09:09
@nervgh nervgh changed the title fix(sbom): use os-pm file syntax fix(sbom): enforce pm determinism again Aug 6, 2026
@nervgh
nervgh force-pushed the fix/sbom/revert-pm-lock-syntax branch from 9c1fc5d to 8977618 Compare August 6, 2026 19:57
nervgh added 14 commits August 7, 2026 15:51
Switch the active feature from `013-lang-pkg-env-vars` to
`015-os-pm-file-syntax` and add the full specification, requirements
checklist, and user stories for re-introducing file-based
`pm.yaml`/`pm.lock` syntax as the only supported syntax for the `os-pm`
package type.
Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
Clarify the impact of file-based os-pm packages on SBOM and command
generation. Previously, the plan was ambiguous about whether the
runtime index file was needed and whether the container factory version
preamble could be removed.

Refine the design documents to establish that:
- The build context's pm.lock file replaces the runtime index file for
  SBOM parsing, rendering some runtime collection code dead.
- The container factory version file write is preserved during build
  to retain the SBOM purl qualifier.
- Existing pm.lock parser functions are reused rather than deleted.
- Specific e2e test fixtures are identified for migration.

Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
Previously, os-pm SBOM was collected by reading the pm index.json from
the
container image at build time. Now it is parsed directly from pm.lock
stored
in the git repository, using the new PMBOMPatcher. The patcher falls
back
gracefully when the lock file is absent and errors when only pm.yaml
exists.

Refactor config validation and defaults to support custom spec/lock
paths for
os-pm, add OSPMSpecPath helper, and skip os-pm entries in managedinput
resolvers (delivery-kit handles them internally).

Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
Add T062-T065 e2e runs for migrated sbom fixtures and update phase
dependencies to require Phase 7 completion before running them.

Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
pm.lock has a top-level "packages" key; previously the raw JSON was
unmarshalled directly into the package map. GOST Upsert now runs after
component patchers so patcher-added components get GOST properties. Also
fix containerfactoryversion qualifier case and add VCS external ref from
the lock file's originalRepo.

Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
version

Update the fixture to include tini package and change jq version
from 1.9.0 to 1.8.1. Adjust the test assertion to expect the
new components.

Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
@nervgh
nervgh force-pushed the fix/sbom/revert-pm-lock-syntax branch from e40be2e to a1ae538 Compare August 7, 2026 12:52
nervgh added 3 commits August 7, 2026 16:54
Reorder patchers in convergeImageSbom so the external refs
patcher runs after the PM BOMPatcher. Previously it ran first,
so os-pm components from pm.lock were absent during PURL
resolution and failures could not aggregate into a hierarchical
error.

Update FR-018 spec notes and add the purl_resolver_errors e2e
fixture.

Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
Update the pm-ok.lock test fixture to reflect the jq project's current
repository URL and digest values. The previous fixture referenced the
old GitHub repo and an outdated digest, causing test failures when
validating against live upstream data.

Signed-off-by: Alexandr Zaytsev <alexandr.zaytsev@flant.com>
@nervgh
nervgh marked this pull request as ready for review August 7, 2026 15:48
@nervgh
nervgh merged commit c6b0349 into main Aug 7, 2026
12 of 13 checks passed
@nervgh
nervgh deleted the fix/sbom/revert-pm-lock-syntax branch August 7, 2026 15:48
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