Docs: Add interim evaluation and dev plan - #51
Docs: Add interim evaluation and dev plan#51ModeSevenIndustrialSolutions wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Pull request overview
Adds an interim assessment and phased development plan following the v0.3.0 Go CLM work.
Changes:
- Inventories remaining issues and dependencies.
- Documents supporting-action research and architectural gaps.
- Proposes four implementation and deployment phases.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
3d3fd6b to
4352a7d
Compare
4352a7d to
6016d7e
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
Suppressed comments (6)
docs/INTERIM_EVALUATION.md:412
- The current
Gather build metadatastep runs only for Maven, Gradle, or Go. Under the proposed Python path (build_type: 'none'), it is skipped, leavingproject_typeempty and routing the project to syft instead ofpython-sbom-action. Make broadening that condition an explicit Phase 2 task.
Phase 3 — so derive it from the `Gather build metadata` step's
`project_type`: Python projects route to `python-sbom-action`,
everything else to `sbom-action` (syft). That gives Python
projects SBOM-mode coverage via `build_type: 'none'` in this
docs/INTERIM_EVALUATION.md:411
project_typeis singular, so it cannot reliably select the Python generator for polyglot repositories. At v0.8.0, a repository containing bothpackage.jsonandpyproject.tomlis classified asjavascript-npmbecause JavaScript has higher detector priority; its Python dependencies then bypasspython-sbom-action. Define an explicit override or multi-ecosystem behavior rather than treating this output as an ecosystem inventory.
Phase 3 — so derive it from the `Gather build metadata` step's
`project_type`: Python projects route to `python-sbom-action`,
everything else to `sbom-action` (syft). That gives Python
docs/INTERIM_EVALUATION.md:158
go_version_fileis also a shipped explicit input. If metadata fills whenevergo_versionis empty, a caller that selects a non-default version file will be silently overridden. Preserve the precedencego_version→ non-defaultgo_version_file→ metadata during deprecation.
This issue also appears in the following locations of the same file:
- line 409
- line 409
independently. Those inputs have shipped, so the change is
deprecate-and-default: explicit input wins, `build-metadata-action`
fills when empty — mirroring `java_version`. Removal can ride the
next minor bump under pre-1.0 versioning.
docs/INTERIM_EVALUATION.md:289
actions/download-artifactignorespatternwhennameis supplied, so this interface cannot provide bothartifact-nameand pattern-based fan-in as independent passthroughs. Define them as mutually exclusive and only acceptmerge-multiplewithpattern.
- **unpack:** `artifact-name`, destination `path`, optional
`pattern`/`merge-multiple` passthrough for matrix fan-in, the same
docs/INTERIM_EVALUATION.md:310
- A caller cannot access the workspace of a completed reusable build workflow or insert a packing step into its jobs. Adding only the CLM unpack path therefore supports same-job
*-build-actioncallers, not “any build workflow”; the producer workflows must also pack and publish the artifact before their jobs end.
1. `sonatype-lifecycle.yaml` gains an `artifact_name` input as an
alternative to `build_type`: a caller that already ran
`maven-build-action` (or any build workflow) hands the resolved
workspace to the scan job instead of building twice. This is the
direct answer to "CLM jobs need to interface with build jobs"
without nesting workflows, and it composes at the caller —
docs/INTERIM_EVALUATION.md:125
- The PR description still lists the
scan_modevalidation-trap fix as Phase 1 work, while this updated plan correctly records it as already shipped in PR #38. Update the PR description so its phase summary matches this document.
One item in #40's status comment — the `scan_mode: 'sbom'` plus
non-Go `build_type` validation trap — was **fixed in PR #38's final
form**: the shipped `validate` job rejects the combination loudly,
with an in-file note to remove the restriction once #40 generalises
`sbom` beyond Go. Recorded here as done; no Phase 1 work remains for
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (1)
docs/INTERIM_EVALUATION.md:413
- The proposed Python route is unreachable as written.
Gather build metadatacurrently runs only for Maven, Gradle, or Go (.github/workflows/sonatype-lifecycle.yaml:555), sobuild_type: 'none'leavesproject_typeempty and sends Python through the “everything else” syft path. Make broadening that step's condition part of Phase 2.
Phase 3 — so derive it from the `Gather build metadata` step's
`project_type`: Python projects route to `python-sbom-action`,
everything else to `sbom-action` (syft). That gives Python
projects SBOM-mode coverage via `build_type: 'none'` in this
phase, without preempting the Phase 3 CLI decision.
6016d7e to
c7cfbc1
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (1)
docs/INTERIM_EVALUATION.md:435
- The proposed default can silently choose the wrong generator for an explicit Maven, Gradle, or Go caller.
build-metadata-actionv0.8.0 checkspyproject.tomlbeforepom.xml,build.gradle, andgo.mod, so a polyglotbuild_type: 'maven'checkout can route topython-sbom-actionand omit its Java dependencies. Give the explicit override first precedence, map non-noneshipped build types to syft, and consultproject_typeonly forbuild_type: 'none'.
Phase 3 — so derive it from the `Gather build metadata` step's
`project_type`: Python projects route to `python-sbom-action`,
everything else to `sbom-action` (syft). Two consequences are
c7cfbc1 to
d0b9356
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (3)
docs/INTERIM_EVALUATION.md:84
- The inventory assigns #42 to Cluster C, but Cluster C is explicitly limited to #43/#44, while #42 is discussed under Cluster A and Phase 3. Classify it consistently so the dependency grouping is actionable.
| #42 | Python `build_type` for the CLM lane | Full — CLI path with dependency resolution | A/C |
docs/INTERIM_EVALUATION.md:473
- This example contradicts the same-job constraint at lines 316–320: a caller cannot pack the workspace of a completed reusable build workflow unless that workflow first gains the deferred publish step. Describe a producer job here, or add the workflow-repository changes to Phase 4.
`sonatype-lifecycle.yaml`, with a caller example showing
build-workflow → CLM-lane composition. `build_type` defaults to
docs/INTERIM_EVALUATION.md:527
docker-save-images-actionhas already published v0.2.0, as recorded at line 246, so it cannot still be waiting for its “first tag.” Keep the release gate only for the untagged Grype action and name v0.2.0 as the Docker interface to re-check.
do not couple to unreleased pins, and re-check both at their first
tags before Phase 2/4 code review. Any temptation to share code
d0b9356 to
5aee5df
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (2)
docs/INTERIM_EVALUATION.md:494
- The Docker load side is not a valid prototype for
download-artifact+tar: its downloaded tar is the Docker image archive consumed bydocker load, not an outer build archive to extract. Use the CLM artifact path for this prototype, or prototype a Docker-specific download/load action separately.
A cheap intermediate step worth considering before the new action
exists: `mode: unpack` semantics can be prototyped as a raw
`download-artifact` + `tar` step pair in one consumer (e.g. the
docker-workflows load side or a CLM `artifact_name` spike), proving
docs/INTERIM_EVALUATION.md:324
mode: unpackcannot retire Docker's load side: a Docker image archive must remain intact and be imported withdocker load; extracting that tar only exposes its layer/manifest files and does not populate the daemon. Keep a Docker-specific download/load counterpart, or add an explicit Docker-load mode rather than treating generic unpack as the replacement.
This issue also appears on line 491 of the same file.
3. Eventually, a `mode: unpack` sibling usage retires the missing
`docker load` counterpart in `docker-workflows`.
5aee5df to
d4b402a
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
Suppressed comments (2)
docs/INTERIM_EVALUATION.md:478
- This integration cannot satisfy the unpack design's newly-created-empty-root requirement as written: the current lane always checks out into the workspace first (
.github/workflows/sonatype-lifecycle.yaml:527-547). Make the artifact branch skip both checkout paths and restore directly into a freshpath_prefix; otherwise extraction either violates the safety invariant or overlays an independently checked-out tree.
2. Add the optional `artifact_name` consumption path to
`sonatype-lifecycle.yaml`, with a caller example showing a
**producer job** (running `maven-build-action` or similar, then
packing and uploading before the job ends) composed with the CLM
lane. `build_type` defaults to
docs/INTERIM_EVALUATION.md:497
- Do not prototype this input with a raw
tarextraction. The CLM job holds Nexus IQ credentials and accepts an artifact produced by another job, so a crafted archive can exploit traversal or link entries before the production validator exists. Any spike must apply the same member/link checks and fresh-empty-root requirement defined above, preferably through the unpack helper/action.
A cheap intermediate step worth considering before the new action
exists: `mode: unpack` semantics can be prototyped as a raw
`download-artifact` + `tar` step pair in the CLM `artifact_name`
spike, proving
d4b402a to
6880857
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (1)
docs/INTERIM_EVALUATION.md:325
- The estate has
sbom-filesupload/download hops in five workflow repositories, not four: Go, Node.js, Python, Java, and Docker. Docker's load path is correctly excluded below, but its separate SBOM hand-off is still an instance of this second item. Update the count (or explicitly name the four intended repositories if Docker's SBOM hop is deliberately excluded).
2. The `sbom-files` hop in the four `*-workflows` repositories,
replacing repeated raw pairs.
6880857 to
e7a4880
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
Suppressed comments (2)
docs/INTERIM_EVALUATION.md:83
- The #40 row still lists “fix the validation trap” as remaining work, but lines 121–126 explicitly record that PR #38 already fixed it. Remove that phrase so the inventory does not reintroduce the completed P1 item.
| #40 | Generalise the SBOM upload path | Partial — swap in `sbom-action`, extend beyond Go, retire `go_sbom_tool_version`, fix the validation trap | A |
docs/INTERIM_EVALUATION.md:485
path_prefixcurrently defaults to'.'(sonatype-lifecycle.yaml:70-74), which is an already-existing workspace directory and cannot satisfy the newly-created-empty-root invariant. As written, anartifact_namecaller that keeps the default has no valid extraction destination. Require a non-default path or derive a dedicated effective subdirectory for artifact mode and use it consistently downstream.
lane. The artifact branch must **skip both checkout paths** and
restore into a fresh `path_prefix`, or extraction would either
violate the unpack design's newly-created-empty-root invariant
or overlay an independently checked-out tree. `build_type`
e7a4880 to
8762b45
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (1)
docs/INTERIM_EVALUATION.md:558
- This status is already stale:
grype-scan-actionPR #1 merged on 2026-08-20 and v0.0.1 was published at 07:59 UTC. Update the dated snapshot and the earlier “in flight” description, then record the promised first-tag interface check instead of leaving Phase 2 gated on an event that has already happened.
do not couple to unreleased pins. grype-scan-action is untagged,
so re-check it at its first tag before Phase 2 code review;
8762b45 to
3be2f27
Compare
Break-point review of the repository against docs/BRIEF.md, taken after PR lfreleng-actions#38 (Go build_type for the CLM lane, v0.3.0) merged. Inventories the seven open issues with their post-lfreleng-actions#38 remaining scope, groups them into three clusters (SBOM transport generalisation, ONAP Go migration, consistency/docs), and records estate research findings: sbom-action / python-sbom-action fitness for the Nexus IQ REST upload, build-metadata-action coverage, the missing Python dependency-resolution primitive, and the artefact transport gap between build and scan jobs. Sets out a four-phase development plan, sequencing the lfreleng-actions#39 syft ingestion spike and the lfreleng-actions#50 policy-opa-pdp parity migration first, the lfreleng-actions#40 SBOM transport consolidation second, better defaults and new ecosystems third, and a new build-artifact-action pack/unpack pair fourth, plus the deployment order for ONAP, O-RAN-SC and OpenDaylight. Records the docker-save-images-action v0.2.0 archive modes and the in-flight grype-scan-action as design inputs, with a borrow-not-share rule for code reuse across action repositories. Extends the write-good exclusion to the new document, matching the existing BRIEF.md exemption for design-decisions records. Co-authored-by: Claude <noreply@anthropic.com> Signed-off-by: Matthew Watkins <mwatkins@linuxfoundation.org>
3be2f27 to
00e4aec
Compare
Break-point review of the repository against
docs/BRIEF.md, taken afterPR #38 (Go
build_typefor the CLM lane, v0.3.0) merged, written out asdocs/INTERIM_EVALUATION.md.What it contains
recorded — inline shell accumulating in the CLM lane, and the missing
build↔scan artefact interface as the structural gap.
Use build-metadata-action for Go version detection in both scan lanes #43, Correct the Node.js CLM caller claim in docs/BRIEF.md #44, Gerrit example and migration guidance for the Go CLM path #50) with their post-Feat: Add a Go build_type to the Sonatype Lifecycle lane #38 remaining scope (the merged PR
absorbed the
scan_moderename from Generalise the Nexus IQ SBOM upload path beyond Go #40, the CLM half of Use build-metadata-action for Go version detection in both scan lanes #43, andthe
scan_mode/build_typevalidation guard), grouped into threeclusters with dependency ordering.
sbom-action/python-sbom-actionfitness for the Nexus IQ REST upload path,
build-metadata-actionoutput coverage, the missing Python dependency-resolution primitive,
and the artefact-transport gap — including the
docker-save-images-actionv0.2.0 archive modes and the in-flightgrype-scan-action(PR Feat: Implement the Grype scan action grype-scan-action#1) asdesign inputs, with a borrow-not-share rule for reuse across action
repositories.
policy-opa-pdpparity migration, and Use build-metadata-action for Go version detection in both scan lanes #43's remaining Sonar-lanehalf
upload into a composite action
build-artifact-actionpack/unpack pair and its CLM laneintegration
risks/open-decisions register.
Also extends the
write-goodpre-commit exclusion to the new document,matching the existing
BRIEF.mdexemption for design-decisions records.Documentation only; no workflow changes.