Skip to content

fix(evolution): honor disabled planning rules in planner - #124

Draft
cursor[bot] wants to merge 2 commits into
mainfrom
cursor/critical-bug-investigation-2102
Draft

fix(evolution): honor disabled planning rules in planner#124
cursor[bot] wants to merge 2 commits into
mainfrom
cursor/critical-bug-investigation-2102

Conversation

@cursor

@cursor cursor Bot commented Jul 26, 2026

Copy link
Copy Markdown

Summary

  • skilllite evolution disable <rule_id> wrote "disabled": true and reported success, but PlanningRule had no disabled field and the planner kept injecting the rule into future plans/beliefs.
  • Persist PlanningRule.disabled, filter disabled rules from planner/beliefs consumption paths (not from seed merge loaders, to avoid write-back data loss), and add regression coverage.

Trigger scenario

  1. An evolved mutable rule exists in chat/prompts/rules.json.
  2. User runs skilllite evolution disable <rule_id> and sees success.
  3. Before this fix, the next chat/plan still loaded and injected that rule because serde dropped disabled and no consumer filtered it.

Task Linkage

  • Task ID: TASK-2026-072
  • Task folder: tasks/TASK-2026-072-evolution-disable-honored/
  • Contribution mode: core/maintainer (strict)

Injected Specs

  • spec/verification-integrity.md
  • spec/task-artifact-language.md
  • spec/architecture-boundaries.md
  • spec/structured-signal-first.md
  • spec/capability-gap-evolution.md
  • spec/rust-conventions.md
  • spec/testing-policy.md
  • spec/docs-sync.md (N/A content change; corrects existing disable semantics)

Validation Evidence

  • Commands executed:
    • cargo fmt --check
    • cargo test -p skilllite-core planning
    • cargo test -p skilllite-agent disabled
    • cargo test -p skilllite-core -p skilllite-agent -p skilllite-evolution --lib
    • cargo clippy -p skilllite-core -p skilllite-agent -p skilllite-evolution --all-targets -- -D warnings
    • python3 scripts/validate_tasks.py
  • Key results:
    • planning serde tests: 2 passed
    • agent disable-filter tests: passed
    • touched-crate lib tests: passed
    • clippy clean under -D warnings
    • task validation: 71 task directories checked

Docs Sync

  • EN changed: none
  • ZH mirrored: N/A
  • N/A reason: no command/env/docs surface change; behavior now matches the existing disable command contract

Regression Scope

  • Areas likely affected:
    • Planning rule deserialize/serialize
    • Task planner rule injection
    • Beliefs block derived from evolved rules
  • Explicit non-goals / follow-ups:
    • --workspace for disable/explain
    • Separate sweep findings: skill-add path traversal via SKILL.md name; MCP skill_name join without single-segment validation

Checklist

  • cargo fmt --check
  • Targeted clippy on changed crates with -D warnings
  • Relevant tests added/updated and passing
  • Docs sync N/A with reason
  • No secrets committed
Open in Web View Automation 

cursoragent and others added 2 commits July 26, 2026 11:08
evolution disable wrote disabled=true but PlanningRule dropped the
field and the planner kept injecting the rule. Persist the flag and
filter disabled rules from planner/beliefs consumption paths.

Co-authored-by: EXboy <EXboys@users.noreply.github.com>
Record validation commands, mark TASK-2026-072 done, and sync the board.

Co-authored-by: EXboy <EXboys@users.noreply.github.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