BunsDev’s River Oaks is a fantasy neighborhood simulation with an actual TypeSafe Jev adapter. The useful engineering lesson is narrower than its ambitious world: remote classification can suggest a resident’s next reaction without owning movement, schedules or collision safety.

I inspected commit f7d10aa4472a61adc7992817b7f02d1072cc2aef and ran the focused decision-engine suite: 11 tests passed using local rules and mocked HTTP. I did not call live Jev, run the browser world or compile Unreal. This is not a security audit or a model-quality evaluation.

Small decisions, bounded waiting

  • The adapter calls /v1/systemone with jev-1.13.0 and a fixed menu of immediate actions.
  • Each question names its target NPC; fictional role context is background, not a request to generate dialogue.
  • Default implementation limits are 32 questions per batch, four concurrent calls, and a 750 ms overall deadline.
  • A 15-batch-per-second start limit prevents an unbounded remote workload; tick-based rotation changes which residents get priority.
  • Missing, malformed, late or low-confidence results fall back to local rules, rather than accumulating stale retry work.

These numbers are code settings, not reproduced live latency or capacity results.

Local rules still have the final word

A blocked resident or nearby vehicle hazard overrides an accepted remote answer with stop. Daily schedules are generated separately. Responses label their origin as jev, local_rules or safety_override, so local fallback need not masquerade as model success.

The source also documents unfinished behavior: seek_shelter currently pauses a marker rather than guaranteeing a route to shelter. A valid action label is not the same as successfully performing the action. Typed output is not a correct decision.

What the tests do—and do not—show

  • The executed suite covers request batching, targeted questions, malformed-answer fallback, collision overrides and local HTTP behavior.
  • A synthetic timeout test preserves decisions for 500 agents while respecting its configured concurrency limit; this is not 500-agent Jev throughput.
  • Another mocked test checks that priority rotation changes the agents left on local fallback.
  • The README explicitly distinguishes local Python benchmarks from live inference and Unreal frame rate.

The pattern is worth borrowing: put remote judgment behind a deadline, keep a deterministic fallback, and expose decision provenance. Whether Jev actually improves NPC behavior—and at what cost and fallback rate—still needs a live evaluation.