packages feed

shikumi-trace 0.3.0.2 → 0.3.1.0

raw patch · 4 files changed

+65/−10 lines, 4 filesdep +shikumi-testingdep ~baikaidep ~shikumidep ~shikumi-cachePVP ok

version bump matches the API change (PVP)

Dependencies added: shikumi-testing

Dependency ranges changed: baikai, shikumi, shikumi-cache, shikumi-trace

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -2,6 +2,14 @@  ## Unreleased +## 0.3.1.0 — 2026-11-02++### Changed++- Upgrade `mori://shinzui/baikai/packages/baikai` to `>=0.10.0.0 && <0.11`.++- Update internal dependency bounds for the breaking `shikumi 0.5.0.0` release.+ ## 0.3.0.2 — 2026-10-16  ### Changed
shikumi-trace.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.4 name: shikumi-trace-version: 0.3.0.2+version: 0.3.1.0 synopsis:   Hierarchical tracing, observability, and deterministic replay for shikumi (EP-7) @@ -58,7 +58,7 @@    build-depends:     aeson >=2.2 && <2.3,-    baikai >=0.8.0.0 && <0.9,+    baikai >=0.10.0.0 && <0.11,     base >=4.20 && <5,     bytestring >=0.11 && <0.13,     containers >=0.6 && <0.9,@@ -67,8 +67,8 @@     generic-lens >=2.2 && <2.4,     lens ^>=5.3,     scientific >=0.3 && <0.4,-    shikumi ^>=0.4.1.1,-    shikumi-cache ^>=0.2.0.2,+    shikumi ^>=0.5.0.0,+    shikumi-cache ^>=0.2.1.0,     text ^>=2.1,     time >=1.12 && <1.17,     vector >=0.13 && <0.14,@@ -83,7 +83,7 @@    build-depends:     base,-    shikumi-trace ^>=0.3.0.2,+    shikumi-trace ^>=0.3.1.0,  test-suite shikumi-trace-test   import: common-options@@ -95,22 +95,24 @@     -with-rtsopts=-N    other-modules:+    DecisionReplaySpec     ObservationSpec     TraceFixtures    build-depends:     QuickCheck,     aeson,-    baikai >=0.8.0.0 && <0.9,+    baikai >=0.10.0.0 && <0.11,     base,     bytestring,     containers,     effectful,     generic-lens,     lens ^>=5.3,-    shikumi ^>=0.4.1.1,-    shikumi-cache ^>=0.2.0.2,-    shikumi-trace ^>=0.3.0.2,+    shikumi ^>=0.5.0.0,+    shikumi-cache ^>=0.2.1.0,+    shikumi-testing,+    shikumi-trace ^>=0.3.1.0,     tasty,     tasty-hunit,     tasty-quickcheck,
+ test/DecisionReplaySpec.hs view
@@ -0,0 +1,44 @@+module DecisionReplaySpec (tests) where++import Data.Map.Strict qualified as Map+import Data.Vector qualified as V+import Effectful (runEff)+import Effectful.Error.Static (runErrorNoCallStack)+import Effectful.Prim (runPrim)+import Shikumi.Decision+import Shikumi.Decision.Setting+import Shikumi.Effect.Time (runTime)+import Shikumi.Error (ShikumiError)+import Shikumi.Program+import Shikumi.Routing+import Shikumi.Schema (field)+import Shikumi.Testing.DecisionFixtures+import Shikumi.Testing.StubLLM (runStubLLM)+import Shikumi.Testing.SystemOne+import Shikumi.Trace (runTrace, tracedLLM)+import Shikumi.Trace.Replay (runLLMReplay)+import Shikumi.Trace.Store (replayIndex)+import Test.Tasty+import Test.Tasty.HUnit++tests :: TestTree+tests =+  testGroup+    "Decision replay"+    [ testCase "new settings derive a different answer from a recorded response" $ do+        let program = Predict assessmentSig emptyParams+            input = Ticket (field "x")+            responder = systemOneResponder (const [("urgent", FieldNoul (NoulEvidence 0.6)), ("severity", FieldScore (ScoreEvidence (V.fromList [0.1, 0.3, 0.6]) Nothing)), ("category", FieldChoice (ChoiceEvidence (Map.fromList [("billing", 0.2), ("technical", 0.8)]) Nothing))])+        recorded <- runEff . runPrim . runTime . runErrorNoCallStack @ShikumiError . runRouting (systemOneModel "jev-latest") . runTrace . runStubLLM responder . tracedLLM . routeLLM $ runProgram program input+        case recorded of+          Left err -> assertFailure (show err)+          Right (before, tree) -> case replayIndex tree of+            Left err -> assertFailure (show err)+            Right index -> do+              replayed <-+                runEff . runErrorNoCallStack @ShikumiError . runRouting (systemOneModel "jev-latest") . runLLMReplay index . routeLLM $+                  runProgram (mapParams (setDecisionSetting "severity" (ScoreSetting [0.5, 1.6])) program) input+              case replayed of+                Left err -> assertFailure (show err)+                Right after -> assertBool "cuts affect replayed level" (after /= before)+    ]
test/Main.hs view
@@ -15,6 +15,7 @@ import Data.Text qualified as T import Data.Time.Clock (UTCTime, addUTCTime) import Data.Vector qualified as V+import DecisionReplaySpec qualified import Effectful (Eff, runEff, type (:>)) import Effectful.Error.Static (runErrorNoCallStack) import Effectful.Prim (runPrim)@@ -101,7 +102,7 @@   defaultMain $     testGroup       "shikumi-trace"-      [ObservationSpec.tests, spikeTests, treeTests, storeTests, replayTests, e2eTests, nodeTests, correlateTests, feedbackTests]+      [DecisionReplaySpec.tests, ObservationSpec.tests, spikeTests, treeTests, storeTests, replayTests, e2eTests, nodeTests, correlateTests, feedbackTests]  -- --------------------------------------------------------------------------- -- M0