feat(core): implement plan :: IRDocument -> SystemState -> Either PlanError Plan #10

Merged
yorunikakeru merged 21 commits from feat/pure-core-plan-function into main 2026-06-17 15:28:31 +02:00
Owner

Closes #5

Что сделано

  • Реализована чистая функция plan в Planner.Core: оценка условий профилей против SystemState, разрешение конфликтов сервисных действий по приоритету, вычисление undo для каждого шага
  • evalCondition обрабатывает ProcessCondition (проверка runningProcesses), SystemCondition (всегда False — не наблюдаемо из SystemState), And, Not
  • Конфликт при равном приоритете → Left ConflictingActions; более высокий приоритет побеждает
  • validateServiceRefs проверяет, что каждый ServiceAction ссылается на задекларированный сервис
  • Undo сервисных действий инвертирует enable↔disable; undo power-действий восстанавливает текущий powerProfile из SystemState
  • 25 юнит-тестов в новом Planner.CoreSpec

Проверка

  • cabal test — 25/25 тестов проходят
  • nix flake check — все проверки проходят
  • nix fmt — форматирование применено
Closes #5 ## Что сделано - Реализована чистая функция `plan` в `Planner.Core`: оценка условий профилей против `SystemState`, разрешение конфликтов сервисных действий по приоритету, вычисление undo для каждого шага - `evalCondition` обрабатывает `ProcessCondition` (проверка `runningProcesses`), `SystemCondition` (всегда `False` — не наблюдаемо из `SystemState`), `And`, `Not` - Конфликт при равном приоритете → `Left ConflictingActions`; более высокий приоритет побеждает - `validateServiceRefs` проверяет, что каждый `ServiceAction` ссылается на задекларированный сервис - Undo сервисных действий инвертирует enable↔disable; undo power-действий восстанавливает текущий `powerProfile` из `SystemState` - 25 юнит-тестов в новом `Planner.CoreSpec` ## Проверка - `cabal test` — 25/25 тестов проходят - `nix flake check` — все проверки проходят - `nix fmt` — форматирование применено
refactor(core): trust validated service actions
All checks were successful
CI / linux (pull_request) Successful in 3m18s
1f3adc5e7d
docs: require STAN verification
All checks were successful
CI / linux (pull_request) Successful in 2m19s
e201069d1c
doc: use stan --no-default instead of just stan
All checks were successful
CI / linux (pull_request) Successful in 2m13s
6e237da913
refactor(core): extract powerStep helper, simplify resolvePowerActions
All checks were successful
CI / linux (pull_request) Successful in 2m1s
3a0e787f75
choire: ignore .hie
All checks were successful
CI / linux (pull_request) Successful in 2m8s
b26e345d78
Sign in to join this conversation.
No reviewers
No labels
core
ffi
haskell
rust
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
FrogOS/Planner!10
No description provided.