diff --git a/docs/superpowers/plans/2026-08-20-concurrent-runtime.md b/docs/superpowers/plans/2026-08-20-concurrent-runtime.md index 4b16e06..90ba0d4 100644 --- a/docs/superpowers/plans/2026-08-20-concurrent-runtime.md +++ b/docs/superpowers/plans/2026-08-20-concurrent-runtime.md @@ -160,7 +160,7 @@ import Control.Concurrent.STM , writeTChan ) import Data.Aeson (Value) -import Data.IORef (IORef, atomicModifyIORef', newIORef) +import Data.IORef (atomicModifyIORef', newIORef) import HomeAssistant.Controller (HASSEff (..), Service) import Network.WebSockets (Connection) @@ -196,7 +196,7 @@ mkCallIdGen start = do Then in `src/HomeAssistant/Runtime.hs`: - Delete the local `newtype CallIdGen`/`mkCallIdGen` definitions (lines 105–110). -- Add import: `import HomeAssistant.Runtime.Bus (Bus(..), CallIdGen(..), mkCallIdGen)`. +- Add import: `import HomeAssistant.Runtime.Bus (CallIdGen(..), mkCallIdGen)`. - Export list stays the same (`CallIdGen`, `mkCallIdGen` now re-exported from Bus). - [ ] **Step 4: Regenerate the nix derivation** @@ -241,7 +241,7 @@ git commit -m "Add Runtime.Bus with channel-based effect interpreter" ```haskell module ConnectionSpec (spec) where -import Data.Aeson (Value, object, (.=)) +import Data.Aeson (object, (.=)) import Data.Text (Text) import HomeAssistant.Controller (Service (..)) import HomeAssistant.Runtime.Connection (encodeService) @@ -657,15 +657,15 @@ spec = describe "supervised" $ do module BackoffProp (spec) where import Data.Time (NominalDiffTime) -import Hedgehog import qualified Hedgehog.Gen as Gen import qualified Hedgehog.Range as Range import HomeAssistant.Runtime.Supervisor (Backoff (..), backoffDelay) -import Test.Hspec (Spec, describe) +import Test.Hspec (Spec, describe, it) +import Test.Hspec.Hedgehog (hedgehog, forAll, (===)) spec :: Spec spec = describe "backoffDelay" $ - prop "doubles from base, clamped at cap" $ property $ do + it "doubles from base, clamped at cap" $ hedgehog $ do baseD <- forAll $ Gen.double (Range.constant 0.0001 10) ratio <- forAll $ Gen.double (Range.constant 1 100) let base = realToFrac baseD :: NominalDiffTime @@ -676,7 +676,10 @@ spec = describe "backoffDelay" $ mapM_ (\(a, b) -> b === min cap (a * 2)) (zip delays (drop 1 delays)) ``` -`test/Main.hs`: add imports and run all five specs. Cabal: library `exposed-modules` += `HomeAssistant.Runtime.Supervisor`, library `build-depends` += `annotated-exception`; test `other-modules` += `SupervisorSpec, BackoffProp`, test `build-depends` += `hedgehog, annotated-exception, time`. +(`hspec-hedgehog` provides the `hedgehog` bridge — plain hedgehog 1.5 has +no hspec integration — and re-exports `forAll` and `(===)`.) + +`test/Main.hs`: add imports and run all five specs. Cabal: library `exposed-modules` += `HomeAssistant.Runtime.Supervisor`, library `build-depends` += `annotated-exception`; test `other-modules` += `SupervisorSpec, BackoffProp`, test `build-depends` += `hedgehog, hspec-hedgehog, annotated-exception, time`. - [ ] **Step 2: Run tests to verify they fail**