Skip to content

Refactor Island runtime boundaries#4

Merged
dawsonblock merged 22 commits into
mainfrom
cursor/island-product-boundary-07c1
Mar 19, 2026
Merged

Refactor Island runtime boundaries#4
dawsonblock merged 22 commits into
mainfrom
cursor/island-product-boundary-07c1

Conversation

@dawsonblock
Copy link
Copy Markdown
Owner

@dawsonblock dawsonblock commented Mar 19, 2026

Summary

  • add baseline docs and repo hygiene for the Island runtime, including ignored/runtime var/ paths and removal of committed backend artifacts
  • reorganize Source/MyProject into Core, Island, AI, Dialogue, and Social domains with module-relative includes
  • make AIslandGameMode the run authority, remove tower-owned objective text, route extraction success/player death through the game mode, and clarify spawn-pressure helpers
  • harden URfsnNpcClientComponent with incremental SSE parsing, stale-request guards, and offline bark fallback
  • isolate horror/shooter code into disabled-by-default plugins and remove variant include paths from the main module
  • repackage the Python backend under RFSN_NPC_AI/Python/app/ with compatibility shims for existing tests/entrypoints
  • fix the confirmed Python learner persistence + banned-action contract defects, replace the streaming sentence tokenizer, and restore tokenizer compatibility expected by operational tests
  • reduce reliance on root-level compatibility shims by switching moved app/ modules to package-relative imports
  • delete stale unreferenced demo/debug/verification scripts with hard-coded local paths or dead endpoints, and clarify that Docs/architecture/baseline.md is historical
  • rewrite the root README and add runtime/offline/service-contract/test-matrix docs around the Island vertical slice

Testing

  • cd RFSN_NPC_AI/Python && python3 -m pytest tests/test_bandit_learner.py -q
  • cd RFSN_NPC_AI/Python && python3 -m pytest tests/test_fidelity.py tests/test_tokenizer_boundaries.py tests/test_flush_semantics.py -q
  • cd RFSN_NPC_AI/Python && python3 -m pytest tests/test_learning.py tests/test_learning_policy.py tests/test_learning_integration.py tests/test_world_model.py tests/test_world_model_integration.py tests/test_integration.py tests/test_operational.py -q
  • cd RFSN_NPC_AI/Python && python3 -m pytest tests/test_bandit_learner.py tests/test_fidelity.py tests/test_tokenizer_boundaries.py tests/test_flush_semantics.py tests/test_streaming_fixes.py tests/test_learning.py tests/test_learning_policy.py tests/test_learning_integration.py tests/test_world_model.py tests/test_world_model_integration.py tests/test_integration.py tests/test_operational.py -q
  • targeted py_compile pass over moved/shimmed Python files

Notes

  • local Unreal compile/editor validation is still required because this cloud environment does not provide the Unreal toolchain
  • no variant content folders existed under Content/ in this repo snapshot, so only source/plugin isolation was required in this turn
  • final combined backend regression result on this branch: 129 passed, 1 skipped
  • remaining broad code warning seen in Python tests: FastAPI on_event deprecation warnings in app/api/main.py
Open in Web Open in Cursor 

Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 19, 2026

Important

Review skipped

Too many files!

This PR contains 300 files, which is 150 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d384bfff-41e3-4312-bea6-b2ac22d5a124

📥 Commits

Reviewing files that changed from the base of the PR and between af1d599 and 4e16336.

📒 Files selected for processing (300)
  • .gitignore
  • Docs/ai/current_backend_state.md
  • Docs/ai/offline_mode.md
  • Docs/ai/service_contract.md
  • Docs/architecture/baseline.md
  • Docs/architecture/runtime_spine.md
  • Docs/gameplay/current_vertical_slice.md
  • Docs/gameplay/vertical_slice.md
  • Docs/operations/test_matrix.md
  • Plugins/IslandVariantHorror/IslandVariantHorror.uplugin
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/IslandVariantHorror.Build.cs
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorCharacter.cpp
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorGameMode.cpp
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorNPC.cpp
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorPlayerController.cpp
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/UI/HorrorUI.cpp
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorCharacter.h
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorGameMode.h
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorNPC.h
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorPlayerController.h
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/UI/HorrorUI.h
  • Plugins/IslandVariantShooter/IslandVariantShooter.uplugin
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/IslandVariantShooter.Build.cs
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/EnvQueryContext_Target.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterAIController.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterNPC.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterNPCSpawner.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterStateTreeUtility.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/ShooterCharacter.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/ShooterGameMode.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/ShooterPlayerController.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/UI/ShooterBulletCounterUI.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/UI/ShooterUI.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/Weapons/ShooterPickup.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/Weapons/ShooterProjectile.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/Weapons/ShooterWeapon.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/Weapons/ShooterWeaponHolder.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/AI/EnvQueryContext_Target.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/AI/ShooterAIController.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/AI/ShooterNPC.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/AI/ShooterNPCSpawner.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/AI/ShooterStateTreeUtility.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/ShooterCharacter.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/ShooterGameMode.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/ShooterPlayerController.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/UI/ShooterBulletCounterUI.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/UI/ShooterUI.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/Weapons/ShooterPickup.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/Weapons/ShooterProjectile.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/Weapons/ShooterWeapon.h
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/Weapons/ShooterWeaponHolder.h
  • README.md
  • RFSN_NPC_AI/.gitignore
  • RFSN_NPC_AI/Python/README.md
  • RFSN_NPC_AI/Python/action_scorer.py
  • RFSN_NPC_AI/Python/app/__init__.py
  • RFSN_NPC_AI/Python/app/api/__init__.py
  • RFSN_NPC_AI/Python/app/api/main.py
  • RFSN_NPC_AI/Python/app/dialogue/__init__.py
  • RFSN_NPC_AI/Python/app/dialogue/action_scorer.py
  • RFSN_NPC_AI/Python/app/dialogue/intent_extraction.py
  • RFSN_NPC_AI/Python/app/dialogue/multi_npc.py
  • RFSN_NPC_AI/Python/app/dialogue/ollama_client.py
  • RFSN_NPC_AI/Python/app/dialogue/prompts.py
  • RFSN_NPC_AI/Python/app/dialogue/runtime_state.py
  • RFSN_NPC_AI/Python/app/dialogue/state_machine.py
  • RFSN_NPC_AI/Python/app/dialogue/world_model.py
  • RFSN_NPC_AI/Python/app/learning/__init__.py
  • RFSN_NPC_AI/Python/app/learning/bandit_core.py
  • RFSN_NPC_AI/Python/app/learning/bandit_learner.py
  • RFSN_NPC_AI/Python/app/learning/learning_contract.py
  • RFSN_NPC_AI/Python/app/learning/npc_action_bandit.py
  • RFSN_NPC_AI/Python/app/learning/policy_adapter.py
  • RFSN_NPC_AI/Python/app/learning/reward_model.py
  • RFSN_NPC_AI/Python/app/learning/reward_shaping.py
  • RFSN_NPC_AI/Python/app/learning/schemas.py
  • RFSN_NPC_AI/Python/app/learning/trainer.py
  • RFSN_NPC_AI/Python/app/memory/memory_consolidator.py
  • RFSN_NPC_AI/Python/app/memory/memory_governance.py
  • RFSN_NPC_AI/Python/app/memory/memory_manager.py
  • RFSN_NPC_AI/Python/app/memory/semantic_memory.py
  • RFSN_NPC_AI/Python/app/safety/__init__.py
  • RFSN_NPC_AI/Python/app/safety/sanitize.py
  • RFSN_NPC_AI/Python/app/safety/security.py
  • RFSN_NPC_AI/Python/app/safety/security_boundaries.py
  • RFSN_NPC_AI/Python/app/telemetry/__init__.py
  • RFSN_NPC_AI/Python/app/telemetry/event_recorder.py
  • RFSN_NPC_AI/Python/app/telemetry/hot_config.py
  • RFSN_NPC_AI/Python/app/telemetry/observability.py
  • RFSN_NPC_AI/Python/app/telemetry/prometheus_metrics.py
  • RFSN_NPC_AI/Python/app/telemetry/structured_logging.py
  • RFSN_NPC_AI/Python/app/telemetry/version.py
  • RFSN_NPC_AI/Python/app/voice/__init__.py
  • RFSN_NPC_AI/Python/app/voice/chatterbox_server.py
  • RFSN_NPC_AI/Python/app/voice/kokoro_tts.py
  • RFSN_NPC_AI/Python/app/voice/mlx_tts.py
  • RFSN_NPC_AI/Python/app/voice/streaming_engine.py
  • RFSN_NPC_AI/Python/app/voice/streaming_pipeline.py
  • RFSN_NPC_AI/Python/app/voice/streaming_voice_system.py
  • RFSN_NPC_AI/Python/app/voice/xvasynth_engine.py
  • RFSN_NPC_AI/Python/bandit_learner.py
  • RFSN_NPC_AI/Python/chatterbox_server.py
  • RFSN_NPC_AI/Python/data/audit/state_audit.jsonl
  • RFSN_NPC_AI/Python/data/policy/turn_logs.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_0d4617aefe32d857.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_11b8d990a2039a97.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_188d66fd6b92fc97.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_18ba953978166df4.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_1c4db94a8e06096b.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_1e1da0fe7140fea1.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_215dde85b4c16459.json
  • RFSN_NPC_AI/Python/data/recordings/recording_215dde85b4c16459.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_23694ecffe722445.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_2bf2e6e8e298f107.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_308d109fd8309484.json
  • RFSN_NPC_AI/Python/data/recordings/recording_308d109fd8309484.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_3228371c1ed4078c.json
  • RFSN_NPC_AI/Python/data/recordings/recording_3228371c1ed4078c.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_3917068e76cc93b9.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_4048fb15145947db.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_4a07ff5a6d3cb697.json
  • RFSN_NPC_AI/Python/data/recordings/recording_4a07ff5a6d3cb697.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_4e3ecd976152a3e6.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_60df30a717fbf8c1.json
  • RFSN_NPC_AI/Python/data/recordings/recording_60df30a717fbf8c1.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_61b7918253765157.json
  • RFSN_NPC_AI/Python/data/recordings/recording_61b7918253765157.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_647d73137a220039.json
  • RFSN_NPC_AI/Python/data/recordings/recording_647d73137a220039.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_6495d9828b824098.json
  • RFSN_NPC_AI/Python/data/recordings/recording_6495d9828b824098.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_6618380f9cf09fda.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_6c3ab6b20aeb3f34.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_6e046e70dc7c0edf.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_6fe3f69b26694664.json
  • RFSN_NPC_AI/Python/data/recordings/recording_6fe3f69b26694664.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_797105fa382b403f.json
  • RFSN_NPC_AI/Python/data/recordings/recording_797105fa382b403f.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_7aa51b2b88c72f4e.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_7dfa80960d358ed1.json
  • RFSN_NPC_AI/Python/data/recordings/recording_7dfa80960d358ed1.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_827caaa3a6ad203a.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_833660b3a75c3044.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_8a4bafab8eb08dc5.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_8b1218ae38be8112.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_95ec025bd3b6ac72.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_a8d20440840595af.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_a8e9ab159206ed05.json
  • RFSN_NPC_AI/Python/data/recordings/recording_a8e9ab159206ed05.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_a8fd41bbd623a064.json
  • RFSN_NPC_AI/Python/data/recordings/recording_a8fd41bbd623a064.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_ac713998c126c403.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_b152902bc1237b3c.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_b8caa080ecc13f0e.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_c226f86aa28f4ca3.json
  • RFSN_NPC_AI/Python/data/recordings/recording_c226f86aa28f4ca3.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_c95959ac887fc487.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_cc827a4ac9d33715.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_d4c3609768d64478.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_e5a1da9badf679d5.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_e9b479085ce56d0f.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_f29ac12723f5bbb7.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_faaa385a635b5b78.json
  • RFSN_NPC_AI/Python/data/recordings/recording_faaa385a635b5b78.jsonl
  • RFSN_NPC_AI/Python/data/recordings/recording_test_session.json
  • RFSN_NPC_AI/Python/data/recordings/recording_test_session.jsonl
  • RFSN_NPC_AI/Python/debug_tokenizer.py
  • RFSN_NPC_AI/Python/event_recorder.py
  • RFSN_NPC_AI/Python/hot_config.py
  • RFSN_NPC_AI/Python/intent_extraction.py
  • RFSN_NPC_AI/Python/kokoro_tts.py
  • RFSN_NPC_AI/Python/launch_optimized.py
  • RFSN_NPC_AI/Python/learning/__init__.py
  • RFSN_NPC_AI/Python/learning/bandit_core.py
  • RFSN_NPC_AI/Python/learning/learning_contract.py
  • RFSN_NPC_AI/Python/learning/npc_action_bandit.py
  • RFSN_NPC_AI/Python/learning/policy_adapter.py
  • RFSN_NPC_AI/Python/learning/reward_model.py
  • RFSN_NPC_AI/Python/learning/schemas.py
  • RFSN_NPC_AI/Python/learning/trainer.py
  • RFSN_NPC_AI/Python/llm_action_prompts.py
  • RFSN_NPC_AI/Python/main.py
  • RFSN_NPC_AI/Python/memory_consolidator.py
  • RFSN_NPC_AI/Python/memory_governance.py
  • RFSN_NPC_AI/Python/memory_manager.py
  • RFSN_NPC_AI/Python/mlx_tts.py
  • RFSN_NPC_AI/Python/mock_server.py
  • RFSN_NPC_AI/Python/multi_npc.py
  • RFSN_NPC_AI/Python/observability.py
  • RFSN_NPC_AI/Python/ollama_client.py
  • RFSN_NPC_AI/Python/orchestrator.py
  • RFSN_NPC_AI/Python/prometheus_metrics.py
  • RFSN_NPC_AI/Python/prompting/__init__.py
  • RFSN_NPC_AI/Python/prompting/action_prompts.py
  • RFSN_NPC_AI/Python/reward_shaping.py
  • RFSN_NPC_AI/Python/runtime_paths.py
  • RFSN_NPC_AI/Python/runtime_state.py
  • RFSN_NPC_AI/Python/scripts/__init__.py
  • RFSN_NPC_AI/Python/scripts/debug_tokenizer.py
  • RFSN_NPC_AI/Python/scripts/launch_optimized.py
  • RFSN_NPC_AI/Python/scripts/mock_server.py
  • RFSN_NPC_AI/Python/security.py
  • RFSN_NPC_AI/Python/security_boundaries.py
  • RFSN_NPC_AI/Python/semantic_memory.py
  • RFSN_NPC_AI/Python/state_machine.py
  • RFSN_NPC_AI/Python/streaming_engine.py
  • RFSN_NPC_AI/Python/streaming_pipeline.py
  • RFSN_NPC_AI/Python/streaming_voice_system.py
  • RFSN_NPC_AI/Python/structured_logging.py
  • RFSN_NPC_AI/Python/utils/sanitize.py
  • RFSN_NPC_AI/Python/version.py
  • RFSN_NPC_AI/Python/world_model.py
  • RFSN_NPC_AI/Python/xvasynth_engine.py
  • RFSN_NPC_AI/data/audit/state_audit.jsonl
  • RFSN_NPC_AI/data/learning/npc_action_bandit.json
  • RFSN_NPC_AI/data/recordings/recording_1768681149.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768682282.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768682933.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768683287.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768683682.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768683757.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768684026.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768684293.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768684561.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768685539.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768685812.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768686004.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768687853.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768688387.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768688946.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768692430.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768692855.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768693925.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768694635.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768695152.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768695368.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768695553.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1768695722.jsonl
  • RFSN_NPC_AI/data/recordings/recording_1769217660.jsonl
  • RFSN_NPC_AI/data/recordings/recording_3b4ec2f8ebab9fd0.jsonl
  • RFSN_NPC_AI/data/recordings/recording_48179da0b0cd698a.json
  • RFSN_NPC_AI/data/recordings/recording_48179da0b0cd698a.jsonl
  • RFSN_NPC_AI/data/recordings/recording_509016ee833cdd0e.jsonl
  • RFSN_NPC_AI/data/recordings/recording_5c272079fc93fff2.jsonl
  • RFSN_NPC_AI/data/recordings/recording_6772032e7bbe6e7c.jsonl
  • RFSN_NPC_AI/data/recordings/recording_6a64e24d1b078566.json
  • RFSN_NPC_AI/data/recordings/recording_6a64e24d1b078566.jsonl
  • RFSN_NPC_AI/data/recordings/recording_6ec07abde169e2bc.jsonl
  • RFSN_NPC_AI/data/recordings/recording_7a5957b9ec7aa869.json
  • RFSN_NPC_AI/data/recordings/recording_7a5957b9ec7aa869.jsonl
  • RFSN_NPC_AI/data/recordings/recording_7d4e97ba071f5547.jsonl
  • RFSN_NPC_AI/data/recordings/recording_ac3edd4e75553266.jsonl
  • RFSN_NPC_AI/data/recordings/recording_aedea7b2a76f184a.jsonl
  • RFSN_NPC_AI/data/recordings/recording_bc99a8da6ce68c43.json
  • RFSN_NPC_AI/data/recordings/recording_bc99a8da6ce68c43.jsonl
  • RFSN_NPC_AI/data/recordings/recording_d35fd6f810a05e21.jsonl
  • RFSN_NPC_AI/data/recordings/recording_d8feb9d95ed96374.jsonl
  • RFSN_NPC_AI/data/recordings/recording_f30e24fde35e8cdc.jsonl
  • RFSN_NPC_AI/data/recordings/recording_test_session.json
  • RFSN_NPC_AI/data/recordings/recording_test_session.jsonl
  • RFSN_NPC_AI/debug_tts_cleaner.py
  • RFSN_NPC_AI/demos/multi_npc_demo.py
  • RFSN_NPC_AI/demos/streaming_llm_tts_demo.py
  • RFSN_NPC_AI/demos/universe_story_demo.py
  • RFSN_NPC_AI/validate_deployment.py
  • RFSN_NPC_AI/verify_runtime_fixes.py
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/0521612e-2319-40a6-ad08-7de605479eeb.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/0b375b5e-94ef-46ac-bded-87c241d86d8d.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/15e4bfcb-8cb1-4551-a6c5-0b9f33bda75b.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/5073a01e-f51f-4a55-8950-a74142a3b81c.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/518f4cb0-c386-43b2-b855-8d8840232a88.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/55d133dc-3e9e-41ab-a8a6-50f4667f27d4.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/69cb9b8d-b393-4bdf-927c-99a1083b50e3.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/86168742-0067-4cb2-b47c-bbccae94901f.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/878f8f4f-3059-4901-aec8-7d46ba06ec91.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/8f30033a-87a0-4c4a-9d3e-041dd567d7f5.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/9398f5bd-f7f4-4c12-a62b-abf9f2c1a89d.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/96ffdc94-e719-4f24-8b01-6d610cc61c4e.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/a3318e6d-f2f2-4d6a-b208-631e34e7fbc7.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/ab6a0198-bc54-467e-b4a5-94e279b6b5c9.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/b366601c-7b70-4036-8960-d3a4a6692b50.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/b7b1bfdc-92ec-4052-83a3-e3054033b1c0.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/c7c6876f-cadc-4511-a3b0-e746561b66dc.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/ca658e83-1921-439c-9085-17e451d777be.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/d5a18d86-5a5b-4472-b726-6f006d61ec9e.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/dc63bb35-cc00-4929-ba33-bdc2b78f5761.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/ed015a23-521f-4f42-a195-c6272b79e1a9.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/ed87a576-6a74-4ca5-af4a-2cc3bffb7bd1.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/f05cc041-e70c-4564-9c67-e53b8416bd49.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/episodes/mobile_1769219314947.jsonl
  • RFSN_NPC_AI/web_chat_ui/backend/main.py
  • Source/MyProject/MyProject.Build.cs
  • Source/MyProject/MyProjectPCH.h
  • Source/MyProject/Private/AI/CultistAIController.cpp
  • Source/MyProject/Private/AI/CultistCharacter.cpp
  • Source/MyProject/Private/AI/RfsnNpcAwareness.cpp
  • Source/MyProject/Private/AI/RfsnNpcNeeds.cpp
  • Source/MyProject/Private/AI/RfsnTemporalMemory.cpp
  • Source/MyProject/Private/Core/MyCharacter.cpp
  • Source/MyProject/Private/Core/MyClass.cpp

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cursor/island-product-boundary-07c1
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

cursoragent and others added 2 commits March 19, 2026 05:56
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly improves the repository's cleanliness and documentation. It systematically removes various runtime-generated data files from version control and establishes a clear strategy for handling such outputs in the future. Additionally, it introduces foundational documentation for the project's backend, architecture, and gameplay, providing essential context for developers and stakeholders.

Highlights

  • Runtime Data Hygiene: Implemented a comprehensive cleanup of the repository by removing numerous committed runtime artifacts and logs, and configured the system to redirect future runtime outputs to ignored 'var/' directories.
  • New Documentation: Introduced new documentation files detailing the current backend state, overall architecture baseline, and the gameplay specifics of the current vertical slice, enhancing project clarity.
  • Centralized Path Management: Added a new utility module, runtime_paths.py, to centralize the management of paths for runtime-generated files, promoting consistency and maintainability across the Python backend.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request significantly improves the project's hygiene by centralizing runtime path management and moving generated artifacts out of version control. The introduction of runtime_paths.py provides a clean and consistent way to handle dynamic file locations, and the corresponding updates across various modules correctly implement this new approach. The removal of committed runtime data and the updated .gitignore file are excellent steps towards maintaining a cleaner repository. Additionally, the new documentation files (current_backend_state.md, baseline.md, current_vertical_slice.md) are valuable additions that enhance clarity and provide crucial context for the project's architecture and gameplay. Overall, this is a well-executed and beneficial refactoring.

cursoragent and others added 7 commits March 19, 2026 06:01
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
@dawsonblock dawsonblock marked this pull request as ready for review March 19, 2026 06:22
Copilot AI review requested due to automatic review settings March 19, 2026 06:22
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the Island runtime boundaries and repackages the Python backend into an app/ package layout, while adding baseline docs and repository hygiene (ignored runtime output, removal of committed artifacts) and isolating optional gameplay variants into disabled-by-default plugins.

Changes:

  • Introduces a new RFSN_NPC_AI/Python/app/ package structure with new learning/memory/dialogue/voice modules and thin root-level compatibility shims.
  • Removes committed runtime recording artifacts and updates .gitignore to keep runtime output in ignored var//data/* paths.
  • Adds Island runtime documentation and splits shooter/horror variants into disabled-by-default plugins with updated include paths and module export macros.

Reviewed changes

Copilot reviewed 165 out of 436 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
RFSN_NPC_AI/.gitignore Ignore Python runtime output + backend var/episode artifacts to reduce repo noise
RFSN_NPC_AI/Python/README.md Documents new app/ layout and shim-based entrypoint compatibility
RFSN_NPC_AI/Python/learning/init.py Turns old learning package into a shim importing from app.learning
RFSN_NPC_AI/Python/bandit_learner.py Replaces legacy bandit learner module with shim to app.learning.bandit_learner
RFSN_NPC_AI/Python/hot_config.py Replaces hot config script with shim to app.telemetry.hot_config
RFSN_NPC_AI/Python/launch_optimized.py Replaces launcher script with shim to scripts.launch_optimized
RFSN_NPC_AI/Python/debug_tokenizer.py Replaces tokenizer debug script with shim to scripts.debug_tokenizer
RFSN_NPC_AI/Python/chatterbox_server.py Replaces TTS server script with shim to app.voice.chatterbox_server
RFSN_NPC_AI/Python/app/telemetry/version.py Adds centralized version constants + formatted version string
RFSN_NPC_AI/Python/app/telemetry/hot_config.py Moves hot config watcher into the app package
RFSN_NPC_AI/Python/app/safety/sanitize.py Adds helper for safe filename tokens from untrusted display names
RFSN_NPC_AI/Python/app/dialogue/runtime_state.py Adds atomic runtime state container/swapper for dialogue runtime components
RFSN_NPC_AI/Python/app/dialogue/prompts.py Adds strict action control blocks for LLM output gating
RFSN_NPC_AI/Python/app/voice/streaming_voice_system.py Adds deque/condition-based speech queue replacement to avoid queue/task_done issues
RFSN_NPC_AI/Python/app/voice/mlx_tts.py Adds MLX TTS engine integration with playback and queue output
RFSN_NPC_AI/Python/app/memory/semantic_memory.py Adds vector-based semantic memory retrieval using SentenceTransformers
RFSN_NPC_AI/Python/app/memory/memory_manager.py Adds persistent conversation memory manager with backups/resets
RFSN_NPC_AI/Python/app/memory/memory_consolidator.py Adds LLM-based consolidation into governed long-term facts
RFSN_NPC_AI/Python/app/learning/init.py Exposes learning layer public API from app.learning
RFSN_NPC_AI/Python/app/learning/schemas.py Adds learning-layer enums and dataclasses (features, signals, turn logs)
RFSN_NPC_AI/Python/app/learning/policy_adapter.py Adds feature extraction + epsilon-greedy action mode selection
RFSN_NPC_AI/Python/app/learning/reward_model.py Adds reward computation + heuristic detectors (correction/question)
RFSN_NPC_AI/Python/app/learning/reward_shaping.py Adds short-window reward accumulator for shaping
RFSN_NPC_AI/Python/app/learning/trainer.py Adds online trainer with clipping/decay/capping + atomic weight persistence
RFSN_NPC_AI/Python/app/learning/npc_action_bandit.py Adds Thompson-sampling bandit for NPCAction selection with atomic save/load
RFSN_NPC_AI/Python/data/recordings/recording_test_session.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_faaa385a635b5b78.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_faaa385a635b5b78.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_f29ac12723f5bbb7.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_e9b479085ce56d0f.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_e5a1da9badf679d5.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_d4c3609768d64478.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_cc827a4ac9d33715.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_c95959ac887fc487.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_c226f86aa28f4ca3.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_c226f86aa28f4ca3.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_b8caa080ecc13f0e.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_b152902bc1237b3c.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_ac713998c126c403.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_a8fd41bbd623a064.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_a8fd41bbd623a064.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_a8e9ab159206ed05.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_a8e9ab159206ed05.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_a8d20440840595af.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_95ec025bd3b6ac72.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_8b1218ae38be8112.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_8a4bafab8eb08dc5.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_833660b3a75c3044.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_827caaa3a6ad203a.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_7dfa80960d358ed1.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_7dfa80960d358ed1.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_7aa51b2b88c72f4e.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_797105fa382b403f.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_797105fa382b403f.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_6fe3f69b26694664.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_6fe3f69b26694664.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_6e046e70dc7c0edf.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_6c3ab6b20aeb3f34.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_6618380f9cf09fda.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_6495d9828b824098.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_6495d9828b824098.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_647d73137a220039.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_647d73137a220039.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_61b7918253765157.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_61b7918253765157.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_60df30a717fbf8c1.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_60df30a717fbf8c1.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_4e3ecd976152a3e6.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_4a07ff5a6d3cb697.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_4a07ff5a6d3cb697.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_4048fb15145947db.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_3917068e76cc93b9.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_3228371c1ed4078c.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_3228371c1ed4078c.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_308d109fd8309484.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_308d109fd8309484.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_2bf2e6e8e298f107.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_23694ecffe722445.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_215dde85b4c16459.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_215dde85b4c16459.json Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_1e1da0fe7140fea1.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_1c4db94a8e06096b.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_18ba953978166df4.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_188d66fd6b92fc97.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_11b8d990a2039a97.jsonl Removes committed runtime recording artifact
RFSN_NPC_AI/Python/data/recordings/recording_0d4617aefe32d857.jsonl Removes committed runtime recording artifact
Docs/architecture/baseline.md Adds repo baseline + known defect capture for Island/Python backend
Docs/architecture/runtime_spine.md Documents ownership boundaries and runtime authority chain
Docs/gameplay/vertical_slice.md Defines the intended Island vertical slice loop and non-goals
Docs/gameplay/current_vertical_slice.md Documents current slice wiring + known ownership duplication
Docs/ai/service_contract.md Documents dialogue streaming endpoint contract + client resilience expectations
Docs/ai/offline_mode.md Documents offline mode behavior when Python service is unavailable
Docs/ai/current_backend_state.md Captures backend shape + observed defects prior to refactor
Docs/operations/test_matrix.md Adds test/regression matrix and what was/wasn’t verified
Plugins/IslandVariantShooter/IslandVariantShooter.uplugin Adds disabled-by-default shooter variant plugin
Plugins/IslandVariantShooter/Source/IslandVariantShooter/IslandVariantShooter.Build.cs Adds module dependencies for shooter variant plugin
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/Weapons/ShooterWeaponHolder.h Updates export macro + include path for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/Weapons/ShooterWeapon.h Updates export macro + include path for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/Weapons/ShooterProjectile.h Updates export macro for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/Weapons/ShooterPickup.h Updates export macro for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/UI/ShooterUI.h Updates export macro for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/UI/ShooterBulletCounterUI.h Updates export macro for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/ShooterPlayerController.h Updates export macro for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/ShooterGameMode.h Updates export macro for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/ShooterCharacter.h Updates includes + export macro for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/AI/ShooterNPCSpawner.h Updates export macro for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/AI/ShooterNPC.h Updates includes + export macro for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/AI/ShooterAIController.h Updates export macro for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Public/AI/EnvQueryContext_Target.h Updates export macro for module isolation
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/Weapons/ShooterWeaponHolder.cpp Updates include path for module-relative headers
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/Weapons/ShooterWeapon.cpp Updates include paths for module-relative headers
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/Weapons/ShooterProjectile.cpp Updates include path for module-relative header
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/Weapons/ShooterPickup.cpp Updates include paths for module-relative headers
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/UI/ShooterUI.cpp Updates include path for module-relative header
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/UI/ShooterBulletCounterUI.cpp Updates include path for module-relative header
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/ShooterPlayerController.cpp Removes variant include path and uses module-local includes
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/ShooterGameMode.cpp Removes variant include path and uses module-local includes
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/ShooterCharacter.cpp Uses module-relative include for weapon
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterStateTreeUtility.cpp Removes variant include paths; uses module-relative includes
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterNPCSpawner.cpp Removes variant include paths; uses module-relative includes
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterNPC.cpp Removes variant include paths; uses module-relative includes
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterAIController.cpp Removes variant include paths; uses module-relative includes
Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/EnvQueryContext_Target.cpp Removes variant include paths; uses module-relative includes
Plugins/IslandVariantHorror/IslandVariantHorror.uplugin Adds disabled-by-default horror variant plugin
Plugins/IslandVariantHorror/Source/IslandVariantHorror/IslandVariantHorror.Build.cs Adds module dependencies for horror variant plugin
Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/UI/HorrorUI.h Updates export macro for module isolation
Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorPlayerController.h Updates export macro for module isolation
Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorNPC.h Updates includes + export macro for module isolation
Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorGameMode.h Updates export macro for module isolation
Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorCharacter.h Updates includes + export macro for module isolation
Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/UI/HorrorUI.cpp Updates include path for module-relative header
Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorPlayerController.cpp Removes variant include paths; uses module-relative includes
Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorNPC.cpp Removes variant include paths; uses module-relative includes
Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorGameMode.cpp Removes variant include path; uses module-local include
Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorCharacter.cpp Removes variant include path; uses module-local include

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread RFSN_NPC_AI/Python/launch_optimized.py
Comment thread RFSN_NPC_AI/Python/app/voice/mlx_tts.py Outdated
Comment thread RFSN_NPC_AI/Python/app/learning/schemas.py Outdated
Comment thread RFSN_NPC_AI/Python/app/learning/schemas.py Outdated
Comment thread RFSN_NPC_AI/Python/app/memory/memory_manager.py Outdated
Comment thread RFSN_NPC_AI/Python/app/memory/memory_consolidator.py Outdated
Comment thread RFSN_NPC_AI/Python/app/memory/memory_manager.py Outdated
Comment thread RFSN_NPC_AI/Python/app/learning/reward_model.py Outdated
Comment thread RFSN_NPC_AI/Python/app/voice/streaming_voice_system.py Outdated
Comment thread RFSN_NPC_AI/Python/app/voice/streaming_voice_system.py Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7751037805

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread RFSN_NPC_AI/Python/app/api/main.py
Comment thread RFSN_NPC_AI/Python/orchestrator.py
dawsonblock and others added 9 commits March 19, 2026 01:03
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@kilo-code-bot
Copy link
Copy Markdown
Contributor

kilo-code-bot Bot commented Mar 19, 2026

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (38 files)
  • .gitignore
  • Docs/ai/current_backend_state.md
  • Docs/ai/offline_mode.md
  • Docs/ai/service_contract.md
  • Docs/architecture/baseline.md
  • Docs/architecture/runtime_spine.md
  • Docs/gameplay/current_vertical_slice.md
  • Docs/gameplay/vertical_slice.md
  • Docs/operations/test_matrix.md
  • Plugins/IslandVariantHorror/IslandVariantHorror.uplugin
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/IslandVariantHorror.Build.cs
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorCharacter.cpp
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorGameMode.cpp
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorNPC.cpp
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/HorrorPlayerController.cpp
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Private/UI/HorrorUI.cpp
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorCharacter.h
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorGameMode.h
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorNPC.h
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/HorrorPlayerController.h
  • Plugins/IslandVariantHorror/Source/IslandVariantHorror/Public/UI/HorrorUI.h
  • Plugins/IslandVariantShooter/IslandVariantShooter.uplugin
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/IslandVariantShooter.Build.cs
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/EnvQueryContext_Target.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterAIController.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterNPC.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterNPCSpawner.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/AI/ShooterStateTreeUtility.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/ShooterCharacter.cpp
  • Plugins/IslandVariantShooter/Source/IslandVariantShooter/Private/ShooterGameMode.cpp

Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Comment thread RFSN_NPC_AI/Python/app/voice/streaming_voice_system.py
@kilo-code-bot
Copy link
Copy Markdown
Contributor

kilo-code-bot Bot commented Mar 19, 2026

Code Review Summary

Status: 1 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 1
Issue Details (click to expand)

SUGGESTION

File Line Issue
RFSN_NPC_AI/Python/app/voice/streaming_voice_system.py 119 Missing increment of played_total metric
Other Observations (not in diff)

Issues found in unchanged code that cannot receive inline comments:

File Line Issue
None
Files Reviewed (2 files)
  • RFSN_NPC_AI/Python/app/learning/reward_model.py - 0 issues
  • RFSN_NPC_AI/Python/app/voice/streaming_voice_system.py - 1 issue

Fix these issues in Kilo Cloud: https://app.kilo.ai/cloud-agent-fork/review/ec0a7969-a380-41a3-8628-2f6b62992c42

cursoragent and others added 2 commits March 19, 2026 07:55
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Co-authored-by: kilo-code-bot[bot] <240665456+kilo-code-bot[bot]@users.noreply.github.com>
@dawsonblock dawsonblock merged commit 0cb5b22 into main Mar 19, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants