Core types: SystemState и Plan #4

Closed
opened 2026-06-15 13:21:49 +02:00 by yorunikakeru · 0 comments
Owner

Определить Haskell-типы для FFI-контрактов между Rust и Haskell ядром.

Контракты

-- Rust -> Haskell (через FFI)
data SystemState = SystemState
  { runningProcesses :: [Text]
  , activeServices   :: [Text]
  , powerProfile     :: Text
  } deriving (Generic, FromJSON, ToJSON)

-- Haskell -> Rust (через FFI)
newtype Plan = Plan { steps :: [(Action, Undo)] }
  deriving (Generic, ToJSON, FromJSON)

data PlanError
  = ConflictingActions Text
  | UnknownService Text
  | InternalError Text
  deriving (Generic, ToJSON, Show)

Где живут

Модуль Planner.Types в src/.
Форматы JSON версионированные (поле version).

Acceptance

  • Типы компилируются
  • Round-trip aeson тесты для SystemState и Plan
Определить Haskell-типы для FFI-контрактов между Rust и Haskell ядром. ## Контракты ```haskell -- Rust -> Haskell (через FFI) data SystemState = SystemState { runningProcesses :: [Text] , activeServices :: [Text] , powerProfile :: Text } deriving (Generic, FromJSON, ToJSON) -- Haskell -> Rust (через FFI) newtype Plan = Plan { steps :: [(Action, Undo)] } deriving (Generic, ToJSON, FromJSON) data PlanError = ConflictingActions Text | UnknownService Text | InternalError Text deriving (Generic, ToJSON, Show) ``` ## Где живут Модуль `Planner.Types` в `src/`. Форматы JSON версионированные (поле `version`). ## Acceptance - Типы компилируются - Round-trip aeson тесты для SystemState и Plan
Sign in to join this conversation.
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#4
No description provided.