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 +8/−0
- shikumi-trace.cabal +11/−9
- test/DecisionReplaySpec.hs +44/−0
- test/Main.hs +2/−1
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