| name | verify-godot-change |
| description | Verify an existing Godot 4 change with static checks and independent runtime evidence. Use to prove saved scenes, scripts, resources, input, UI, rendering, timing, or gameplay without assuming permission to repair failures; do not use for implementation, diagnosis-and-fix, or release preparation. |
Verify a Godot change
Translate the requested change into observable criteria, then report what the
evidence proves. Verification alone authorizes observation and bounded test
interaction, not corrective persistent mutation. Fail a criterion unless the
user separately requested a fix. Support begins at Godot 4.7.
Control contract
- Validate
projectPath against effective MCP roots and allowed directories
before any runtime or project access. Snapshot persistent files so verification
can prove it did not edit them.
- Record watched or unattended mode. For watched work, call
editor_session with
ensure and launch enabled; stop if no usable editor can be established.
Include projectPath for status reads too. For unattended verification, do not
launch an editor: direct saved-state, compound verification, and runtime tools
are sufficient and must not rewrite project metadata merely to establish a
bridge.
- Treat reads as observation, injected input as bounded runtime-ephemeral test
state, and any scene/resource/script/settings change as unauthorized unless the
user also requested repair.
- Use canonical core tools directly (compact is only the compatibility alias).
Resolve hidden
analyze_project_integrity, game_get_property, and
game_eval through godot_catalog detail, then invoke them with godot_call;
never call a hidden tool directly.
- Respect Pause Agent without retry or bypass. While paused, use only safe
observation, input release, stop, and cleanup; report the blocked effective
tool.
- Use privileged reflection or evaluation only when already enabled, necessary
for a criterion, and independently corroborated. Never enable it for
convenience.
Workflow
- Define applicable saved-state, runtime, rendered, timing, log/error,
regression, and subjective/manual-review criteria. Mark non-applicable and
unobservable criteria explicitly.
- Check saved state first with
run_project_tests discovery, headless checks,
and host file reads of
.tscn, .gd, and project.godot; use hidden integrity analysis only
through the declared discovery flow.
- Prefer
verify_project and run_project_tests; use realtime run_project
only for behavior the compound tools cannot prove.
- Observe a baseline with capped
game_get_scene_tree, subtree-filtered
game_get_ui, logs, and game_screenshot where rendering is material. Read
the tree before using a node path; keep runtime reads serial because the
bridge handles one command at a time. Use game_get_node_info with compact
detail and exact property names.
- Prefer bounded
game_wait_until and game_scenario. Drive held movement with
a game_key_hold step inside one scenario paired with a bounded wait and
release; do not hand-assemble repeated game_key_press taps. Never leave
input held while making a separate observation call or while reasoning. Use
game_click only when coordinate interaction is part of the criterion. In a
scenario, put input fields under arguments; wait and assert steps put
condition directly on the step, not tool game_wait_until plus arguments.
game_key_hold has no duration field; use a bounded wait, then release it.
- Repeat the same observation and compare the intended state. A successful tool
response or screenshot alone does not prove behavior, audio quality, feel, or
aesthetics.
- Check negative evidence:
game_get_errors, game_get_logs, warnings,
fallbacks, ObjectDB/orphan/resource diagnostics, leaks, cleanup, and adjacent
regressions. Re-hash persistent files to prove verification made no edit.
- Release held input, call
stop_project, and independently confirm teardown.
Report each criterion as passed, failed, incomplete/unobserved, subjective/manual,
blocked, or unsupported, with exact evidence. Disclose warnings and fallbacks;
never infer success from an unavailable observation or silently repair a failure.