Sprint E — remaining harness seams
Closes the DeepSeek-harness gap items beyond SessionEvent / providers / Trajectory.
Added
- ConfigOverlay (
config_overlay.py) — stacked defaults → profile → tenant → session; secret-like keys rejected - EffectJournal (
effects.py) — reversible tool/skill effects with LIFO undo + optional JSONL audit - Skill dependency graph (
skill_graph.py) —depends_ontopological load order; cycle / missing-dep detection - CodeModeRunner (
code_mode.py) — sandboxed PTC / code-mode (tools.<name>(**kwargs)only; no imports; optional HITL)
Consumers
- Aether: SkillLoader load order, ToolExecutor journal +
undo_last(),aether.code_modesoft bridge
fivepanelhat/Aether#57
CAT
- Local-first, no secrets in overlays / effect payloads / code-mode traces
- Code mode AST allowlist; fail-closed on imports and dunder access
Tests
tests/test_sprint_e_seams.py
What's Changed
- docs: consumer pin example → v0.5.9 by @fivepanelhat in #30
- feat: Sprint E — ConfigOverlay, EffectJournal, skill deps, Code Mode (v0.5.10) by @fivepanelhat in #31
Full Changelog: v0.5.9...v0.5.10