Skip to content

Epic 7.2: SkillGuard Quality Gates + Blocklist Hardening#55

Merged
Deepfreezechill merged 6 commits into
mainfrom
epic/7.2-skillguard
Apr 7, 2026
Merged

Epic 7.2: SkillGuard Quality Gates + Blocklist Hardening#55
Deepfreezechill merged 6 commits into
mainfrom
epic/7.2-skillguard

Conversation

@Deepfreezechill

Copy link
Copy Markdown
Owner

Epic 7.2: SkillGuard Quality Gates

What

Pre-persist quality gate ensuring every skill mutation passes ReviewGate BEFORE storage. Hardened AST blocklist with 7 new categories.

Changes

  • skill_guard.py (120 lines): SkillGuard class with guarded_evolve(), guarded_save(), guarded_reactivate()
  • strategies.py: All 3 persist paths (evolve_fix L121, evolve_derived L255, evolve_captured L363) now go through SkillGuard
  • blocklist.yml: +70 lines — os.exec* (8 variants), os.spawn* (8 variants), breakpoint, shutil.rmtree/move/copytree, os.remove/unlink/rmdir, os.chmod/chown
  • evolver.py: SkillEvolver auto-creates SkillGuard in constructor

Metrics

  • 20 new tests (2,040 total, 0 failures)
  • 7 new blocklist categories covering 30+ dangerous API patterns
  • All 3 evolution pipelines now guarded

…d wraps ReviewGate+Store for pre-persist review - Wire guarded_evolve/save into all 3 evolution strategies - Add 7 blocklist categories: os.exec*, os.spawn*, breakpoint, shutil, os.remove, os.chmod - 20 new tests (2040 total passed)
@github-actions

github-actions Bot commented Apr 7, 2026

Copy link
Copy Markdown

🔒 Phase Gate Enforcement — 🚫 FAIL

Check Result Detail
Issue linkage No linked issues found. PR must contain "Closes #N", "Fixes #N", or "Resolves #N".

Verdict: FAIL
Timestamp: 2026-04-07T15:41:44.791Z
Run: View workflow run


How to fix: Ensure all prerequisite phases are complete, or add emergency:bypass label with a ## Bypass Reason section in the PR body.

Brian Krafft added 5 commits April 7, 2026 07:57
…CAL, API fix - Check guard result in all 3 strategies - return None + cleanup on rejection - Elevate getattr to CRITICAL (blocklist bypass vector) - Fix load_record API mismatch in guarded_reactivate - Add bare-name targets for alias bypass (from os import execvp) - Add 4 new blocklist categories: pty, code, http exfil, marshal/runpy - Add 10 adversarial tests (alias bypass, extended blocklist, guard rejection) - 2049 tests passing
…rs, os.* import rule - evolve_fix snapshots parent dir BEFORE edit, restores on rejection (P0) - evolve_derived/captured rmtree on rejection (already done) - Add bare names for remove/unlink/rmdir/chmod/chown (alias bypass) - Add os.* Import rule to catch from os import star - 2049 tests passing
…s_bypass CRITICAL pattern (eval, exec, __import__, compile, getattr, setattr, globals, locals, open) - Add builtins.* HIGH Import pattern - 3 adversarial tests for builtins bypass vectors - 2052 tests passing
…ules - Add __builtins__ Attribute CRITICAL (eval, exec, __import__, __dict__) - Add sys.modules CRITICAL Attribute + sys.* Import HIGH - Deep rollback with rglob for subdirectory files in evolve_fix - Add Import rules for runpy, signal, webbrowser - Add bare-name targets for run_module, run_path - 5 new adversarial tests (2056 total, 0 failures)
@Deepfreezechill Deepfreezechill merged commit 199a5b4 into main Apr 7, 2026
0 of 5 checks passed
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