Skip to content

fix: refresh frozen SkillSpector certificate roots - #94

Merged
steipete merged 2 commits into
mainfrom
fix/frozen-skillspector-ca-20261026
Oct 26, 2026
Merged

steipete merged 2 commits into
mainfrom
fix/frozen-skillspector-ca-20261026

Conversation

@joshavant

@joshavant joshavant commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Refresh the maintained SkillSpector patch so frozen consumers select certifi 2026.10.23. The existing Responses adapter source patch remains intact. Add the maintainer changelog entry with credit to @joshavant.

The wheel and sdist URLs, SHA-256 values, and sizes match the official PyPI release metadata. Applied the complete patch to pinned SkillSpector source 95a52d89fa16f608f0b18ccee76b0918ea4b7eef: uv lock --locked passes, and uv 0.13.5 lock --upgrade-package certifi reproduces the patched lockfile byte for byte.

This updates the certificate bundle, not the Python runtime. Removing affected roots does not reject an explicitly supplied historical root. The contributor's installed-provider proof distinguishes root removal from the separate Python 3.12.16 key-rejection fix and retains a legitimate private-CA positive control. The registry still has no python:3.12.16-slim image, so image/runtime delivery remains a separate gap. No image publication or deployed-fleet remediation is claimed.

Validation: all Go tests and vet passed locally under low priority with two build jobs; docs-site build passed; independent P0–P3 review found no actionable findings. The rebuilt Go 1.27.3-compatible govulncheck reports no vulnerabilities. Final-head hosted checks remain required before landing. The original PR head also passed native amd64/arm64 runtime image verification and CI.

@clawsweeper

clawsweeper Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@clawsweeper clawsweeper Bot added clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 security-boundary 🚨 Merging this PR could weaken sandboxing, authorization, credentials, or sensitive data. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. labels Oct 26, 2026
@clawsweeper

clawsweeper Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Codex review: needs maintainer review before merge.

What this changes

This PR updates the maintained SkillSpector patch to lock certifi 2026.10.23 instead of 2026.6.17.

Example: A frozen SkillSpector installation connects to dv-g3b-emudhra.we-have-a-problem.com using default certificate trust.

  • Before: The supplied baseline provider trace reaches HTTP 405 with certifi 2026.6.17.
  • After: The certifi 2026.10.23 installation rejects the issuer; rejecting an explicitly supplied historical chain additionally requires the separately demonstrated CPython 3.12.16 runtime.

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A minimal, correct dependency-lock repair supported by installed-provider transport evidence; deployment and broader runtime remediation remain outside its claims.
Proof confidence 🐚 platinum hermit (4/6) Sufficient (logs): The updated body identifies the exact source and patch, reports actual frozen installation, and supplies retained output through the installed provider and real TLS transport: legitimate private-CA model success, certifi-only default-root rejection, and historical-root rejection with separately identified CPython 3.12.16; this satisfies the prior rank-up request without attributing runtime protection to certifi alone.
Patch quality 🦞 diamond lobster (5/6) No actionable review findings were identified.

Product

Kind: Bug fix · Worth it: Yes · Fix scope: Complete
User problem: Frozen scanner installations retain older certificate roots despite refreshed dependencies in newly resolved runtime environments.
Reason: The verified consumer uses the affected lock, and maintainer direction authorizes this narrow trust refresh without claiming a complete runtime or deployment repair.

Merge readiness

✅ Ready for maintainer review

Keep this PR open: the frozen-installation fix is absent from main, and the updated evidence resolves the prior proof request without revealing an actionable patch defect.

Priority: P2
Reviewed head: f35fb2679e1362ba99fa2768176513c7bd696ab6

Before merge

None.

Findings

None.

Agent review details

How this fits together

ClawScan maintains patches for pinned scanner sources; frozen consumers apply this patch before resolving the upstream lock, whose certificate bundle controls provider TLS trust.

flowchart TD
  A[Pinned SkillSpector source] --> B[Maintained ClawScan patch]
  B --> C[Frozen installer]
  C --> D[certifi certificate bundle]
  D --> E[Installed provider transport]
  E --> F[TLS verification]
  F --> G[Provider HTTP request or rejection]
Loading

Technical review

Best possible solution:

Land the focused frozen-lock refresh while retaining separate ownership of the Python runtime upgrade and image delivery.

Do we have a high-confidence way to reproduce the issue?

The pinned upstream lock and verified frozen installer establish the old certificate selection, while supplied baseline provider observations demonstrate affected-peer acceptance without a reviewer-run reproduction.

Is this the best way to solve the issue?

Updating the existing maintained patch is the smallest complete fix for frozen dependency selection and preserves the established adapter owner.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against 1e9057b6e8e1.

Provenance checked

Testing

Proof path: in-process harness.

Security

None.

Evidence

What I checked:

Likely related people:

  • Patrick Erichsen: Raw commit ddabd19 adds docker/clawscan-runtime/patches/skillspector-responses.patch:388 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: ddabd19f33f9; files: docker/clawscan-runtime/patches/skillspector-responses.patch)

Labels

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🦞 diamond lobster.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR.
  • remove rating: 🧂 unranked krab: Current PR rating is rating: 🐚 platinum hermit, so this older rating label is no longer current.
  • remove status: 📣 needs proof: Current PR status label is status: 👀 ready for maintainer look.

Label justifications:

  • P2: A focused certificate-trust correction for frozen scanner installations, with no demonstrated urgent user-facing outage.
  • merge-risk: 🚨 security-boundary: The dependency update changes which TLS peers can receive provider requests; supplied provider traces cover legitimate private trust and affected-peer rejection, and the maintainer-authored scope explicitly separates historical-root key rejection.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🦞 diamond lobster.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR.
  • proof: sufficient: Contributor real behavior proof is sufficient.

Rating scale

6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior.

Workflow

ClawSweeper edits this one comment on every review. Comment @clawsweeper re-review for a fresh review only. Repair and merge execution lanes are retired.

History

Review history (1 earlier review cycle)
  • reviewed 2026-10-26T06:05:06.798Z sha f35fb26 :: needs real behavior proof before merge. :: none

Reviewed October 26, 2026, 2:15 AM ET / 06:15 UTC (Revision 2).

@joshavant

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@clawsweeper clawsweeper Bot added clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. labels Oct 26, 2026

@steipete steipete left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The frozen lock reproduces byte for byte against the exact upstream source, and both artifact hashes match PyPI. Go tests, vet, vulnerability scan, docs build, and independent P0–P3 review passed. Approval retains the documented distinction between root removal and the still-separate Python runtime delivery.

@steipete
steipete merged commit 022143b into main Oct 26, 2026
12 of 13 checks passed
@steipete
steipete deleted the fix/frozen-skillspector-ca-20261026 branch October 26, 2026 12:40
@steipete

Copy link
Copy Markdown
Contributor

Validated the frozen SkillSpector patch against exact upstream 95a52d89fa16f608f0b18ccee76b0918ea4b7eef. Official PyPI wheel/sdist hashes and sizes match; uv 0.13.5 regenerates the patched lock byte for byte and accepts uv lock --locked.

All Go tests, vet, docs-site generation, and a Go 1.27.3-compatible govulncheck passed; no vulnerabilities were found. Independent review through P3 found no actionable findings. The final-head CI and native amd64/arm64 runtime verification are required for landing.

The certifi update removes affected default roots. It does not independently reject an operator-supplied historical root; patched Python remains a separate runtime-delivery requirement. The registry currently has no python:3.12.16-slim manifest, and no manual runtime image publication is part of this change.

Merged as 022143b39b3285d1ac24cce7fbb61c36f5207935. Post-merge CI passed Linux and macOS; CodeQL also passed. The automatic runtime workflow passed both native platform builds and completed manifest publication. No manual publication, project release, Git tag, or version bump was performed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 security-boundary 🚨 Merging this PR could weaken sandboxing, authorization, credentials, or sensitive data. P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants