<feed xmlns='http://www.w3.org/2005/Atom'>
<title>living-village.git/src/LivingVillage.Kernel.Tests/OccupationBiasTests.fs, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://git.somhairle.bid/living-village.git/atom?h=main</id>
<link rel='self' href='http://git.somhairle.bid/living-village.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/'/>
<updated>2026-09-22T08:16:40+00:00</updated>
<entry>
<title>feat(kernel): P31 step1 occupation dialogue response bias</title>
<updated>2026-09-22T08:16:40+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-22T08:16:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=6c2f180cc7c8315e32d88cbe5d44928d495fe473'/>
<id>urn:sha1:6c2f180cc7c8315e32d88cbe5d44928d495fe473</id>
<content type='text'>
- Occupation.biasResponse: deterministic pure remap over Sim.responseFor;
  no occupation = byte-identical pass-through (all intents x personalities).
  farmer AskHelp Refused-&gt;Helpful; fisher SmallTalk Reserved-&gt;Friendly;
  peddler SmallTalk Reserved-&gt;Bargaining; scholar Joke fully overridden to
  Reserved (documented total-override semantics, opposite of personality).
- Sim.responseFor made public (same pure function, reused as the base path).
- Sim.chooseDialogueWith: extracted body of chooseDialogue with an injectable
  respond function; chooseDialogue keeps identity semantics unchanged.
- Sim.appendAnnal made public for the upcoming story annal writes.
- 9 new kernel tests (92 -&gt; 101); performance digest unchanged.
</content>
</entry>
</feed>
