From 0539bba17c260f6a4b51d3cefddac0ff448c19bc Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Tue, 22 Sep 2026 16:24:19 +0800 Subject: feat(kernel): P31 step2 story stage state machine - Occupation.Story: three-segment arc per occupation (accept task -> visit households -> conclude), driven one stage per player dialogue with day gates derived from the same splitmix pattern as the daily task pool (start day = hash(seed ^ storySeed, day 0) mod 3 + 2, range [2,4]). - relationMeanToPlayer: decayed valence mean over acquainted NPCs only (same decay formula as Sim.relationMatrix); no acquaintances = 0. - Three endings (warm/plain/distant) chosen by deterministic thresholds (>=0.3 / >=0.0 / <0); ending text is fixed at the concluding dialogue. - onDialogue returns (state, summary text option) for the caller to write into the yearbook; StoryStage itself is unchanged (0..3) and already roundtrips through the existing v3 occupation segment. - 14 new kernel tests (101 -> 115); performance digest unchanged. --- src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj | 1 + 1 file changed, 1 insertion(+) (limited to 'src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj') diff --git a/src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj b/src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj index 6924012..1a36ea7 100644 --- a/src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj +++ b/src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj @@ -15,6 +15,7 @@ + -- cgit v1.2.3