Skip to content

Introduce changes for patch v1.0.1 - #8

Merged
kkurzacz-intel merged 2 commits into
release-1.0from
release-1.0.1
Sep 22, 2026
Merged

kkurzacz-intel merged 2 commits into
release-1.0from
release-1.0.1

Conversation

@kkurzacz-intel

Copy link
Copy Markdown
Contributor
  • model-manager: deduplicate args by flag name in LLMInferenceService
  • model-manager: add --label flag for deployments
  • model-manager: undeploy --wait blocks until pods terminate
  • nfd: label namespace with PSS profile when enforce_pss is true
  • llm_services: provision the model-store PVC from the resolved storage backend
  • ci: match all release branches in workflow triggers

kkurzacz-intel and others added 2 commits September 21, 2026 22:19
Patch release on top of v1.0.0.

- model-manager: deduplicate args by flag name in LLMInferenceService
- model-manager: add --label flag for deployments
- model-manager: undeploy --wait blocks until pods terminate
- nfd: label namespace with PSS profile when enforce_pss is true
- llm_services: provision the model-store PVC from the resolved storage backend

Co-authored-by: jpiaseck <jakub.piasecki@intel.com>
Co-authored-by: Ant Albersk <anna.alberska@intel.com>
Co-authored-by: n-owi <mikolaj.nowicki@intel.com>
Co-authored-by: sgurunat <gurunath.s@intel.com>
Trigger the security-scan workflows on release-[0-9]+.[0-9]+ branches
(e.g. release-1.0.1), not just release-1.0, and add the same branch
filter to pull_request events.

Co-authored-by: Maciej Ramotowski <maciej.ramotowski@intel.com>
@kkurzacz-intel
kkurzacz-intel merged commit 90da478 into release-1.0 Sep 22, 2026
8 checks passed
kkurzacz-intel added a commit that referenced this pull request Sep 24, 2026
* Merge pull request #2 from Mushtaq-BGA/release-1.0

Docs: rename to Intel® AI for Enterprise Inference + release doc fixes

* docs: brand component badge as Intel AI for Enterprise Solutions (#3)

Co-authored-by: release-bot <release-bot@users.noreply.github.com>

* docs: add Intel® trademark to component badge (#4)

Co-authored-by: release-bot <release-bot@users.noreply.github.com>

* ci: add pinned security scanning workflows

Add SARIF-publishing security scans for the release branch, following the
pattern already used across the intel org (harden-runner + per-tool
workflow files + OpenSSF Scorecard):

- trivy       vulnerabilities, secrets, misconfig, licenses (filesystem)
- bandit      Python security findings
- checkov     Kubernetes / Actions / secrets IaC checks
- shellcheck  shell script correctness and quoting
- ansible-lint Ansible role and playbook hygiene
- scorecard   OpenSSF supply-chain posture rating

Every action is pinned to a full commit SHA and every tool to an exact
version, so a given commit always scans the same way and version bumps are
explicit, reviewable diffs. ShellCheck is fetched from its upstream release
and checksum-verified rather than installed via apt, whose version drifts
with the runner image.

Each scan was run locally against the tree before landing, and two were
retuned as a result:

- checkov drops the `helm` framework. Checkov renders charts into a random
  temp dir and reports paths relative to it, so all 50 (ai-solutions) / 40
  (inference) findings pointed at files that do not exist in the repo --
  unanchorable in the Security tab and re-reported as new every run. They
  were also entirely in vendored upstream charts. Trivy's misconfig scanner
  covers chart misconfiguration with correct paths.
- ansible-lint skips style-only rule families, which accounted for 1158 of
  1163 findings in ai-solutions and 496 of 502 in inference. name[casing]
  alone fired 350 times against the deliberate `role | action | desc`
  naming convention.

Jobs are soft-fail for the initial rollout: findings surface under
Security -> Code scanning instead of blocking the branch, so the existing
backlog can be triaged before any check is made required.

CodeQL is intentionally not added here - it already runs via code scanning
default setup on both repositories.

* ci: eliminate false positives from the security scans

Triage of every finding the scans produced, separating defects that cannot be
true from ones worth a maintainer's time. Every remaining finding was checked by
hand against the source and is real.

ShellCheck (33 -> 7)
  Discovery now reads shebangs as well as *.sh suffixes: model_manager/model-
  manager is the largest script in the tree at 1429 lines and a *.sh glob never
  saw it.

  Entry points are linted with -x so the helper scripts they source are
  followed, plus a --source-path list -- the source statements are built from
  "$MM_LIB/..." which ShellCheck cannot resolve unaided, and without it 7
  globals that model_manager/lib/ does set and model-manager does read looked
  unused.

  The helper scripts under model_manager/lib/ are linted on their own.
  ShellCheck sees one file at a time, so a global a helper sets for its caller
  reads as unused: 26 of the 31 SC2034 hits were that. Disabling SC2034 for
  those files was too blunt -- it also hid four globals that genuinely are
  written and never read anywhere. Each hit is now checked individually and
  suppressed only when another file demonstrably reads that variable, limited to
  SHOUTY_CASE names of 3+ characters since a short lowercase name such as a
  loop's `i` collides textually with unrelated files.

  Kept, all verified by grepping the whole tree:
  - config.sh:266  RUNTIME_DEVICE, parsed from the runtime JSON beside five
    siblings that are all consumed, then never read -- cpu/gpu selection is
    read and dropped.
  - nri.sh:82,83   NRI_ADVANCED_MODE and NRI_HIDE_HT, both named in the
    function's own "Sets:" header comment as outputs, neither consumed. The
    Python side reads the MM_NRI_HIDE_HT environment variable, not this.
  - nri.sh:241     NRI_TARGET_NODE, set beside NRI_POLICY_NAME which is used.
  - helpers.sh:244 `local i` in a `for i in $(seq 1 24)` retry loop whose body
    never uses it.
  - helpers.sh:88, routing.sh:288  SC2155.

  No file under model_manager/ was modified.

Bandit (0 -> 0)
  Skips B404 (importing subprocess is not a defect) and B603, which fires on
  the recommended argv-list form and cannot judge whether input is trusted.
  shell=True and friends (B602/B604/B605/B609) stay enabled. Severity is
  deliberately not filtered, since real tests such as B105 report LOW.

Trivy (17 -> 1)
  `limit-severities-for-sarif` defaults to false, and unset it makes the action
  drop --severity for the SARIF run alone -- the table reported 0 findings
  while the uploaded SARIF carried all 17 at LOW/MEDIUM, every one below the
  declared CRITICAL,HIGH threshold. Now split in two: CVEs, secrets and
  licences at CRITICAL,HIGH with the limit applied; misconfiguration at every
  severity, because Trivy rates nearly every Kubernetes check LOW or MEDIUM and
  the same threshold would silence that scanner outright. Noise is controlled
  by scope instead -- vendored charts/litellm-helm accounted for 16 of the 17
  and is now skipped, matching the Checkov workflow.

  Kept: KSV-0106 in roles/llm_services/files/runtimes/vllm-runtime.yaml, the
  one finding in code this repo owns.

ansible-lint, Checkov
  No false positives; the 4 ansible-lint findings stand.

Verified locally against the pinned tool versions, under `bash -e` as Actions
runs it. actionlint clean.

* ci: address review feedback on the scanning workflows

Three points from @mramotowski on #6, applied to both
repos so the two stay identical.

Drop the cross-repo reference in the ansible-lint comment. Justifying a skip
list in one repo by citing another repo's finding count was noise; each file now
carries only its own numbers, measured fresh.

Note that `schedule` only fires from the default branch. Correct, and worth
saying in the file rather than leaving as a trap: the weekly crons stay dormant
until these workflows also land on `main`. The `push` and `pull_request`
triggers are unaffected. Added to all four scheduled workflows.

Scan once in Bandit instead of twice. The second invocation existed only to
print something human-readable, and re-scanned the whole tree to do it. The
summary is now rendered with `jq` from the SARIF the first scan already wrote,
which also keeps the two outputs from ever disagreeing:

    Bandit: 1 finding(s)
      note  B607  roles/postgresql/files/provision_db.py:34  Starting a process
                                                             with a partial
                                                             executable path

No change to what any scan reports. Verified by extracting the generated Bandit
step from the YAML and running it verbatim under `bash -e` in both repos --
1 finding in ai-solutions, 0 in inference, and the summary degrades cleanly to
"0 finding(s)". ansible-lint still reports 5 and 4. actionlint clean.

* ci: correct ansible-lint baseline counts in comment

The counts in the skip-list rationale were measured locally, where
ansible-lint silently skips schema validation because it cannot fetch the
JSON schemas. Two schema[meta] findings therefore only appear in CI:
roles/langfuse and roles/litellm are the only role metas declaring
galaxy_info, and the schema requires 'author' whenever it is present.

Baseline is 501 findings unfiltered and 6 substantive, not 499 and 4.
name[casing] is unchanged at 350. ai-solutions is unaffected -- schema is
an unskippable rule, so CI's filtered run would have surfaced any schema
finding there, and it reported none.

The two schema[meta] findings are left unfixed, consistent with every
other genuine finding this PR reports rather than resolves.

* ci: raise ShellCheck threshold to error to suppress style warnings

* Introduce changes for patch v1.0.1 (#8)

* Release v1.0.1

Patch release on top of v1.0.0.

- model-manager: deduplicate args by flag name in LLMInferenceService
- model-manager: add --label flag for deployments
- model-manager: undeploy --wait blocks until pods terminate
- nfd: label namespace with PSS profile when enforce_pss is true
- llm_services: provision the model-store PVC from the resolved storage backend

Co-authored-by: jpiaseck <jakub.piasecki@intel.com>
Co-authored-by: Ant Albersk <anna.alberska@intel.com>
Co-authored-by: n-owi <mikolaj.nowicki@intel.com>
Co-authored-by: sgurunat <gurunath.s@intel.com>

* ci: match all release branches in workflow triggers

Trigger the security-scan workflows on release-[0-9]+.[0-9]+ branches
(e.g. release-1.0.1), not just release-1.0, and add the same branch
filter to pull_request events.

Co-authored-by: Maciej Ramotowski <maciej.ramotowski@intel.com>

---------

Co-authored-by: jpiaseck <jakub.piasecki@intel.com>
Co-authored-by: Ant Albersk <anna.alberska@intel.com>
Co-authored-by: n-owi <mikolaj.nowicki@intel.com>
Co-authored-by: sgurunat <gurunath.s@intel.com>
Co-authored-by: Maciej Ramotowski <maciej.ramotowski@intel.com>

---------

Co-authored-by: Mushtaq <mushtaq.ahmed@intel.com>
Co-authored-by: release-bot <release-bot@users.noreply.github.com>
Co-authored-by: sysadmin <sysadmin@localhost>
Co-authored-by: jpiaseck <jakub.piasecki@intel.com>
Co-authored-by: Ant Albersk <anna.alberska@intel.com>
Co-authored-by: n-owi <mikolaj.nowicki@intel.com>
Co-authored-by: sgurunat <gurunath.s@intel.com>
Co-authored-by: Maciej Ramotowski <maciej.ramotowski@intel.com>
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