Skip to content

chore(deps): pin SkillSpector to v2.13.3 - #292

Merged
rng1995 merged 4 commits into
mainfrom
naren/port-skillspector-2-13-1
Nov 2, 2026
Merged

rng1995 merged 4 commits into
mainfrom
naren/port-skillspector-2-13-1

Conversation

@rng1995

@rng1995 rng1995 commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

SkillEvaluator's documented SkillSpector v2.12.0 pin can produce false incomplete scans for valid helper scripts and false findings around HTML comments. This PR updates the supported install pin to SkillSpector v2.13.3, including the later scan-integrity and security fixes in that release.

  • Update the installation guides, CI recipe, missing-scanner hint, and changelog to v2.13.3.
  • Pin the Tier 1 CI image to the release's immutable source commit 38a1dfe93325d2f8bfcd4f8d0241eed706334915 and archive SHA-256 c503337dd2e0e3a600149a6ab33a7cfa3d88e9869c2cfaff3eb1dbb77e68e29e. Update the third-party notice to the same commit.
  • Capture a fresh v2.13.3 --no-llm report for the simple skill and update the pin and report compatibility assertions.

The strict completeness gate, scanner model defaults, and existing version gates retain their behavior. SkillSpector remains a separate tool install.

Validation

Validated at commit 3dbdcd1969e0eca9c1003ee0c09582624e2a4fc4:

  • 234 passed in the frozen Python 3.13 environment: SkillSpector tests selected from tests/test_oss_packaging.py, tests/test_oss_boundary.py, tests/utils/test_tool_runner.py, and tests/validators/test_security.py, plus the Harbor metadata contract.
  • Real v2.13.3 scanner and validator integration: the simple skill scanned successfully with --no-llm; both components were inspected, coverage was 100%, and there were no findings or incomplete scans. SecurityValidator(use_llm=False) passed using the isolated scanner executable. The release wheel's SHA-256 was verified.
  • Actual Tier 1 image: built for linux/arm64 with the hash-locked source archive. Runtime checks confirmed SkillSpector v2.13.3 and a working YARA import. All five ci/smoke_image.py cases verified: all-pass, invalid-name, changed-one, no-change, and missing-llm-key. Scanned reports recorded no incomplete scans.
  • Regenerating skillspector.txt with the documented Linux/Python 3.12 compile command produced an identical lock.
  • Ruff on the changed Python files, git diff --check, and the OSS boundary scan with its configured allowlist passed. fern check reported zero errors; the authenticated redirects check was skipped.

A broader initial run used the pre-existing shell environment, which has Harbor 0.13.2 rather than the pinned 0.24.0 and an installed SkillSpector 2.11.2. That run was stopped; it is not claimed as a clean full-suite result. Its two failures were test_harbor_environment_extra_mapping_matches_installed_metadata and test_harbor_environment_kwarg_contract_matches_installed_source. Both passed when rerun in the frozen environment (2 passed).

Provider-backed --llm scanning and Claude 5.5 structured-output compatibility were not exercised.

rng1995 and others added 2 commits October 30, 2026 11:59
The install docs, the CI recipe and the missing-scanner hint pinned
SkillSpector v2.12.0. That release can make the Tier 1 security check
INCOMPLETE, or fail it, for skills with no real issue:

- valid Python and Perl helpers (for example a `len(x) < 12` comparison
  followed by more code, or a Perl `eval { require $file; 1 }` block) are
  recorded as `static_parse_limit` or `obfuscated_instruction_text`
  ledger exceptions, with a High AE1 at each line that names the helper
  (NVIDIA/SkillSpector#777);
- the SC8 bytecode walk charges time spent waiting behind other analyzers
  to its budget and can stop with a static `runtime_limit`
  (NVIDIA/SkillSpector#828);
- visible text between two HTML comments raises a High P2
  hidden-instruction finding (NVIDIA/SkillSpector#452).

SkillSpector v2.13.1 contains all three fixes. Move every install spec to
v2.13.1, keep the rule that docs and code name exactly one release, and
keep the Claude 5.5 caveat: v2.13.1 still lacks the newer structured-output
support, so SKILLSPECTOR_MODEL must still name a supported model when
SKILL_EVAL_LLM_MODEL is a Claude 5.5 model. The SkillSpector model
defaults are unchanged.

Add a troubleshooting entry for false incomplete helper scans on older
releases, and a captured v2.13.1 --no-llm report (from
tests/fixtures/skills/simple) to the captured-report acceptance test so the
strict completeness validator is exercised against the pinned release.

Signed-off-by: Narendran Raghavan <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The install docs and the missing-scanner hint name SkillSpector v2.13.1,
but the Tier 1 CI image still installed the v2.12.0 source archive
(c7958a3), so CI scans kept the false incomplete and false High findings
that v2.13.1 fixes.

Point ci/requirements/skillspector.in and the hash-locked
skillspector.txt at the archive of the v2.13.1 tag commit
(f3b25697d76256998ca9d42c198d256258d4c035) and update the
THIRD_PARTY_NOTICES row. v2.13.1 declares the same dependencies as
v2.12.0, so only the archive URL and its hash change; the documented
uv pip compile command gives the same lock.

Extend test_skillspector_install_instructions_pin_one_release so the CI
lock's archive commit and the notices row must match the documented
release, and mention the image in the CHANGELOG entry.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Narendran Raghavan <[email protected]>

@rng1995 rng1995 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review summary: no findings.

Verified independently: the v2.13.1 tag resolves to f3b25697d76256998ca9d42c198d256258d4c035, the archive sha256 in ci/requirements/skillspector.txt matches a fresh download of that archive, and the pyproject diff between c7958a3 and f3b2569 changes only the version and a build exclude list, so no other lock line needs to move. No stale v2.12.0 install references remain outside historical CHANGELOG entries and unrelated test metadata. The new fixture has no absolute user paths or credentials, and the CHANGELOG entry sits under Unreleased > Changed. The pin, install-hint, boundary and captured-report tests pass locally (149 selected tests) and ruff check is clean. I did not rebuild the Tier 1 image.

Reviewed with Claude Code.

rng1995 and others added 2 commits November 2, 2026 00:59
Move the install instructions, Tier 1 CI lock (commit 38a1dfe, archive sha256
recomputed), third-party notice, and captured --no-llm fixture from v2.13.1
to v2.13.3.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Signed-off-by: Narendran Raghavan <[email protected]>
@rng1995 rng1995 changed the title chore(deps): pin SkillSpector to v2.13.1 chore(deps): pin SkillSpector to v2.13.3 Nov 2, 2026
@rng1995
rng1995 enabled auto-merge (squash) November 2, 2026 18:23
@rng1995
rng1995 merged commit 765ab5e into main Nov 2, 2026
21 checks passed
@rng1995
rng1995 deleted the naren/port-skillspector-2-13-1 branch November 2, 2026 18:26
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