1.0.5
Fixed (#367)
skill endбольше не падает «skill is not found or not enabled for agent», если навык удалён/отключён междуbeginиend(#367):endActionгонял общую с begin/activate валидациюlookupEnabledForAgentДО поиска running-run’а, хотя end — телеметрия, а не гейт (комментарий кода прямо обещает «тихо возвращаем echo… не ошибка, чтобы не ломать turn LLM»). ТеперьErrSkillNotEnabledне фатален: run ищется поSkillRun.SkillNameи закрывается черезFinishSkillRun; для удалённого навыка run удаляется FK-каскадом (миграция 086:skill_id REFERENCES skills ON DELETE CASCADE, в SQLite включёнforeign_keys(1), PG-миграция паритетна) — возвращается тихий echo с run_id=0; прочие ошибки store фатальны, как раньше. Выяснено при реализации: гипотеза «DeleteSkill оставляет running-раны висеть до orphan-маркера» неверна — каскад удаляет их в обеих СУБД, отдельная зачистка вdeleteActionне нужна. Тесты:TestSkillTool_End_DeletedSkill_LenientEcho,TestSkillTool_End_DisabledSkill_ClosesRunByName,TestSkillTool_End_NotEnabled_NoRun_EchoOK.