self-improve — ChaosEngine learning & adapting
Lean CE-native skill informed by Task Observer methodology (Eoghan Henn / rebelytics, CC BY 4.0 — see LICENSE and UPSTREAM.md). Not a blind clone.
When
- Primary: root-owned Learning Session after confirmed delivery.
- Secondary: explicit operator request mid-session.
- Not: every casual turn — keep always-on cost low.
Dual track
- Harness — skills, hooks, MemPalace, Graphify, installer/doctor.
- Product — enhancements for the product under development (queued issues).
Details: references/observation-taxonomy.md. Product track: references/product-track.md (product issues/evals + ChaosGauge link; CLI/doctor/silent-verify over essay tickets). Activation: references/activation.md. Adopt/reject research: references/research-adopt-reject.md. Roadmap: ../../references/self-improve-master-plan.md. Research/explore isolation (harness): ../../references/context-firewall.md.
How (wraps learning.py)
- Classify each finding (harness vs product; category allow-list).
- Write minimal fields only:
category,title,lesson,proposedChange,benefit,estimatedTokens. - Queue through
learning.pyso privacy gates + GitHub filing invariants hold. - Never auto-install skill patches; stage proposals for human/CI review.
- "Nothing durable" is a valid outcome.
Example:
cat > /tmp/learning-candidate.json <<'EOF'
{
"category": "tooling",
"title": "Doctor fix-next missing for Graphify",
"lesson": "Operators lacked a single repair command after a store probe failed",
"proposedChange": "Surface repair --component graphify in doctor fix-next",
"benefit": "Faster store repair on adopter hosts",
"estimatedTokens": 120
}
EOF
python3 .chaos-engine/learning.py queue \
--state .chaos-engine-state/learning \
--upstream Owner/ExampleRepo \
--candidate /tmp/learning-candidate.json
Metrics / verify (zero-LLM)
python3 .chaos-engine/learning.py metrics
python3 .chaos-engine/silent_verify.py session-start-budget
python3 .chaos-engine/retrieve.py heuristics --top 3
python3 .chaos-engine/significance.py list
python3 .chaos-engine/skill_compress_audit.py audit --skill self-improve
python3 .chaos-engine/meta_optimize.py review
python3 .chaos-engine/draft_skill_pr.py status
SessionStart stays locator-only; prefer CLI over MCP for the same job.
Mid-session: mark significant friction only via significance.py (soft
fail/deny hooks already write tiny state notes) — never Task Observer.
Skill bodies: skill_compress_audit.py proposes compress diffs only; never auto-apply.
Periodic: meta_optimize.py review (offline cadence — not continuous).
Draft skill PRs: draft_skill_pr.py opt-in only (default OFF; never auto-merge).
See meta-optimize and
draft-skill-pr.
Local smoke
# From a temp project with ChaosEngine installed, or the source tree:
python3 -c "from pathlib import Path; assert Path('chaos-engine/skills/self-improve/SKILL.md').is_file()"
# Queue one harness + one product candidate (privacy-safe fixtures) via learning.py
# then confirm queue.json grew by two items without secrets/paths.