Merge develop: Volunteer onboarding infrastructure & CI fixes#521
Merge develop: Volunteer onboarding infrastructure & CI fixes#521PipFoweraker merged 9 commits intomainfrom
Conversation
Risk pool core implementation, game_state/turn_manager/debug_overlay integration points, and design documentation. Not yet complete. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
These .uid files are used by Godot 4's resource system for stable references. Consistent with prior commit 90f27ad. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Delete test.yml: skeleton placeholder, superseded by godot-tests.yml - Delete tests.yml: duplicate skeleton, also superseded - Delete auto-pr-from-issue.yml: incomplete stub, duplicate of auto-copilot-prs.yml - Delete deploy-dreamhost.yml: empty/corrupted file - Delete release.yml: uses deprecated actions, superseded by enhanced-release.yml - Fix auto-copilot-prs.yml: add GH_TOKEN env, disable daily schedule until Copilot agent integration is implemented - Fix enhanced-cicd-pipeline.yml: expose health-score as job output, handle missing health-score gracefully in integration-testing gate Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add CONTRIBUTING.md with setup guide, branch workflow, testing instructions, debug overlay usage, and QA process - Add QA bug report issue template with severity, debug state fields - Commit QA_CHECKLIST.md to repository Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Documents the plan for integrating 1,194 historical AI safety events from pdoom-data, including phase breakdown and schema mappings. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Moved to scripts/archive/: - nuclear_unicode_killer.py: One-time aggressive Unicode stripper - ascii_cleanup_remnants.py: One-time ASCII cleanup companion - fix_unicode_damage.py: One-time recovery from unicode killer - close_ui_issues.py: One-time GitHub issue closure batch - archive_completed_issues.py: One-time issue file archival - fix_deterministic_rng.py: One-time RNG import refactoring These scripts served their purpose during earlier migration phases and are no longer needed for ongoing development. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Provides simple commands: - make run: Launch the game - make test: Run GUT unit tests - make lint: Check GDScript syntax - make validate: Validate historical data - make health: Run project health check - make clean: Clean cache files - make install: Install Python dependencies Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Merged content from docs/developer/CONTRIBUTING.md into root CONTRIBUTING.md - Added Makefile commands, debug overlay section, QA testing process - Fixed branch workflow (PRs target develop, not main) - Updated README to point to root CONTRIBUTING.md - Left redirect at docs/developer/CONTRIBUTING.md for old links Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: db88ee27f9
ℹ️ 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".
| if Engine.has_singleton("VerificationTracker"): | ||
| var tracker = Engine.get_singleton("VerificationTracker") | ||
| if tracker.has_method("record_rng_outcome"): | ||
| var turn = state.turn if state and state.has("turn") else -1 | ||
| tracker.record_rng_outcome("risk_%s" % pool_name, roll, turn) |
There was a problem hiding this comment.
Avoid Dictionary-only
has() on GameState
The new _record_trigger path calls state.has("turn"), but state is a GameState object (a Node), not a Dictionary. In Godot this will raise an invalid method error when a risk event triggers, which interrupts turn processing right after process_turn starts emitting events. Because state.turn is always present on GameState, you can safely use state.turn (or state.get("turn")) and only guard on state != null.
Useful? React with 👍 / 👎.
Summary
Brings develop up to main with volunteer onboarding infrastructure and maintenance fixes.
Volunteer Onboarding
CI/CD Fixes
Maintenance
WIP
Test plan
🤖 Generated with Claude Code