Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package skillspector for openSUSE:Factory 
checked in at 2026-08-27 18:53:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/skillspector (Old)
 and      /work/SRC/openSUSE:Factory/.skillspector.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "skillspector"

Thu Aug 27 18:53:12 2026 rev:5 rq:1373934 version:2.10.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/skillspector/skillspector.changes        
2026-08-21 16:57:52.100642224 +0200
+++ /work/SRC/openSUSE:Factory/.skillspector.new.1265/skillspector.changes      
2026-08-27 18:56:08.486608051 +0200
@@ -1,0 +2,32 @@
+Thu Aug 27 06:57:00 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 2.10.0:
+  * Inspect hidden files and nested ZIP, DOCX, XLSX and PPTX
+    artifacts under cumulative bounds, with HIGH SC9 findings for
+    concealed executables
+  * Add opt-in transitive reference scanning (--transitive and
+    its depth/allow/deny options), bounded and fail-closed
+  * Recognise AISOP/AISP structured skill bundles, report-only
+  * Add EA5 detection for external model or provider selection
+  * Add SKILLSPECTOR_OUTPUT_LANGUAGE for localised LLM finding
+    text and risk_assessment.max_issue_severity for policy gates
+  * Floor an otherwise SAFE recommendation to CAUTION when
+    requested LLM analysis fails or the provider is unavailable
+  * Custom CLI providers keep the existing complete() contract,
+    but one used on a deadline-bounded path may now also accept
+    an optional timeout keyword
+  * Reduce false positives, and report and baseline only the
+    findings that drove the risk score; see upstream's release
+    notes for the full list
+- Drop the langgraph-cli dependency, build-time and runtime:
+  upstream moved langgraph-cli[inmem] into a new langgraph-dev
+  extra, and neither the shipped code nor the tests import it
+- Deselect four tests new in this release that fail on aarch64
+  because this release analyses artifacts more slowly than the
+  ceilings they assume, confirmed undeselected on an idle
+  machine; three hit the scanner's own 30 s per-artifact budget
+  so the ledger fail-closes to partial, and one allows 5 s to
+  walk and cache 256 one-byte files but takes 19.7 s. The spec
+  records the timings and the coverage that remains
+
+-------------------------------------------------------------------

Old:
----
  skillspector-2.9.6.tar.gz

New:
----
  skillspector-2.10.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ skillspector.spec ++++++
--- /var/tmp/diff_new_pack.pULG8N/_old  2026-08-27 18:56:09.516644104 +0200
+++ /var/tmp/diff_new_pack.pULG8N/_new  2026-08-27 18:56:09.518644174 +0200
@@ -21,7 +21,7 @@
 # %%{primary_python} so it stays correct as the primary interpreter moves.
 %define pythons %{primary_python}
 Name:           skillspector
-Version:        2.9.6
+Version:        2.10.0
 Release:        0
 Summary:        Security scanner for AI agent skills
 License:        Apache-2.0
@@ -39,7 +39,6 @@
 BuildRequires:  %{python_module langchain-core >= 1.2.17}
 BuildRequires:  %{python_module langchain-openai >= 1.1.10}
 BuildRequires:  %{python_module langgraph >= 1.0.10}
-BuildRequires:  %{python_module langgraph-cli >= 0.4.14}
 BuildRequires:  %{python_module langsmith >= 0.7.30}
 # Upstream extra is mcp>=1.29.0,<2.0.0; the code only needs FastMCP, which
 # Factory's python-mcp 1.28.1 already ships. Do not raise the floor above
@@ -66,7 +65,6 @@
 Requires:       %{primary_python}-langchain-core >= 1.2.17
 Requires:       %{primary_python}-langchain-openai >= 1.1.10
 Requires:       %{primary_python}-langgraph >= 1.0.10
-Requires:       %{primary_python}-langgraph-cli >= 0.4.14
 Requires:       %{primary_python}-langsmith >= 0.7.30
 Requires:       %{primary_python}-openai >= 2.25.0
 Requires:       %{primary_python}-packaging >= 24.0
@@ -117,6 +115,7 @@
 # The default addopts in pyproject.toml deselect the "integration" and
 # "provider" markers (live LLM/provider endpoints); the offline unit suite
 # exercises "import skillspector" against the full packaged langchain cone.
+#
 # The SSRF "allowed-host" positive tests need live DNS to resolve public
 # hosts (github.com, gitlab.com, raw.githubusercontent.com); in the offline
 # build chroot those names do not resolve and the SSRF guard blocks them, so
@@ -132,7 +131,42 @@
 # editable dev install, while we install into the buildroot. Its assertion --
 # that the server registers the scan_skill tool -- is covered in-process by
 # test_build_server_registers_scan_skill, which does run here.
-%pytest --deselect 
tests/unit/test_mcp_server.py::test_mcp_stdio_initialize_registers_scan_skill 
--deselect 
tests/unit/test_input_handler_ssrf.py::TestGitCloneSSRF::test_github_url_allowed
 --deselect 
tests/unit/test_input_handler_ssrf.py::TestGitCloneSSRF::test_gitlab_url_allowed
 --deselect 
tests/unit/test_input_handler_ssrf.py::TestDownloadSSRF::test_raw_githubusercontent_allowed
 --deselect 
tests/unit/test_input_handler_ssrf.py::TestDownloadSSRF::test_download_does_not_follow_redirects
 --deselect 
tests/unit/test_input_handler.py::test_validate_url_host_scp_extracts_github 
--deselect tests/unit/test_input_handler.py::test_scp_valid_host_clones 
--deselect tests/unit/test_input_handler.py::test_https_url_unchanged
+#
+# Four tests added in 2.10.0 fail on aarch64 because this release's analysis
+# is slower per artifact than the ceilings those tests assume. Each was
+# re-run undeselected in this chroot on an otherwise idle machine, so these
+# are deterministic results, not contention: the timings below are pytest
+# --durations figures from that run.
+#
+# Three of them assert that an artifact was inspected to completion, but the
+# scanner enforces MAX_STATIC_ANALYSIS_SECONDS_PER_ARTIFACT = 30.0 s per
+# artifact; when analysis reaches that budget the inspection ledger records
+# outcome=partial / reason_code=runtime_limit and the completeness assertion
+# can no longer hold. That is the fail-closed bound doing its job, not a
+# regression in what the scanner detects:
+#   * test_five_megabyte_... (5 MB artifact) -- 30.07 s, pinned exactly at the
+#     budget; observed_seconds 30.047 against limit_seconds 30.0. The memory
+#     property this test exists for still holds (peak 2.1 MiB against its own
+#     64 MiB ceiling); only its "completed" assertion fails.
+#   * test_rd04_... and test_nine_case_... (~1.26 MB fixture) -- 33 s and 34 s.
+#     The first sees only 2 of its 4 window markers, the second reports
+#     is_complete=False; both are the same truncation.
+# Note test_cross_window_separator_pair_across_public_surfaces (~512 KB) is
+# NOT deselected: it was verified to pass here, so it stays in the suite.
+#
+# The fourth, test_dense_directory_discovery_..., asserts elapsed < 5.0 s to
+# walk and cache 256 one-byte files, and measures 19.73 s -- about 77 ms per
+# one-byte file. 2.10.0 moved nested-artifact inspection, artifact
+# classification and reference resolution into that path, so the ceiling does
+# not hold on this architecture; upstream CI does not see it.
+#
+# Deselecting keeps the build gate meaningful without hiding a detection
+# failure: the same resource bounds are asserted deterministically by the
+# tests that monkeypatch the budget rather than racing it (e.g.
+# test_static_runtime_limit_is_reported_as_partial,
+# test_static_output_limit_is_reported_as_partial, and the build_context
+# deadline tests), and those do run. Worth reporting upstream.
+%pytest --deselect 
tests/unit/test_mcp_server.py::test_mcp_stdio_initialize_registers_scan_skill 
--deselect 
tests/unit/test_input_handler_ssrf.py::TestGitCloneSSRF::test_github_url_allowed
 --deselect 
tests/unit/test_input_handler_ssrf.py::TestGitCloneSSRF::test_gitlab_url_allowed
 --deselect 
tests/unit/test_input_handler_ssrf.py::TestDownloadSSRF::test_raw_githubusercontent_allowed
 --deselect 
tests/unit/test_input_handler_ssrf.py::TestDownloadSSRF::test_download_does_not_follow_redirects
 --deselect 
tests/unit/test_input_handler.py::test_validate_url_host_scp_extracts_github 
--deselect tests/unit/test_input_handler.py::test_scp_valid_host_clones 
--deselect tests/unit/test_input_handler.py::test_https_url_unchanged 
--deselect 
tests/nodes/test_security_end_to_end.py::test_rd04_large_file_pair_detects_start_boundary_and_end
 --deselect 
tests/nodes/test_security_end_to_end.py::test_nine_case_contract_across_public_surfaces
 --deselect tests/nodes/test_security_remediation.py::test_five_mega
 byte_normalized_static_scan_stays_below_memory_ceiling --deselect 
tests/nodes/test_build_context.py::test_dense_directory_discovery_and_cache_complete_with_modest_real_elapsed_time
 
 %files
 %license LICENSE

++++++ skillspector-2.9.6.tar.gz -> skillspector-2.10.0.tar.gz ++++++
++++ 46059 lines of diff (skipped)

Reply via email to