Refactor Island runtime boundaries#4
Conversation
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
|
Important Review skippedToo many files! This PR contains 300 files, which is 150 over the limit of 150. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (300)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
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. Comment |
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Summary of ChangesHello, 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
Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this comment.
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.
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>
There was a problem hiding this comment.
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
.gitignoreto keep runtime output in ignoredvar//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.
There was a problem hiding this comment.
💡 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".
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>
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (38 files)
|
Co-authored-by: dawsonblock <dawsonblock@users.noreply.github.com>
Code Review SummaryStatus: 1 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)SUGGESTION
Other Observations (not in diff)Issues found in unchanged code that cannot receive inline comments:
Files Reviewed (2 files)
Fix these issues in Kilo Cloud: https://app.kilo.ai/cloud-agent-fork/review/ec0a7969-a380-41a3-8628-2f6b62992c42 |
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>
Summary
var/paths and removal of committed backend artifactsSource/MyProjectintoCore,Island,AI,Dialogue, andSocialdomains with module-relative includesAIslandGameModethe run authority, remove tower-owned objective text, route extraction success/player death through the game mode, and clarify spawn-pressure helpersURfsnNpcClientComponentwith incremental SSE parsing, stale-request guards, and offline bark fallbackRFSN_NPC_AI/Python/app/with compatibility shims for existing tests/entrypointsapp/modules to package-relative importsDocs/architecture/baseline.mdis historicalTesting
cd RFSN_NPC_AI/Python && python3 -m pytest tests/test_bandit_learner.py -qcd RFSN_NPC_AI/Python && python3 -m pytest tests/test_fidelity.py tests/test_tokenizer_boundaries.py tests/test_flush_semantics.py -qcd 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 -qcd 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 -qpy_compilepass over moved/shimmed Python filesNotes
Content/in this repo snapshot, so only source/plugin isolation was required in this turn129 passed, 1 skippedon_eventdeprecation warnings inapp/api/main.py